Refactor how reporters interact with metrics. #127
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Here's the first PR for this beast. Thought I might as well squash it and open a PR so we'd get a more concise way of discussing the changes.
= Origin
The core of this refactoring is the introduction of the MetricsProcessor
interface which now all the reporters implement. The primary driver here
is to eliminate a slew of code blocks following this pattern:
So there's now a MetricsProcessor that solves this and forces it's
implementors to handle all different metric types. An effect of this is that
introducing a new type of metric will trickle down to all reporters and
implementors of this is interface.
= Collateral changes
In the process of getting this in place the following has also happened:
percentiles(Double...)
The two new interfaces also allowed elimination of duplication in some
of the reporters.