diff --git a/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelProtoCodecTest.java b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelProtoCodecTest.java index b2e42c6c20..142779ac1b 100644 --- a/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelProtoCodecTest.java +++ b/data-prepper-plugins/otel-proto-common/src/test/java/org/opensearch/dataprepper/plugins/otel/codec/OTelProtoCodecTest.java @@ -1318,4 +1318,61 @@ public void testBoundsKeyNotEqualsSign() { assertNotEquals(k1, k2); } + @Test + void testConvertKeysOfDataPointAttributesRemoveDuplicatedKey() { + final String keyName = "duplicate_key_name"; + final String keyValue = "duplicate_value"; + final KeyValue duplicateAttribute1 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final KeyValue duplicateAttribute2 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final NumberDataPoint actual = NumberDataPoint.newBuilder() + .addAllAttributes(Arrays.asList(duplicateAttribute1, duplicateAttribute2)).build(); + + Map map = OTelProtoCodec.convertKeysOfDataPointAttributes(actual); + assertThat(map.size(), is(equalTo(1))); + } + + @Test + void testUnpackKeyValueListRemoveDuplicatedKey() { + final String keyName = "duplicate_key_name"; + final String keyValue = "duplicate_value"; + final KeyValue duplicateAttribute1 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final KeyValue duplicateAttribute2 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final List actual = Arrays.asList(duplicateAttribute1, duplicateAttribute2); + + Map map = OTelProtoCodec.unpackKeyValueList(actual); + assertThat(map.size(), is(equalTo(1))); + } + + @Test + void testUnpackKeyValueListLogRemoveDuplicatedKey() { + final String keyName = "duplicate_key_name"; + final String keyValue = "duplicate_value"; + final KeyValue duplicateAttribute1 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final KeyValue duplicateAttribute2 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final List actual = Arrays.asList(duplicateAttribute1, duplicateAttribute2); + + Map map = OTelProtoCodec.unpackKeyValueListLog(actual); + assertThat(map.size(), is(equalTo(1))); + } + + @Test + void testUnpackExemplarValueListRemoveDuplicatedKey() { + final String keyName = "duplicate_key_name"; + final String keyValue = "duplicate_value"; + final KeyValue duplicateAttribute1 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final KeyValue duplicateAttribute2 = KeyValue.newBuilder().setKey(keyName).setValue(AnyValue.newBuilder() + .setStringValue(keyValue).build()).build(); + final List actual = Arrays.asList(duplicateAttribute1, duplicateAttribute2); + + Map map = OTelProtoCodec.unpackExemplarValueList(actual); + assertThat(map.size(), is(equalTo(1))); + } + }