@Override public void submit(TrackMe trackMe) { mEventCache.add(new Event(trackMe.toMap())); if (mDispatchInterval != -1) launch(); }
@Override public void submit(TrackMe trackMe) { mEventCache.add(new Event(trackMe.toMap())); if (mDispatchInterval != -1) launch(); }
@Test public void testConnectivityChange() throws Exception { List<Packet> dryRunData = Collections.synchronizedList(new ArrayList<Packet>()); mDispatcher.setDryRunTarget(dryRunData); when(mConnectivity.isConnected()).thenReturn(false); mDispatcher.submit(getTestEvent()); mDispatcher.forceDispatch(); verify(mEventCache, timeout(1000)).add(any()); verify(mEventCache, never()).drainTo(Matchers.anyList()); assertThat(dryRunData.size(), is(0)); when(mConnectivity.isConnected()).thenReturn(true); mDispatcher.forceDispatch(); await().atMost(1, TimeUnit.SECONDS).until(() -> dryRunData.size(), is(1)); verify(mEventCache).updateState(true); verify(mEventCache).drainTo(Matchers.anyList()); }
@Test public void testConnectivityChange() throws Exception { List<Packet> dryRunData = Collections.synchronizedList(new ArrayList<Packet>()); mDispatcher.setDryRunTarget(dryRunData); when(mConnectivity.isConnected()).thenReturn(false); mDispatcher.submit(getTestEvent()); mDispatcher.forceDispatch(); verify(mEventCache, timeout(1000)).add(any()); verify(mEventCache, never()).drainTo(Matchers.anyList()); assertThat(dryRunData.size(), is(0)); when(mConnectivity.isConnected()).thenReturn(true); mDispatcher.forceDispatch(); await().atMost(1, TimeUnit.SECONDS).until(() -> dryRunData.size(), is(1)); verify(mEventCache).updateState(true); verify(mEventCache).drainTo(Matchers.anyList()); }
@Test public void testDrain_diskCache_first() throws Exception { mEventCache.add(new Event("3")); List<Event> events = new ArrayList<>(); when(mEventDiskCache.uncache()).thenReturn(Arrays.asList(new Event("1"), new Event("2"))); mEventCache.updateState(true); mEventCache.drainTo(events); verify(mEventDiskCache).uncache(); assertFalse(events.isEmpty()); assertEquals("1", events.get(0).getEncodedQuery()); assertEquals("2", events.get(1).getEncodedQuery()); assertEquals("3", events.get(2).getEncodedQuery()); }
@Test public void testDrain_diskCache_first() throws Exception { mEventCache.add(new Event("3")); List<Event> events = new ArrayList<>(); when(mEventDiskCache.uncache()).thenReturn(Arrays.asList(new Event("1"), new Event("2"))); mEventCache.updateState(true); mEventCache.drainTo(events); verify(mEventDiskCache).uncache(); assertFalse(events.isEmpty()); assertEquals("1", events.get(0).getEncodedQuery()); assertEquals("2", events.get(1).getEncodedQuery()); assertEquals("3", events.get(2).getEncodedQuery()); }
@Test public void testUpdateState_offline_ordering() throws Exception { assertTrue(mEventCache.isEmpty()); mEventCache.add(new Event("test2")); when(mEventDiskCache.uncache()).thenReturn(Arrays.asList(new Event("test0"), new Event("test1"))); mEventCache.updateState(true); List<Event> restoredEvents = new ArrayList<>(); mEventCache.drainTo(restoredEvents); assertEquals(3, restoredEvents.size()); assertEquals("test0", restoredEvents.get(0).getEncodedQuery()); assertEquals("test1", restoredEvents.get(1).getEncodedQuery()); assertEquals("test2", restoredEvents.get(2).getEncodedQuery()); }
mEventCacheData.add((Event) invocation.getArgument(0)); return null; }).when(mEventCache).add(any(Event.class)); when(mEventCache.isEmpty()).then(new Answer<Boolean>() { @Override
@Test public void testClear() { mEventCache.add(new Event("test")); mEventCache.clear(); verify(mEventDiskCache).uncache(); assertTrue(mEventCache.isEmpty()); }
@Test public void testUpdateState_offline_ordering() throws Exception { assertTrue(mEventCache.isEmpty()); mEventCache.add(new Event("test2")); when(mEventDiskCache.uncache()).thenReturn(Arrays.asList(new Event("test0"), new Event("test1"))); mEventCache.updateState(true); List<Event> restoredEvents = new ArrayList<>(); mEventCache.drainTo(restoredEvents); assertEquals(3, restoredEvents.size()); assertEquals("test0", restoredEvents.get(0).getEncodedQuery()); assertEquals("test1", restoredEvents.get(1).getEncodedQuery()); assertEquals("test2", restoredEvents.get(2).getEncodedQuery()); }
mEventCacheData.add((Event) invocation.getArgument(0)); return null; }).when(mEventCache).add(any(Event.class)); when(mEventCache.isEmpty()).then(new Answer<Boolean>() { @Override
@Test public void testClear() { mEventCache.add(new Event("test")); mEventCache.clear(); verify(mEventDiskCache).uncache(); assertTrue(mEventCache.isEmpty()); }
@Test public void testUpdateState_offline() throws Exception { assertTrue(mEventCache.isEmpty()); mEventCache.add(new Event("test")); assertFalse(mEventCache.isEmpty()); mEventCache.updateState(false); verify(mEventDiskCache).cache(ArgumentMatchers.anyList()); mEventCache.updateState(false); verify(mEventDiskCache).cache(ArgumentMatchers.anyList()); mEventCache.add(new Event("test")); mEventCache.updateState(false); verify(mEventDiskCache, times(2)).cache(ArgumentMatchers.anyList()); }
@Test public void testUpdateState_offline() throws Exception { assertTrue(mEventCache.isEmpty()); mEventCache.add(new Event("test")); assertFalse(mEventCache.isEmpty()); mEventCache.updateState(false); verify(mEventDiskCache).cache(ArgumentMatchers.anyList()); mEventCache.updateState(false); verify(mEventDiskCache).cache(ArgumentMatchers.anyList()); mEventCache.add(new Event("test")); mEventCache.updateState(false); verify(mEventDiskCache, times(2)).cache(ArgumentMatchers.anyList()); }
@Test public void testDrain_simple() throws Exception { assertTrue(mEventCache.isEmpty()); mEventCache.add(new Event("test")); assertFalse(mEventCache.isEmpty()); List<Event> events = new ArrayList<>(); mEventCache.drainTo(events); assertEquals("test", events.get(0).getEncodedQuery()); assertTrue(mEventCache.isEmpty()); }
@Test public void testDrain_simple() throws Exception { assertTrue(mEventCache.isEmpty()); mEventCache.add(new Event("test")); assertFalse(mEventCache.isEmpty()); List<Event> events = new ArrayList<>(); mEventCache.drainTo(events); assertEquals("test", events.get(0).getEncodedQuery()); assertTrue(mEventCache.isEmpty()); }