From 40f6b181958e4095abc8fb9b37e848e6cdbafc72 Mon Sep 17 00:00:00 2001 From: Lucas Echeverz Date: Tue, 23 Mar 2021 12:18:56 -0300 Subject: [PATCH] Cleaning up current logic --- .../split/client/LocalhostSplitFactory.java | 2 +- .../java/io/split/client/SplitClientImpl.java | 4 - .../io/split/client/SplitFactoryImpl.java | 24 +-- .../split/client/metrics/CachedMetrics.java | 142 ------------------ .../client/metrics/FireAndForgetMetrics.java | 123 --------------- .../io/split/client/SplitClientImplTest.java | 34 ----- .../client/metrics/CachedMetricsTest.java | 77 ---------- 7 files changed, 4 insertions(+), 402 deletions(-) delete mode 100644 client/src/main/java/io/split/client/metrics/CachedMetrics.java delete mode 100644 client/src/main/java/io/split/client/metrics/FireAndForgetMetrics.java delete mode 100644 client/src/test/java/io/split/client/metrics/CachedMetricsTest.java diff --git a/client/src/main/java/io/split/client/LocalhostSplitFactory.java b/client/src/main/java/io/split/client/LocalhostSplitFactory.java index 0ec01f8c9..7a7cbf888 100644 --- a/client/src/main/java/io/split/client/LocalhostSplitFactory.java +++ b/client/src/main/java/io/split/client/LocalhostSplitFactory.java @@ -58,7 +58,7 @@ public LocalhostSplitFactory(String directory, String file) throws IOException { _cacheUpdaterService = new CacheUpdaterService(splitCache); _cacheUpdaterService.updateCache(splitAndKeyToTreatment); _client = new SplitClientImpl(this, splitCache, - new ImpressionsManager.NoOpImpressionsManager(), new Metrics.NoopMetrics(), new NoopEventClient(), + new ImpressionsManager.NoOpImpressionsManager(), new NoopEventClient(), SplitClientConfig.builder().setBlockUntilReadyTimeout(1).build(), sdkReadinessGates, new EvaluatorImp(splitCache)); _manager = LocalhostSplitManager.of(splitAndKeyToTreatment); diff --git a/client/src/main/java/io/split/client/SplitClientImpl.java b/client/src/main/java/io/split/client/SplitClientImpl.java index 7792f5a1f..3129e4526 100644 --- a/client/src/main/java/io/split/client/SplitClientImpl.java +++ b/client/src/main/java/io/split/client/SplitClientImpl.java @@ -43,7 +43,6 @@ public final class SplitClientImpl implements SplitClient { private final SplitFactory _container; private final SplitCache _splitCache; private final ImpressionsManager _impressionManager; - private final Metrics _metrics; private final SplitClientConfig _config; private final EventClient _eventClient; private final SDKReadinessGates _gates; @@ -52,7 +51,6 @@ public final class SplitClientImpl implements SplitClient { public SplitClientImpl(SplitFactory container, SplitCache splitCache, ImpressionsManager impressionManager, - Metrics metrics, EventClient eventClient, SplitClientConfig config, SDKReadinessGates gates, @@ -60,7 +58,6 @@ public SplitClientImpl(SplitFactory container, _container = container; _splitCache = checkNotNull(splitCache); _impressionManager = checkNotNull(impressionManager); - _metrics = metrics; _eventClient = eventClient; _config = config; _gates = checkNotNull(gates); @@ -235,7 +232,6 @@ private void recordStats(String matchingKey, String bucketingKey, String split, String operation, String label, Long changeNumber, Map attributes) { try { _impressionManager.track(new Impression(matchingKey, bucketingKey, split, result, System.currentTimeMillis(), label, changeNumber, attributes)); - _metrics.time(operation, System.currentTimeMillis() - start); } catch (Throwable t) { _log.error("Exception", t); } diff --git a/client/src/main/java/io/split/client/SplitFactoryImpl.java b/client/src/main/java/io/split/client/SplitFactoryImpl.java index 8b576d0dd..0914e6c34 100644 --- a/client/src/main/java/io/split/client/SplitFactoryImpl.java +++ b/client/src/main/java/io/split/client/SplitFactoryImpl.java @@ -6,8 +6,6 @@ import io.split.client.interceptors.AddSplitHeadersFilter; import io.split.client.interceptors.GzipDecoderResponseInterceptor; import io.split.client.interceptors.GzipEncoderRequestInterceptor; -import io.split.client.metrics.CachedMetrics; -import io.split.client.metrics.FireAndForgetMetrics; import io.split.client.metrics.HttpMetrics; import io.split.cache.InMemoryCacheImp; import io.split.cache.SplitCache; @@ -68,12 +66,10 @@ public class SplitFactoryImpl implements SplitFactory { private final CloseableHttpClient _httpclient; private final SDKReadinessGates _gates; private final HttpMetrics _httpMetrics; - private final FireAndForgetMetrics _unCachedFireAndForget; private final SegmentSynchronizationTaskImp _segmentSynchronizationTaskImp; private final SplitFetcher _splitFetcher; private final SplitSynchronizationTask _splitSynchronizationTask; private final ImpressionsManagerImpl _impressionsManager; - private final FireAndForgetMetrics _cachedFireAndForgetMetrics; private final EventClient _eventClient; private final SyncManager _syncManager; private final Evaluator _evaluator; @@ -119,9 +115,6 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn _segmentCache = new SegmentCacheInMemoryImpl(); _splitCache = new InMemoryCacheImp(); - // Metrics - _unCachedFireAndForget = FireAndForgetMetrics.instance(_httpMetrics, 2, 1000); - // Segments _segmentSynchronizationTaskImp = buildSegments(config); @@ -134,8 +127,6 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn // Impressions _impressionsManager = buildImpressionsManager(config); - // CachedFireAndForgetMetrics - _cachedFireAndForgetMetrics = buildCachedFireAndForgetMetrics(config); // EventClient _eventClient = EventClientImpl.create(_httpclient, _eventsRootTarget, config.eventsQueueSize(), config.eventFlushIntervalInMillis(), config.waitBeforeShutdown()); @@ -148,7 +139,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn _evaluator = new EvaluatorImp(_splitCache); // SplitClient - _client = new SplitClientImpl(this, _splitCache, _impressionsManager, _cachedFireAndForgetMetrics, _eventClient, config, _gates, _evaluator); + _client = new SplitClientImpl(this, _splitCache, _impressionsManager, _eventClient, config, _gates, _evaluator); // SplitManager _manager = new SplitManagerImpl(_splitCache, config, _gates); @@ -183,10 +174,6 @@ public synchronized void destroy() { _log.info("Successful shutdown of splits"); _impressionsManager.close(); _log.info("Successful shutdown of impressions manager"); - _unCachedFireAndForget.close(); - _log.info("Successful shutdown of metrics 1"); - _cachedFireAndForgetMetrics.close(); - _log.info("Successful shutdown of metrics 2"); _httpclient.close(); _log.info("Successful shutdown of httpclient"); _eventClient.close(); @@ -296,7 +283,7 @@ private static int findPollingPeriod(Random rand, int max) { } private SegmentSynchronizationTaskImp buildSegments(SplitClientConfig config) throws URISyntaxException { - SegmentChangeFetcher segmentChangeFetcher = HttpSegmentChangeFetcher.create(_httpclient, _rootTarget, _unCachedFireAndForget); + SegmentChangeFetcher segmentChangeFetcher = HttpSegmentChangeFetcher.create(_httpclient, _rootTarget); return new SegmentSynchronizationTaskImp(segmentChangeFetcher, findPollingPeriod(RANDOM, config.segmentsRefreshRate()), @@ -306,7 +293,7 @@ private SegmentSynchronizationTaskImp buildSegments(SplitClientConfig config) th } private SplitFetcher buildSplitFetcher() throws URISyntaxException { - SplitChangeFetcher splitChangeFetcher = HttpSplitChangeFetcher.create(_httpclient, _rootTarget, _unCachedFireAndForget); + SplitChangeFetcher splitChangeFetcher = HttpSplitChangeFetcher.create(_httpclient, _rootTarget); SplitParser splitParser = new SplitParser(_segmentSynchronizationTaskImp, _segmentCache); return new SplitFetcherImp(splitChangeFetcher, splitParser, _gates, _splitCache); @@ -327,9 +314,4 @@ private ImpressionsManagerImpl buildImpressionsManager(SplitClientConfig config) return ImpressionsManagerImpl.instance(_httpclient, config, impressionListeners); } - private FireAndForgetMetrics buildCachedFireAndForgetMetrics(SplitClientConfig config) { - CachedMetrics cachedMetrics = new CachedMetrics(_httpMetrics, TimeUnit.SECONDS.toMillis(config.metricsRefreshRate())); - - return FireAndForgetMetrics.instance(cachedMetrics, 2, 1000); - } } diff --git a/client/src/main/java/io/split/client/metrics/CachedMetrics.java b/client/src/main/java/io/split/client/metrics/CachedMetrics.java deleted file mode 100644 index 41f066a38..000000000 --- a/client/src/main/java/io/split/client/metrics/CachedMetrics.java +++ /dev/null @@ -1,142 +0,0 @@ - -package io.split.client.metrics; - -import com.google.common.collect.Maps; -import com.google.common.primitives.Longs; -import io.split.client.dtos.Counter; -import io.split.client.dtos.Latency; -import io.split.engine.metrics.Metrics; - -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; - -import static com.google.common.base.Preconditions.checkArgument; - - -/** - * Created by adilaijaz on 9/4/15. - */ -public class CachedMetrics implements Metrics { - - private final DTOMetrics _metrics; - - private final Map _latencyMap; - private final Map _countMap; - - - private final Object _latencyLock = new Object(); - private AtomicLong _latencyLastUpdateTimeMillis = new AtomicLong(System.currentTimeMillis()); - - private final Object _counterLock = new Object(); - private AtomicLong _counterLastUpdateTimeMillis = new AtomicLong(System.currentTimeMillis()); - - private long _refreshPeriodInMillis; - - private final int _queueForTheseManyCalls; - - /** - * For unit testing only. - * - * @param httpMetrics - * @param queueForTheseManyCalls - */ - /*package private*/ CachedMetrics(DTOMetrics httpMetrics, int queueForTheseManyCalls) { - this(httpMetrics, queueForTheseManyCalls, TimeUnit.MINUTES.toMillis(1)); - } - - public CachedMetrics(DTOMetrics httpMetrics, long refreshPeriodInMillis) { - this(httpMetrics, 100, refreshPeriodInMillis); - } - - private CachedMetrics(DTOMetrics metrics, int queueForTheseManyCalls, long refreshPeriodInMillis) { - _metrics = metrics; - _latencyMap = Maps.newHashMap(); - _countMap = Maps.newHashMap(); - checkArgument(queueForTheseManyCalls > 0, "queue for cache should be greater than zero"); - _queueForTheseManyCalls = queueForTheseManyCalls; - _refreshPeriodInMillis = refreshPeriodInMillis; - } - - @Override - public void count(String counter, long delta) { - if (delta <= 0) { - return; - } - - if (counter == null || counter.trim().isEmpty()) { - return; - } - - synchronized (_counterLock) { - SumAndCount sumAndCount = _countMap.get(counter); - if (sumAndCount == null) { - sumAndCount = new SumAndCount(); - _countMap.put(counter, sumAndCount); - } - - sumAndCount.addDelta(delta); - - if (sumAndCount._count >= _queueForTheseManyCalls || hasTimeElapsed(_counterLastUpdateTimeMillis)) { - Counter dto = new Counter(); - dto.name = counter; - dto.delta = sumAndCount._sum; - - sumAndCount.clear(); - _counterLastUpdateTimeMillis.set(System.currentTimeMillis()); - _metrics.count(dto); - } - } - } - - private boolean hasTimeElapsed(AtomicLong lastRefreshTime) { - return (System.currentTimeMillis() - lastRefreshTime.get()) > _refreshPeriodInMillis; - } - - @Override - public void time(String operation, long timeInMs) { - if (operation == null || operation.trim().isEmpty() || timeInMs < 0L) { - // error - return; - } - synchronized (_latencyLock) { - if (!_latencyMap.containsKey(operation)) { - ILatencyTracker latencies = new BinarySearchLatencyTracker(); - _latencyMap.put(operation, latencies); - } - - ILatencyTracker tracker = _latencyMap.get(operation); - tracker.addLatencyMillis((int) timeInMs); - - if (hasTimeElapsed(_latencyLastUpdateTimeMillis)) { - - Latency dto = new Latency(); - dto.name = operation; - dto.latencies = Longs.asList(tracker.getLatencies()); - - tracker.clear(); - _latencyLastUpdateTimeMillis.set(System.currentTimeMillis()); - _metrics.time(dto); - - } - } - } - - - private static final class SumAndCount { - private int _count = 0; - private long _sum = 0L; - - public void addDelta(long delta) { - _count++; - _sum += delta; - } - - public void clear() { - _count = 0; - _sum = 0L; - } - - } - -} diff --git a/client/src/main/java/io/split/client/metrics/FireAndForgetMetrics.java b/client/src/main/java/io/split/client/metrics/FireAndForgetMetrics.java deleted file mode 100644 index 43aa702de..000000000 --- a/client/src/main/java/io/split/client/metrics/FireAndForgetMetrics.java +++ /dev/null @@ -1,123 +0,0 @@ -package io.split.client.metrics; - -import com.google.common.util.concurrent.ThreadFactoryBuilder; -import io.split.engine.metrics.Metrics; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.Closeable; -import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * Created by adilaijaz on 9/4/15. - */ -public class FireAndForgetMetrics implements Metrics, Closeable { - - private static final Logger _log = LoggerFactory.getLogger(FireAndForgetMetrics.class); - - private final ExecutorService _executorService; - private final Metrics _delegate; - - public static FireAndForgetMetrics instance(Metrics delegate, int numberOfThreads, int queueSize) { - ThreadFactoryBuilder threadFactoryBuilder = new ThreadFactoryBuilder(); - threadFactoryBuilder.setDaemon(true); - threadFactoryBuilder.setNameFormat("split-fireAndForgetMetrics-%d"); - threadFactoryBuilder.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { - @Override - public void uncaughtException(Thread t, Throwable e) { - _log.error("Error in thread: " + t.getName(), e); - } - }); - - final ExecutorService executorService = new ThreadPoolExecutor(numberOfThreads, - numberOfThreads, - 0L, - TimeUnit.MILLISECONDS, - new ArrayBlockingQueue(queueSize), - threadFactoryBuilder.build(), - new ThreadPoolExecutor.DiscardPolicy()); - - - return new FireAndForgetMetrics(delegate, executorService); - } - - private FireAndForgetMetrics(Metrics delegate, ExecutorService executorService) { - _delegate = delegate; - _executorService = executorService; - } - - - @Override - public void count(String counter, long delta) { - try { - _executorService.submit(new CountRunnable(_delegate, counter, delta)); - } catch (Throwable t) { - _log.warn("CountRunnable failed", t); - } - } - - @Override - public void time(String operation, long timeInMs) { - try { - _executorService.submit(new TimeRunnable(_delegate, operation, timeInMs)); - } catch (Throwable t) { - _log.warn("TimeRunnable failed", t); - } - } - - public void close() { - _executorService.shutdown(); - try { - if (!_executorService.awaitTermination(10L, TimeUnit.SECONDS)) { //optional * - _log.info("Executor did not terminate in the specified time."); - List droppedTasks = _executorService.shutdownNow(); //optional ** - _log.info("Executor was abruptly shut down. These tasks will not be executed: " + droppedTasks); - } - } catch (InterruptedException e) { - // reset the interrupt. - Thread.currentThread().interrupt(); - } - } - - - private static final class CountRunnable implements Runnable { - - private final Metrics _delegate; - private final String _name; - private final long _delta; - - public CountRunnable(Metrics delegate, String name, long delta) { - _delegate = delegate; - _name = name; - _delta = delta; - } - - @Override - public void run() { - _delegate.count(_name, _delta); - } - } - - private static final class TimeRunnable implements Runnable { - - private final Metrics _delegate; - private final String _name; - private final long _timeInMs; - - public TimeRunnable(Metrics delegate, String name, long timeInMs) { - _delegate = delegate; - _name = name; - _timeInMs = timeInMs; - } - - @Override - public void run() { - _delegate.time(_name, _timeInMs); - } - } - -} diff --git a/client/src/test/java/io/split/client/SplitClientImplTest.java b/client/src/test/java/io/split/client/SplitClientImplTest.java index 4e1370ad4..dbee7934c 100644 --- a/client/src/test/java/io/split/client/SplitClientImplTest.java +++ b/client/src/test/java/io/split/client/SplitClientImplTest.java @@ -78,7 +78,6 @@ public void null_key_results_in_control() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -105,7 +104,6 @@ public void null_test_results_in_control() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -127,7 +125,6 @@ public void exceptions_result_in_control() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -154,7 +151,6 @@ public void works() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -189,7 +185,6 @@ public void works_null_config() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -226,7 +221,6 @@ public void worksAndHasConfig() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -261,7 +255,6 @@ public void last_condition_is_always_default() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -297,7 +290,6 @@ public void last_condition_is_always_default_but_with_treatment() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -330,7 +322,6 @@ public void multiple_conditions_work() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -361,7 +352,6 @@ public void killed_test_always_goes_to_default() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -397,7 +387,6 @@ public void killed_test_always_goes_to_default_has_config() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -433,7 +422,6 @@ public void dependency_matcher_on() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -466,7 +454,6 @@ public void dependency_matcher_off() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -493,7 +480,6 @@ public void dependency_matcher_control() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -521,7 +507,6 @@ public void attributes_work() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -555,7 +540,6 @@ public void attributes_work_2() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -589,7 +573,6 @@ public void attributes_greater_than_negative_number() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -626,7 +609,6 @@ public void attributes_for_sets() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -669,7 +651,6 @@ public void labels_are_populated() { mock(SplitFactory.class), splitCache, impressionsManager, - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -761,7 +742,6 @@ private void traffic_allocation(String key, int trafficAllocation, int trafficAl mock(SplitFactory.class), splitCache, impressionsManager, - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -809,7 +789,6 @@ public void notInTrafficAllocationDefaultConfig() { mock(SplitFactory.class), splitCache, impressionsManager, - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -849,7 +828,6 @@ public void matching_bucketing_keys_work() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -887,7 +865,6 @@ public void impression_metadata_is_propagated() { mock(SplitFactory.class), splitCache, impressionsManager, - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -923,7 +900,6 @@ public void block_until_ready_does_not_time_when_sdk_is_ready() throws TimeoutEx mock(SplitFactory.class), splitCache, mock(ImpressionsManager.class), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, ready, @@ -943,7 +919,6 @@ public void block_until_ready_times_when_sdk_is_not_ready() throws TimeoutExcept mock(SplitFactory.class), splitCache, mock(ImpressionsManager.class), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, ready, @@ -962,7 +937,6 @@ public void track_with_valid_parameters() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -988,7 +962,6 @@ public void track_with_invalid_event_type_ids() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -1019,7 +992,6 @@ public void track_with_invalid_traffic_type_names() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -1042,7 +1014,6 @@ public void track_with_invalid_keys() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -1071,7 +1042,6 @@ public void track_with_properties() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), eventClientMock, config, gates, @@ -1182,7 +1152,6 @@ public void getTreatment_with_invalid_keys() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -1267,7 +1236,6 @@ public void client_cannot_perform_actions_when_destroyed() throws InterruptedExc mockFactory, splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -1310,7 +1278,6 @@ public void worksAndHasConfigTryKetTreatmentWithKey() { mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, @@ -1347,7 +1314,6 @@ public void blockUntilReadyException() throws TimeoutException, InterruptedExcep mock(SplitFactory.class), splitCache, new ImpressionsManager.NoOpImpressionsManager(), - new Metrics.NoopMetrics(), NoopEventClient.create(), config, gates, diff --git a/client/src/test/java/io/split/client/metrics/CachedMetricsTest.java b/client/src/test/java/io/split/client/metrics/CachedMetricsTest.java deleted file mode 100644 index 57dd8a181..000000000 --- a/client/src/test/java/io/split/client/metrics/CachedMetricsTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package io.split.client.metrics; - -import com.google.common.collect.Lists; -import io.split.client.dtos.Counter; -import io.split.client.dtos.Latency; -import org.junit.Test; - -import java.util.List; - -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -/** - * Created by adilaijaz on 9/23/15. - */ -public class CachedMetricsTest { - - private static final class MyDTOMetrics implements DTOMetrics { - - private List latencies = Lists.newArrayList(); - private List counters = Lists.newArrayList(); - - @Override - public void time(Latency dto) { - latencies.add(dto); - } - - @Override - public void count(Counter dto) { - counters.add(dto); - } - } - - @Test - public void count() { - MyDTOMetrics metrics = new MyDTOMetrics(); - - CachedMetrics cachedMetrics = new CachedMetrics(metrics, 2); - - cachedMetrics.count("foo", 4); - cachedMetrics.count("foo", 5); - cachedMetrics.count("foo", 6); - cachedMetrics.count("foo", 7); - cachedMetrics.count("foo", 8); - - Counter counter = new Counter(); - counter.name = "foo"; - counter.delta = 9L; - - assertThat(metrics.counters.size(), is(equalTo(2))); - assertThat(metrics.counters.get(0).name, is(equalTo("foo"))); - assertThat(metrics.counters.get(0).delta, is(equalTo(9L))); - - assertThat(metrics.counters.get(1).name, is(equalTo("foo"))); - assertThat(metrics.counters.get(1).delta, is(equalTo(13L))); - } - - @Test - public void latency() throws Exception { - MyDTOMetrics delegate = new MyDTOMetrics(); - CachedMetrics cachedMetrics = new CachedMetrics(delegate, 15L); - - cachedMetrics.time("foo", 4); - cachedMetrics.time("foo", 5); - cachedMetrics.time("foo", 6); - cachedMetrics.time("foo", 7); - Thread.sleep(30); - cachedMetrics.time("foo", 8); - - List latencies = Lists.newArrayList(0L, 0L, 0L, 0L, 2L, 2L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L); - - assertThat(delegate.latencies.get(0).name, is(equalTo("foo"))); - assertThat(delegate.latencies.get(0).latencies, is(equalTo(latencies))); - } - -}