1 package com.atlassian.vcache.internal.core;
2
3 import java.time.Duration;
4 import java.util.Optional;
5
6 import com.atlassian.vcache.ChangeRate;
7 import com.atlassian.vcache.JvmCacheSettings;
8 import com.atlassian.vcache.internal.JvmCacheDetails;
9 import com.atlassian.vcache.internal.VCacheCreationHandler;
10
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.Mock;
15 import org.mockito.runners.MockitoJUnitRunner;
16
17 import static org.hamcrest.Matchers.is;
18 import static org.hamcrest.Matchers.notNullValue;
19 import static org.junit.Assert.assertThat;
20 import static org.mockito.Mockito.when;
21
22 @RunWith(MockitoJUnitRunner.class)
23 public class DefaultVCacheCreationHandlerTest
24 {
25 @Mock
26 private JvmCacheSettings jvmCacheSettings;
27 @Mock
28 private JvmCacheDetails jvmCacheDetails;
29
30 @Before
31 public void initStuff()
32 {
33 when(jvmCacheDetails.getName()).thenReturn("coins");
34 when(jvmCacheDetails.getSettings()).thenReturn(jvmCacheSettings);
35 }
36
37 @Test
38 public void jvmCacheCreation_empty()
39 {
40 final VCacheCreationHandler handler = new DefaultVCacheCreationHandler(
41 10, Duration.ofSeconds(11), 12, ChangeRate.LOW_CHANGE, ChangeRate.HIGH_CHANGE);
42 when(jvmCacheSettings.getMaxEntries()).thenReturn(Optional.empty());
43 when(jvmCacheSettings.getDefaultTtl()).thenReturn(Optional.empty());
44
45 final JvmCacheSettings settings = handler.jvmCacheCreation(jvmCacheDetails);
46
47 assertThat(settings, notNullValue());
48 assertThat(settings.getMaxEntries(), is(Optional.of(10)));
49 assertThat(settings.getDefaultTtl(), is(Optional.of(Duration.ofSeconds(11))));
50 }
51
52 @Test
53 public void jvmCacheCreation_under_limits()
54 {
55 final VCacheCreationHandler handler = new DefaultVCacheCreationHandler(
56 10, Duration.ofSeconds(11), 12, ChangeRate.LOW_CHANGE, ChangeRate.HIGH_CHANGE);
57 when(jvmCacheSettings.getMaxEntries()).thenReturn(Optional.of(4));
58 when(jvmCacheSettings.getDefaultTtl()).thenReturn(Optional.of(Duration.ofSeconds(5)));
59
60 final JvmCacheSettings settings = handler.jvmCacheCreation(jvmCacheDetails);
61
62 assertThat(settings, notNullValue());
63 assertThat(settings.getMaxEntries(), is(Optional.of(4)));
64 assertThat(settings.getDefaultTtl(), is(Optional.of(Duration.ofSeconds(5))));
65 }
66
67 @Test
68 public void jvmCacheCreation_over_limits()
69 {
70 final VCacheCreationHandler handler = new DefaultVCacheCreationHandler(
71 10, Duration.ofSeconds(11), 12, ChangeRate.LOW_CHANGE, ChangeRate.HIGH_CHANGE);
72 when(jvmCacheSettings.getMaxEntries()).thenReturn(Optional.of(40));
73 when(jvmCacheSettings.getDefaultTtl()).thenReturn(Optional.of(Duration.ofSeconds(50)));
74
75 final JvmCacheSettings settings = handler.jvmCacheCreation(jvmCacheDetails);
76
77 assertThat(settings, notNullValue());
78 assertThat(settings.getMaxEntries(), is(Optional.of(10)));
79 assertThat(settings.getDefaultTtl(), is(Optional.of(Duration.ofSeconds(11))));
80 }
81
82 @Test
83 public void testRequestCacheCreation() throws Exception
84 {
85
86 }
87
88 @Test
89 public void testExternalCacheCreation() throws Exception
90 {
91
92 }
93 }