/** * Handles teh arrival of a new PageLoadRequest. * * @param plr * the received pageloadrequest */ private void newPageLoadRequestReceived(PageLoadRequest plr) { Long sessionID = plr.getOwningSpan().getSessionId(); Long tabID = plr.getOwningSpan().getTabId(); Pair<Long, Long> plrSessionTabId = new Pair<Long, Long>(sessionID, tabID); pageLoadRequestCache.put(plrSessionTabId, plr); Iterator<AbstractEUMSpanDetails> it = missingPageLoadRequestsMap.get(plrSessionTabId).iterator(); while (it.hasNext()) { AbstractEUMSpanDetails next = it.next(); it.remove(); tryPointBuildingForPendingElement(next); } }
@BeforeMethod public void setup() { subBuilder = new DummyPointBuilder(); builder = new EUMCachingParentPointBuilder(Collections.<AbstractEUMPointBuilder<?>> singletonList(subBuilder)); when(sessionInfo.getSessionId()).thenReturn(SESSION_ID); EUMSpan plrSpan = Mockito.mock(EUMSpan.class); when(plrSpan.getDetails()).thenReturn(pageLoadRequest); when(pageLoadRequest.getOwningSpan()).thenReturn(plrSpan); when(plrSpan.getTabId()).thenReturn(TAB_ID); when(plrSpan.getSessionId()).thenReturn(SESSION_ID); }
Long tabId = span.getTabId(); Pair<Long, Long> plrSessionTabId = new Pair<Long, Long>(sessId, tabId);
protected void initMocks(AbstractRequest targetElement) { when(pageLoadRequestSpan.getDetails()).thenReturn(pageLoadRequest); when(pageLoadRequest.getOwningSpan()).thenReturn(pageLoadRequestSpan); when(sessionInfo.getSessionId()).thenReturn(SESSION_ID); when(pageLoadRequestSpan.getSessionId()).thenReturn(SESSION_ID); when(pageLoadRequestSpan.getTabId()).thenReturn(TAB_ID); if (targetElement != null) { EUMSpan span = Mockito.mock(EUMSpan.class); when(span.getDetails()).thenReturn(targetElement); when(targetElement.getOwningSpan()).thenReturn(span); when(span.getSessionId()).thenReturn(SESSION_ID); when(span.getTabId()).thenReturn(TAB_ID); when(targetElement.getUrl()).thenReturn(URL); } // assign data when(sessionInfo.getBrowser()).thenReturn(BROWSER); when(sessionInfo.getDevice()).thenReturn(DEVICE); when(sessionInfo.getLanguage()).thenReturn(LANGUAGE); when(pageLoadRequest.getUrl()).thenReturn(PAGELOAD_URL); }
protected Beacon generateBeacon(AbstractEUMSpanDetails elementToSend, boolean containsSessionInfo, boolean containsPLR, String modules) { ArrayList<EUMBeaconElement> data = new ArrayList<>(); if (containsSessionInfo) { data.add(sessionInfo); } if (containsPLR) { data.add(pageLoadRequest.getOwningSpan()); when(pageLoadRequest.getOwningSpan().getActiveAgentModules()).thenReturn(modules); } if (elementToSend != null) { EUMSpan span = Mockito.mock(EUMSpan.class); when(span.getTabId()).thenReturn(TAB_ID); when(span.getSessionId()).thenReturn(SESSION_ID); when(span.getDetails()).thenReturn(elementToSend); if (elementToSend instanceof DummyBeaconElement) { ((DummyBeaconElement) elementToSend).owner = span; } else { when(elementToSend.getOwningSpan()).thenReturn(span); } when(span.getActiveAgentModules()).thenReturn(modules); data.add(span); } return new Beacon(SESSION_ID, TAB_ID, modules, data); }
@SuppressWarnings("unchecked") @Override public void onRemoval(RemovalNotification<AbstractEUMSpanDetails, Pair<Boolean, AbstractEUMPointBuilder>> notification) { AbstractEUMSpanDetails element = notification.getKey(); synchronized (element) { AbstractEUMPointBuilder builder = notification.getValue().getSecond(); Long sessId = element.getOwningSpan().getSessionId(); Long tabId = element.getOwningSpan().getTabId(); Pair<Long, Long> plrSessionTabId = new Pair<Long, Long>(sessId, tabId); missingSessionInfosMap.remove(sessId, element); missingPageLoadRequestsMap.remove(plrSessionTabId, element); // Force a write even if data is still missing in case of an cache // eviction because of the timeout if (notification.getCause() != RemovalCause.EXPLICIT) { PageLoadRequest plr = pageLoadRequestCache.getIfPresent(plrSessionTabId); UserSessionInfo sessionInfo = sessionInfoCache.getIfPresent(sessId); dataPointsToWrite.addAll(builder.build(sessionInfo, plr, element)); } } } }).build();
Long tabId = element.getOwningSpan().getTabId(); Pair<Long, Long> plrSessionTabId = new Pair<Long, Long>(sessId, tabId);