@Override public Transaction createInstance() { return new Transaction(ElasticApmTracer.this); } });
@Test void resetState() { final Transaction transaction = new Transaction(mock(ElasticApmTracer.class)); TransactionUtils.fillTransaction(transaction); transaction.resetState(); assertThat(jsonSerializer.toJsonString(transaction)).isEqualTo(jsonSerializer.toJsonString(new Transaction(mock(ElasticApmTracer.class)))); } }
public static TransactionPayload createTransactionPayloadWithAllValues() { final Transaction transaction = new Transaction(mock(ElasticApmTracer.class)); TransactionUtils.fillTransaction(transaction); final TransactionPayload payload = createTransactionPayload(); payload.getTransactions().add(transaction); return payload; }
@Test void testJsonSchemaDslJsonEmptyValues() throws IOException { final TransactionPayload payload = createPayload(); payload.getTransactions().add(new Transaction(mock(ElasticApmTracer.class))); final String content = new DslJsonSerializer(mock(StacktraceConfiguration.class)).toJsonString(payload); System.out.println(content); objectMapper.readTree(content); }
@Test void testValidatingSslCertificate() throws Exception { when(reporterConfiguration.isVerifyServerCert()).thenReturn(true); final Reporter reporter = reporterFactory.createReporter(configuration, null, null); reporter.report(new Transaction(mock(ElasticApmTracer.class))); reporter.flush().get(); assertThat(requestHandled).isFalse(); } }
private void reportTransaction(IntakeV2ReportingEventHandler reportingEventHandler) { final ReportingEvent reportingEvent = new ReportingEvent(); reportingEvent.setTransaction(new Transaction(mock(ElasticApmTracer.class))); reportingEventHandler.onEvent(reportingEvent, -1, true); }
@Test void testNotValidatingSslCertificate() throws Exception { when(reporterConfiguration.isVerifyServerCert()).thenReturn(false); final Reporter reporter = reporterFactory.createReporter(configuration, null, null); reporter.report(new Transaction(mock(ElasticApmTracer.class))); reporter.flush().get(); assertThat(requestHandled).isTrue(); }
@Test void testNullHeaders() throws IOException { Transaction transaction = new Transaction(mock(ElasticApmTracer.class)); transaction.getContext().getRequest().addHeader("foo", (String) null); transaction.getContext().getRequest().addHeader("baz", (Enumeration<String>) null); transaction.getContext().getRequest().getHeaders().add("bar", null); JsonNode jsonNode = objectMapper.readTree(serializer.toJsonString(transaction)); System.out.println(jsonNode); // calling addHeader with a null value ignores the header assertThat(jsonNode.get("context").get("request").get("headers").get("foo")).isNull(); assertThat(jsonNode.get("context").get("request").get("headers").get("baz")).isNull(); // should a null value sneak in, it should not break assertThat(jsonNode.get("context").get("request").get("headers").get("bar").isNull()).isTrue(); }
private TransactionPayload createPayloadWithAllValues() { final Transaction transaction = new Transaction(mock(ElasticApmTracer.class)); TransactionUtils.fillTransaction(transaction); final TransactionPayload payload = createPayload(); payload.getTransactions().add(transaction); payload.getSpans().addAll(TransactionUtils.getSpans(transaction)); return payload; }
@Test void testErrorSerialization() throws IOException { ElasticApmTracer tracer = MockTracer.create(); Transaction transaction = new Transaction(tracer); ErrorCapture error = new ErrorCapture(tracer).asChildOf(transaction.getTraceContext()).withTimestamp(5000); error.setTransactionSampled(true); error.setTransactionType("test-type"); error.setException(new Exception("test")); error.getContext().getTags().put("foo", "bar"); String errorJson = serializer.toJsonString(error); System.out.println("errorJson = " + errorJson); JsonNode errorTree = objectMapper.readTree(errorJson); assertThat(errorTree.get("timestamp").longValue()).isEqualTo(5000); assertThat(errorTree.get("culprit").textValue()).startsWith(this.getClass().getName()); JsonNode context = errorTree.get("context"); assertThat(context.get("tags").get("foo").textValue()).isEqualTo("bar"); JsonNode exception = errorTree.get("exception"); assertThat(exception.get("message").textValue()).isEqualTo("test"); assertThat(exception.get("stacktrace")).isNotNull(); assertThat(exception.get("type").textValue()).isEqualTo(Exception.class.getName()); assertThat(errorTree.get("transaction").get("sampled").booleanValue()).isTrue(); assertThat(errorTree.get("transaction").get("type").textValue()).isEqualTo("test-type"); }
@Test void testTransactionProcessor() throws Exception { reporter.report(new Transaction(mock(ElasticApmTracer.class))); reporter.flush().get(); assertThat(reporter.getDropped()).isEqualTo(0); verify(reportingEventHandler).onEvent(notNull(ReportingEvent::getTransaction), anyLong(), anyBoolean()); }
@Test void testReportTransaction() throws ExecutionException, InterruptedException { reporter.report(new Transaction(MockTracer.create())); reporter.flush().get(); assertThat(reporter.getDropped()).isEqualTo(0); assertThat(receivedHttpRequests.get()).isEqualTo(1); }
@Test void testSecretToken() throws ExecutionException, InterruptedException { when(reporterConfiguration.getSecretToken()).thenReturn("token"); handler = exchange -> { assertThat(exchange.getRequestHeaders().get("Authorization").getFirst()).isEqualTo("Bearer token"); receivedHttpRequests.incrementAndGet(); exchange.setStatusCode(200).endExchange(); }; reporter.report(new Transaction(MockTracer.create())); reporter.flush().get(); assertThat(reporter.getDropped()).isEqualTo(0); assertThat(receivedHttpRequests.get()).isEqualTo(1); }
private Transaction createTransactionWithRequiredValues() { Transaction t = new Transaction(mock(ElasticApmTracer.class)); t.start(TraceContext.asRoot(), null, (long) 0, ConstantSampler.of(true)); t.withType("type"); t.getContext().getRequest().withMethod("GET"); t.getContext().getRequest().getUrl().appendToFull("http://localhost:8080/foo/bar"); return t; }