Hello, I have posted similar question to Atlassian Community and was advised to ask a question here.
We are developing a plugin for Jira.
When it comes to testing we would need to run our Jira instance on different times to test all possible edge cases. Eg. say I want to see how our plugin would fare if the “system time” was few years in the past (1.1.2020) or in the future (1.1.2026).
How would one make this happen? Is there any existing parameter to set at runtime that would solve this problem?
Things I’ve tried.
Since we will be running our tests on jira instances deployed in docker containers, I’ve tried libfaketime (github-libfaketime)
This allows us to set the time a program sees, without messing with actual system time. This solution kinda worked but Jira became so slow it became unusable.
Then I came across a solution which includes writing my own ClassLoader where I could kinda intercept System. currentTimeMillis() and set it to my needs.
Also from this post (time - java.lang.System.currentTimeMillis() replace method - Stack Overflow) the most promising solution was to use AspectJs weaver to weave or rather replace java.lang.System.currentTimeMillis() with my own code. But this one I couldn’t get quite to work.
And obviously I’ve searched for anything useful in Atlassian documentation to found possible fixes (with no success).
So before we go back to “ugly fixes” I would like to know if Jira has any known solutions to this problem (surely we are not the only ones facing this problem) that are straight forward.
And If not what other things should I try?
Thanks in advance!