Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

development and testing checklists #3

Open
caver456 opened this issue Jul 5, 2021 · 0 comments
Open

development and testing checklists #3

caver456 opened this issue Jul 5, 2021 · 0 comments

Comments

@caver456
Copy link
Contributor

caver456 commented Jul 5, 2021

These items need to be done before the project is ready for testing during a training or incident:

Highest priorities as of 3/27/22, mostly taken from items below:

after initial trailer testing:

  • prior-outing creation: assignment AA (no number) with track AA101a - this probably means DMG wasn't started until after AA 101 was complete and unassigned; should create outing AA 101, possible with a message or note
  • add sync to plans console regardless of dmg:
    • keep assignment/team table in sync with assignments on map - two-way sync - populate table from map
    • investigate the broader topic of outing/team/assignment GUI and integration and capabilities, possibly like AssignmentTracker
  • allow intelligent display of multiple team markers in same assignment: we want them x pixels away from each other regardless of zoom, but that's not possible - maybe one marker with all team names in the label - investigate relevance
  • compound PDF generation from GUI (all outings for a given assignment shape; all K9 teams; etc)
  • better logging passing from sartopo_python
    • handled exceptions that stop sync should show a popup
    • geom op failure exceptions should show a popup
  • exiting fiddler (if it was running when pc started) causes sync abort - fix this
  • why call getFeature for sgt= at start of propertyUpdateCallback?

from 1/14/2022 design meeting:

  • font scaling - multiple screens with different resolutions, etc. #13
  • allow local print request - internet-only print is not reasonable - but handle the case where the local server does not generate a pdf (i.e. CTD 4214)
  • remember plans console AND debrief dialog locations (seemed to be reverting to screen#2)
  • config popup: map layer/s, utm grid, etc
  • get debrief tracks from apptracks (finished or not finished) as well as lines
  • allow operator to add notes from GUI, saved in json
  • change source track name: should change cropped debrief track name(s)
  • rebuild outing buttons (requires confirmation)
  • rebuild all button (requires confirmation)

checklist items from before 1/14/2022:

  • resolve high-priority sartopo_python issues
  • regression-test sartopo_python
  • update startopo_python on pypi
  • correspondence table (source-map IDs to target-map IDs (could be more than on, e.g. after crop)
  • change prop / geom on source map; it should automatically update in target map
  • import clues
  • import non-clue markers
  • import non-assignment lines and polygons
  • non-assignment lines and polygons should show up on debrief maps, but should not determine bounds of debrief map
  • should clues go into outing folders? Should assignment AA clues show up on team debrief map for AB?
  • restart handling - exit and restart the background process, after the target page already has several items in place - see restart handling #1

other high priority items 1/26/22:

  • crop: fix incorrect crop (see sartopo_python #41)
  • PC: make sure radiolog watching still works
  • PC: assignment entry should be case insensitive (Steve, Jan 20)
  • PC: incorrect entry should beep (Steve, Jan 20)
  • automated debrief map creation
  • plans console exit confirmation
  • propertyUpdateCallback does not receive geometry - change the function to deal with this fact
  • incident map: allow retry after failed connection
  • incident map: allow change while running plans console
  • debrief map: allow retry after failed connection
  • debrief map: allow change while running dmg
  • make sure restore still works; enhance as needed to include debrief map etc
  • log file name - don't call it dmg.log when dmg is not running - would be good to have a consistent name
  • clean up .rc file - dead entries, bad names, etc
  • decide a common working directory (log file(s), dmg_xxx_xxx.json, save_plans_console.txt (maybe a better name or format); and maybe a separate resource / options file dir too - plans_console.rc, sts.ini, etc; should not be the same as the code directory - maybe the same as radiolog data dir
  • log success or failure of connection attempt (and message box)
  • log clean shutdown request
  • roaming teams: don't crop to assignment boundary; how to determine crop shape if any?

features could be added after initial testing:

  • repeated widget creation during tick - is this a memory leak?
  • GUI: select map dialog should be shrink-wrapped to contents
  • GUI: select map dialog and options dialog should be fixed size after same-screen move
  • GUI: 'incident' doesn't fit in space allowed on certain screen size - generally, check for fit on resize
  • change debrief map default to 'new map'
  • GUI: gray out the 'Debrief Map ID' group box label when 'New Map' is selected
  • desktop icon (isn't there already a desktop icon for plans console / is this an issue specific to this repo?)
  • investigate dmg-startup on local 3char map, which is then synced as 4char: is restart dmg strictly required or would it work to just change the json name and keep going?
  • allow for different debrief types: show all outings in given area; show all K9 activity; etc
  • provide for duplicate track handling (GPS and apptrack from same searcher) - if appropriate, allow operator to choose which one to use; check accountId, see if it can be matched to username etc
  • geom ops: ensure unique suffix (i.e. check to see if a suffix already exists before using it)

features added to the list during testing, compiled 3-2-2022:

  • check for appropriate behavior of other feature types on source map: range ring, folder, viewshed, sector, etc
  • change name of new debrief map to reflect name of incident map (with dmg prefix or suffix)
  • exception during sync which causes sync to stop with or without messagebox, but does not cause a crash: need a GUI indication that sync has stoppped, and opportunity to restart - similar to pause/resume
  • find sources of freezes / halts / crashes and make them allow graceful continuation of plans console #16
  • incident map feature change folder - check for appropriate behavior
  • specify map dialog - select by map name, similar to map list
  • orphan utid (after track drawn outside assignment then title changed to whatever assignment it was drawn over, see sartopo_bg/bug: 'false' in dmg 'tids' causes TypeError #15): make sure print works; prevent the orphans in the first place, by deleting the other-outing utid when the track is re-imported to the correct outing
  • restore and dmg-with-existing-map: warning (or error) if dmd file not found
  • rebuild / rebuild all: overhaul again: just-nuke-everything probably won't work since we need to preserve old outings (i.e. there is no source map assignment with the same title)
  • does debrief map need initial processing at startup?
  • pause: debrief link lights sometimes stay green
  • scan code for 'TODO'/'TMG'/'hardcode'
  • PDF button invalidation (invalidate a button when its outing changes; invalidate all buttons that have changed non-owned features within their bounds)
  • PDF button grouping: needs-build on top, built on bottom, with separator
  • show PDF URL in PDF button / table row
  • detect when PDF is done loading, and show a spinner in PDF button until then
  • allow other computers to open debrief PDFs
  • progress bar for lengthy processing of a single sync result (large rjrsf in doSync)
  • 'shutting down' messagebox
  • debrief table - highlight most recent cells
  • investigate putting PDF code into sartopo_python
  • investigate putting SelectMapDialog class and GUI into sartopo_python repo (they are PyQt-specific)
  • debrief table tooltips: outing/tracks/clues cells --> show outing/track/clue names table; notes column --> show full outing log; PDF column: show URL, time generated, etc
  • pdf options: line colors and weights
  • pdf: hide boundary label
  • pdf: hide track labels / draw a legend instead, even if it's actual features generated in the pdf
  • roaming teams - determine (or draw) crop shape
  • save backup before rebuild
  • asynchronous delete request for rebuild (like bulk ops)
  • investigate async requests for other processing
  • investigate using a separate thread for initial map pre-sync work which could take a few minutes of high CPU usage and would currently interfere with other plans console work

to investigate from training map PDF critique (accuracy / objective):

  • AB 102: AB102f, AB102c not cropped; check the crop shape; boundary is very strange
  • AC 101: apptracks with same titles as tracks: Ac101C, Ac101D - is this an issue? Are they the same data? Ac101C line has same ID as Ac101C apptrack, which does not appear in corr and was not imported to the outing - same with Ac101D
  • AI 103: utid in dmd - 66b3 <-- 13e9 = AI103A
  • AI 103: tracks AI103b, AI103d were not imported
  • AD 105: looks like bounds were calculated using tracks AD105a and AD105f that did not get cropped - why?
  • AJ 104: line AJ-104-f did not get imported to outing - trackParse should ignore hyphens

features added after PDF critique from training map:

  • omit team markers
  • omit medical markers (when different than team markers)
  • omit lines (and apptracks) where titles are searcher names (lastname#nnn or 'John Doe' etc)
  • IC marker should appear on top of LZ marker - does changing the order in the request affect the render order?
  • shorten long marker names like 'Mark 11/12/2021, 7:43:09 PM'
  • consider adding apptrack name change history as a tooltip in apptracks dialog
  • include assignment boundary color in legend
  • looks like bounds are calculated from cropped tracks as well as assignment boundary - is that appropriate?
  • consider a PDF orientation option (auto / landscape / portrait) - setting the landscape (even if the calculated bounds are portrait) would fill up the big screen with more map, but, is that relevant? It would result in a smaller scale when printing a portrait bounds on landscape paper.
  • consider cleaning straight-line track segments within the boundary (AD105d, AJ104b) - and find out why these exist when other tracks are high-resolution
  • consider coloring owned clues different than other clues (and drawing on top of other clues and on top of tracks, if possible)
  • PDF option for bounds-buffer-percentage?
  • companion program to run on other node(s), to watch shared dir (or dmd file or ?) for available debrief PDFs, with outing name and generation time, and open in web browser when clicked

testing - BASIC:

  • add several unnamed assignments, then reletter starting with AA; they should not become outings yet; then renumber; make sure each has its own folder with name and boundary, etc
  • batches: repeat the above in batches of new assignments (add some, autoletter, add some more, autoletter, etc)
  • add non-assignment-related features (IC, trail, etc): they should be imported to debrief map, in the default folder
  • import track: draw a line with appopriate track name for an existing outing; it should be imported with the correct color, cropped, moved to the correct folder, and appear in dmd
  • delete object from source map: remove from cache; delete corresponding target map feature(s); remove from dmd as appropriate (deleting an assignment should only delete the outing if there are no tracks or clues)
  • assignment boundary shape changed in source: should automatically update boundary of outing with matching name in target map (should it only update if the outing has no tracks or clues ?? - should it update at all once it is an outing?)
  • unassignment: number is removed from assignment: pairing entry should not be deleted or edited
  • edit assignment shape after unassignment: remove number from assignment; change assignment geometry; boundary of that assignment's previous outing should not change in target map
  • non-outing features: property edit in source should get propagated to target (color, symbol, etc)
  • non-outing features: geometry edit in source should get propagated to target

testing - ADVANCED:

  • import track after unassignment: imported tracks with old pairing's name should be imported and cropped correctly (requires that the old pairing folder was not deleted on unassignment)
  • repeated assignment with different team: 1) assignment AB 101 (should become an outing); 2) change to AB (unassignment); 3) change to AB 102: new pairing entry, new boundary and folder in target map should be created with same sid
  • unclaimed track: 1) line AB102a, 2) assignment AB 102: track should get imported to outing AB 102 and cropped
  • unclaimed track in passing: 1) assignment AB, 2) line AB102a, 3) change assignment to AB 102: track should get imported to outing AB 102 and cropped
  • unclaimed track after reassignment: 1) assignment AB 102, 2) line AB105a, 3) change assignment to AB 105: track should not be imported or cropped to AB 102, but should be imported and cropped to AB 105
  • unclaimed clue: 1) assignment AA, 2) clue owned by assignment AA (no outing exists yet), 3) assignment --> AA 101 - the unclaimed clue should be claimed by outing AA 101
  • unclaimed clue: 1) assignment (and outing) AA 101, 2) clue with no assignment value, 3) change clue assignment to AA 101

NOTE: this is a good time to compare data across restart, and to compare data across rebuild-all. Export json of the debrief map, rename it to include 'before-restart'; copy the dmg_xxx_yyy.json to include 'before-restart'; then do a restart and compare. Same comparisons for rebuild-all.

  • unclaimed track spanning restart: 1) line AB102a; 2) restart (after line is imported as unclaimed); 3) assignment AB 102: track should get imported to outing AB 102 and cropped
  • track added in source map with incorrect name (e.g. ACTIVE LOG...), then changed to correct name: should get imported to outing after rename
  • track added in source map with correct name for a different existing outing, then changed to correct name for assignment in question: target track should be deleted from incorrect assignment and moved to correct assignment - this affects crop as well as folder
  • clue owner change: 1) assignments AA 101 and AB 102; 2) clue owned by AA 101; 3) clue owner changed to AB 102: debrief table and dmd should update accordingly, but nothing else should change
  • clue owner name change: 1) assignment AB 102, 2) clue owned by AB 102, 3) change assignment to AB 103: clue should stay in same table row (note - clues are not placed into folders in debrief map, so that they will show up on all debrief pdfs)
  • track suffix changed in source map: no change to folder or crop, but track name and probably color should change
  • restart: compare dmg_ and exported .json before vs after - files should be identical
  • track suffix change spanning restart: properly named already-imported track: change suffix before restart: should be reimported with correct color and crop on restart
  • new features spanning restart: source features that don't already exist on target map should be imported to target map
  • updated geometry spanning restart: update geometries of existing corresponding features that changed before restart
  • updated properties spanning restart: update properties of existing corresponding features that changed before restart

testing - larger data

  • import bunch-o-lines.json; check for correct sync
  • import bunch-o-assignments.json; check for correct sync
  • import bunch-o-tracks.json; check for correct sync
  • import bunch-o-clues.json; check for correct sync
  • import json from a real search; check for correct sync

testing - plans console table:

These actions should happen when 'Ok' is clicked:

  • abort with message if named assignment doesn't exist
  • abort with message for multiple assignments with specified name
  • add team marker (medical if checked, team type if not)
  • when one number is specified: one number should get added to incident map assignment feature (preserve existing number(s))
  • when comma-delimited list of numbers is specified: all numbers should get added to incident map assignment feature
  • dmg: new outing(s) created as appropriate, for single-team as well as multi-team
  • if assignment = 'RM', remove the team marker and remove number from the assignment's 'number' field
  • if assignment = 'IC' and team type = 'LE', add marker offset from IC location

testing - apptracks:

  • generated PDF should include unfinished associated apptracks up to the latest update
  • new apptrack AA101a, with clean finish: show in associated table on start; remove from associated table on end and show in track count in debrief table ('0 + 1' --> '1')
  • new apptrack Joe123, then change title to AA101a from app, then finish: show in unassociated table initially, automatically shift to associated table on name change (and dmd and debrief table ('0' --> '0 + 1'), clean finish as above (debrief table track 0+1 --> 1; remove from associated table; show in tids in dmd)
  • apptrack name Joe123 for most or all of search, then rename to AA101a mid-search and leave unfinished: confirm it shows up on AA101 debrief map
  • apptrack name change from web browser or phone should propagate to apptrack dialog (with new correct association)
  • apptracks started before dmg startup - should be correctly handled as above in all cases

POSTPONED:

  • delete processed object from target map; it should automatically re-import to target map
  • companion program to run on other node(s), to watch shared dir (or dmd file or ?) for available debrief PDFs, with outing name and generation time, and open in web browser when clicked
@caver456 caver456 changed the title development checklist development and testing checklists Aug 23, 2021
@caver456 caver456 pinned this issue Dec 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant