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