Commit Graph

19 Commits

Author SHA1 Message Date
David Wendt f7a4593ab4 scanner: Add post-scan progress analysis 2021-09-11 09:52:40 -07:00
David Wendt 3294ef17e4 scanner: Break the scanner up into multiple modules 2021-09-11 09:52:40 -07:00
David Wendt 7a71cce028 scanner: Break each movie out into a separate process.
Since forking isn't an option in Rust (and is generally unsafe, incompatible with threads, and more or less not UNIX's best design idea) we instead grab the current binary path and run it again with a different subcommand.

This should allow us to grab all the panics, including uncatchable ones.

Note: this also requires that we introduce an IPC mechanism. I currently decided to have it spit out CSV rows, same as the main `scan` command. This also makes the psuedo-fork subcommand arguably useful on it's own as it will dump timing metrics for each step.
2021-09-11 09:52:40 -07:00
David Wendt 263c1133c8 scanner: Add a `scan` subcommand 2021-09-11 09:52:40 -07:00
David Wendt 75f1b40925 scanner: Deduplicate repeated log messages 2021-09-11 09:52:40 -07:00
David Wendt a284d5d13b scanner: Record test duration (in milliseconds) 2021-09-11 09:52:40 -07:00
David Wendt a18d13833c scanner: Print partial results as they come out of the parallel iterator.
This relies on a proposed serial bridge as per https://github.com/rayon-rs/rayon/issues/858. As that project is licensed the same as Ruffle itself and the submitter intended it to be included in Rayon, I believe it's legal to copy this code.
2021-09-11 09:52:40 -07:00
David Wendt 46638b1be8 scanner: Set the default scanner thread size to 16MB.
Rayon's default of 2MB is about half of what the AVM1 recursion limit requires, and I have plenty of memory, so I might as well add some padding for long runs.
2021-09-11 09:52:40 -07:00
David Wendt b49ae66ff3 scanner: Run the first frame of every movie we scan.
This currently fails to scan the entire Flashpoint `localflash` directory because Rust considers stack overflow to be an immediate program termination, no ifs, ands, or buts about it.
2021-09-11 09:52:40 -07:00
David Wendt 2b061cdba6 scanner: Report what stage of the scan got to before any errors happened 2021-09-11 09:52:40 -07:00
David Wendt 1d0e418c5c scanner: Parallelize the scan process 2021-09-11 09:52:40 -07:00
David Wendt f9c646e51f scanner: Report decompression failures as errors instead of panicking. 2021-09-11 09:52:40 -07:00
David Wendt 074cc4bc8e scanner: Report the AVM version of every scanned file 2021-09-11 09:52:40 -07:00
dependabot[bot] 860f26ef7d chore: Bump indicatif from 0.15.0 to 0.16.0
Bumps [indicatif](https://github.com/mitsuhiko/indicatif) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/mitsuhiko/indicatif/releases)
- [Commits](https://github.com/mitsuhiko/indicatif/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-03 15:37:40 -07:00
Mike Welsh 61628a74fc swf: Rename and organize some util methods
* SwfRead -> SwfReadExt
 * SwfWrite -> SwfWriteExt
 * read_swf_header -> decompress_swf
 * read_swf -> parse_swf
2021-01-20 15:02:31 -08:00
Mike Welsh 19034b76e4 swf: Return slices in swf::Reader
Avoid copies by returning slices of the decompressed input.
2021-01-20 15:02:31 -08:00
Mike Welsh a59f211ae8 chore: Bump clap to 3.0-beta.2 2020-09-21 18:56:46 -07:00
Mike Welsh b99b9efe5d scanner: Switch to clap 3.0 2020-08-14 14:12:08 -07:00
Nathan Adams 59d39d6572 Added a bulk swf scanning tool 2019-10-11 16:37:15 -07:00