View Javadoc

1   package com.atlassian.vcache.internal.core.metrics;
2   
3   import com.atlassian.vcache.ExternalCache;
4   import com.atlassian.vcache.PutPolicy;
5   import com.atlassian.vcache.TransactionalExternalCache;
6   import org.junit.Before;
7   import org.junit.Test;
8   import org.junit.runner.RunWith;
9   import org.mockito.Mock;
10  import org.mockito.runners.MockitoJUnitRunner;
11  
12  import static com.atlassian.vcache.internal.MetricLabel.TIMED_PUT_CALL;
13  import static com.atlassian.vcache.internal.MetricLabel.TIMED_REMOVE_ALL_CALL;
14  import static com.atlassian.vcache.internal.MetricLabel.TIMED_REMOVE_CALL;
15  import static com.atlassian.vcache.internal.core.metrics.CacheType.EXTERNAL;
16  import static java.util.Collections.singletonList;
17  import static org.mockito.Matchers.anyLong;
18  import static org.mockito.Matchers.eq;
19  import static org.mockito.Mockito.verify;
20  import static org.mockito.Mockito.verifyNoMoreInteractions;
21  import static org.mockito.Mockito.when;
22  
23  @RunWith(MockitoJUnitRunner.class)
24  public class TimedTransactionalExternalCacheTest extends TimedExternalCacheTest {
25      @Mock
26      private TransactionalExternalCache<String> delegate;
27  
28      private TimedTransactionalExternalCache<String> timed;
29  
30      @Before
31      public void init() {
32          when(delegate.getName()).thenReturn(CACHE_NAME);
33          timed = new TimedTransactionalExternalCache<>(metricsRecorder, delegate);
34      }
35  
36      @Override
37      protected ExternalCache<String> getDelegate() {
38          return delegate;
39      }
40  
41      @Override
42      protected TimedExternalCache<String> getTimed() {
43          return timed;
44      }
45  
46      @Test
47      public void put_success() throws Exception {
48          timed.put("foo", "value", PutPolicy.ADD_ONLY);
49  
50          verify(metricsRecorder).record(eq(CACHE_NAME), eq(EXTERNAL), eq(TIMED_PUT_CALL), anyLong());
51          verify(delegate).put("foo", "value", PutPolicy.ADD_ONLY);
52          verify(delegate).getName();
53          verifyNoMoreInteractions(metricsRecorder, delegate);
54      }
55  
56      @Test
57      public void removeAll_success() throws Exception {
58          timed.removeAll();
59  
60          verify(metricsRecorder).record(eq(CACHE_NAME), eq(EXTERNAL), eq(TIMED_REMOVE_ALL_CALL), anyLong());
61          verify(delegate).removeAll();
62          verify(delegate).getName();
63          verifyNoMoreInteractions(metricsRecorder, delegate);
64      }
65  
66      @Test
67      public void remove_success() throws Exception {
68          timed.remove(singletonList("willy"));
69  
70          verify(metricsRecorder).record(eq(CACHE_NAME), eq(EXTERNAL), eq(TIMED_REMOVE_CALL), anyLong());
71          verify(delegate).remove(singletonList("willy"));
72          verify(delegate).getName();
73          verifyNoMoreInteractions(metricsRecorder);
74      }
75  }