[
https://issues.apache.org/jira/browse/HDDS-6655?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephen O'Donnell reassigned HDDS-6655:
---------------------------------------
Assignee: Stephen O'Donnell
> Use injected clocks for SCM background service UTs.
> ---------------------------------------------------
>
> Key: HDDS-6655
> URL: https://issues.apache.org/jira/browse/HDDS-6655
> Project: Apache Ozone
> Issue Type: Improvement
> Reporter: Mark Gui
> Assignee: Stephen O'Donnell
> Priority: Minor
>
> "There are a couple of places in the new scrubber code and the existing
> scrubber code in PipelineManagerImpl, where it uses {{Time.monotonicNow()}}
> to decide if the Safemode interval has passed, or if a pipeline has been
> Closed long enough etc. The unit tests do not correctly test these scenarios,
> as we just set the time to zero so there is no delay, otherwise the tests
> would need sleep calls, which will make them slow.
> In ReplicationManager, we addressed this problem by injecting a Clock
> dependency. See {{MonotonicClock}} - if we inject this as a dependency to the
> scrubber code, then we can inject a {{MonotonicClock}} for runtime, but
> inject {{TestClock}} for tests. Then you can properly test the safemode delay
> by advancing the clock between check calls. Same for pipelines - we can check
> CLOSED ones are not removed before the delay, and then check they are
> scrubbed after the delay.
> In general, we should try to avoid calls to {{Time.monotonicNow()}} across
> the codebase, and instead inject a clock as a dependency to make the code
> more testable without sleeps."
> -- Stephen
--
This message was sent by Atlassian Jira
(v8.20.7#820007)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]