1 package com.atlassian.vcache.internal.core.metrics;
2
3 import com.atlassian.vcache.internal.core.TransactionControl;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.mockito.Mock;
7 import org.mockito.runners.MockitoJUnitRunner;
8
9 import static com.atlassian.vcache.internal.MetricLabel.TIMED_TRANSACTION_DISCARD_CALL;
10 import static com.atlassian.vcache.internal.MetricLabel.TIMED_TRANSACTION_SYNC_CALL;
11 import static com.atlassian.vcache.internal.core.metrics.CacheType.EXTERNAL;
12 import static org.mockito.Matchers.anyLong;
13 import static org.mockito.Matchers.eq;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.verifyNoMoreInteractions;
16
17 @RunWith(MockitoJUnitRunner.class)
18 public class TimedTransactionControlTest {
19 @Mock
20 private TransactionControl delegate;
21
22 @Mock
23 private MetricsRecorder metricsRecorder;
24
25 @Test
26 public void testTransactionSync() throws Exception {
27 final TimedTransactionControl timed = new TimedTransactionControl(delegate, metricsRecorder, "daft punk");
28
29 timed.transactionSync();
30
31 verify(metricsRecorder).record(eq("daft punk"), eq(EXTERNAL), eq(TIMED_TRANSACTION_SYNC_CALL), anyLong());
32 verify(delegate).transactionSync();
33 verifyNoMoreInteractions(delegate, metricsRecorder);
34 }
35
36 @Test
37 public void testTransactionDiscard() throws Exception {
38 final TimedTransactionControl timed = new TimedTransactionControl(delegate, metricsRecorder, "pet shop boys");
39
40 timed.transactionDiscard();
41
42 verify(metricsRecorder).record(eq("pet shop boys"), eq(EXTERNAL), eq(TIMED_TRANSACTION_DISCARD_CALL), anyLong());
43 verify(delegate).transactionDiscard();
44 verifyNoMoreInteractions(delegate, metricsRecorder);
45 }
46 }