The report can also be grouped first by property path, then by event type.
If the data is output grouped first by event type, properties can be sorted by path or by count of events.
Infrastructure changes and bug fixes
All report generators ('reporters') are child classes of the Reporter class (src/report/reporter.coffee) in an attempt to provide a standard interface.
Both types of reports rely on src/report/common/flattenEvents.coffee to convert observation data returned by an ObservationStoreManager into a flat list of events. The flattening process adds property path data and an event type name to each event.
The library provides access to Reporter objects through src/report/index.coffee, which serves as a factory.
Corrected the ObservationStore and ObservationStoreManager classes so that they store data in a properly recursive structure. (Originally, the recursion depth was accidentally limited to one level, which could not accommodate observation data for properties of properties and deeper levels of nesting.)
Observation data output and report generation is asynchronous (using promises).
In my opinion, the format in which observation data is stored allows for efficient insertion of observation data. However, formatting the data into a report is made more difficult/expensive by this format.
Note that the retrieval of observation data involves cloning. This protects stored observation data from accidental modification.
Testing Performed
Validated that the report output matched the debugging logger output of the property accessor functions bound to the wrapper object.
Tested all combinations of report generation options (the options object passed to getReportAsString() in src/report/reporter.coffee.
Requested reviewers: None Issues: #1
Summary of Changes
Detailed Changes
Time series of events
src/report/reporters/logStyleReporter.coffee
Counts of events
src/report/reporters/eventCountsReporter.coffee
Infrastructure changes and bug fixes
Reporter
class (src/report/reporter.coffee
) in an attempt to provide a standard interface.src/report/common/flattenEvents.coffee
to convert observation data returned by anObservationStoreManager
into a flat list of events. The flattening process adds property path data and an event type name to each event.Reporter
objects throughsrc/report/index.coffee
, which serves as a factory.ObservationStore
andObservationStoreManager
classes so that they store data in a properly recursive structure. (Originally, the recursion depth was accidentally limited to one level, which could not accommodate observation data for properties of properties and deeper levels of nesting.)Testing Performed
options
object passed togetReportAsString()
insrc/report/reporter.coffee
.