View Javadoc

1   package com.atlassian.vcache.internal.core.metrics;
2   
3   import com.atlassian.vcache.internal.RequestContext;
4   import com.atlassian.vcache.internal.RequestMetrics;
5   import org.junit.Before;
6   import org.junit.Test;
7   import org.junit.runner.RunWith;
8   import org.mockito.Mock;
9   import org.mockito.runners.MockitoJUnitRunner;
10  
11  import java.util.function.Predicate;
12  import java.util.function.Supplier;
13  
14  import static org.hamcrest.CoreMatchers.instanceOf;
15  import static org.junit.Assert.assertThat;
16  import static org.mockito.Matchers.any;
17  import static org.mockito.Mockito.when;
18  
19  @RunWith(MockitoJUnitRunner.class)
20  public class SamplingMetricsCollectorTest {
21  
22      private SamplingMetricsCollector collector;
23  
24      @Mock
25      private RequestContext requestContext;
26  
27      @Mock
28      private Predicate<RequestContext> collectMetrics;
29  
30      @Before
31      public void setUp() throws Exception {
32          collector = new SamplingMetricsCollector(() -> requestContext, collectMetrics);
33  
34          // Always call the supplier
35          when(requestContext.computeIfAbsent(any(), any())).thenAnswer(invocationOnMock ->
36                  ((Supplier<RequestMetrics>)invocationOnMock.getArguments()[1]).get());
37      }
38  
39      @Test
40      public void shouldReturnEmptyMetricsIfNotCollecting() throws Exception {
41          when(collectMetrics.test(requestContext)).thenReturn(false);
42          assertThat(collector.obtainMetrics(requestContext), instanceOf(EmptyRequestMetrics.class));
43      }
44  
45      @Test
46      public void shouldReturnRealMetricsIfCollecting() throws Exception {
47          when(collectMetrics.test(requestContext)).thenReturn(true);
48          assertThat(collector.obtainMetrics(requestContext), instanceOf(DefaultRequestMetrics.class));
49      }
50  }