@Test public void testUnkownElementTypehandling() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); AbstractEUMSpanDetails dummy = mock(AbstractEUMSpanDetails.class); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> result = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, true, true, modules).getData()) { result.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(result.isEmpty(), equalTo(true)); }
for (JSAgentModule module : JSAgentModule.values()) { if (modulesRegex.length() > 1) { modulesRegex.append('|'); modulesRegex.append(Pattern.quote(String.valueOf(module.getIdentifier())));
/** * @param module * the module of which the source code shall be returned * @return @return the modules source code, either loaded from the resources or directly fetched * form the cache. */ private String getAgentModuleSource(JSAgentModule module) { if (!moduleSourceCache.containsKey(module)) { try { String src = readResourceFile(module.getModuleSourceFile()); moduleSourceCache.putIfAbsent(module, src); return src; } catch (Exception e) { LOG.error("unable to read JS Agent core"); return ""; } } else { return moduleSourceCache.get(module); } }
ColumnAwareToolTipSupport.enableFor(modulesTableViewer); modulesTableViewer.setContentProvider(new ArrayContentProvider()); modulesTableViewer.setInput(JSAgentModule.values()); modulesTableViewer.refresh(); updateCheckedItems();
/** * Updates states of the check boxes next to the elements. */ private void updateCheckedItems() { for (TableItem item : modulesTableViewer.getTable().getItems()) { JSAgentModule moduleInfo = (JSAgentModule) item.getData(); EndUserMonitoringConfig eumConfig = environment.getEumConfig(); item.setChecked(eumConfig.getActiveModules().contains(String.valueOf(moduleInfo.getIdentifier()))); } }
@Test public void testPageLoadRequestNotRequired() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = false; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> result = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, true, false, modules).getData()) { result.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(result.isEmpty(), equalTo(false)); }
@Test public void testSessionInfoNotRequired() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = false; Collection<Builder> result = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, false, true, modules).getData()) { result.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(result.isEmpty(), equalTo(false)); }
@Test public void testIgnoreMissingSessionInfo() { String modules = "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> result = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, false, true, modules).getData()) { result.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(result.isEmpty(), equalTo(false)); }
EUMSpan span = (EUMSpan) element; boolean isBrowserInfoCaptured = span.getActiveAgentModules().contains(String.valueOf(JSAgentModule.BROWSERINFO_MODULE.getIdentifier())); AbstractEUMSpanDetails details = span.getDetails(); if (details != null) {
@Test public void testWaitForPageLoadRequest() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = false; Collection<Builder> resultA = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, true, false, modules).getData()) { resultA.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultB = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, false, true, modules).getData()) { resultB.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(resultA.isEmpty(), equalTo(true)); assertThat(resultB.isEmpty(), equalTo(false)); }
@Test public void testWaitForSessionInfo() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = false; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> resultA = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, false, false, modules).getData()) { resultA.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultB = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, true, false, modules).getData()) { resultB.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(resultA.isEmpty(), equalTo(true)); assertThat(resultB.isEmpty(), equalTo(false)); }
@Test public void endUserMonitoring() { EndUserMonitoringConfig eumConf = new EndUserMonitoringConfig(); eumConf.setActiveModules("" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier()); eumConf.setScriptBaseUrl("/"); eumConf.setEumEnabled(true); when(environment.getEumConfig()).thenReturn(eumConf); Collection<SpecialMethodSensorAssignment> assignments = factory.getSpecialAssignments(environment); assertThat(assignments, is(not(empty()))); assertThat("Must be at least one EUMInstrumentation in the special sensors", assignments, everyItem(hasProperty("specialMethodSensorConfig", anyOf(is(ExecutorIntercepterSensorConfig.INSTANCE), is(EUMInstrumentationSensorConfig.INSTANCE), is(CloseableHttpAsyncClientSensorConfig.INSTANCE))))); }
@Test public void testWaitForPageLoadRequestAndThenSessionInfo() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> resultA = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, false, false, modules).getData()) { resultA.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultB = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, false, true, modules).getData()) { resultB.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultC = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, true, false, modules).getData()) { resultC.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(resultA.isEmpty(), equalTo(true)); assertThat(resultB.isEmpty(), equalTo(true)); assertThat(resultC.isEmpty(), equalTo(false)); }
/** * {@inheritDoc} */ @Override public void commit(boolean onSave) { if (onSave) { super.commit(onSave); environment.getEumConfig().setEumEnabled(eumEnabledButton.getSelection()); environment.getEumConfig().setListenerInstrumentationAllowed(listenerInstrumentationAllowedButton.getSelection()); environment.getEumConfig().setAgentMinificationEnabled(minificationEnabledButton.getSelection()); environment.getEumConfig().setScriptBaseUrl(scriptBaseUrl.getText()); environment.getEumConfig().setRelevancyThreshold(Integer.parseInt(relevancyThresholdMS.getText())); StringBuilder moduleString = new StringBuilder(); for (TableItem item : modulesTableViewer.getTable().getItems()) { JSAgentModule moduleInfo = (JSAgentModule) item.getData(); if (item.getChecked()) { moduleString.append(moduleInfo.getIdentifier()); } } environment.getEumConfig().setActiveModules(moduleString.toString()); getManagedForm().dirtyStateChanged(); } }
@Test public void testIgnoreSessionInfoAndThenWaitForPageLoadRequest() { String modules = "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> resultA = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, false, false, modules).getData()) { resultA.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultB = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, false, true, modules).getData()) { resultB.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(resultA.isEmpty(), equalTo(true)); assertThat(resultB.isEmpty(), equalTo(false)); }
@Test public void testWaitForSessionInfoAndThenPageLoadRequest() { String modules = JSAgentModule.BROWSERINFO_MODULE.getIdentifier() + "" + JSAgentModule.NAVTIMINGS_MODULE.getIdentifier(); DummyBeaconElement dummy = new DummyBeaconElement(); this.subBuilder.requiresPageLoadRequestFlag = true; this.subBuilder.requiresSessionMetaInfoFlag = true; Collection<Builder> resultA = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(dummy, false, false, modules).getData()) { resultA.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultB = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, true, false, modules).getData()) { resultB.addAll(builder.createBuilders((DefaultData) elem)); } Collection<Builder> resultC = new ArrayList<>(); for (EUMBeaconElement elem : generateBeacon(null, false, true, modules).getData()) { resultC.addAll(builder.createBuilders((DefaultData) elem)); } assertThat(resultA.isEmpty(), equalTo(true)); assertThat(resultB.isEmpty(), equalTo(true)); assertThat(resultC.isEmpty(), equalTo(false)); }