Search in sources :

Example 1 with ToAttributeConfig

use of com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig in project ApplicationInsights-Java by microsoft.

the class ExporterWithLogProcessorTest method multiRuleToAttributesTest.

@Test
void multiRuleToAttributesTest() {
    MockExporter mockExporter = new MockExporter();
    ProcessorConfig config = new ProcessorConfig();
    config.type = ProcessorType.LOG;
    config.id = "MultiRuleToAttributes";
    config.body = new NameConfig();
    ToAttributeConfig toAttributeConfig = new ToAttributeConfig();
    toAttributeConfig.rules = new ArrayList<>();
    toAttributeConfig.rules.add("Password=(?<password1>[^ ]+)");
    toAttributeConfig.rules.add("Pass=(?<password2>[^ ]+)");
    config.body.toAttributes = toAttributeConfig;
    SpanExporter exampleExporter = new ExporterWithLogProcessor(config, mockExporter);
    Span spanA = tracer.spanBuilder("yyyPassword=123 aba Pass=555 xyx Pass=777 zzz").setAttribute("one", "1").setAttribute("two", 2L).setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").setAttribute("applicationinsights.internal.log", true).startSpan();
    Span spanB = tracer.spanBuilder("yyyPassword=**** aba").setAttribute("one", "1").setAttribute("two", 2L).setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").setAttribute("password", "234").setAttribute("applicationinsights.internal.log", true).startSpan();
    SpanData spanDataA = ((ReadableSpan) spanA).toSpanData();
    SpanData spanDataB = ((ReadableSpan) spanB).toSpanData();
    List<SpanData> spans = new ArrayList<>();
    spans.add(spanDataA);
    spans.add(spanDataB);
    exampleExporter.export(spans);
    // verify that resulting spans are filtered in the way we want
    List<SpanData> result = mockExporter.getSpans();
    SpanData resultSpanA = result.get(0);
    SpanData resultSpanB = result.get(1);
    assertThat(Objects.requireNonNull(resultSpanA.getAttributes().get(AttributeKey.stringKey("password1")))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpanA.getAttributes().get(AttributeKey.stringKey("password1")))).isEqualTo("123");
    assertThat(Objects.requireNonNull(resultSpanA.getAttributes().get(AttributeKey.stringKey("password2")))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpanA.getAttributes().get(AttributeKey.stringKey("password2")))).isEqualTo("555");
    assertThat(resultSpanA.getName()).isEqualTo("yyyPassword={password1} aba Pass={password2} xyx Pass=777 zzz");
    assertThat(Objects.requireNonNull(resultSpanB.getAttributes().get(AttributeKey.stringKey("password1")))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpanB.getAttributes().get(AttributeKey.stringKey("password1")))).isEqualTo("****");
    assertThat(resultSpanB.getName()).isEqualTo("yyyPassword={password1} aba");
}
Also used : SpanExporter(io.opentelemetry.sdk.trace.export.SpanExporter) SpanData(io.opentelemetry.sdk.trace.data.SpanData) NameConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.NameConfig) ArrayList(java.util.ArrayList) ToAttributeConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig) Span(io.opentelemetry.api.trace.Span) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ProcessorConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig) Test(org.junit.jupiter.api.Test)

Example 2 with ToAttributeConfig

use of com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig in project ApplicationInsights-Java by microsoft.

the class ExporterWithLogProcessorTest method simpleToAttributesTest.

@Test
void simpleToAttributesTest() {
    MockExporter mockExporter = new MockExporter();
    ProcessorConfig config = new ProcessorConfig();
    config.type = ProcessorType.LOG;
    config.id = "SimpleToAttributes";
    config.body = new NameConfig();
    ToAttributeConfig toAttributeConfig = new ToAttributeConfig();
    toAttributeConfig.rules = new ArrayList<>();
    toAttributeConfig.rules.add("^/api/v1/document/(?<documentId>.*)/update$");
    config.body.toAttributes = toAttributeConfig;
    SpanExporter exampleExporter = new ExporterWithLogProcessor(config, mockExporter);
    Span span = tracer.spanBuilder("/api/v1/document/12345678/update").setAttribute("one", "1").setAttribute("two", 2L).setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").setAttribute("applicationinsights.internal.log", true).startSpan();
    SpanData spanData = ((ReadableSpan) span).toSpanData();
    List<SpanData> spans = new ArrayList<>();
    spans.add(spanData);
    exampleExporter.export(spans);
    // verify that resulting logs are filtered in the way we want
    List<SpanData> result = mockExporter.getSpans();
    SpanData resultSpan = result.get(0);
    assertThat(Objects.requireNonNull(resultSpan.getAttributes().get(AttributeKey.stringKey("documentId")))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpan.getAttributes().get(AttributeKey.stringKey("documentId")))).isEqualTo("12345678");
    assertThat(resultSpan.getName()).isEqualTo("/api/v1/document/{documentId}/update");
}
Also used : SpanExporter(io.opentelemetry.sdk.trace.export.SpanExporter) SpanData(io.opentelemetry.sdk.trace.data.SpanData) NameConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.NameConfig) ArrayList(java.util.ArrayList) ToAttributeConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig) Span(io.opentelemetry.api.trace.Span) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ProcessorConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig) Test(org.junit.jupiter.api.Test)

Example 3 with ToAttributeConfig

use of com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig in project ApplicationInsights-Java by microsoft.

the class ExporterWithSpanProcessorTest method simpleToAttributesTest.

@Test
void simpleToAttributesTest() {
    MockExporter mockExporter = new MockExporter();
    ProcessorConfig config = new ProcessorConfig();
    config.type = ProcessorType.SPAN;
    config.id = "SimpleToAttributes";
    config.name = new NameConfig();
    ToAttributeConfig toAttributeConfig = new ToAttributeConfig();
    toAttributeConfig.rules = new ArrayList<>();
    toAttributeConfig.rules.add("^/api/v1/document/(?<documentId>.*)/update$");
    config.name.toAttributes = toAttributeConfig;
    SpanExporter exampleExporter = new ExporterWithSpanProcessor(config, mockExporter);
    Span span = tracer.spanBuilder("/api/v1/document/12345678/update").setAttribute("one", "1").setAttribute("two", 2L).setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").startSpan();
    SpanData spanData = ((ReadableSpan) span).toSpanData();
    List<SpanData> spans = new ArrayList<>();
    spans.add(spanData);
    exampleExporter.export(spans);
    // verify that resulting spans are filtered in the way we want
    List<SpanData> result = mockExporter.getSpans();
    SpanData resultSpan = result.get(0);
    assertThat(Objects.requireNonNull(resultSpan.getAttributes().get(AttributeKey.stringKey("documentId")))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpan.getAttributes().get(AttributeKey.stringKey("documentId")))).isEqualTo("12345678");
    assertThat(resultSpan.getName()).isEqualTo("/api/v1/document/{documentId}/update");
}
Also used : SpanExporter(io.opentelemetry.sdk.trace.export.SpanExporter) SpanData(io.opentelemetry.sdk.trace.data.SpanData) NameConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.NameConfig) ArrayList(java.util.ArrayList) ToAttributeConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig) Span(io.opentelemetry.api.trace.Span) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ProcessorConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig) Test(org.junit.jupiter.api.Test)

Example 4 with ToAttributeConfig

use of com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig in project ApplicationInsights-Java by microsoft.

the class ExporterWithSpanProcessorTest method extractAttributesWithIncludeExcludeTest.

@Test
void extractAttributesWithIncludeExcludeTest() {
    MockExporter mockExporter = new MockExporter();
    ProcessorConfig config = new ProcessorConfig();
    config.type = ProcessorType.SPAN;
    config.id = "ExtractAttributesWithIncludeExclude";
    config.name = new NameConfig();
    config.include = new ProcessorIncludeExclude();
    config.include.matchType = MatchType.REGEXP;
    config.include.spanNames = Arrays.asList("^(.*?)/(.*?)$");
    config.exclude = new ProcessorIncludeExclude();
    config.exclude.matchType = MatchType.STRICT;
    config.exclude.spanNames = Arrays.asList("donot/change");
    config.name.toAttributes = new ToAttributeConfig();
    config.name.toAttributes.rules = Arrays.asList("(?<operationwebsite>.*?)$");
    SpanExporter exampleExporter = new ExporterWithSpanProcessor(config, mockExporter);
    Span spanA = tracer.spanBuilder("svcA/test").setAttribute("one", "1").setAttribute("two", 2L).setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").startSpan();
    Span spanB = tracer.spanBuilder("svcB/test").setAttribute("one", "1").setAttribute("testKey", "testValue").setAttribute("testKey2", "testValue2").setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").startSpan();
    Span spanC = tracer.spanBuilder("svcC").setAttribute("two", 2L).setAttribute("testKey", "testValue").setAttribute("testKey2", "testValue2").setAttribute("db.svc", "location").setAttribute("operation", "get").setAttribute("id", "1234").startSpan();
    Span spanD = tracer.spanBuilder("donot/change").setAttribute("one", "1").setAttribute("two", 2L).setAttribute("testKey", "testValue").setAttribute("testKey2", "testValue2").startSpan();
    List<SpanData> spans = new ArrayList<>();
    spans.add(((ReadableSpan) spanA).toSpanData());
    spans.add(((ReadableSpan) spanB).toSpanData());
    spans.add(((ReadableSpan) spanC).toSpanData());
    spans.add(((ReadableSpan) spanD).toSpanData());
    exampleExporter.export(spans);
    // verify that resulting spans are filtered in the way we want
    List<SpanData> result = mockExporter.getSpans();
    SpanData resultSpanA = result.get(0);
    SpanData resultSpanB = result.get(1);
    SpanData resultSpanC = result.get(2);
    SpanData resultSpanD = result.get(3);
    assertThat(resultSpanA.getName()).isEqualTo("{operationwebsite}");
    assertThat(resultSpanA.getAttributes().get(AttributeKey.stringKey("operationwebsite"))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpanA.getAttributes().get(AttributeKey.stringKey("operationwebsite")))).isEqualTo("svcA/test");
    assertThat(resultSpanB.getName()).isEqualTo("{operationwebsite}");
    assertThat(resultSpanB.getAttributes().get(AttributeKey.stringKey("operationwebsite"))).isNotNull();
    assertThat(Objects.requireNonNull(resultSpanB.getAttributes().get(AttributeKey.stringKey("operationwebsite")))).isEqualTo("svcB/test");
    assertThat(resultSpanC.getName()).isEqualTo("svcC");
    assertThat(resultSpanD.getName()).isEqualTo("donot/change");
}
Also used : SpanExporter(io.opentelemetry.sdk.trace.export.SpanExporter) SpanData(io.opentelemetry.sdk.trace.data.SpanData) NameConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.NameConfig) ArrayList(java.util.ArrayList) ProcessorIncludeExclude(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorIncludeExclude) ToAttributeConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig) Span(io.opentelemetry.api.trace.Span) ReadableSpan(io.opentelemetry.sdk.trace.ReadableSpan) ProcessorConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig) Test(org.junit.jupiter.api.Test)

Example 5 with ToAttributeConfig

use of com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig in project ApplicationInsights-Java by microsoft.

the class ExporterWithLogProcessorTest method inValidConfigTestWithToAttributesNoRulesTest.

@Test
void inValidConfigTestWithToAttributesNoRulesTest() {
    MockExporter mockExporter = new MockExporter();
    ProcessorConfig config = new ProcessorConfig();
    config.type = ProcessorType.LOG;
    config.id = "inValidConfigTestWithToAttributesNoRules";
    config.body = new NameConfig();
    config.body.toAttributes = new ToAttributeConfig();
    assertThatThrownBy(() -> new ExporterWithLogProcessor(config, mockExporter)).isInstanceOf(FriendlyException.class);
}
Also used : NameConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.NameConfig) ToAttributeConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig) ProcessorConfig(com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig) Test(org.junit.jupiter.api.Test)

Aggregations

NameConfig (com.microsoft.applicationinsights.agent.internal.configuration.Configuration.NameConfig)9 ProcessorConfig (com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorConfig)9 ToAttributeConfig (com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ToAttributeConfig)9 Test (org.junit.jupiter.api.Test)9 Span (io.opentelemetry.api.trace.Span)5 ReadableSpan (io.opentelemetry.sdk.trace.ReadableSpan)5 SpanData (io.opentelemetry.sdk.trace.data.SpanData)5 SpanExporter (io.opentelemetry.sdk.trace.export.SpanExporter)5 ArrayList (java.util.ArrayList)5 ProcessorIncludeExclude (com.microsoft.applicationinsights.agent.internal.configuration.Configuration.ProcessorIncludeExclude)1