Skip to content

Commit ec0bc10

Browse files
committed
test(cosid-core): enhance DefaultClockBackwardsSynchronizerTest with new test cases
- Refactor existing test to use a class-level synchronizer instance - Add test cases for syncUninterruptibly method - Verify behavior when interrupt flag is set - Test exception handling for exceeding broken threshold
1 parent cc2172c commit ec0bc10

File tree

1 file changed

+45
-8
lines changed

1 file changed

+45
-8
lines changed

cosid-core/src/test/java/me/ahoo/cosid/machine/DefaultClockBackwardsSynchronizerTest.java

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,63 @@
1616
import static me.ahoo.cosid.machine.DefaultClockBackwardsSynchronizer.DEFAULT_BROKEN_THRESHOLD;
1717
import static org.junit.jupiter.api.Assertions.*;
1818
import static org.hamcrest.MatcherAssert.assertThat;
19-
import static org.hamcrest.Matchers.*;
2019

20+
import me.ahoo.cosid.CosIdException;
2121
import me.ahoo.cosid.snowflake.exception.ClockTooManyBackwardsException;
2222

2323
import lombok.SneakyThrows;
2424
import org.junit.jupiter.api.Assertions;
2525
import org.junit.jupiter.api.Test;
2626

2727
class DefaultClockBackwardsSynchronizerTest {
28-
28+
DefaultClockBackwardsSynchronizer synchronizer = new DefaultClockBackwardsSynchronizer();
29+
2930
@SneakyThrows
3031
@Test
3132
void sync() {
32-
DefaultClockBackwardsSynchronizer clockBackwardsSynchronizer = new DefaultClockBackwardsSynchronizer();
33-
clockBackwardsSynchronizer.sync(System.currentTimeMillis());
34-
clockBackwardsSynchronizer.sync(System.currentTimeMillis() + 1);
35-
clockBackwardsSynchronizer.sync(System.currentTimeMillis() - 10);
36-
clockBackwardsSynchronizer.sync(System.currentTimeMillis() + 10);
33+
synchronizer.sync(System.currentTimeMillis());
34+
synchronizer.sync(System.currentTimeMillis() + 1);
35+
synchronizer.sync(System.currentTimeMillis() + 1);
36+
synchronizer.sync(System.currentTimeMillis() + 1);
37+
synchronizer.sync(System.currentTimeMillis() - 10);
38+
synchronizer.sync(System.currentTimeMillis() + 10);
3739
Assertions.assertThrows(ClockTooManyBackwardsException.class, () -> {
38-
clockBackwardsSynchronizer.sync(System.currentTimeMillis() + DEFAULT_BROKEN_THRESHOLD + 100);
40+
synchronizer.sync(System.currentTimeMillis() + DEFAULT_BROKEN_THRESHOLD + 100);
41+
});
42+
}
43+
44+
@SneakyThrows
45+
@Test
46+
void syncUninterruptibly() {
47+
long normalTimestamp = System.currentTimeMillis();
48+
assertDoesNotThrow(() -> synchronizer.syncUninterruptibly(normalTimestamp));
49+
}
50+
51+
@SneakyThrows
52+
@Test
53+
void syncUninterruptiblyWhenInterrupted() {
54+
final long triggerTimestamp = System.currentTimeMillis() + DEFAULT_BROKEN_THRESHOLD;
55+
56+
Thread testThread = new Thread(() -> {
57+
Thread.currentThread().interrupt();
58+
synchronizer.syncUninterruptibly(triggerTimestamp);
3959
});
60+
61+
testThread.start();
62+
testThread.join();
63+
assertTrue(testThread.isInterrupted());
64+
65+
// Cleanup
66+
Thread.interrupted();
67+
}
68+
69+
/**
70+
* TC3: 验证时钟回拨过大异常透传
71+
*/
72+
@Test
73+
void syncUninterruptiblyWhenExceedBrokenThreshold() {
74+
long exceedTimestamp = System.currentTimeMillis() + DEFAULT_BROKEN_THRESHOLD + 100;
75+
assertThrows(ClockTooManyBackwardsException.class,
76+
() -> synchronizer.syncUninterruptibly(exceedTimestamp));
4077
}
4178
}

0 commit comments

Comments
 (0)