public DefaultDispatcher(EventCache eventCache, Connectivity connectivity, PacketFactory packetFactory, PacketSender packetSender) { mConnectivity = connectivity; mEventCache = eventCache; mPacketFactory = packetFactory; mPacketSender = packetSender; packetSender.setGzipData(mDispatchGzipped); packetSender.setTimeout(mTimeOut); }
success = mDryRunTarget.add(packet); } else { success = mPacketSender.send(packet);
/** * Timeout when trying to establish connection and when trying to read a response. * Values take effect on next dispatch. * * @param timeOut timeout in milliseconds */ @Override public void setConnectionTimeOut(int timeOut) { mTimeOut = timeOut; mPacketSender.setTimeout(mTimeOut); }
/** * Packets are collected and dispatched in batches. This boolean sets if post must be * gzipped or not. Use of gzip needs mod_deflate/Apache ou lua_zlib/NGINX * * @param dispatchGzipped boolean */ @Override public void setDispatchGzipped(boolean dispatchGzipped) { mDispatchGzipped = dispatchGzipped; mPacketSender.setGzipData(mDispatchGzipped); }
success = mDryRunTarget.add(packet); } else { success = mPacketSender.send(packet);
/** * Timeout when trying to establish connection and when trying to read a response. * Values take effect on next dispatch. * * @param timeOut timeout in milliseconds */ @Override public void setConnectionTimeOut(int timeOut) { mTimeOut = timeOut; mPacketSender.setTimeout(mTimeOut); }
/** * Packets are collected and dispatched in batches. This boolean sets if post must be * gzipped or not. Use of gzip needs mod_deflate/Apache ou lua_zlib/NGINX * * @param dispatchGzipped boolean */ @Override public void setDispatchGzipped(boolean dispatchGzipped) { mDispatchGzipped = dispatchGzipped; mPacketSender.setGzipData(mDispatchGzipped); }
public DefaultDispatcher(EventCache eventCache, Connectivity connectivity, PacketFactory packetFactory, PacketSender packetSender) { mConnectivity = connectivity; mEventCache = eventCache; mPacketFactory = packetFactory; mPacketSender = packetSender; packetSender.setGzipData(mDispatchGzipped); packetSender.setTimeout(mTimeOut); }
@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 testSetConnectionTimeout() throws Exception { mDispatcher.setConnectionTimeOut(100); assertEquals(100, mDispatcher.getConnectionTimeOut()); verify(mPacketSender).setTimeout(100); }
@Test public void testGetDispatchGzipped() { assertFalse(mDispatcher.getDispatchGzipped()); mDispatcher.setDispatchGzipped(true); assertTrue(mDispatcher.getDispatchGzipped()); verify(mPacketSender).setGzipData(true); }
@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 testSetConnectionTimeout() throws Exception { mDispatcher.setConnectionTimeOut(100); assertEquals(100, mDispatcher.getConnectionTimeOut()); verify(mPacketSender).setTimeout(100); }
@Test public void testGetDispatchGzipped() { assertFalse(mDispatcher.getDispatchGzipped()); mDispatcher.setDispatchGzipped(true); assertTrue(mDispatcher.getDispatchGzipped()); verify(mPacketSender).setGzipData(true); }
@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)); }