package com.spotify.heroic; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import com.spotify.heroic.aggregation.AggregationFactory; import com.spotify.heroic.cache.QueryCache; import com.spotify.heroic.cluster.ClusterManager; import com.spotify.heroic.common.DateRange; import com.spotify.heroic.common.Features; import com.spotify.heroic.common.OptionalLimit; import com.spotify.heroic.grammar.QueryParser; import com.spotify.heroic.querylogging.QueryLogger; import com.spotify.heroic.querylogging.QueryLoggerFactory; import com.spotify.heroic.statistics.QueryReporter; import com.spotify.heroic.time.Clock; import eu.toolchain.async.AsyncFramework; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class CoreQueryManagerTest { private CoreQueryManager manager; @Mock private AsyncFramework async; @Mock private ClusterManager cluster; @Mock private QueryParser parser; @Mock private QueryCache queryCache; @Mock private AggregationFactory aggregations; @Before public void setup() { QueryReporter queryReporter = mock(QueryReporter.class); long smallQueryThreshold = 0; QueryLogger queryLogger = mock(QueryLogger.class); QueryLoggerFactory queryLoggerFactory = mock(QueryLoggerFactory.class); when(queryLoggerFactory.create(any())).thenReturn(queryLogger); manager = new CoreQueryManager(Features.empty(), async, Clock.system(), cluster, parser, queryCache, aggregations, OptionalLimit.empty(), smallQueryThreshold, queryReporter, queryLoggerFactory); } @Test public void testEndRangeIsNow() { final DateRange range = DateRange.create(50_000L, 150_000L); final DateRange shiftedRange = manager.buildShiftedRange(range, 5_000, 150_000L); assertEquals(DateRange.create(40_000L, 140_000L), shiftedRange); } @Test public void testEndRangeIsTooCloseToNow() { final DateRange range = DateRange.create(50_000L, 153_000L); final DateRange shiftedRange = manager.buildShiftedRange(range, 5_000, 154_000L); assertEquals(DateRange.create(40_000L, 140_000L), shiftedRange); } @Test public void testEndRangeIsOk() { final DateRange range = DateRange.create(50_000L, 153_000L); final DateRange shiftedRange = manager.buildShiftedRange(range, 5_000, 184_000L); assertEquals(DateRange.create(50_000L, 150_000L), shiftedRange); } @Test public void testEndRangeIsInTheFuture() { final DateRange range = DateRange.create(50_000L, 180_000L); final DateRange shiftedRange = manager.buildShiftedRange(range, 5_000, 150_000L); assertEquals(DateRange.create(10_000L, 140_000L), shiftedRange); } @Test(expected = IllegalArgumentException.class) public void testStartRangeIsInTheFuture() { final DateRange range = DateRange.create(50_000L, 153_000L); manager.buildShiftedRange(range, 5_000, 40_000L); } }