@Test public void testVisitCountMultipleThreads() throws Exception { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); int threadCount = 1000; final CountDownLatch countDownLatch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { new Thread(() -> { TestHelper.sleep(new Random().nextInt(20 - 0) + 0); TrackHelper.track().event("TestCategory", "TestAction").with(new Tracker(mMatomo, mTrackerBuilder)); countDownLatch.countDown(); }).start(); } countDownLatch.await(); assertEquals(threadCount, mTrackerPreferences.getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, 0)); }
@Test public void testFirstVisitMultipleThreads() throws Exception { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); int threadCount = 100; final CountDownLatch countDownLatch = new CountDownLatch(threadCount); final List<Long> firstVisitTimes = Collections.synchronizedList(new ArrayList<Long>()); for (int i = 0; i < threadCount; i++) { new Thread(() -> { TestHelper.sleep(new Random().nextInt(20 - 0) + 0); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); long firstVisit = Long.valueOf(tracker.getDefaultTrackMe().get(FIRST_VISIT_TIMESTAMP)); firstVisitTimes.add(firstVisit); countDownLatch.countDown(); }).start(); } countDownLatch.await(); for (Long firstVisit : firstVisitTimes) assertEquals(firstVisitTimes.get(0), firstVisit); }
@Test public void testFirstVisitMultipleThreads() throws Exception { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); int threadCount = 100; final CountDownLatch countDownLatch = new CountDownLatch(threadCount); final List<Long> firstVisitTimes = Collections.synchronizedList(new ArrayList<Long>()); for (int i = 0; i < threadCount; i++) { new Thread(() -> { TestHelper.sleep(new Random().nextInt(20 - 0) + 0); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); long firstVisit = Long.valueOf(tracker.getDefaultTrackMe().get(FIRST_VISIT_TIMESTAMP)); firstVisitTimes.add(firstVisit); countDownLatch.countDown(); }).start(); } countDownLatch.await(); for (Long firstVisit : firstVisitTimes) assertEquals(firstVisitTimes.get(0), firstVisit); }
@Test public void testVisitCountMultipleThreads() throws Exception { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); int threadCount = 1000; final CountDownLatch countDownLatch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { new Thread(() -> { TestHelper.sleep(new Random().nextInt(20 - 0) + 0); TrackHelper.track().event("TestCategory", "TestAction").with(new Tracker(mMatomo, mTrackerBuilder)); countDownLatch.countDown(); }).start(); } countDownLatch.await(); assertEquals(threadCount, mTrackerPreferences.getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, 0)); }
@Test public void testFirstVisitTimeStamp() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); TrackMe trackMe1 = mCaptor.getValue(); TestHelper.sleep(10); // make sure we are tracking in seconds assertTrue(Math.abs((System.currentTimeMillis() / 1000) - Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))) < 2); tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); TrackMe trackMe2 = mCaptor.getValue(); assertEquals(Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP)), Long.parseLong(trackMe2.get(FIRST_VISIT_TIMESTAMP))); assertEquals(tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1), Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))); }
@Test public void testFirstVisitTimeStamp() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); TrackMe trackMe1 = mCaptor.getValue(); TestHelper.sleep(10); // make sure we are tracking in seconds assertTrue(Math.abs((System.currentTimeMillis() / 1000) - Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))) < 2); tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); TrackMe trackMe2 = mCaptor.getValue(); assertEquals(Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP)), Long.parseLong(trackMe2.get(FIRST_VISIT_TIMESTAMP))); assertEquals(tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_FIRSTVISIT, -1), Long.parseLong(trackMe1.get(FIRST_VISIT_TIMESTAMP))); }
@Test public void testTrackEvent() throws Exception { track().event("category", "test action").with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); }
@Test public void testTrackEvent() throws Exception { track().event("category", "test action").with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); }
@Test public void testTotalVisitCount() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getInt(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); assertEquals(1, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals(2, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); assertEquals(2, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); }
@Test public void testPreviousVisits() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); final List<Long> previousVisitTimes = new ArrayList<>(); for (int i = 0; i < 5; i++) { TrackHelper.track().event("TestCategory", "TestAction").with(tracker); String previousVisit = tracker.getDefaultTrackMe().get(QueryParams.PREVIOUS_VISIT_TIMESTAMP); if (previousVisit != null) previousVisitTimes.add(Long.parseLong(previousVisit)); TestHelper.sleep(1010); } assertFalse(previousVisitTimes.contains(0L)); Long lastTime = 0L; for (Long time : previousVisitTimes) { assertTrue(lastTime < time); lastTime = time; } }
@Test public void testPreviousVisits() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); final List<Long> previousVisitTimes = new ArrayList<>(); for (int i = 0; i < 5; i++) { TrackHelper.track().event("TestCategory", "TestAction").with(tracker); String previousVisit = tracker.getDefaultTrackMe().get(QueryParams.PREVIOUS_VISIT_TIMESTAMP); if (previousVisit != null) previousVisitTimes.add(Long.parseLong(previousVisit)); TestHelper.sleep(1010); } assertFalse(previousVisitTimes.contains(0L)); Long lastTime = 0L; for (Long time : previousVisitTimes) { assertTrue(lastTime < time); lastTime = time; } }
@Test public void testTotalVisitCount() { Tracker tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(-1, tracker.getPreferences().getInt(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); assertEquals(1, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); tracker = new Tracker(mMatomo, mTrackerBuilder); assertEquals(1, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); assertNull(tracker.getDefaultTrackMe().get(QueryParams.TOTAL_NUMBER_OF_VISITS)); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); assertEquals(2, Integer.parseInt(mCaptor.getValue().get(QueryParams.TOTAL_NUMBER_OF_VISITS))); assertEquals(2, tracker.getPreferences().getLong(Tracker.PREF_KEY_TRACKER_VISITCOUNT, -1)); }
@Test public void testTrackEventName() throws Exception { String name = "test name2"; track().event("category", "test action").name(name).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); assertEquals(tracked.get(QueryParams.EVENT_NAME), name); }
@Test public void testTrackEventNameAndValue() throws Exception { String name = "test name3"; track().event("category", "test action").name(name).value(1f).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); assertEquals(tracked.get(QueryParams.EVENT_NAME), name); assertEquals(String.valueOf(tracked.get(QueryParams.EVENT_VALUE)), String.valueOf(1f)); }
@Test public void testTrackEventNameAndValue() throws Exception { String name = "test name3"; track().event("category", "test action").name(name).value(1f).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); assertEquals(tracked.get(QueryParams.EVENT_NAME), name); assertEquals(String.valueOf(tracked.get(QueryParams.EVENT_VALUE)), String.valueOf(1f)); }
@Test public void testTrackEventName() throws Exception { String name = "test name2"; track().event("category", "test action").name(name).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); assertEquals(tracked.get(QueryParams.EVENT_NAME), name); }
TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); long _startTime = System.currentTimeMillis() / 1000; assertNotEquals(-1, previousVisit); tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(3)).submit(mCaptor.capture()); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(4)).submit(mCaptor.capture());
TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher).submit(mCaptor.capture()); long _startTime = System.currentTimeMillis() / 1000; assertNotEquals(-1, previousVisit); tracker = new Tracker(mMatomo, mTrackerBuilder); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(2)).submit(mCaptor.capture()); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(3)).submit(mCaptor.capture()); TrackHelper.track().event("TestCategory", "TestAction").with(tracker); verify(mDispatcher, times(4)).submit(mCaptor.capture());
@Test public void testTrackEventNameAndValueWithpath() throws Exception { track().event("category", "test action").name("test name3").path("/path").value(1f).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); assertEquals(tracked.get(QueryParams.EVENT_NAME), "test name3"); assertEquals(tracked.get(QueryParams.URL_PATH), "/path"); assertEquals(String.valueOf(tracked.get(QueryParams.EVENT_VALUE)), String.valueOf(1f)); }
@Test public void testTrackEventNameAndValueWithpath() throws Exception { track().event("category", "test action").name("test name3").path("/path").value(1f).with(mTracker); verify(mTracker).track(mCaptor.capture()); TrackMe tracked = mCaptor.getValue(); assertEquals(tracked.get(QueryParams.EVENT_CATEGORY), "category"); assertEquals(tracked.get(QueryParams.EVENT_ACTION), "test action"); assertEquals(tracked.get(QueryParams.EVENT_NAME), "test name3"); assertEquals(tracked.get(QueryParams.URL_PATH), "/path"); assertEquals(String.valueOf(tracked.get(QueryParams.EVENT_VALUE)), String.valueOf(1f)); }