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 }