blob: 56e9492e97fefd6015f754d1c2f9fa1d9ee973b5 [file] [log] [blame]
ToDo
----
Last Minute:
- fix test package order to be deterministic (not dependent on hash iteration order)
Bugs:
- bug: if selected device config is deleted, execute button stays enabled!
- bug: 'all results' is not auto-selected in tree
- bug: crashing test case stops test batch progress
- bug: execservers are sometimes leaked on Linux (is it always or just on test crash?)
- bug: unsupported cases (everything GLES3) leaves test cases with status 'running'
- bug: case result view says "loading" when no log is available (case pending or not executed)
- bug: long test case names in treeview nastily overlap status code
- bug: deadlock with client goroutine calling into rtdb calling back with listener updates
- bug: progress of batch stops if unable to launch test package executable
- bug: if cherry.exe is launched from test.py, the spawned execservers create a visible window
Backlog:
- clean up error handling (esp. in testrunner)
- use ip:port as deviceId for queueing purposes
- refactor rtdb object crud logic into a re-usable package/service (start using for device configs)
- plan for saving test launch settings (and others)
- test case image extraction
* custom http routes for images
* custom de-duplicating binary database
- dynamic device handling
- when opening direct link to test case, automatically expand test case path in treeview
- test runner robustness
- display raw test log xml (use tabs in result log view?)
- convert database to use schemas with table for each object type
- optimize treeview
* function calls inside treeview (replace with explicit logic?)
* get rid of filters in treeview (or use lazy initialization?)
Done
----
- basic data model (for results)
- dummy test executor
- dummy test case result data
- placeholder test result xml converter (into angular-html)
- initial test case visualization
- basic infrastructure for viewing test case results
- basic handling of sample lists
- move xml conversion to client
- basic treeview for test cases (highlight active one)
- qpa data parsing (simulated execution with real data, for testing purposes)
- qpa archive parser (only archive format, not internal xml)
- test group progress bar visuals
- bug: when starting with empty Cherry.db, batchResultList isn't properly initialized
- bug: dynamic update of test case results during test execution
- auto-open items in treeview (with horrible kludge!)
- execserver protocol message support
- initial tcpip-link to execserver
- other test result data types
- integrate qpa parser with tcpip link
- basic communication from commlink to testrunner
- multi-case prefix encoder
- execute multiple cases in single batch
- test runner can continue from terminated tester process
- bug: test case statuses are not parsed from xml log
- bug: if test case not in test package, test runner keeps on trying forever (without progress)
- fix test case status code (parse from xml or take from #terminate)
- xml-imported test cases, test sets
- test name filtering support
- allow specifying test name filters from the GUI
- use type.id pair to identify rtdb objects (i.e., make them bucketed)
- implement proper transactions in rtdb
- group multiple test case inits into single transaction (to speed up test launch)
- support spawning local execserver
- fix batch result object model (test case tree is now explicitly represented in database)
- bug: writeQueue becomes full and blocks whole rtdb server
- bug: send all object updates as single message (not one msg per object)
- bug: test case selection does not work
- bug: pressing treeview status box activates row, but doesn't show test case
- bug: server still becomes deadlocked?!
- implement listener unsubscribes/destruction
- bug: test execution sometimes stops (doesn't make any progress)
- implement batch result stats
- bug: goroutine leaks (in CommLinkTcpIp.Stop())
- optimize test case treeview (horribly slow to open even ~50 results!)
- correct values to test group progress bars
- test package (==binary) support in test execution
- more test cases: use full hierarchy? test sets or similar?
- client-side multi-subscribe (enqueue subscribes and send in one batch)
- client-side incoming message queue (handle incoming messages in larger batches)
- batched rtdb subscribe and unsubscribe (from client)
- simplify & optimize treeview
- bug: quick subscribe+unsubscribe leads to panic on server (unsubscribe of not-yet-subscribed object)
- wrap buffered queues in a class
- reimplement reflection-based service libraries from scratch
- switch to gob for db storage
- new device / test selection screen
- new batch result view
- support multiple test packages
- separate batch result list view & test case view
- better batch result list view (progress bars etc.)
- batch execution scheduler (only allow one execution for now?)
- stop/continue test execution
- create new device (support device config rename?)
- remove/rename device configs
- bug: test case name 'constructor' causes havoc with javascript objects..
- refactor client-side file structure (split up large .js files)
- fix Selenium tests to not bork on timing issues
- bug: empty test case filters leaves batch in state 'initializing'
- bug: cannot give command line args to local spawned process
- basic test infrastructure
- basic tests
- plan for better concurrency in rtdb
- improve object-op handling in rtdb (wrap in a class, with decent API)
- document test infrastructure (how to expand + todos/notes)
- add Selenium test for launching a test case
- bind multiple rtdb objects into same scope
- versioned views to rtdb (needed by test runner when launching tests?)