success = mDryRunTarget.add(packet); } else { success = mPacketSender.send(packet);
success = mDryRunTarget.add(packet); } else { success = mPacketSender.send(packet);
@Test public void testDispatchRetryWithBackoff() throws Exception { AtomicInteger cnt = new AtomicInteger(0); when(mPacketSender.send(any())).then(new Answer<Boolean>() { @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { return cnt.incrementAndGet() > 5; } }); mDispatcher.setDispatchInterval(100); mDispatcher.submit(getTestEvent()); await().atLeast(100, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 1); await().atLeast(100, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 2); await().atMost(1900, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 5); mDispatcher.submit(getTestEvent()); await().atMost(150, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 5); }
@Test public void testDispatchRetryWithBackoff() throws Exception { AtomicInteger cnt = new AtomicInteger(0); when(mPacketSender.send(any())).then(new Answer<Boolean>() { @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { return cnt.incrementAndGet() > 5; } }); mDispatcher.setDispatchInterval(100); mDispatcher.submit(getTestEvent()); await().atLeast(100, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 1); await().atLeast(100, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 2); await().atMost(1900, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 5); mDispatcher.submit(getTestEvent()); await().atMost(150, TimeUnit.MILLISECONDS).until(() -> cnt.get() == 5); }
@SuppressLint("InlinedApi") @Test public void testLowMemoryDispatch() { MatomoTestApplication app = (MatomoTestApplication) Robolectric.application; final PacketSender packetSender = mock(PacketSender.class); app.getMatomo().setDispatcherFactory(new DefaultDispatcherFactory() { @Override public Dispatcher build(Tracker tracker) { return new DefaultDispatcher( new EventCache(new EventDiskCache(tracker)), new Connectivity(tracker.getMatomo().getContext()), new PacketFactory(tracker.getAPIUrl()), packetSender ); } }); Tracker tracker = app.getTracker(); assertNotNull(tracker); tracker.setDispatchInterval(-1); tracker.track(TrackHelper.track().screen("test").build()); tracker.dispatch(); verify(packetSender, timeout(500).times(1)).send(any(Packet.class)); tracker.track(TrackHelper.track().screen("test").build()); verify(packetSender, timeout(500).times(1)).send(any(Packet.class)); app.onTrimMemory(Application.TRIM_MEMORY_UI_HIDDEN); verify(packetSender, timeout(500).atLeast(2)).send(any(Packet.class)); }
@SuppressLint("InlinedApi") @Test public void testLowMemoryDispatch() { MatomoTestApplication app = (MatomoTestApplication) Robolectric.application; final PacketSender packetSender = mock(PacketSender.class); app.getMatomo().setDispatcherFactory(new DefaultDispatcherFactory() { @Override public Dispatcher build(Tracker tracker) { return new DefaultDispatcher( new EventCache(new EventDiskCache(tracker)), new Connectivity(tracker.getMatomo().getContext()), new PacketFactory(tracker.getAPIUrl()), packetSender ); } }); Tracker tracker = app.getTracker(); assertNotNull(tracker); tracker.setDispatchInterval(-1); tracker.track(TrackHelper.track().screen("test").build()); tracker.dispatch(); verify(packetSender, timeout(500).times(1)).send(any(Packet.class)); tracker.track(TrackHelper.track().screen("test").build()); verify(packetSender, timeout(500).times(1)).send(any(Packet.class)); app.onTrimMemory(Application.TRIM_MEMORY_UI_HIDDEN); verify(packetSender, timeout(500).atLeast(2)).send(any(Packet.class)); }