View Javadoc

1   package com.atlassian.vcache.internal.memcached;
2   
3   import com.atlassian.vcache.internal.BegunTransactionalActivityHandler;
4   import com.atlassian.vcache.internal.RequestContext;
5   import com.atlassian.vcache.internal.VCacheCreationHandler;
6   import com.atlassian.vcache.internal.VCacheSettingsDefaultsProvider;
7   import com.atlassian.vcache.internal.core.ExternalCacheKeyGenerator;
8   import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
9   import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
10  import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
11  import net.spy.memcached.MemcachedClientIF;
12  import org.junit.Rule;
13  import org.junit.Test;
14  import org.junit.rules.ExpectedException;
15  import org.junit.runner.RunWith;
16  import org.mockito.Mock;
17  import org.mockito.runners.MockitoJUnitRunner;
18  
19  import java.util.function.Function;
20  import java.util.function.Supplier;
21  
22  import static org.hamcrest.Matchers.instanceOf;
23  import static org.hamcrest.Matchers.is;
24  import static org.hamcrest.Matchers.notNullValue;
25  import static org.junit.Assert.assertThat;
26  
27  @RunWith(MockitoJUnitRunner.class)
28  public class MemcachedVCacheServiceSettingsBuilderTest {
29      @Rule
30      public ExpectedException thrown = ExpectedException.none();
31  
32      @Mock
33      private VCacheCreationHandler creationHandler;
34      @Mock
35      private Supplier<MemcachedClientIF> clientSupplier;
36      @Mock
37      private Supplier<RequestContext> contextSupplier;
38      @Mock
39      private Supplier<RequestContext> workContextContextSupplier;
40      @Mock
41      private VCacheSettingsDefaultsProvider defaultsProvider;
42      @Mock
43      private MetricsCollector metricsCollector;
44      @Mock
45      private BegunTransactionalActivityHandler begunTransactionalActivityHandler;
46      @Mock
47      private ExternalCacheKeyGenerator externalCacheKeyGenerator;
48      @Mock
49      private Function<String, Boolean> dontExternaliseCache;
50  
51      @Test
52      public void createWithProductIdentifierAndDefaults() {
53          final MemcachedVCacheServiceSettings settings = new MemcachedVCacheServiceSettingsBuilder()
54                  .creationHandler(creationHandler)
55                  .clientSupplier(clientSupplier)
56                  .threadLocalContextSupplier(contextSupplier)
57                  .workContextContextSupplier(workContextContextSupplier)
58                  .defaultsProvider(defaultsProvider)
59                  .productIdentifier("confira")
60                  .build();
61  
62          assertThat(settings, notNullValue());
63          assertThat(settings.getCreationHandler(), is(creationHandler));
64          assertThat(settings.getClientSupplier(), is(clientSupplier));
65          assertThat(settings.getContextSupplier(), is(contextSupplier));
66          assertThat(settings.getWorkContextContextSupplier(), is(workContextContextSupplier));
67          assertThat(settings.getDefaultsProvider(), is(defaultsProvider));
68          assertThat(settings.getBegunTransactionalActivityHandler(), notNullValue());
69          assertThat(settings.getDontExternaliseCache(), notNullValue());
70          assertThat(settings.getDontExternaliseCache().apply("name"), is(false));
71          assertThat(settings.getExternalCacheKeyGenerator(), notNullValue());
72          assertThat(settings.getExternalCacheKeyGenerator(), instanceOf(Sha1ExternalCacheKeyGenerator.class));
73          assertThat(settings.getMetricsCollector(), notNullValue());
74          assertThat(settings.getMetricsCollector(), instanceOf(DefaultMetricsCollector.class));
75      }
76  
77      @Test
78      public void createWithProductIdentifierAndNoDefaults() {
79          final MemcachedVCacheServiceSettings settings = new MemcachedVCacheServiceSettingsBuilder()
80                  .creationHandler(creationHandler)
81                  .clientSupplier(clientSupplier)
82                  .threadLocalContextSupplier(contextSupplier)
83                  .workContextContextSupplier(workContextContextSupplier)
84                  .defaultsProvider(defaultsProvider)
85                  .productIdentifier("confira")
86                  .metricsCollector(metricsCollector)
87                  .begunTransactionalActivityHandler(begunTransactionalActivityHandler)
88                  .dontExternaliseCache(dontExternaliseCache)
89                  .build();
90  
91          assertThat(settings, notNullValue());
92          assertThat(settings.getCreationHandler(), is(creationHandler));
93          assertThat(settings.getClientSupplier(), is(clientSupplier));
94          assertThat(settings.getContextSupplier(), is(contextSupplier));
95          assertThat(settings.getWorkContextContextSupplier(), is(workContextContextSupplier));
96          assertThat(settings.getDefaultsProvider(), is(defaultsProvider));
97          assertThat(settings.getBegunTransactionalActivityHandler(), is(begunTransactionalActivityHandler));
98          assertThat(settings.getMetricsCollector(), is(metricsCollector));
99          assertThat(settings.getMetricsCollector(), is(metricsCollector));
100         assertThat(settings.getDontExternaliseCache(), is(dontExternaliseCache));
101         assertThat(settings.getExternalCacheKeyGenerator(), instanceOf(Sha1ExternalCacheKeyGenerator.class));
102     }
103 
104     @Test
105     public void createWithMissingCreationHandler() {
106         thrown.expect(NullPointerException.class);
107         thrown.expectMessage("missing creationHandler");
108 
109         new MemcachedVCacheServiceSettingsBuilder()
110                 .clientSupplier(clientSupplier)
111                 .threadLocalContextSupplier(contextSupplier)
112                 .workContextContextSupplier(workContextContextSupplier)
113                 .defaultsProvider(defaultsProvider)
114                 .productIdentifier("confira")
115                 .build();
116     }
117 
118     @Test
119     public void createWithExternalCacheKeyGeneratorAndDefaults() {
120         final MemcachedVCacheServiceSettings settings = new MemcachedVCacheServiceSettingsBuilder()
121                 .creationHandler(creationHandler)
122                 .clientSupplier(clientSupplier)
123                 .threadLocalContextSupplier(contextSupplier)
124                 .workContextContextSupplier(workContextContextSupplier)
125                 .defaultsProvider(defaultsProvider)
126                 .externalCacheKeyGenerator(externalCacheKeyGenerator)
127                 .build();
128 
129         assertThat(settings, notNullValue());
130         assertThat(settings.getCreationHandler(), is(creationHandler));
131         assertThat(settings.getClientSupplier(), is(clientSupplier));
132         assertThat(settings.getContextSupplier(), is(contextSupplier));
133         assertThat(settings.getWorkContextContextSupplier(), is(workContextContextSupplier));
134         assertThat(settings.getDefaultsProvider(), is(defaultsProvider));
135         assertThat(settings.getBegunTransactionalActivityHandler(), notNullValue());
136         assertThat(settings.getExternalCacheKeyGenerator(), is(externalCacheKeyGenerator));
137         assertThat(settings.getDontExternaliseCache(), notNullValue());
138         assertThat(settings.getDontExternaliseCache().apply("name"), is(false));
139         assertThat(settings.getMetricsCollector(), notNullValue());
140         assertThat(settings.getMetricsCollector(), instanceOf(DefaultMetricsCollector.class));
141     }
142 }