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
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 }