mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-18 02:31:27 +00:00
Added log rotation utility class
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package org.cryptomator.logging;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import ch.qos.logback.core.rolling.TriggeringPolicyBase;
|
||||
|
||||
/**
|
||||
* Triggers a roll-over on the first log event, so each launched application instance will rotate the log.
|
||||
*/
|
||||
public class LaunchBasedTriggeringPolicy<E> extends TriggeringPolicyBase<E> {
|
||||
|
||||
private final AtomicBoolean shouldTrigger = new AtomicBoolean(true);
|
||||
|
||||
@Override
|
||||
public boolean isTriggeringEvent(File activeFile, E event) {
|
||||
return shouldTrigger.get() && shouldTrigger.getAndSet(false);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.cryptomator.logging;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
public class LaunchBasedTriggeringPolicyTest {
|
||||
|
||||
@Test
|
||||
public void testTriggerOnceAndNeverAgain() {
|
||||
LaunchBasedTriggeringPolicy<Object> policy = new LaunchBasedTriggeringPolicy<>();
|
||||
File activeFile = Mockito.mock(File.class);
|
||||
Object event = Mockito.mock(Object.class);
|
||||
|
||||
// 1st invocation
|
||||
boolean triggered = policy.isTriggeringEvent(activeFile, event);
|
||||
Assert.assertTrue(triggered);
|
||||
|
||||
// 2nd invocation
|
||||
triggered = policy.isTriggeringEvent(activeFile, event);
|
||||
Assert.assertFalse(triggered);
|
||||
|
||||
// 3rd invocation
|
||||
triggered = policy.isTriggeringEvent(activeFile, event);
|
||||
Assert.assertFalse(triggered);
|
||||
|
||||
Mockito.verifyZeroInteractions(activeFile);
|
||||
Mockito.verifyZeroInteractions(event);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user