From 2056cbf711a76f297fe440e89b40233df87f9a16 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 2 Jun 2023 16:08:09 +0200 Subject: [PATCH 001/209] Creating empty module for disk exporters --- disk-exporters/build.gradle.kts | 19 +++++++++++++++++++ .../src/main/java/org/example/Main.java | 7 +++++++ settings.gradle.kts | 1 + 3 files changed, 27 insertions(+) create mode 100644 disk-exporters/build.gradle.kts create mode 100644 disk-exporters/src/main/java/org/example/Main.java diff --git a/disk-exporters/build.gradle.kts b/disk-exporters/build.gradle.kts new file mode 100644 index 000000000..ca8ff62bf --- /dev/null +++ b/disk-exporters/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("java") +} + +group = "org.example" +version = "1.27.0-alpha-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + testImplementation(platform("org.junit:junit-bom:5.9.1")) + testImplementation("org.junit.jupiter:junit-jupiter") +} + +tasks.test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/disk-exporters/src/main/java/org/example/Main.java b/disk-exporters/src/main/java/org/example/Main.java new file mode 100644 index 000000000..3117fda0f --- /dev/null +++ b/disk-exporters/src/main/java/org/example/Main.java @@ -0,0 +1,7 @@ +package org.example; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 08f4e9e3f..fe3877e6c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -60,3 +60,4 @@ include(":static-instrumenter:maven-plugin") include(":static-instrumenter:agent-extension") include(":static-instrumenter:bootstrap") include(":static-instrumenter:test-app") +include("disk-exporters") From 347a2b95bfca372732fdb831233268dc75640bfe Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 2 Jun 2023 16:27:15 +0200 Subject: [PATCH 002/209] Updated new exporters-storage module gradle file and package name --- disk-exporters/build.gradle.kts | 19 ------------------- exporters-storage/build.gradle.kts | 11 +++++++++++ .../contrib/exporters/storage}/Main.java | 2 +- settings.gradle.kts | 2 +- 4 files changed, 13 insertions(+), 21 deletions(-) delete mode 100644 disk-exporters/build.gradle.kts create mode 100644 exporters-storage/build.gradle.kts rename {disk-exporters/src/main/java/org/example => exporters-storage/src/main/java/io/opentelemetry/contrib/exporters/storage}/Main.java (67%) diff --git a/disk-exporters/build.gradle.kts b/disk-exporters/build.gradle.kts deleted file mode 100644 index ca8ff62bf..000000000 --- a/disk-exporters/build.gradle.kts +++ /dev/null @@ -1,19 +0,0 @@ -plugins { - id("java") -} - -group = "org.example" -version = "1.27.0-alpha-SNAPSHOT" - -repositories { - mavenCentral() -} - -dependencies { - testImplementation(platform("org.junit:junit-bom:5.9.1")) - testImplementation("org.junit.jupiter:junit-jupiter") -} - -tasks.test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/exporters-storage/build.gradle.kts b/exporters-storage/build.gradle.kts new file mode 100644 index 000000000..54b546b2a --- /dev/null +++ b/exporters-storage/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("otel.java-conventions") + id("otel.publish-conventions") +} + +description = "Exporter implementations that store signals in disk" +otelJava.moduleName.set("io.opentelemetry.contrib.exporters.storage") + +dependencies { + api("io.opentelemetry:opentelemetry-sdk") +} diff --git a/disk-exporters/src/main/java/org/example/Main.java b/exporters-storage/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java similarity index 67% rename from disk-exporters/src/main/java/org/example/Main.java rename to exporters-storage/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java index 3117fda0f..62b5dbf03 100644 --- a/disk-exporters/src/main/java/org/example/Main.java +++ b/exporters-storage/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java @@ -1,4 +1,4 @@ -package org.example; +package io.opentelemetry.contrib.exporters.storage; public class Main { public static void main(String[] args) { diff --git a/settings.gradle.kts b/settings.gradle.kts index fe3877e6c..f642e8e4f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -60,4 +60,4 @@ include(":static-instrumenter:maven-plugin") include(":static-instrumenter:agent-extension") include(":static-instrumenter:bootstrap") include(":static-instrumenter:test-app") -include("disk-exporters") +include(":exporters-storage") From ba9dd8ab4f62210fe4569db608292db5e46c528d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 09:19:06 +0200 Subject: [PATCH 003/209] Renaming exporters-storage module to disk-buffer --- {exporters-storage => disk-buffer}/build.gradle.kts | 0 .../java/io/opentelemetry/contrib/exporters/storage/Main.java | 0 settings.gradle.kts | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename {exporters-storage => disk-buffer}/build.gradle.kts (100%) rename {exporters-storage => disk-buffer}/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java (100%) diff --git a/exporters-storage/build.gradle.kts b/disk-buffer/build.gradle.kts similarity index 100% rename from exporters-storage/build.gradle.kts rename to disk-buffer/build.gradle.kts diff --git a/exporters-storage/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java similarity index 100% rename from exporters-storage/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java diff --git a/settings.gradle.kts b/settings.gradle.kts index f642e8e4f..db7156a7a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -60,4 +60,4 @@ include(":static-instrumenter:maven-plugin") include(":static-instrumenter:agent-extension") include(":static-instrumenter:bootstrap") include(":static-instrumenter:test-app") -include(":exporters-storage") +include(":disk-buffer") From 0619a730eceecdb28a2478d60b42c1560282edef Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 09:48:30 +0200 Subject: [PATCH 004/209] Adding AttributesJsonConverter --- disk-buffer/build.gradle.kts | 3 + .../contrib/exporters/storage/Main.java | 7 - .../converters/AttributesJsonConverter.java | 215 ++++++++++++++++++ .../AttributesJsonConverterTest.java | 49 ++++ .../testutils/BaseJsonSerializationTest.java | 30 +++ 5 files changed, 297 insertions(+), 7 deletions(-) delete mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java diff --git a/disk-buffer/build.gradle.kts b/disk-buffer/build.gradle.kts index 54b546b2a..8528732cf 100644 --- a/disk-buffer/build.gradle.kts +++ b/disk-buffer/build.gradle.kts @@ -6,6 +6,9 @@ plugins { description = "Exporter implementations that store signals in disk" otelJava.moduleName.set("io.opentelemetry.contrib.exporters.storage") +val dslJsonVersion = "1.10.0" dependencies { api("io.opentelemetry:opentelemetry-sdk") + implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") + annotationProcessor("com.dslplatform:dsl-json-java8:$dslJsonVersion") } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java deleted file mode 100644 index 62b5dbf03..000000000 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.exporters.storage; - -public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java new file mode 100644 index 000000000..fb299beb5 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java @@ -0,0 +1,215 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.converters; + +import com.dslplatform.json.BoolConverter; +import com.dslplatform.json.JsonConverter; +import com.dslplatform.json.JsonReader; +import com.dslplatform.json.JsonWriter; +import com.dslplatform.json.NumberConverter; +import com.dslplatform.json.ObjectConverter; +import com.dslplatform.json.StringConverter; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.AttributeType; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.AttributesBuilder; +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; + +@SuppressWarnings({"rawtypes", "unchecked"}) +@JsonConverter(target = Attributes.class) +public final class AttributesJsonConverter { + private static final Map simpleTypesInJson = new HashMap<>(); + private static final Map jsonToSimpleTypes = new HashMap<>(); + private static final Map arrayToSimpleTypes = new HashMap<>(); + + private AttributesJsonConverter() {} + + static { + simpleTypesInJson.put(AttributeType.BOOLEAN, "boolValue"); + simpleTypesInJson.put(AttributeType.DOUBLE, "doubleValue"); + simpleTypesInJson.put(AttributeType.LONG, "intValue"); + simpleTypesInJson.put(AttributeType.STRING, "stringValue"); + arrayToSimpleTypes.put(AttributeType.BOOLEAN_ARRAY, AttributeType.BOOLEAN); + arrayToSimpleTypes.put(AttributeType.DOUBLE_ARRAY, AttributeType.DOUBLE); + arrayToSimpleTypes.put(AttributeType.LONG_ARRAY, AttributeType.LONG); + arrayToSimpleTypes.put(AttributeType.STRING_ARRAY, AttributeType.STRING); + for (Map.Entry entry : simpleTypesInJson.entrySet()) { + jsonToSimpleTypes.put(entry.getValue(), entry.getKey()); + } + } + + public static void write(JsonWriter writer, Attributes value) { + Iterator, Object>> entryIterator = + value.asMap().entrySet().iterator(); + writer.writeAscii("["); + while (entryIterator.hasNext()) { + Map.Entry, Object> entry = entryIterator.next(); + writeItem(writer, entry.getKey(), entry.getValue(), entryIterator.hasNext()); + } + writer.writeAscii("]"); + } + + public static Attributes read(JsonReader reader) throws IOException { + AttributesBuilder builder = Attributes.builder(); + + if (listIsEmpty(reader)) { + return builder.build(); + } + + readObject(reader, builder); + + while (reader.getNextToken() != ']') { + reader.startObject(); + readObject(reader, builder); + } + + return builder.build(); + } + + private static void readObject(JsonReader reader, AttributesBuilder builder) throws IOException { + Map map = ObjectConverter.deserializeMap(reader); + String key = (String) map.get("key"); + Map value = (Map) map.get("value"); + putItem( + builder, + Objects.requireNonNull(key), + Objects.requireNonNull(value).entrySet().iterator().next()); + } + + private static void putItem( + AttributesBuilder builder, String key, Map.Entry entry) { + Object value = entry.getValue(); + if (value instanceof Map) { + List> list = + (List>) ((Map) value).get("values"); + Objects.requireNonNull(list); + AttributeType type = jsonToSimpleTypes.get(list.get(0).keySet().iterator().next()); + switch (Objects.requireNonNull(type)) { + case BOOLEAN: + builder.put(AttributeKey.booleanArrayKey(key), collectItems(list)); + break; + case DOUBLE: + builder.put( + AttributeKey.doubleArrayKey(key), + collectItems(list, item -> ((BigDecimal) item).doubleValue())); + break; + case LONG: + builder.put( + AttributeKey.longArrayKey(key), + collectItems(list, item -> Long.parseLong((String) item))); + break; + case STRING: + builder.put(AttributeKey.stringArrayKey(key), collectItems(list)); + break; + default: + throw new UnsupportedOperationException(); + } + } else { + switch (Objects.requireNonNull(jsonToSimpleTypes.get(entry.getKey()))) { + case BOOLEAN: + builder.put(AttributeKey.booleanKey(key), (Boolean) value); + break; + case DOUBLE: + builder.put(AttributeKey.doubleKey(key), ((BigDecimal) value).doubleValue()); + break; + case LONG: + builder.put(AttributeKey.longKey(key), Long.parseLong((String) value)); + break; + case STRING: + builder.put(AttributeKey.stringKey(key), (String) value); + break; + default: + throw new UnsupportedOperationException(); + } + } + } + + private static List collectItems(List> list) { + return collectItems(list, (item) -> (T) item); + } + + private static List collectItems( + List> list, Function converter) { + List result = new ArrayList<>(); + for (Map map : list) { + for (Object value : map.values()) { + result.add(converter.apply(value)); + } + } + return result; + } + + private static boolean listIsEmpty(JsonReader reader) throws IOException { + if (reader.last() != '[') { + throw reader.newParseError("Expecting '[' for list start"); + } + byte nextToken = reader.getNextToken(); + return nextToken == ']'; + } + + private static void writeItem( + JsonWriter writer, AttributeKey attributeKey, Object object, boolean hasNext) { + writer.writeAscii("{\"key\":"); + StringConverter.serialize(attributeKey.getKey(), writer); + writer.writeAscii(",\"value\":{"); + writeValue(writer, attributeKey.getType(), object); + writer.writeAscii("}"); + writer.writeAscii("}"); + if (hasNext) { + writer.writeAscii(","); + } + } + + private static void writeValue(JsonWriter writer, AttributeType type, Object object) { + if (arrayToSimpleTypes.containsKey(type)) { + writeArrayValue(writer, type, object); + } else { + writeSimpleValue(writer, type, object); + } + } + + private static void writeSimpleValue(JsonWriter writer, AttributeType type, Object object) { + writer.writeString(Objects.requireNonNull(simpleTypesInJson.get(type))); + writer.writeAscii(":"); + switch (type) { + case BOOLEAN: + BoolConverter.serialize((Boolean) object, writer); + break; + case STRING: + StringConverter.serialize((String) object, writer); + break; + case DOUBLE: + NumberConverter.serialize((Double) object, writer); + break; + case LONG: + StringConverter.serialize(String.valueOf(object), writer); + break; + default: + throw new UnsupportedOperationException("Not supported type: " + type); + } + } + + private static void writeArrayValue(JsonWriter writer, AttributeType type, Object object) { + Iterator iterator = ((Collection) object).iterator(); + AttributeType simpleType = Objects.requireNonNull(arrayToSimpleTypes.get(type)); + writer.writeAscii("\"arrayValue\":{"); + writer.writeAscii("\"values\":["); + while (iterator.hasNext()) { + writer.writeAscii("{"); + writeSimpleValue(writer, simpleType, iterator.next()); + writer.writeAscii("}"); + if (iterator.hasNext()) { + writer.writeAscii(","); + } + } + writer.writeAscii("]"); + writer.writeAscii("}"); + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java new file mode 100644 index 000000000..716de2231 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java @@ -0,0 +1,49 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.converters; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.contrib.exporters.storage.testutils.BaseJsonSerializationTest; +import java.util.Arrays; +import org.junit.jupiter.api.Test; + +class AttributesJsonConverterTest extends BaseJsonSerializationTest { + + @Test + public void verifySerialization() { + Attributes attributes = + Attributes.builder() + .put(AttributeKey.stringKey("someString"), "someValue") + .put(AttributeKey.booleanKey("someBool"), true) + .put(AttributeKey.longKey("someLong"), 10L) + .put(AttributeKey.doubleKey("someDouble"), 10.0) + .build(); + + byte[] serialized = serialize(attributes); + + assertEquals(attributes, deserialize(serialized)); + } + + @Test + public void verifyArraySerialization() { + Attributes attributes = + Attributes.builder() + .put( + AttributeKey.stringArrayKey("someString"), + Arrays.asList("firstString", "secondString")) + .put(AttributeKey.booleanArrayKey("someBool"), Arrays.asList(true, false)) + .put(AttributeKey.longArrayKey("someLong"), Arrays.asList(10L, 50L)) + .put(AttributeKey.doubleArrayKey("someDouble"), Arrays.asList(10.0, 50.5)) + .build(); + + byte[] serialized = serialize(attributes); + + assertEquals(attributes, deserialize(serialized)); + } + + @Override + protected Class getTargetClass() { + return Attributes.class; + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java new file mode 100644 index 000000000..96d7e3dff --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java @@ -0,0 +1,30 @@ +package io.opentelemetry.contrib.exporters.storage.testutils; + +import com.dslplatform.json.DslJson; +import com.dslplatform.json.runtime.Settings; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +public abstract class BaseJsonSerializationTest { + private final DslJson dslJson = new DslJson<>(Settings.basicSetup()); + + protected byte[] serialize(T item) { + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + dslJson.serialize(item, out); + return out.toByteArray(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + protected T deserialize(byte[] json) { + try (ByteArrayInputStream in = new ByteArrayInputStream(json)) { + return dslJson.deserialize(getTargetClass(), in); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + protected abstract Class getTargetClass(); +} From 67be26c13ef5831fc14676c72f7f348650d0a4ba Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 11:05:26 +0200 Subject: [PATCH 005/209] Adding span json types --- disk-buffer/build.gradle.kts | 8 +++ disk-buffer/lint.xml | 6 ++ .../serialization/common/ResourceJson.java | 10 +++ .../serialization/common/ResourceSignals.java | 20 ++++++ .../common/ResourceSignalsData.java | 8 +++ .../serialization/common/ScopeJson.java | 19 ++++++ .../serialization/common/ScopeSignals.java | 20 ++++++ .../serialization/spans/EventDataJson.java | 23 +++++++ .../serialization/spans/LinkDataJson.java | 23 +++++++ .../serialization/spans/ResourceSpans.java | 24 +++++++ .../spans/ResourceSpansData.java | 22 +++++++ .../serialization/spans/ScopeSpan.java | 22 +++++++ .../serialization/spans/SpanDataJson.java | 63 +++++++++++++++++++ .../serialization/spans/StatusDataJson.java | 15 +++++ 14 files changed, 283 insertions(+) create mode 100644 disk-buffer/lint.xml create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java diff --git a/disk-buffer/build.gradle.kts b/disk-buffer/build.gradle.kts index 8528732cf..e7d0d8ad4 100644 --- a/disk-buffer/build.gradle.kts +++ b/disk-buffer/build.gradle.kts @@ -6,6 +6,14 @@ plugins { description = "Exporter implementations that store signals in disk" otelJava.moduleName.set("io.opentelemetry.contrib.exporters.storage") +tasks { + withType().configureEach { + with(options) { + compilerArgs.addAll(listOf("-Xlint:-unchecked", "-Xlint:-rawtypes")) + } + } +} + val dslJsonVersion = "1.10.0" dependencies { api("io.opentelemetry:opentelemetry-sdk") diff --git a/disk-buffer/lint.xml b/disk-buffer/lint.xml new file mode 100644 index 000000000..4d72fb8fd --- /dev/null +++ b/disk-buffer/lint.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java new file mode 100644 index 000000000..37ab6ce9f --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java @@ -0,0 +1,10 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.common; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; + +public final class ResourceJson { + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java new file mode 100644 index 000000000..4f93e20b7 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java @@ -0,0 +1,20 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.common; + +import com.dslplatform.json.JsonAttribute; +import java.util.List; +import javax.annotation.Nullable; + +public abstract class ResourceSignals> { + + @Nullable + @JsonAttribute(name = "resource") + public ResourceJson resource; + + @Nullable + @JsonAttribute(name = "schemaUrl") + public String schemaUrl; + + public abstract void addScopeSignalsItem(T item); + + public abstract List getScopeSignals(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java new file mode 100644 index 000000000..e4f57cfb6 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java @@ -0,0 +1,8 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.common; + +import java.util.Collection; + +public interface ResourceSignalsData> { + + Collection getResourceSignals(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java new file mode 100644 index 000000000..03f4936be --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.common; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import javax.annotation.Nullable; + +public final class ScopeJson { + + @Nullable + @JsonAttribute(name = "name") + public String name; + + @Nullable + @JsonAttribute(name = "version") + public String version; + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java new file mode 100644 index 000000000..2a3b7df5b --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java @@ -0,0 +1,20 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.common; + +import com.dslplatform.json.JsonAttribute; +import java.util.List; +import javax.annotation.Nullable; + +public abstract class ScopeSignals { + + @Nullable + @JsonAttribute(name = "scope") + public ScopeJson scope; + + @Nullable + @JsonAttribute(name = "schemaUrl") + public String schemaUrl; + + public abstract void addSignalItem(T item); + + public abstract List getSignalItems(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java new file mode 100644 index 000000000..8331eac79 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java @@ -0,0 +1,23 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import javax.annotation.Nullable; + +public final class EventDataJson { + + @Nullable + @JsonAttribute(name = "timeUnixNano") + public String epochNanos; + + @Nullable + @JsonAttribute(name = "name") + public String name; + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); + + @Nullable + @JsonAttribute(name = "droppedAttributesCount") + public Integer droppedAttributesCount; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java new file mode 100644 index 000000000..ead94d487 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java @@ -0,0 +1,23 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import javax.annotation.Nullable; + +public final class LinkDataJson { + + @Nullable + @JsonAttribute(name = "traceId") + public String traceId; + + @Nullable + @JsonAttribute(name = "spanId") + public String spanId; + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); + + @Nullable + @JsonAttribute(name = "droppedAttributesCount") + public Integer droppedAttributesCount; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java new file mode 100644 index 000000000..c52ac5970 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java @@ -0,0 +1,24 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignals; +import java.util.ArrayList; +import java.util.List; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ResourceSpans extends ResourceSignals { + + @JsonAttribute(name = "scopeSpans") + public List scopeSpans = new ArrayList<>(); + + @Override + public void addScopeSignalsItem(ScopeSpan item) { + scopeSpans.add(item); + } + + @Override + public List getScopeSignals() { + return scopeSpans; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java new file mode 100644 index 000000000..01fd4d18a --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignalsData; +import java.util.Collection; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ResourceSpansData implements ResourceSignalsData { + + @JsonAttribute(name = "resourceSpans") + public final Collection resourceSpans; + + public ResourceSpansData(Collection resourceSpans) { + this.resourceSpans = resourceSpans; + } + + @Override + public Collection getResourceSignals() { + return resourceSpans; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java new file mode 100644 index 000000000..a999c7af9 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ScopeSignals; +import java.util.ArrayList; +import java.util.List; + +public final class ScopeSpan extends ScopeSignals { + + @JsonAttribute(name = "spans") + public List spans = new ArrayList<>(); + + @Override + public void addSignalItem(SpanDataJson item) { + spans.add(item); + } + + @Override + public List getSignalItems() { + return spans; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java new file mode 100644 index 000000000..1d2b15e94 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java @@ -0,0 +1,63 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import java.util.List; +import javax.annotation.Nullable; + +public final class SpanDataJson { + @Nullable + @JsonAttribute(name = "traceId") + public String traceId; + + @Nullable + @JsonAttribute(name = "spanId") + public String spanId; + + @Nullable + @JsonAttribute(name = "parentSpanId") + public String parentSpanId; + + @Nullable + @JsonAttribute(name = "name") + public String name; + + @Nullable + @JsonAttribute(name = "kind") + public Integer kind; + + @Nullable + @JsonAttribute(name = "startTimeUnixNano") + public String startEpochNanos; + + @Nullable + @JsonAttribute(name = "endTimeUnixNano") + public String endEpochNanos; + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); + + @Nullable + @JsonAttribute(name = "droppedAttributesCount") + public Integer droppedAttributesCount; + + @Nullable + @JsonAttribute(name = "droppedEventsCount") + public Integer droppedEventsCount; + + @Nullable + @JsonAttribute(name = "droppedLinksCount") + public Integer droppedLinksCount; + + @Nullable + @JsonAttribute(name = "events") + public List events; + + @Nullable + @JsonAttribute(name = "links") + public List links; + + @Nullable + @JsonAttribute(name = "status") + public StatusDataJson status; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java new file mode 100644 index 000000000..85672704e --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java @@ -0,0 +1,15 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.spans; + +import com.dslplatform.json.JsonAttribute; +import javax.annotation.Nullable; + +public final class StatusDataJson { + + @Nullable + @JsonAttribute(name = "message") + public String description; + + @Nullable + @JsonAttribute(name = "code") + public Integer statusCode; +} From d1214af2ccd8fff4118d707cf2820812f66bad26 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 11:13:48 +0200 Subject: [PATCH 006/209] Adding log json types --- .../storage/serialization/logs/BodyJson.java | 11 +++++ .../serialization/logs/LogRecordDataJson.java | 43 +++++++++++++++++++ .../serialization/logs/ResourceLogs.java | 24 +++++++++++ .../serialization/logs/ResourceLogsData.java | 22 ++++++++++ .../storage/serialization/logs/ScopeLogs.java | 22 ++++++++++ 5 files changed, 122 insertions(+) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java new file mode 100644 index 000000000..514f8a707 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java @@ -0,0 +1,11 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.logs; + +import com.dslplatform.json.JsonAttribute; +import javax.annotation.Nullable; + +public final class BodyJson { + + @Nullable + @JsonAttribute(name = "stringValue") + public String stringValue; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java new file mode 100644 index 000000000..c8eda2a29 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java @@ -0,0 +1,43 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.logs; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import javax.annotation.Nullable; + +public final class LogRecordDataJson { + + @Nullable + @JsonAttribute(name = "timeUnixNano") + public String epochNanos; + + @Nullable + @JsonAttribute(name = "severityNumber") + public Integer severity; + + @Nullable + @JsonAttribute(name = "severityText") + public String severityText; + + @Nullable + @JsonAttribute(name = "body") + public BodyJson body; + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); + + @Nullable + @JsonAttribute(name = "droppedAttributesCount") + public Integer droppedAttributesCount; + + @Nullable + @JsonAttribute(name = "flags") + public Integer flags; + + @Nullable + @JsonAttribute(name = "traceId") + public String traceId; + + @Nullable + @JsonAttribute(name = "spanId") + public String spanId; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java new file mode 100644 index 000000000..11988d761 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java @@ -0,0 +1,24 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.logs; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignals; +import java.util.ArrayList; +import java.util.List; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ResourceLogs extends ResourceSignals { + + @JsonAttribute(name = "scopeLogs") + public List scopeLogs = new ArrayList<>(); + + @Override + public void addScopeSignalsItem(ScopeLogs item) { + scopeLogs.add(item); + } + + @Override + public List getScopeSignals() { + return scopeLogs; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java new file mode 100644 index 000000000..1b9a00192 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.logs; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignalsData; +import java.util.Collection; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ResourceLogsData implements ResourceSignalsData { + + @JsonAttribute(name = "resourceLogs") + public final Collection resourceLogs; + + public ResourceLogsData(Collection resourceLogs) { + this.resourceLogs = resourceLogs; + } + + @Override + public Collection getResourceSignals() { + return resourceLogs; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java new file mode 100644 index 000000000..c9ef77f55 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.logs; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ScopeSignals; +import java.util.ArrayList; +import java.util.List; + +public final class ScopeLogs extends ScopeSignals { + + @JsonAttribute(name = "logRecords") + public List logRecords = new ArrayList<>(); + + @Override + public void addSignalItem(LogRecordDataJson item) { + logRecords.add(item); + } + + @Override + public List getSignalItems() { + return logRecords; + } +} From fb08847b1773892ef11e4f020e9c91c8a7dce437 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 11:37:31 +0200 Subject: [PATCH 007/209] Adding metric json types --- .../storage/serialization/Serializer.java | 40 ++++++ .../converters/MetricDataJsonConverter.java | 120 ++++++++++++++++++ .../serialization/metrics/MetricDataJson.java | 28 ++++ .../metrics/ResourceMetrics.java | 24 ++++ .../metrics/ResourceMetricsData.java | 22 ++++ .../serialization/metrics/ScopeMetrics.java | 22 ++++ .../serialization/metrics/data/DataJson.java | 24 ++++ .../metrics/data/ExponentialHistogram.java | 14 ++ .../serialization/metrics/data/Gauge.java | 7 + .../serialization/metrics/data/Histogram.java | 14 ++ .../serialization/metrics/data/Sum.java | 18 +++ .../serialization/metrics/data/Summary.java | 7 + .../metrics/datapoints/DataPoint.java | 19 +++ .../ExponentialHistogramDataPoint.java | 48 +++++++ .../datapoints/HistogramDataPoint.java | 37 ++++++ .../metrics/datapoints/NumberDataPoint.java | 44 +++++++ .../metrics/datapoints/SummaryDataPoint.java | 23 ++++ .../metrics/datapoints/data/Buckets.java | 25 ++++ .../metrics/datapoints/data/Exemplar.java | 39 ++++++ .../datapoints/data/QuantileValue.java | 15 +++ .../impl/ExponentialHistogramMetric.java | 28 ++++ .../metrics/impl/GaugeMetric.java | 28 ++++ .../metrics/impl/HistogramMetric.java | 28 ++++ .../serialization/metrics/impl/SumMetric.java | 28 ++++ .../metrics/impl/SummaryMetric.java | 28 ++++ 25 files changed, 730 insertions(+) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java new file mode 100644 index 000000000..10f5369cb --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java @@ -0,0 +1,40 @@ +package io.opentelemetry.contrib.exporters.storage.serialization; + +import com.dslplatform.json.DslJson; +import com.dslplatform.json.JsonReader; +import com.dslplatform.json.JsonWriter; +import com.dslplatform.json.runtime.Settings; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public final class Serializer { + + private static final DslJson dslJson = + new DslJson<>(Settings.basicSetup().skipDefaultValues(true)); + + private Serializer() {} + + public static JsonReader.ReadObject tryFindReader(Class manifest) { + return dslJson.tryFindReader(manifest); + } + + public static JsonWriter.WriteObject tryFindWriter(Class manifest) { + return dslJson.tryFindWriter(manifest); + } + + public static T deserialize(Class type, String value) throws IOException { + try (ByteArrayInputStream in = + new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8))) { + return dslJson.deserialize(type, in); + } + } + + public static String serialize(Object object) throws IOException { + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + dslJson.serialize(object, out); + return new String(out.toByteArray(), StandardCharsets.UTF_8); + } + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java new file mode 100644 index 000000000..0af582f5e --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java @@ -0,0 +1,120 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.converters; + +import com.dslplatform.json.JsonConverter; +import com.dslplatform.json.JsonReader; +import com.dslplatform.json.JsonWriter; +import io.opentelemetry.contrib.exporters.storage.serialization.Serializer; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SummaryMetric; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +@SuppressWarnings("unchecked") +@JsonConverter(target = MetricDataJson.class) +public final class MetricDataJsonConverter { + private static final int METRIC_DATA_NUM_OF_KEYS = 4; + private static final Map, JsonReader.ReadObject> READERS = new HashMap<>(); + private static final Map, JsonWriter.WriteObject> WRITERS = new HashMap<>(); + + private MetricDataJsonConverter() {} + + public static MetricDataJson read(JsonReader reader) throws IOException { + String name = null; + String description = null; + String unit = null; + MetricDataJson metricDataJson = null; + for (int i = 0; i < METRIC_DATA_NUM_OF_KEYS; i++) { + reader.getNextToken(); + String key = reader.readKey(); + switch (key) { + case SumMetric.DATA_NAME: + metricDataJson = new SumMetric(); + metricDataJson.setData(getReader(Sum.class).read(reader)); + break; + case GaugeMetric.DATA_NAME: + metricDataJson = new GaugeMetric(); + metricDataJson.setData(getReader(Gauge.class).read(reader)); + break; + case HistogramMetric.DATA_NAME: + metricDataJson = new HistogramMetric(); + metricDataJson.setData(getReader(Histogram.class).read(reader)); + break; + case SummaryMetric.DATA_NAME: + metricDataJson = new SummaryMetric(); + metricDataJson.setData(getReader(Summary.class).read(reader)); + break; + case ExponentialHistogramMetric.DATA_NAME: + metricDataJson = new ExponentialHistogramMetric(); + metricDataJson.setData(getReader(ExponentialHistogram.class).read(reader)); + break; + case MetricDataJson.NAME: + name = reader.readString(); + break; + case MetricDataJson.DESCRIPTION: + description = reader.readString(); + break; + case MetricDataJson.UNIT: + unit = reader.readString(); + break; + default: + throw new IllegalArgumentException(); + } + reader.getNextToken(); + } + Objects.requireNonNull(metricDataJson); + Objects.requireNonNull(name); + Objects.requireNonNull(description); + Objects.requireNonNull(unit); + metricDataJson.name = name; + metricDataJson.description = description; + metricDataJson.unit = unit; + return metricDataJson; + } + + public static void write(JsonWriter writer, MetricDataJson value) { + if (value instanceof ExponentialHistogramMetric) { + getWriter(ExponentialHistogramMetric.class).write(writer, (ExponentialHistogramMetric) value); + } else if (value instanceof GaugeMetric) { + getWriter(GaugeMetric.class).write(writer, (GaugeMetric) value); + } else if (value instanceof HistogramMetric) { + getWriter(HistogramMetric.class).write(writer, (HistogramMetric) value); + } else if (value instanceof SummaryMetric) { + getWriter(SummaryMetric.class).write(writer, (SummaryMetric) value); + } else if (value instanceof SumMetric) { + getWriter(SumMetric.class).write(writer, (SumMetric) value); + } else { + throw new UnsupportedOperationException(); + } + } + + private static JsonReader.ReadObject getReader(Class type) { + JsonReader.ReadObject reader = READERS.get(type); + if (reader == null) { + reader = Serializer.tryFindReader(type); + READERS.put(type, reader); + } + + return (JsonReader.ReadObject) reader; + } + + private static JsonWriter.WriteObject getWriter(Class type) { + JsonWriter.WriteObject writer = WRITERS.get(type); + if (writer == null) { + writer = Serializer.tryFindWriter(type); + WRITERS.put(type, writer); + } + + return (JsonWriter.WriteObject) writer; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java new file mode 100644 index 000000000..78155739e --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java @@ -0,0 +1,28 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import javax.annotation.Nullable; + +public abstract class MetricDataJson { + public static final String NAME = "name"; + public static final String DESCRIPTION = "description"; + public static final String UNIT = "unit"; + + @Nullable + @JsonAttribute(name = NAME) + public String name; + + @Nullable + @JsonAttribute(name = DESCRIPTION) + public String description; + + @Nullable + @JsonAttribute(name = UNIT) + public String unit; + + public abstract void setData(DataJson data); + + @Nullable + public abstract DataJson getData(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java new file mode 100644 index 000000000..5d809d377 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java @@ -0,0 +1,24 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignals; +import java.util.ArrayList; +import java.util.List; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ResourceMetrics extends ResourceSignals { + + @JsonAttribute(name = "scopeMetrics") + public List scopeMetrics = new ArrayList<>(); + + @Override + public void addScopeSignalsItem(ScopeMetrics item) { + scopeMetrics.add(item); + } + + @Override + public List getScopeSignals() { + return scopeMetrics; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java new file mode 100644 index 000000000..c0db7ff69 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignalsData; +import java.util.Collection; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ResourceMetricsData implements ResourceSignalsData { + + @JsonAttribute(name = "resourceMetrics") + public final Collection resourceMetrics; + + public ResourceMetricsData(Collection resourceMetrics) { + this.resourceMetrics = resourceMetrics; + } + + @Override + public Collection getResourceSignals() { + return resourceMetrics; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java new file mode 100644 index 000000000..12c46a910 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.common.ScopeSignals; +import java.util.ArrayList; +import java.util.List; + +public final class ScopeMetrics extends ScopeSignals { + + @JsonAttribute(name = "metrics") + public List metrics = new ArrayList<>(); + + @Override + public void addSignalItem(MetricDataJson item) { + metrics.add(item); + } + + @Override + public List getSignalItems() { + return metrics; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java new file mode 100644 index 000000000..e2a7a53a7 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java @@ -0,0 +1,24 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.DataPoint; +import java.util.ArrayList; +import java.util.List; + +@CompiledJson +public abstract class DataJson { + + @JsonAttribute(name = "dataPoints") + public List points = new ArrayList<>(); + + @SuppressWarnings("unchecked") + public void setPoints(List points) { + this.points = (List) points; + } + + @JsonAttribute(ignore = true) + public List getPoints() { + return points; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java new file mode 100644 index 000000000..4e37239b8 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java @@ -0,0 +1,14 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.ExponentialHistogramDataPoint; +import javax.annotation.Nullable; + +@CompiledJson +public final class ExponentialHistogram extends DataJson { + + @Nullable + @JsonAttribute(name = "aggregationTemporality") + public Integer aggregationTemporality; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java new file mode 100644 index 000000000..1fd13eb05 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.NumberDataPoint; + +@CompiledJson +public final class Gauge extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java new file mode 100644 index 000000000..5647e2d88 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java @@ -0,0 +1,14 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.HistogramDataPoint; +import javax.annotation.Nullable; + +@CompiledJson +public final class Histogram extends DataJson { + + @Nullable + @JsonAttribute(name = "aggregationTemporality") + public Integer aggregationTemporality; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java new file mode 100644 index 000000000..28cab6d1b --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java @@ -0,0 +1,18 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.NumberDataPoint; +import javax.annotation.Nullable; + +@CompiledJson +public final class Sum extends DataJson { + + @Nullable + @JsonAttribute(name = "aggregationTemporality") + public Integer aggregationTemporality; + + @Nullable + @JsonAttribute(name = "isMonotonic") + public Boolean monotonic; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java new file mode 100644 index 000000000..52162c499 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.SummaryDataPoint; + +@CompiledJson +public final class Summary extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java new file mode 100644 index 000000000..cb2dff2ff --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import javax.annotation.Nullable; + +public abstract class DataPoint { + + @Nullable + @JsonAttribute(name = "startTimeUnixNano") + public String startEpochNanos; + + @Nullable + @JsonAttribute(name = "timeUnixNano") + public String epochNanos; + + @JsonAttribute(name = "attributes") + public Attributes attributes = Attributes.empty(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java new file mode 100644 index 000000000..b968b8177 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -0,0 +1,48 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Exemplar; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +@CompiledJson +public final class ExponentialHistogramDataPoint extends DataPoint { + + @Nullable + @JsonAttribute(name = "count") + public String count; + + @Nullable + @JsonAttribute(name = "sum") + public Double sum; + + @Nullable + @JsonAttribute(name = "min") + public Double min; + + @Nullable + @JsonAttribute(name = "max") + public Double max; + + @Nullable + @JsonAttribute(name = "scale") + public Integer scale; + + @Nullable + @JsonAttribute(name = "zeroCount") + public String zeroCount; + + @Nullable + @JsonAttribute(name = "positive") + public Buckets positiveBuckets; + + @Nullable + @JsonAttribute(name = "negative") + public Buckets negativeBuckets; + + @JsonAttribute(name = "exemplars") + public List exemplars = new ArrayList<>(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java new file mode 100644 index 000000000..740cb30dc --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java @@ -0,0 +1,37 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Exemplar; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +@CompiledJson +public final class HistogramDataPoint extends DataPoint { + + @Nullable + @JsonAttribute(name = "count") + public String count; + + @Nullable + @JsonAttribute(name = "sum") + public Double sum; + + @Nullable + @JsonAttribute(name = "min") + public Double min; + + @Nullable + @JsonAttribute(name = "max") + public Double max; + + @JsonAttribute(name = "bucketCounts") + public List counts = new ArrayList<>(); + + @JsonAttribute(name = "explicitBounds") + public List boundaries = new ArrayList<>(); + + @JsonAttribute(name = "exemplars") + public List exemplars = new ArrayList<>(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java new file mode 100644 index 000000000..f0ccaf9be --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java @@ -0,0 +1,44 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Exemplar; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class NumberDataPoint extends DataPoint { + + @Nullable + @JsonAttribute(name = "asInt") + public String longValue; + + @Nullable + @JsonAttribute(name = "asDouble") + public Double doubleValue; + + @JsonAttribute(name = "exemplars") + public List exemplars = new ArrayList<>(); + + public void setValue(Object value) { + if (value instanceof Long) { + longValue = String.valueOf(value); + } else { + doubleValue = (Double) value; + } + } + + public Type getType() { + if (longValue != null) { + return Type.LONG; + } else { + return Type.DOUBLE; + } + } + + public enum Type { + LONG, + DOUBLE + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java new file mode 100644 index 000000000..8ecca459c --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java @@ -0,0 +1,23 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.QuantileValue; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +@CompiledJson +public final class SummaryDataPoint extends DataPoint { + + @Nullable + @JsonAttribute(name = "count") + public String count; + + @Nullable + @JsonAttribute(name = "sum") + public Double sum; + + @JsonAttribute(name = "quantileValues") + public List values = new ArrayList<>(); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java new file mode 100644 index 000000000..bd72fa4bb --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java @@ -0,0 +1,25 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data; + +import com.dslplatform.json.JsonAttribute; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +public final class Buckets { + + @Nullable + @JsonAttribute(name = "offset") + public Integer offset; + + @JsonAttribute(name = "bucketCounts") + public List bucketCounts = new ArrayList<>(); + + // Not present in the proto + @Nullable + @JsonAttribute(name = "scale") + public Integer scale; + + @Nullable + @JsonAttribute(name = "totalCount") + public String totalCount; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java new file mode 100644 index 000000000..26c126509 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java @@ -0,0 +1,39 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data; + +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.common.Attributes; +import javax.annotation.Nullable; + +public final class Exemplar { + + @Nullable + @JsonAttribute(name = "timeUnixNano") + public String epochNanos; + + @Nullable + @JsonAttribute(name = "spanId") + public String spanId; + + @Nullable + @JsonAttribute(name = "traceId") + public String traceId; + + @JsonAttribute(name = "filteredAttributes") + public Attributes filteredAttributes = Attributes.empty(); + + @Nullable + @JsonAttribute(name = "asDouble") + public Double doubleValue; + + @Nullable + @JsonAttribute(name = "asInt") + public String longValue; + + public void setValue(Object value) { + if (value instanceof Long) { + longValue = String.valueOf(value); + } else { + doubleValue = (Double) value; + } + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java new file mode 100644 index 000000000..fbcae3225 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java @@ -0,0 +1,15 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data; + +import com.dslplatform.json.JsonAttribute; +import javax.annotation.Nullable; + +public final class QuantileValue { + + @Nullable + @JsonAttribute(name = "quantile") + public Double quantile; + + @Nullable + @JsonAttribute(name = "value") + public Double value; +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java new file mode 100644 index 000000000..6ec41fe63 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java @@ -0,0 +1,28 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.ExponentialHistogram; +import javax.annotation.Nullable; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class ExponentialHistogramMetric extends MetricDataJson { + public static final String DATA_NAME = "exponentialHistogram"; + + @Nullable + @JsonAttribute(name = DATA_NAME) + public ExponentialHistogram exponentialHistogram; + + @Override + public void setData(DataJson data) { + exponentialHistogram = (ExponentialHistogram) data; + } + + @Nullable + @Override + public DataJson getData() { + return exponentialHistogram; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java new file mode 100644 index 000000000..9e4bf7f2a --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java @@ -0,0 +1,28 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Gauge; +import javax.annotation.Nullable; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class GaugeMetric extends MetricDataJson { + public static final String DATA_NAME = "gauge"; + + @Nullable + @JsonAttribute(name = DATA_NAME) + public Gauge gauge; + + @Override + public void setData(DataJson data) { + gauge = (Gauge) data; + } + + @Nullable + @Override + public DataJson getData() { + return gauge; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java new file mode 100644 index 000000000..8b2b3aece --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java @@ -0,0 +1,28 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Histogram; +import javax.annotation.Nullable; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class HistogramMetric extends MetricDataJson { + public static final String DATA_NAME = "histogram"; + + @Nullable + @JsonAttribute(name = DATA_NAME) + public Histogram histogram; + + @Override + public void setData(DataJson data) { + histogram = (Histogram) data; + } + + @Nullable + @Override + public DataJson getData() { + return histogram; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java new file mode 100644 index 000000000..94f215ac8 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java @@ -0,0 +1,28 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Sum; +import javax.annotation.Nullable; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class SumMetric extends MetricDataJson { + public static final String DATA_NAME = "sum"; + + @Nullable + @JsonAttribute(name = DATA_NAME) + public Sum sum; + + @Override + public void setData(DataJson data) { + sum = (Sum) data; + } + + @Nullable + @Override + public DataJson getData() { + return sum; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java new file mode 100644 index 000000000..005243cb7 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java @@ -0,0 +1,28 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; + +import com.dslplatform.json.CompiledJson; +import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Summary; +import javax.annotation.Nullable; + +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) +public final class SummaryMetric extends MetricDataJson { + public static final String DATA_NAME = "summary"; + + @Nullable + @JsonAttribute(name = DATA_NAME) + public Summary summary; + + @Override + public void setData(DataJson data) { + summary = (Summary) data; + } + + @Nullable + @Override + public DataJson getData() { + return summary; + } +} From 1c24365cd4fc09286326ac6b43110a0265825afe Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 13:54:18 +0200 Subject: [PATCH 008/209] Validating custom MetricDataJsonConverter --- .../storage/serialization/Serializer.java | 10 +- .../MetricDataJsonConverterTest.java | 101 ++++++++++++++++++ .../testutils/BaseJsonSerializationTest.java | 16 +-- 3 files changed, 110 insertions(+), 17 deletions(-) create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java index 10f5369cb..45ec78acf 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java @@ -7,7 +7,6 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.nio.charset.StandardCharsets; public final class Serializer { @@ -24,17 +23,16 @@ public static JsonWriter.WriteObject tryFindWriter(Class manifest) { return dslJson.tryFindWriter(manifest); } - public static T deserialize(Class type, String value) throws IOException { - try (ByteArrayInputStream in = - new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8))) { + public static T deserialize(Class type, byte[] value) throws IOException { + try (ByteArrayInputStream in = new ByteArrayInputStream(value)) { return dslJson.deserialize(type, in); } } - public static String serialize(Object object) throws IOException { + public static byte[] serialize(Object object) throws IOException { try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { dslJson.serialize(object, out); - return new String(out.toByteArray(), StandardCharsets.UTF_8); + return out.toByteArray(); } } } diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java new file mode 100644 index 000000000..3dfc82d6e --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java @@ -0,0 +1,101 @@ +package io.opentelemetry.contrib.exporters.storage.serialization.converters; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.exporters.storage.testutils.BaseJsonSerializationTest; +import org.junit.jupiter.api.Test; + +class MetricDataJsonConverterTest extends BaseJsonSerializationTest { + private static final String METRIC_NAME = "metricName"; + private static final String METRIC_DESCRIPTION = "metricDescription"; + private static final String METRIC_UNIT = "metricUnit"; + + @Test + public void verifySumMetricSerialization() { + SumMetric metric = new SumMetric(); + setBaseValues(metric); + metric.sum = new Sum(); + + byte[] serialized = serialize(metric); + + assertTrue(deserialize(serialized) instanceof SumMetric); + assertBaseValues(metric); + } + + @Test + public void verifyGaugeMetricSerialization() { + GaugeMetric metric = new GaugeMetric(); + setBaseValues(metric); + metric.gauge = new Gauge(); + + byte[] serialized = serialize(metric); + + assertTrue(deserialize(serialized) instanceof GaugeMetric); + assertBaseValues(metric); + } + + @Test + public void verifyHistogramMetricSerialization() { + HistogramMetric metric = new HistogramMetric(); + setBaseValues(metric); + metric.histogram = new Histogram(); + + byte[] serialized = serialize(metric); + + assertTrue(deserialize(serialized) instanceof HistogramMetric); + assertBaseValues(metric); + } + + @Test + public void verifySummaryMetricSerialization() { + SummaryMetric metric = new SummaryMetric(); + setBaseValues(metric); + metric.summary = new Summary(); + + byte[] serialized = serialize(metric); + + assertTrue(deserialize(serialized) instanceof SummaryMetric); + assertBaseValues(metric); + } + + @Test + public void verifyExponentialHistogramMetricSerialization() { + ExponentialHistogramMetric metric = new ExponentialHistogramMetric(); + setBaseValues(metric); + metric.exponentialHistogram = new ExponentialHistogram(); + + byte[] serialized = serialize(metric); + + assertTrue(deserialize(serialized) instanceof ExponentialHistogramMetric); + assertBaseValues(metric); + } + + private static void assertBaseValues(MetricDataJson metric) { + assertEquals(METRIC_NAME, metric.name); + assertEquals(METRIC_DESCRIPTION, metric.description); + assertEquals(METRIC_UNIT, metric.unit); + } + + private static void setBaseValues(MetricDataJson metric) { + metric.name = METRIC_NAME; + metric.description = METRIC_DESCRIPTION; + metric.unit = METRIC_UNIT; + } + + @Override + protected Class getTargetClass() { + return MetricDataJson.class; + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java index 96d7e3dff..d391ac129 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java @@ -1,26 +1,20 @@ package io.opentelemetry.contrib.exporters.storage.testutils; -import com.dslplatform.json.DslJson; -import com.dslplatform.json.runtime.Settings; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; +import io.opentelemetry.contrib.exporters.storage.serialization.Serializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { - private final DslJson dslJson = new DslJson<>(Settings.basicSetup()); - protected byte[] serialize(T item) { - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - dslJson.serialize(item, out); - return out.toByteArray(); + try { + return Serializer.serialize(item); } catch (IOException e) { throw new RuntimeException(e); } } protected T deserialize(byte[] json) { - try (ByteArrayInputStream in = new ByteArrayInputStream(json)) { - return dslJson.deserialize(getTargetClass(), in); + try { + return Serializer.deserialize(getTargetClass(), json); } catch (IOException e) { throw new RuntimeException(e); } From 248dffbf53a8740add4dd3e9db6700713c5bad8c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 13:57:07 +0200 Subject: [PATCH 009/209] Changing package name --- .../buffer}/serialization/Serializer.java | 2 +- .../serialization/common/ResourceJson.java | 2 +- .../serialization/common/ResourceSignals.java | 2 +- .../common/ResourceSignalsData.java | 2 +- .../serialization/common/ScopeJson.java | 2 +- .../serialization/common/ScopeSignals.java | 2 +- .../converters/AttributesJsonConverter.java | 2 +- .../converters/MetricDataJsonConverter.java | 26 +++++++++---------- .../buffer}/serialization/logs/BodyJson.java | 2 +- .../serialization/logs/LogRecordDataJson.java | 2 +- .../serialization/logs/ResourceLogs.java | 4 +-- .../serialization/logs/ResourceLogsData.java | 4 +-- .../buffer}/serialization/logs/ScopeLogs.java | 4 +-- .../serialization/metrics/MetricDataJson.java | 4 +-- .../metrics/ResourceMetrics.java | 4 +-- .../metrics/ResourceMetricsData.java | 4 +-- .../serialization/metrics/ScopeMetrics.java | 4 +-- .../serialization/metrics/data/DataJson.java | 4 +-- .../metrics/data/ExponentialHistogram.java | 4 +-- .../serialization/metrics/data/Gauge.java | 7 +++++ .../serialization/metrics/data/Histogram.java | 4 +-- .../serialization/metrics/data/Sum.java | 4 +-- .../serialization/metrics/data/Summary.java | 7 +++++ .../metrics/datapoints/DataPoint.java | 2 +- .../ExponentialHistogramDataPoint.java | 6 ++--- .../datapoints/HistogramDataPoint.java | 4 +-- .../metrics/datapoints/NumberDataPoint.java | 4 +-- .../metrics/datapoints/SummaryDataPoint.java | 4 +-- .../metrics/datapoints/data/Buckets.java | 2 +- .../metrics/datapoints/data/Exemplar.java | 2 +- .../datapoints/data/QuantileValue.java | 2 +- .../impl/ExponentialHistogramMetric.java | 8 +++--- .../metrics/impl/GaugeMetric.java | 8 +++--- .../metrics/impl/HistogramMetric.java | 8 +++--- .../serialization/metrics/impl/SumMetric.java | 8 +++--- .../metrics/impl/SummaryMetric.java | 8 +++--- .../serialization/spans/EventDataJson.java | 2 +- .../serialization/spans/LinkDataJson.java | 2 +- .../serialization/spans/ResourceSpans.java | 4 +-- .../spans/ResourceSpansData.java | 4 +-- .../serialization/spans/ScopeSpan.java | 4 +-- .../serialization/spans/SpanDataJson.java | 2 +- .../serialization/spans/StatusDataJson.java | 2 +- .../serialization/metrics/data/Gauge.java | 7 ----- .../serialization/metrics/data/Summary.java | 7 ----- .../AttributesJsonConverterTest.java | 4 +-- .../MetricDataJsonConverterTest.java | 26 +++++++++---------- .../testutils/BaseJsonSerializationTest.java | 4 +-- 48 files changed, 118 insertions(+), 118 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/Serializer.java (94%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/common/ResourceJson.java (75%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/common/ResourceSignals.java (85%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/common/ResourceSignalsData.java (69%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/common/ScopeJson.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/common/ScopeSignals.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/converters/AttributesJsonConverter.java (99%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/converters/MetricDataJsonConverter.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/logs/BodyJson.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/logs/LogRecordDataJson.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/logs/ResourceLogs.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/logs/ResourceLogsData.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/logs/ScopeLogs.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/MetricDataJson.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/ResourceMetrics.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/ResourceMetricsData.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/ScopeMetrics.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/data/DataJson.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/data/ExponentialHistogram.java (63%) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/data/Histogram.java (62%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/data/Sum.java (67%) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/DataPoint.java (83%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java (76%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/HistogramDataPoint.java (81%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/NumberDataPoint.java (83%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/SummaryDataPoint.java (71%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/data/Buckets.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/data/Exemplar.java (90%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/datapoints/data/QuantileValue.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/impl/ExponentialHistogramMetric.java (64%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/impl/GaugeMetric.java (61%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/impl/HistogramMetric.java (62%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/impl/SumMetric.java (61%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/metrics/impl/SummaryMetric.java (62%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/EventDataJson.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/LinkDataJson.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/ResourceSpans.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/ResourceSpansData.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/ScopeSpan.java (72%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/SpanDataJson.java (94%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/spans/StatusDataJson.java (78%) delete mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java delete mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java rename disk-buffer/src/test/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/converters/AttributesJsonConverterTest.java (90%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/serialization/converters/MetricDataJsonConverterTest.java (68%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/{exporters/storage => disk/buffer}/testutils/BaseJsonSerializationTest.java (78%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/Serializer.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/Serializer.java index 45ec78acf..d10c161e7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/Serializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/Serializer.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization; +package io.opentelemetry.contrib.disk.buffer.serialization; import com.dslplatform.json.DslJson; import com.dslplatform.json.JsonReader; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceJson.java similarity index 75% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceJson.java index 37ab6ce9f..7566a4bca 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.common; +package io.opentelemetry.contrib.disk.buffer.serialization.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignals.java similarity index 85% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignals.java index 4f93e20b7..897c1d2e8 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.common; +package io.opentelemetry.contrib.disk.buffer.serialization.common; import com.dslplatform.json.JsonAttribute; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignalsData.java similarity index 69% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignalsData.java index e4f57cfb6..9bcfd6228 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ResourceSignalsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignalsData.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.common; +package io.opentelemetry.contrib.disk.buffer.serialization.common; import java.util.Collection; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeJson.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeJson.java index 03f4936be..921f78553 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.common; +package io.opentelemetry.contrib.disk.buffer.serialization.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeSignals.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeSignals.java index 2a3b7df5b..6f944037e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/common/ScopeSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.common; +package io.opentelemetry.contrib.disk.buffer.serialization.common; import com.dslplatform.json.JsonAttribute; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverter.java similarity index 99% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverter.java index fb299beb5..6c4112d3c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.serialization.converters; import com.dslplatform.json.BoolConverter; import com.dslplatform.json.JsonConverter; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverter.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverter.java index 0af582f5e..ce631de3b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverter.java @@ -1,20 +1,20 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.serialization.converters; import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.exporters.storage.serialization.Serializer; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SummaryMetric; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/BodyJson.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/BodyJson.java index 514f8a707..f7bcac24b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/BodyJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/BodyJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.serialization.logs; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/LogRecordDataJson.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/LogRecordDataJson.java index c8eda2a29..f84318cf5 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/LogRecordDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/LogRecordDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.serialization.logs; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogs.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogs.java index 11988d761..1cc7fb153 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogs.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogs.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.serialization.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogsData.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogsData.java index 1b9a00192..b2f7990c0 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ResourceLogsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.serialization.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ScopeLogs.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ScopeLogs.java index c9ef77f55..5a1210591 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/logs/ScopeLogs.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ScopeLogs.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.serialization.logs; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/MetricDataJson.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/MetricDataJson.java index 78155739e..684f858f0 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/MetricDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/MetricDataJson.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; import javax.annotation.Nullable; public abstract class MetricDataJson { diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetrics.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetrics.java index 5d809d377..74e29ff04 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetrics.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetrics.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetricsData.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetricsData.java index c0db7ff69..ae0211b18 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ResourceMetricsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetricsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ScopeMetrics.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ScopeMetrics.java index 12c46a910..feb59ec95 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/ScopeMetrics.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ScopeMetrics.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/DataJson.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/DataJson.java index e2a7a53a7..fcbd6584a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/DataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/DataJson.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.DataPoint; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/ExponentialHistogram.java similarity index 63% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/ExponentialHistogram.java index 4e37239b8..3084aa89b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/ExponentialHistogram.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/ExponentialHistogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.ExponentialHistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java new file mode 100644 index 000000000..8043bb634 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.NumberDataPoint; + +@CompiledJson +public final class Gauge extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Histogram.java similarity index 62% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Histogram.java index 5647e2d88..79820920a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Histogram.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Histogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.HistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Sum.java similarity index 67% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Sum.java index 28cab6d1b..43fd3b64e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Sum.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Sum.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.NumberDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java new file mode 100644 index 000000000..bd7cc7132 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.SummaryDataPoint; + +@CompiledJson +public final class Summary extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/DataPoint.java similarity index 83% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/DataPoint.java index cb2dff2ff..8f313bc30 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/DataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/DataPoint.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java similarity index 76% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java index b968b8177..6f82f5442 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -1,9 +1,9 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/HistogramDataPoint.java similarity index 81% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/HistogramDataPoint.java index 740cb30dc..4545bd277 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/HistogramDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/HistogramDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/NumberDataPoint.java similarity index 83% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/NumberDataPoint.java index f0ccaf9be..9927ee9cd 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/NumberDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/NumberDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/SummaryDataPoint.java similarity index 71% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/SummaryDataPoint.java index 8ecca459c..c4e0bc447 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/SummaryDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/SummaryDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.QuantileValue; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Buckets.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Buckets.java index bd72fa4bb..4faa2fe6b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Buckets.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Buckets.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import java.util.ArrayList; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Exemplar.java similarity index 90% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Exemplar.java index 26c126509..cadcae3f2 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/Exemplar.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Exemplar.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/QuantileValue.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/QuantileValue.java index fbcae3225..463100f3d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/datapoints/data/QuantileValue.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/QuantileValue.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/ExponentialHistogramMetric.java similarity index 64% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/ExponentialHistogramMetric.java index 6ec41fe63..41c60bfa9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/ExponentialHistogramMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/ExponentialHistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.ExponentialHistogram; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/GaugeMetric.java similarity index 61% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/GaugeMetric.java index 9e4bf7f2a..e7e53ca51 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/GaugeMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/GaugeMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Gauge; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/HistogramMetric.java similarity index 62% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/HistogramMetric.java index 8b2b3aece..5153404b3 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/HistogramMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/HistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Histogram; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SumMetric.java similarity index 61% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SumMetric.java index 94f215ac8..9222e6401 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SumMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SumMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Sum; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SummaryMetric.java similarity index 62% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SummaryMetric.java index 005243cb7..f9863295c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/impl/SummaryMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SummaryMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Summary; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/EventDataJson.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/EventDataJson.java index 8331eac79..84f922a19 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/EventDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/EventDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/LinkDataJson.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/LinkDataJson.java index ead94d487..7a7fc3f87 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/LinkDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/LinkDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpans.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpans.java index c52ac5970..2ab530a00 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpans.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpans.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpansData.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpansData.java index 01fd4d18a..61e0b9671 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ResourceSpansData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpansData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ScopeSpan.java similarity index 72% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ScopeSpan.java index a999c7af9..67681e5f9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/ScopeSpan.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ScopeSpan.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.exporters.storage.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.serialization.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/SpanDataJson.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/SpanDataJson.java index 1d2b15e94..fdad65456 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/SpanDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/SpanDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/StatusDataJson.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/StatusDataJson.java index 85672704e..9d832814b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/spans/StatusDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/StatusDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.serialization.spans; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java deleted file mode 100644 index 1fd13eb05..000000000 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Gauge.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.NumberDataPoint; - -@CompiledJson -public final class Gauge extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java deleted file mode 100644 index 52162c499..000000000 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/exporters/storage/serialization/metrics/data/Summary.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.datapoints.SummaryDataPoint; - -@CompiledJson -public final class Summary extends DataJson {} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverterTest.java similarity index 90% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverterTest.java index 716de2231..9679110f6 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/AttributesJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverterTest.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.contrib.exporters.storage.testutils.BaseJsonSerializationTest; +import io.opentelemetry.contrib.disk.buffer.testutils.BaseJsonSerializationTest; import java.util.Arrays; import org.junit.jupiter.api.Test; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverterTest.java similarity index 68% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverterTest.java index 3dfc82d6e..1955da1d7 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/serialization/converters/MetricDataJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverterTest.java @@ -1,20 +1,20 @@ -package io.opentelemetry.contrib.exporters.storage.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.exporters.storage.serialization.metrics.impl.SummaryMetric; -import io.opentelemetry.contrib.exporters.storage.testutils.BaseJsonSerializationTest; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.testutils.BaseJsonSerializationTest; import org.junit.jupiter.api.Test; class MetricDataJsonConverterTest extends BaseJsonSerializationTest { diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java similarity index 78% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java index d391ac129..74425c591 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/exporters/storage/testutils/BaseJsonSerializationTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.exporters.storage.testutils; +package io.opentelemetry.contrib.disk.buffer.testutils; -import io.opentelemetry.contrib.exporters.storage.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.serialization.Serializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { From 51bfb994e2397d187da22cf01ddb7859edb949f2 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 13:58:47 +0200 Subject: [PATCH 010/209] Moving serialization into internal package --- .../serialization/Serializer.java | 2 +- .../serialization/common/ResourceJson.java | 2 +- .../serialization/common/ResourceSignals.java | 2 +- .../common/ResourceSignalsData.java | 2 +- .../serialization/common/ScopeJson.java | 2 +- .../serialization/common/ScopeSignals.java | 2 +- .../converters/AttributesJsonConverter.java | 2 +- .../converters/MetricDataJsonConverter.java | 26 +++++++++---------- .../serialization/logs/BodyJson.java | 2 +- .../serialization/logs/LogRecordDataJson.java | 2 +- .../serialization/logs/ResourceLogs.java | 4 +-- .../serialization/logs/ResourceLogsData.java | 4 +-- .../serialization/logs/ScopeLogs.java | 4 +-- .../serialization/metrics/MetricDataJson.java | 4 +-- .../metrics/ResourceMetrics.java | 4 +-- .../metrics/ResourceMetricsData.java | 4 +-- .../serialization/metrics/ScopeMetrics.java | 4 +-- .../serialization/metrics/data/DataJson.java | 4 +-- .../metrics/data/ExponentialHistogram.java | 4 +-- .../serialization/metrics/data/Gauge.java | 7 +++++ .../serialization/metrics/data/Histogram.java | 4 +-- .../serialization/metrics/data/Sum.java | 4 +-- .../serialization/metrics/data/Summary.java | 7 +++++ .../metrics/datapoints/DataPoint.java | 2 +- .../ExponentialHistogramDataPoint.java | 6 ++--- .../datapoints/HistogramDataPoint.java | 4 +-- .../metrics/datapoints/NumberDataPoint.java | 4 +-- .../metrics/datapoints/SummaryDataPoint.java | 4 +-- .../metrics/datapoints/data/Buckets.java | 2 +- .../metrics/datapoints/data/Exemplar.java | 2 +- .../datapoints/data/QuantileValue.java | 2 +- .../impl/ExponentialHistogramMetric.java | 8 +++--- .../metrics/impl/GaugeMetric.java | 8 +++--- .../metrics/impl/HistogramMetric.java | 8 +++--- .../serialization/metrics/impl/SumMetric.java | 8 +++--- .../metrics/impl/SummaryMetric.java | 8 +++--- .../serialization/spans/EventDataJson.java | 2 +- .../serialization/spans/LinkDataJson.java | 2 +- .../serialization/spans/ResourceSpans.java | 4 +-- .../spans/ResourceSpansData.java | 4 +-- .../serialization/spans/ScopeSpan.java | 4 +-- .../serialization/spans/SpanDataJson.java | 2 +- .../serialization/spans/StatusDataJson.java | 2 +- .../serialization/metrics/data/Gauge.java | 7 ----- .../serialization/metrics/data/Summary.java | 7 ----- .../AttributesJsonConverterTest.java | 2 +- .../MetricDataJsonConverterTest.java | 24 ++++++++--------- .../testutils/BaseJsonSerializationTest.java | 2 +- 48 files changed, 115 insertions(+), 115 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/Serializer.java (94%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/common/ResourceJson.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/common/ResourceSignals.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/common/ResourceSignalsData.java (68%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/common/ScopeJson.java (83%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/common/ScopeSignals.java (83%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/converters/AttributesJsonConverter.java (98%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/converters/MetricDataJsonConverter.java (76%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/logs/BodyJson.java (72%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/logs/LogRecordDataJson.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/logs/ResourceLogs.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/logs/ResourceLogsData.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/logs/ScopeLogs.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/MetricDataJson.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/ResourceMetrics.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/ResourceMetricsData.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/ScopeMetrics.java (72%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/data/DataJson.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/data/ExponentialHistogram.java (62%) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/data/Histogram.java (62%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/data/Sum.java (67%) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/DataPoint.java (82%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java (76%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/HistogramDataPoint.java (80%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/NumberDataPoint.java (82%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/SummaryDataPoint.java (71%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/data/Buckets.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/data/Exemplar.java (89%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/datapoints/data/QuantileValue.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/impl/ExponentialHistogramMetric.java (63%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/impl/GaugeMetric.java (60%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/impl/HistogramMetric.java (61%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/impl/SumMetric.java (60%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/metrics/impl/SummaryMetric.java (61%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/EventDataJson.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/LinkDataJson.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/ResourceSpans.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/ResourceSpansData.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/ScopeSpan.java (72%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/SpanDataJson.java (94%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/spans/StatusDataJson.java (78%) delete mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java delete mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java rename disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/converters/AttributesJsonConverterTest.java (95%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/{ => internal}/serialization/converters/MetricDataJsonConverterTest.java (70%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/Serializer.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java index d10c161e7..c028d29da 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/Serializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization; +package io.opentelemetry.contrib.disk.buffer.internal.serialization; import com.dslplatform.json.DslJson; import com.dslplatform.json.JsonReader; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceJson.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceJson.java index 7566a4bca..d2a841776 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignals.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java index 897c1d2e8..0f0de92ee 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; import com.dslplatform.json.JsonAttribute; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignalsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignalsData.java similarity index 68% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignalsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignalsData.java index 9bcfd6228..62f3841f3 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ResourceSignalsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignalsData.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; import java.util.Collection; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeJson.java similarity index 83% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeJson.java index 921f78553..03aa263fa 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeSignals.java similarity index 83% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeSignals.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeSignals.java index 6f944037e..efe63b606 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/common/ScopeSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; import com.dslplatform.json.JsonAttribute; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java similarity index 98% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java index 6c4112d3c..a3cf017ce 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import com.dslplatform.json.BoolConverter; import com.dslplatform.json.JsonConverter; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java similarity index 76% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java index ce631de3b..a4d345c22 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java @@ -1,20 +1,20 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffer.serialization.Serializer; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SummaryMetric; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/BodyJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/BodyJson.java similarity index 72% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/BodyJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/BodyJson.java index f7bcac24b..bf9c170a2 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/BodyJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/BodyJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/LogRecordDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/LogRecordDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java index f84318cf5..895690232 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/LogRecordDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogs.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogs.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogs.java index 1cc7fb153..08d867c1c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogs.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogs.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogsData.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogsData.java index b2f7990c0..69d9f2b69 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ResourceLogsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ScopeLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ScopeLogs.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ScopeLogs.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ScopeLogs.java index 5a1210591..89ae45ae0 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/logs/ScopeLogs.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ScopeLogs.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/MetricDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/MetricDataJson.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/MetricDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/MetricDataJson.java index 684f858f0..980d8f95f 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/MetricDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/MetricDataJson.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; import javax.annotation.Nullable; public abstract class MetricDataJson { diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetrics.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetrics.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetrics.java index 74e29ff04..74c8332e9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetrics.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetrics.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetricsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetricsData.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetricsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetricsData.java index ae0211b18..9140419db 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ResourceMetricsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetricsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ScopeMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ScopeMetrics.java similarity index 72% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ScopeMetrics.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ScopeMetrics.java index feb59ec95..4647a582e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/ScopeMetrics.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ScopeMetrics.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/DataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/DataJson.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/DataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/DataJson.java index fcbd6584a..0c26f2195 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/DataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/DataJson.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.DataPoint; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/ExponentialHistogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/ExponentialHistogram.java similarity index 62% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/ExponentialHistogram.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/ExponentialHistogram.java index 3084aa89b..92e694656 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/ExponentialHistogram.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/ExponentialHistogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.ExponentialHistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java new file mode 100644 index 000000000..51a0e59b0 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; + +@CompiledJson +public final class Gauge extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Histogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Histogram.java similarity index 62% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Histogram.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Histogram.java index 79820920a..ba3a5fabd 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Histogram.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Histogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.HistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Sum.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Sum.java similarity index 67% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Sum.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Sum.java index 43fd3b64e..dd9a52713 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Sum.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Sum.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java new file mode 100644 index 000000000..b4c940d47 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.SummaryDataPoint; + +@CompiledJson +public final class Summary extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/DataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/DataPoint.java similarity index 82% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/DataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/DataPoint.java index 8f313bc30..e0e49dda8 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/DataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/DataPoint.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java similarity index 76% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java index 6f82f5442..278791360 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -1,9 +1,9 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/HistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/HistogramDataPoint.java similarity index 80% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/HistogramDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/HistogramDataPoint.java index 4545bd277..39cafb271 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/HistogramDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/HistogramDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/NumberDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/NumberDataPoint.java similarity index 82% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/NumberDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/NumberDataPoint.java index 9927ee9cd..3cf93719c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/NumberDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/NumberDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/SummaryDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/SummaryDataPoint.java similarity index 71% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/SummaryDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/SummaryDataPoint.java index c4e0bc447..6effd84aa 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/SummaryDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/SummaryDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.QuantileValue; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Buckets.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Buckets.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Buckets.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Buckets.java index 4faa2fe6b..978b46d10 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Buckets.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Buckets.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import java.util.ArrayList; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Exemplar.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Exemplar.java similarity index 89% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Exemplar.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Exemplar.java index cadcae3f2..9cc2047a4 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/Exemplar.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Exemplar.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/QuantileValue.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/QuantileValue.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/QuantileValue.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/QuantileValue.java index 463100f3d..2e1f58029 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/datapoints/data/QuantileValue.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/QuantileValue.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/ExponentialHistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/ExponentialHistogramMetric.java similarity index 63% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/ExponentialHistogramMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/ExponentialHistogramMetric.java index 41c60bfa9..427c7f448 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/ExponentialHistogramMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/ExponentialHistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/GaugeMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/GaugeMetric.java similarity index 60% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/GaugeMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/GaugeMetric.java index e7e53ca51..76d2965f7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/GaugeMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/GaugeMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/HistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/HistogramMetric.java similarity index 61% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/HistogramMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/HistogramMetric.java index 5153404b3..926cebc35 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/HistogramMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/HistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SumMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SumMetric.java similarity index 60% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SumMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SumMetric.java index 9222e6401..050513117 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SumMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SumMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SummaryMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SummaryMetric.java similarity index 61% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SummaryMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SummaryMetric.java index f9863295c..995eaa35b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/impl/SummaryMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SummaryMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/EventDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/EventDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java index 84f922a19..a2eaef253 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/EventDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/LinkDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/LinkDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java index 7a7fc3f87..f6fa30653 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/LinkDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpans.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpans.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpans.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpans.java index 2ab530a00..4335110d1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpans.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpans.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpansData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpansData.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpansData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpansData.java index 61e0b9671..b40e23113 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ResourceSpansData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpansData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ScopeSpan.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ScopeSpan.java similarity index 72% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ScopeSpan.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ScopeSpan.java index 67681e5f9..878609920 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/ScopeSpan.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ScopeSpan.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/SpanDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/SpanDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java index fdad65456..4c9c7ecee 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/SpanDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/StatusDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/StatusDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java index 9d832814b..6cad4eab0 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/spans/StatusDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java deleted file mode 100644 index 8043bb634..000000000 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Gauge.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.NumberDataPoint; - -@CompiledJson -public final class Gauge extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java deleted file mode 100644 index bd7cc7132..000000000 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/serialization/metrics/data/Summary.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.datapoints.SummaryDataPoint; - -@CompiledJson -public final class Summary extends DataJson {} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java similarity index 95% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java index 9679110f6..8c30e6073 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/AttributesJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java similarity index 70% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java index 1955da1d7..84b04ff67 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/serialization/converters/MetricDataJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java @@ -1,19 +1,19 @@ -package io.opentelemetry.contrib.disk.buffer.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SummaryMetric; import io.opentelemetry.contrib.disk.buffer.testutils.BaseJsonSerializationTest; import org.junit.jupiter.api.Test; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java index 74425c591..c489113a5 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.testutils; -import io.opentelemetry.contrib.disk.buffer.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { From fbef8fbbeaad3a00d725fa5d403b5984e819aac8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:01:20 +0200 Subject: [PATCH 011/209] Updating module name for disk buffer --- disk-buffer/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffer/build.gradle.kts b/disk-buffer/build.gradle.kts index e7d0d8ad4..9e9f68f63 100644 --- a/disk-buffer/build.gradle.kts +++ b/disk-buffer/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } description = "Exporter implementations that store signals in disk" -otelJava.moduleName.set("io.opentelemetry.contrib.exporters.storage") +otelJava.moduleName.set("io.opentelemetry.contrib.disk.buffer") tasks { withType().configureEach { From 67e35e5026929024512fbb5aade66b6880b590c8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:49:48 +0200 Subject: [PATCH 012/209] Adding span mappers --- disk-buffer/build.gradle.kts | 6 + .../common/BaseResourceSignalsDataMapper.java | 102 ++++++++++ .../mapping/common/ResourceMapper.java | 20 ++ .../mapping/common/ResourceMapping.java | 13 ++ .../internal/mapping/common/ScopeMapping.java | 13 ++ .../mapping/common/SpanContextMapping.java | 13 ++ .../spans/ResourceSpansDataMapper.java | 57 ++++++ .../mapping/spans/ResourceSpansMapper.java | 20 ++ .../mapping/spans/ScopeSpansMapper.java | 19 ++ .../mapping/spans/SpanDataMapper.java | 175 ++++++++++++++++++ .../mapping/spans/models/SpanDataImpl.java | 71 +++++++ .../spans/models/data/EventDataImpl.java | 26 +++ .../spans/models/data/LinkDataImpl.java | 25 +++ .../serialization/common/ResourceSignals.java | 2 + .../serialization/spans/EventDataJson.java | 3 +- .../serialization/spans/LinkDataJson.java | 3 +- .../serialization/spans/SpanDataJson.java | 9 +- .../serialization/spans/StatusDataJson.java | 4 +- 18 files changed, 569 insertions(+), 12 deletions(-) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java diff --git a/disk-buffer/build.gradle.kts b/disk-buffer/build.gradle.kts index 9e9f68f63..6f3e4850d 100644 --- a/disk-buffer/build.gradle.kts +++ b/disk-buffer/build.gradle.kts @@ -15,8 +15,14 @@ tasks { } val dslJsonVersion = "1.10.0" +val mapStructVersion = "1.5.5.Final" +val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") + implementation("org.mapstruct:mapstruct:$mapStructVersion") + implementation("com.google.auto.value:auto-value-annotations:$autovalueVersion") + annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") annotationProcessor("com.dslplatform:dsl-json-java8:$dslJsonVersion") + annotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion") } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java new file mode 100644 index 000000000..8e47b838d --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java @@ -0,0 +1,102 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; + +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.common.InstrumentationScopeInfoBuilder; +import io.opentelemetry.sdk.resources.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Nullable; + +public abstract class BaseResourceSignalsDataMapper< + SDK_ITEM, + JSON_ITEM, + JSON_SCOPE extends ScopeSignals, + JSON_RESOURCE extends ResourceSignals, + JSON_RESOURCE_DATA extends ResourceSignalsData> { + + public JSON_RESOURCE_DATA toJsonDto(List sourceItems) { + Map itemsByResourceAndScope = new HashMap<>(); + Map scopeInfoToScopeSignals = new HashMap<>(); + sourceItems.forEach( + sourceData -> { + Resource resource = getResource(sourceData); + InstrumentationScopeInfo instrumentationScopeInfo = + getInstrumentationScopeInfo(sourceData); + + JSON_RESOURCE itemsByResource = itemsByResourceAndScope.get(resource); + if (itemsByResource == null) { + itemsByResource = resourceSignalToJson(resource); + itemsByResourceAndScope.put(resource, itemsByResource); + } + + JSON_SCOPE scopeSignals = scopeInfoToScopeSignals.get(instrumentationScopeInfo); + if (scopeSignals == null) { + scopeSignals = instrumentationScopeToJson(instrumentationScopeInfo); + scopeInfoToScopeSignals.put(instrumentationScopeInfo, scopeSignals); + itemsByResource.addScopeSignalsItem(scopeSignals); + } + + scopeSignals.addSignalItem(signalItemToJson(sourceData)); + }); + + return createResourceData(itemsByResourceAndScope.values()); + } + + public List fromJsonDto(JSON_RESOURCE_DATA json) { + List result = new ArrayList<>(); + for (ResourceSignals> resourceSignal : + json.getResourceSignals()) { + Resource resource = + ResourceMapper.INSTANCE.jsonToResource( + Objects.requireNonNull(resourceSignal.resource), resourceSignal.schemaUrl); + for (ScopeSignals scopeSignals : resourceSignal.getScopeSignals()) { + InstrumentationScopeInfo scopeInfo = + jsonToInstrumentationScopeInfo( + Objects.requireNonNull(scopeSignals.scope), scopeSignals.schemaUrl); + for (JSON_ITEM item : scopeSignals.getSignalItems()) { + result.add(jsonToSignalItem(item, resource, scopeInfo)); + } + } + } + + return result; + } + + private static InstrumentationScopeInfo jsonToInstrumentationScopeInfo( + ScopeJson scope, @Nullable String schemaUrl) { + InstrumentationScopeInfoBuilder builder = + InstrumentationScopeInfo.builder(Objects.requireNonNull(scope.name)); + if (scope.version != null) { + builder.setVersion(scope.version); + } + if (schemaUrl != null) { + builder.setSchemaUrl(schemaUrl); + } + builder.setAttributes(scope.attributes); + return builder.build(); + } + + protected abstract JSON_ITEM signalItemToJson(SDK_ITEM sourceData); + + protected abstract JSON_RESOURCE resourceSignalToJson(Resource resource); + + protected abstract JSON_SCOPE instrumentationScopeToJson( + InstrumentationScopeInfo instrumentationScopeInfo); + + protected abstract SDK_ITEM jsonToSignalItem( + JSON_ITEM jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo); + + protected abstract JSON_RESOURCE_DATA createResourceData(Collection items); + + protected abstract Resource getResource(SDK_ITEM source); + + protected abstract InstrumentationScopeInfo getInstrumentationScopeInfo(SDK_ITEM source); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java new file mode 100644 index 000000000..7d878f0d4 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java @@ -0,0 +1,20 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; + +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceJson; +import javax.annotation.Nullable; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public abstract class ResourceMapper { + + public static final ResourceMapper INSTANCE = Mappers.getMapper(ResourceMapper.class); + + public abstract ResourceJson resourceToJson(io.opentelemetry.sdk.resources.Resource source); + + public io.opentelemetry.sdk.resources.Resource jsonToResource( + ResourceJson source, @Context @Nullable String schemaUrl) { + return io.opentelemetry.sdk.resources.Resource.create(source.attributes, schemaUrl); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java new file mode 100644 index 000000000..2a5ed08a4 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java @@ -0,0 +1,13 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.mapstruct.Mapping; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +@Mapping(target = "resource", source = "resource") +@Mapping(target = "schemaUrl", source = "resource.schemaUrl") +public @interface ResourceMapping {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java new file mode 100644 index 000000000..57c53828b --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java @@ -0,0 +1,13 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.mapstruct.Mapping; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +@Mapping(target = "schemaUrl", source = "source.schemaUrl") +@Mapping(target = "scope", source = "source") +public @interface ScopeMapping {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java new file mode 100644 index 000000000..72303045e --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java @@ -0,0 +1,13 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.mapstruct.Mapping; + +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.METHOD) +@Mapping(target = "spanId", expression = "java(source.getSpanContext().getSpanId())") +@Mapping(target = "traceId", expression = "java(source.getSpanContext().getTraceId())") +public @interface SpanContextMapping {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java new file mode 100644 index 000000000..0560f55d2 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java @@ -0,0 +1,57 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpans; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpansData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ScopeSpan; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.SpanDataJson; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.data.SpanData; +import java.util.Collection; + +public class ResourceSpansDataMapper + extends BaseResourceSignalsDataMapper< + SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { + + public static final ResourceSpansDataMapper INSTANCE = new ResourceSpansDataMapper(); + + private ResourceSpansDataMapper() {} + + @Override + protected SpanDataJson signalItemToJson(SpanData sourceData) { + return SpanDataMapper.INSTANCE.spanDataToJson(sourceData); + } + + @Override + protected ResourceSpans resourceSignalToJson(Resource resource) { + return ResourceSpansMapper.INSTANCE.resourceSpansToJson(resource); + } + + @Override + protected ScopeSpan instrumentationScopeToJson( + InstrumentationScopeInfo instrumentationScopeInfo) { + return ScopeSpansMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); + } + + @Override + protected SpanData jsonToSignalItem( + SpanDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { + return SpanDataMapper.INSTANCE.jsonToSpanData(jsonItem, resource, scopeInfo); + } + + @Override + protected ResourceSpansData createResourceData(Collection items) { + return new ResourceSpansData(items); + } + + @Override + protected Resource getResource(SpanData spanData) { + return spanData.getResource(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeInfo(SpanData spanData) { + return spanData.getInstrumentationScopeInfo(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java new file mode 100644 index 000000000..929fe0cbd --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java @@ -0,0 +1,20 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpans; +import io.opentelemetry.sdk.resources.Resource; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper(uses = {ResourceMapper.class}) +public interface ResourceSpansMapper { + + ResourceSpansMapper INSTANCE = Mappers.getMapper(ResourceSpansMapper.class); + + @ResourceMapping + @Mapping(target = "scopeSignals", ignore = true) + @Mapping(target = "scopeSpans", ignore = true) + ResourceSpans resourceSpansToJson(Resource resource); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java new file mode 100644 index 000000000..41c08c3dc --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ScopeSpan; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface ScopeSpansMapper { + + ScopeSpansMapper INSTANCE = Mappers.getMapper(ScopeSpansMapper.class); + + @ScopeMapping + @Mapping(target = "signalItems", ignore = true) + @Mapping(target = "spans", ignore = true) + ScopeSpan scopeInfoToJson(InstrumentationScopeInfo source); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java new file mode 100644 index 000000000..f38f89813 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java @@ -0,0 +1,175 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; + +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.LinkDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.EventDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.LinkDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.SpanDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.StatusDataJson; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.LinkData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.List; +import javax.annotation.Nullable; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; + +@Mapper +public abstract class SpanDataMapper { + + public static final SpanDataMapper INSTANCE = Mappers.getMapper(SpanDataMapper.class); + + @SpanContextMapping + @Mapping(target = "droppedAttributesCount", ignore = true) + @Mapping(target = "droppedEventsCount", ignore = true) + @Mapping(target = "droppedLinksCount", ignore = true) + public abstract SpanDataJson spanDataToJson(SpanData source); + + @SpanContextMapping + @Mapping(target = "droppedAttributesCount", ignore = true) + protected abstract LinkDataJson linkDataToJson(LinkData source); + + @AfterMapping + protected void addDroppedCount(SpanData source, @MappingTarget SpanDataJson target) { + target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); + target.droppedEventsCount = source.getTotalRecordedEvents() - getListSize(source.getEvents()); + target.droppedLinksCount = source.getTotalRecordedLinks() - getListSize(source.getLinks()); + } + + private static int getListSize(List list) { + if (list == null) { + return 0; + } + return list.size(); + } + + @AfterMapping + protected void addDroppedAttributesCount(LinkData source, @MappingTarget LinkDataJson target) { + target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); + } + + protected Integer mapSpanKindToJson(SpanKind value) { + return value.ordinal() + 1; + } + + protected Integer mapStatusCodeToJson(StatusCode value) { + return value.ordinal(); + } + + // FROM JSON + @BeanMapping(resultType = SpanDataImpl.class) + @Mapping(target = "spanContext", ignore = true) + @Mapping(target = "parentSpanContext", ignore = true) + @Mapping(target = "totalAttributeCount", ignore = true) + @Mapping(target = "totalRecordedEvents", ignore = true) + @Mapping(target = "totalRecordedLinks", ignore = true) + @Mapping(target = "instrumentationScopeInfo", ignore = true) + @Mapping(target = "resource", ignore = true) + public abstract SpanData jsonToSpanData( + SpanDataJson source, + @Context Resource resource, + @Context InstrumentationScopeInfo instrumentationScopeInfo); + + @BeanMapping(resultType = LinkDataImpl.class) + @Mapping(target = "spanContext", ignore = true) + @Mapping(target = "totalAttributeCount", ignore = true) + protected abstract LinkData jsonToLinkData(LinkDataJson source); + + @BeanMapping(resultType = EventDataImpl.class) + @Mapping(target = "totalAttributeCount", ignore = true) + protected abstract EventData jsonToEventData(EventDataJson source); + + @AfterMapping + protected void addSpanDataJsonExtras( + SpanDataJson source, + @MappingTarget SpanDataImpl.Builder target, + @Context Resource resource, + @Context InstrumentationScopeInfo scopeInfo) { + target.setResource(resource); + target.setInstrumentationScopeInfo(scopeInfo); + if (source.traceId != null) { + if (source.spanId != null) { + target.setSpanContext( + SpanContext.create( + source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); + } + if (source.parentSpanId != null) { + target.setParentSpanContext( + SpanContext.create( + source.traceId, + source.parentSpanId, + TraceFlags.getSampled(), + TraceState.getDefault())); + } + } + target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); + target.setTotalRecordedEvents(calculateRecordedItems(source.droppedEventsCount, source.events)); + target.setTotalRecordedLinks(calculateRecordedItems(source.droppedLinksCount, source.links)); + } + + private static int calculateRecordedItems(Integer droppedCount, @Nullable List items) { + if (items == null) { + return 0; + } + if (droppedCount != null) { + return droppedCount + items.size(); + } + + return items.size(); + } + + @AfterMapping + protected void addTotalAttributesCount( + EventDataJson source, @MappingTarget EventDataImpl.Builder target) { + target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); + } + + @AfterMapping + protected void addLinkDataJsonExtras( + LinkDataJson source, @MappingTarget LinkDataImpl.Builder target) { + target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); + if (source.traceId != null && source.spanId != null) { + target.setSpanContext( + SpanContext.create( + source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); + } + } + + protected StatusData jsonToStatusData(StatusDataJson source) { + return StatusData.create(getStatusCode(source.statusCode), source.description); + } + + private static StatusCode getStatusCode(int ordinal) { + for (StatusCode statusCode : StatusCode.values()) { + if (statusCode.ordinal() == ordinal) { + return statusCode; + } + } + throw new IllegalArgumentException(); + } + + protected SpanKind jsonToSpanKind(Integer value) { + int ordinal = value - 1; + for (SpanKind spanKind : SpanKind.values()) { + if (spanKind.ordinal() == ordinal) { + return spanKind; + } + } + throw new IllegalArgumentException(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java new file mode 100644 index 000000000..64cb40247 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java @@ -0,0 +1,71 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.LinkData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.List; + +@AutoValue +public abstract class SpanDataImpl implements SpanData { + + public static Builder builder() { + return new AutoValue_SpanDataImpl.Builder(); + } + + @Override + public boolean hasEnded() { + return true; + } + + @SuppressWarnings( + "deprecation") // Overridden to avoid AutoValue to generate builder method for it. + @Override + public io.opentelemetry.sdk.common.InstrumentationLibraryInfo getInstrumentationLibraryInfo() { + throw new UnsupportedOperationException(); + } + + @Override + public abstract InstrumentationScopeInfo getInstrumentationScopeInfo(); + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setName(String value); + + public abstract Builder setKind(SpanKind value); + + public abstract Builder setSpanContext(SpanContext value); + + public abstract Builder setParentSpanContext(SpanContext value); + + public abstract Builder setStatus(StatusData value); + + public abstract Builder setStartEpochNanos(Long value); + + public abstract Builder setTotalAttributeCount(Integer value); + + public abstract Builder setTotalRecordedEvents(Integer value); + + public abstract Builder setTotalRecordedLinks(Integer value); + + public abstract Builder setEndEpochNanos(Long value); + + public abstract Builder setAttributes(Attributes value); + + public abstract Builder setEvents(List value); + + public abstract Builder setLinks(List value); + + public abstract Builder setInstrumentationScopeInfo(InstrumentationScopeInfo value); + + public abstract Builder setResource(Resource value); + + public abstract SpanDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java new file mode 100644 index 000000000..b3da248c1 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java @@ -0,0 +1,26 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.sdk.trace.data.EventData; + +@AutoValue +public abstract class EventDataImpl implements EventData { + + public static Builder builder() { + return new AutoValue_EventDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setName(String value); + + public abstract Builder setAttributes(Attributes value); + + public abstract Builder setEpochNanos(Long value); + + public abstract Builder setTotalAttributeCount(Integer value); + + public abstract EventDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java new file mode 100644 index 000000000..1e779fe3f --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java @@ -0,0 +1,25 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.sdk.trace.data.LinkData; + +@AutoValue +public abstract class LinkDataImpl implements LinkData { + + public static Builder builder() { + return new AutoValue_LinkDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setSpanContext(SpanContext value); + + public abstract Builder setAttributes(Attributes value); + + public abstract Builder setTotalAttributeCount(Integer value); + + public abstract LinkDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java index 0f0de92ee..2afdb0386 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java @@ -1,9 +1,11 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; +import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; import java.util.List; import javax.annotation.Nullable; +@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) public abstract class ResourceSignals> { @Nullable diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java index a2eaef253..b12fd75b5 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java @@ -17,7 +17,6 @@ public final class EventDataJson { @JsonAttribute(name = "attributes") public Attributes attributes = Attributes.empty(); - @Nullable @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount; + public Integer droppedAttributesCount = 0; } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java index f6fa30653..c6a5c729a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java @@ -17,7 +17,6 @@ public final class LinkDataJson { @JsonAttribute(name = "attributes") public Attributes attributes = Attributes.empty(); - @Nullable @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount; + public Integer droppedAttributesCount = 0; } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java index 4c9c7ecee..dabf8caac 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java @@ -37,17 +37,14 @@ public final class SpanDataJson { @JsonAttribute(name = "attributes") public Attributes attributes = Attributes.empty(); - @Nullable @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount; + public Integer droppedAttributesCount = 0; - @Nullable @JsonAttribute(name = "droppedEventsCount") - public Integer droppedEventsCount; + public Integer droppedEventsCount = 0; - @Nullable @JsonAttribute(name = "droppedLinksCount") - public Integer droppedLinksCount; + public Integer droppedLinksCount = 0; @Nullable @JsonAttribute(name = "events") diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java index 6cad4eab0..f9b35e630 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java @@ -1,6 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.api.trace.StatusCode; import javax.annotation.Nullable; public final class StatusDataJson { @@ -9,7 +10,6 @@ public final class StatusDataJson { @JsonAttribute(name = "message") public String description; - @Nullable @JsonAttribute(name = "code") - public Integer statusCode; + public Integer statusCode = StatusCode.UNSET.ordinal(); } From 7697b690cd693fb4e5179b97c0db0a2f8715a314 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:52:57 +0200 Subject: [PATCH 013/209] Clean up --- .../buffer/internal/mapping/spans/SpanDataMapper.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java index f38f89813..b2625639d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java @@ -122,15 +122,11 @@ protected void addSpanDataJsonExtras( target.setTotalRecordedLinks(calculateRecordedItems(source.droppedLinksCount, source.links)); } - private static int calculateRecordedItems(Integer droppedCount, @Nullable List items) { + private static int calculateRecordedItems(int droppedCount, @Nullable List items) { if (items == null) { return 0; } - if (droppedCount != null) { - return droppedCount + items.size(); - } - - return items.size(); + return droppedCount + items.size(); } @AfterMapping From 42f1f49c7ccd458ad68a05e9b95358df29217653 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 15:17:56 +0200 Subject: [PATCH 014/209] Adding metrics mapping --- .../mapping/common/ResourceMapping.java | 1 + .../mapping/metrics/DataPointMapper.java | 112 +++++++++++++++ .../mapping/metrics/MetricDataMapper.java | 135 ++++++++++++++++++ .../mapping/metrics/MetricMapper.java | 130 +++++++++++++++++ .../metrics/ResourceMetricsDataMapper.java | 57 ++++++++ .../metrics/ResourceMetricsMapper.java | 19 +++ .../mapping/metrics/ScopeMetricsMapper.java | 19 +++ .../mapping/metrics/models/Constants.java | 10 ++ .../metrics/models/MetricDataImpl.java | 35 +++++ .../mapping/metrics/models/data/DataImpl.java | 15 ++ .../data/ExponentialHistogramDataImpl.java | 16 +++ .../metrics/models/data/GaugeDataImpl.java | 14 ++ .../models/data/HistogramDataImpl.java | 15 ++ .../metrics/models/data/SumDataImpl.java | 27 ++++ .../metrics/models/data/SummaryDataImpl.java | 6 + .../datapoints/DoublePointDataImpl.java | 23 +++ .../ExponentialHistogramPointDataImpl.java | 48 +++++++ .../datapoints/HistogramPointDataImpl.java | 43 ++++++ .../models/datapoints/LongPointDataImpl.java | 23 +++ .../models/datapoints/PointDataBuilder.java | 16 +++ .../datapoints/SummaryPointDataImpl.java | 32 +++++ .../data/DoubleExemplarDataImpl.java | 19 +++ .../datapoints/data/ExemplarDataBuilder.java | 17 +++ .../data/ExponentialHistogramBucketsImpl.java | 26 ++++ .../datapoints/data/LongExemplarDataImpl.java | 19 +++ .../datapoints/data/ValueAtQuantileImpl.java | 21 +++ .../mapping/spans/ResourceSpansMapper.java | 1 - 27 files changed, 898 insertions(+), 1 deletion(-) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java index 2a5ed08a4..91cf60e73 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java @@ -10,4 +10,5 @@ @Target(ElementType.METHOD) @Mapping(target = "resource", source = "resource") @Mapping(target = "schemaUrl", source = "resource.schemaUrl") +@Mapping(target = "scopeSignals", ignore = true) public @interface ResourceMapping {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java new file mode 100644 index 000000000..f6fea23a7 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java @@ -0,0 +1,112 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; + +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.SummaryDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.ExemplarData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.PointData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.SubclassExhaustiveStrategy; +import org.mapstruct.SubclassMapping; +import org.mapstruct.factory.Mappers; + +@Mapper( + subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class DataPointMapper { + + public static final DataPointMapper INSTANCE = Mappers.getMapper(DataPointMapper.class); + + @SubclassMapping(source = LongPointData.class, target = NumberDataPoint.class) + @SubclassMapping(source = DoublePointData.class, target = NumberDataPoint.class) + @SubclassMapping(source = HistogramPointData.class, target = HistogramDataPoint.class) + @SubclassMapping(source = SummaryPointData.class, target = SummaryDataPoint.class) + @SubclassMapping( + source = ExponentialHistogramPointData.class, + target = ExponentialHistogramDataPoint.class) + public abstract DataPoint pointDataToJson(PointData source); + + protected abstract Buckets exponentialBucketsToJson(ExponentialHistogramBuckets source); + + protected abstract QuantileValue quantileToJson(ValueAtQuantile source); + + @AfterMapping + protected void spanContextToJson(ExemplarData source, @MappingTarget Exemplar target) { + target.spanId = source.getSpanContext().getSpanId(); + target.traceId = source.getSpanContext().getTraceId(); + } + + // FROM JSON + @BeanMapping(resultType = LongPointDataImpl.class) + @Mapping(target = "value", source = "longValue") + public abstract LongPointData jsonToLongPointData(NumberDataPoint source); + + @BeanMapping(resultType = DoublePointDataImpl.class) + @Mapping(target = "value", source = "doubleValue") + public abstract DoublePointData jsonToDoublePointData(NumberDataPoint source); + + @BeanMapping(resultType = HistogramPointDataImpl.class) + public abstract HistogramPointData jsonHistogramToPointData(HistogramDataPoint source); + + @BeanMapping(resultType = SummaryPointDataImpl.class) + public abstract SummaryPointData jsonSummaryToPointData(SummaryDataPoint source); + + @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) + public abstract ExponentialHistogramPointData jsonExponentialHistogramToPointData( + ExponentialHistogramDataPoint source); + + @BeanMapping(resultType = LongExemplarDataImpl.class) + @Mapping(target = "value", source = "longValue") + protected abstract LongExemplarData jsonToLongExemplar(Exemplar source); + + @BeanMapping(resultType = DoubleExemplarDataImpl.class) + @Mapping(target = "value", source = "doubleValue") + protected abstract DoubleExemplarData jsonToDoubleExemplar(Exemplar source); + + @BeanMapping(resultType = ExponentialHistogramBucketsImpl.class) + protected abstract ExponentialHistogramBuckets jsonToExponentialBuckets(Buckets source); + + @BeanMapping(resultType = ValueAtQuantileImpl.class) + protected abstract ValueAtQuantile jsonToQuantile(QuantileValue source); + + @AfterMapping + protected void jsonToSpanContext(Exemplar source, @MappingTarget ExemplarDataBuilder target) { + if (source.traceId != null && source.spanId != null) { + target.setSpanContext( + SpanContext.create( + source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); + } + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java new file mode 100644 index 000000000..b5dd0dbb3 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java @@ -0,0 +1,135 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.Data; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; +import io.opentelemetry.sdk.metrics.data.GaugeData; +import io.opentelemetry.sdk.metrics.data.HistogramData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.metrics.data.SumData; +import io.opentelemetry.sdk.metrics.data.SummaryData; +import org.mapstruct.BeanMapping; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.SubclassExhaustiveStrategy; +import org.mapstruct.factory.Mappers; + +@Mapper( + uses = DataPointMapper.class, + subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION) +public abstract class MetricDataMapper { + + public static final MetricDataMapper INSTANCE = Mappers.getMapper(MetricDataMapper.class); + + @SuppressWarnings("unchecked") + public DataJson metricDataToJson(Data data, @Context MetricDataType type) { + switch (type) { + case LONG_GAUGE: + return longGaugeToJson((GaugeData) data); + case DOUBLE_GAUGE: + return doubleGaugeToJson((GaugeData) data); + case LONG_SUM: + return longSumToJson((SumData) data); + case DOUBLE_SUM: + return doubleSumToJson((SumData) data); + case SUMMARY: + return summaryToJson((SummaryData) data); + case HISTOGRAM: + return histogramToJson((HistogramData) data); + case EXPONENTIAL_HISTOGRAM: + return exponentialHistogramToJson((ExponentialHistogramData) data); + } + throw new UnsupportedOperationException(); + } + + @BeanMapping(resultType = Summary.class) + protected abstract DataJson summaryToJson(SummaryData source); + + @BeanMapping(resultType = Histogram.class) + protected abstract DataJson histogramToJson(HistogramData source); + + @BeanMapping(resultType = Sum.class) + protected abstract DataJson longSumToJson(SumData source); + + @BeanMapping(resultType = Gauge.class) + protected abstract DataJson longGaugeToJson(GaugeData source); + + @BeanMapping(resultType = Gauge.class) + protected abstract DataJson doubleGaugeToJson(GaugeData source); + + @BeanMapping(resultType = Sum.class) + protected abstract DataJson doubleSumToJson(SumData source); + + @BeanMapping(resultType = ExponentialHistogram.class) + protected abstract DataJson exponentialHistogramToJson(ExponentialHistogramData source); + + protected Integer aggregationTemporalityToNumber(AggregationTemporality aggregationTemporality) { + return aggregationTemporality.ordinal() + 1; + } + + // FROM JSON + public Data jsonToMetricData(DataJson source, @Context MetricDataType type) { + switch (type) { + case LONG_GAUGE: + return jsonToLongGauge((Gauge) source); + case DOUBLE_GAUGE: + return jsonToDoubleGauge((Gauge) source); + case LONG_SUM: + return jsonToLongSum((Sum) source); + case DOUBLE_SUM: + return jsonToDoubleSum((Sum) source); + case SUMMARY: + return jsonToSummary((Summary) source); + case HISTOGRAM: + return jsonToHistogram((Histogram) source); + case EXPONENTIAL_HISTOGRAM: + return jsonToExponentialHistogram((ExponentialHistogram) source); + } + throw new UnsupportedOperationException(); + } + + @BeanMapping(resultType = GaugeDataImpl.LongData.class) + protected abstract GaugeData jsonToLongGauge(Gauge source); + + @BeanMapping(resultType = GaugeDataImpl.DoubleData.class) + protected abstract GaugeData jsonToDoubleGauge(Gauge source); + + @BeanMapping(resultType = SumDataImpl.LongData.class) + protected abstract SumData jsonToLongSum(Sum source); + + @BeanMapping(resultType = SumDataImpl.DoubleData.class) + protected abstract SumData jsonToDoubleSum(Sum source); + + @BeanMapping(resultType = SummaryDataImpl.class) + protected abstract SummaryData jsonToSummary(Summary source); + + @BeanMapping(resultType = HistogramDataImpl.class) + protected abstract HistogramData jsonToHistogram(Histogram source); + + @BeanMapping(resultType = ExponentialHistogramDataImpl.class) + protected abstract ExponentialHistogramData jsonToExponentialHistogram( + ExponentialHistogram source); + + protected AggregationTemporality jsonToAggregationTemporality(Integer source) { + int ordinal = source - 1; + for (AggregationTemporality value : AggregationTemporality.values()) { + if (value.ordinal() == ordinal) { + return value; + } + } + throw new IllegalArgumentException(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java new file mode 100644 index 000000000..fe52e5183 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java @@ -0,0 +1,130 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.resources.Resource; +import java.util.List; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; + +@Mapper(uses = MetricDataMapper.class) +public abstract class MetricMapper { + + public static final MetricMapper INSTANCE = Mappers.getMapper(MetricMapper.class); + + public MetricDataJson metricToJson(MetricData source) { + MetricDataType type = source.getType(); + switch (type) { + case LONG_GAUGE: + case DOUBLE_GAUGE: + return gaugeMetricToJson(source, type); + case LONG_SUM: + case DOUBLE_SUM: + return sumMetricToJson(source, type); + case SUMMARY: + return summaryMetricToJson(source, type); + case HISTOGRAM: + return histogramMetricToJson(source, type); + case EXPONENTIAL_HISTOGRAM: + return exponentialHistogramMetricToJson(source, type); + } + throw new UnsupportedOperationException(); + } + + @Mapping(target = "gauge", ignore = true) + protected abstract GaugeMetric gaugeMetricToJson(MetricData source, @Context MetricDataType type); + + @Mapping(target = "histogram", ignore = true) + protected abstract HistogramMetric histogramMetricToJson( + MetricData source, @Context MetricDataType type); + + @Mapping(target = "sum", ignore = true) + protected abstract SumMetric sumMetricToJson(MetricData source, @Context MetricDataType type); + + @Mapping(target = "summary", ignore = true) + protected abstract SummaryMetric summaryMetricToJson( + MetricData source, @Context MetricDataType type); + + @Mapping(target = "exponentialHistogram", ignore = true) + protected abstract ExponentialHistogramMetric exponentialHistogramMetricToJson( + MetricData source, @Context MetricDataType type); + + // FROM JSON + public MetricData jsonMetricToMetric( + MetricDataJson source, @Context Resource resource, @Context InstrumentationScopeInfo scope) { + DataJson data = source.getData(); + if (data instanceof ExponentialHistogram) { + return jsonMetricToMetric(source, resource, scope, MetricDataType.EXPONENTIAL_HISTOGRAM); + } else if (data instanceof Histogram) { + return jsonMetricToMetric(source, resource, scope, MetricDataType.HISTOGRAM); + } else if (data instanceof Summary) { + return jsonMetricToMetric(source, resource, scope, MetricDataType.SUMMARY); + } else if (data instanceof Gauge) { + List points = ((Gauge) data).getPoints(); + switch (getNumberDataPointType(points)) { + case LONG: + return jsonMetricToMetric(source, resource, scope, MetricDataType.LONG_GAUGE); + case DOUBLE: + return jsonMetricToMetric(source, resource, scope, MetricDataType.DOUBLE_GAUGE); + } + } else if (data instanceof Sum) { + List points = ((Sum) data).getPoints(); + switch (getNumberDataPointType(points)) { + case LONG: + return jsonMetricToMetric(source, resource, scope, MetricDataType.LONG_SUM); + case DOUBLE: + return jsonMetricToMetric(source, resource, scope, MetricDataType.DOUBLE_SUM); + } + } + + throw new IllegalArgumentException(); + } + + @BeanMapping(resultType = MetricDataImpl.class) + @Mapping(target = "resource", ignore = true) + @Mapping(target = "instrumentationScopeInfo", ignore = true) + @Mapping(target = "type", ignore = true) + protected abstract MetricData jsonMetricToMetric( + MetricDataJson source, + @Context Resource resource, + @Context InstrumentationScopeInfo scope, + @Context MetricDataType type); + + private static NumberDataPoint.Type getNumberDataPointType(List points) { + if (points == null || points.isEmpty()) { + return NumberDataPoint.Type.LONG; + } + return points.get(0).getType(); + } + + @AfterMapping + protected void addContextItems( + @Context Resource resource, + @Context InstrumentationScopeInfo scope, + @Context MetricDataType type, + @MappingTarget MetricDataImpl.Builder target) { + target.setResource(resource); + target.setInstrumentationScopeInfo(scope); + target.setType(type); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java new file mode 100644 index 000000000..f9f6f34df --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java @@ -0,0 +1,57 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetrics; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetricsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ScopeMetrics; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.resources.Resource; +import java.util.Collection; + +public class ResourceMetricsDataMapper + extends BaseResourceSignalsDataMapper< + MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { + + public static final ResourceMetricsDataMapper INSTANCE = new ResourceMetricsDataMapper(); + + private ResourceMetricsDataMapper() {} + + @Override + protected MetricDataJson signalItemToJson(MetricData sourceData) { + return MetricMapper.INSTANCE.metricToJson(sourceData); + } + + @Override + protected ResourceMetrics resourceSignalToJson(Resource resource) { + return ResourceMetricsMapper.INSTANCE.resourceMetricsToJson(resource); + } + + @Override + protected ScopeMetrics instrumentationScopeToJson( + InstrumentationScopeInfo instrumentationScopeInfo) { + return ScopeMetricsMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); + } + + @Override + protected MetricData jsonToSignalItem( + MetricDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { + return MetricMapper.INSTANCE.jsonMetricToMetric(jsonItem, resource, scopeInfo); + } + + @Override + protected ResourceMetricsData createResourceData(Collection items) { + return new ResourceMetricsData(items); + } + + @Override + protected Resource getResource(MetricData metricData) { + return metricData.getResource(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeInfo(MetricData metricData) { + return metricData.getInstrumentationScopeInfo(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java new file mode 100644 index 000000000..d8718d3d6 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetrics; +import io.opentelemetry.sdk.resources.Resource; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper(uses = {ResourceMapper.class}) +public interface ResourceMetricsMapper { + + ResourceMetricsMapper INSTANCE = Mappers.getMapper(ResourceMetricsMapper.class); + + @ResourceMapping + @Mapping(target = "scopeMetrics", ignore = true) + ResourceMetrics resourceMetricsToJson(Resource resource); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java new file mode 100644 index 000000000..092caa182 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ScopeMetrics; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface ScopeMetricsMapper { + + ScopeMetricsMapper INSTANCE = Mappers.getMapper(ScopeMetricsMapper.class); + + @ScopeMapping + @Mapping(target = "signalItems", ignore = true) + @Mapping(target = "metrics", ignore = true) + ScopeMetrics scopeInfoToJson(InstrumentationScopeInfo source); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java new file mode 100644 index 000000000..682e2ffed --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java @@ -0,0 +1,10 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models; + +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; + +public final class Constants { + public static final AggregationTemporality DEFAULT_AGGREGATION_TEMPORALITY = + AggregationTemporality.DELTA; + + private Constants() {} +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java new file mode 100644 index 000000000..927da0820 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java @@ -0,0 +1,35 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.Data; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.resources.Resource; + +@AutoValue +public abstract class MetricDataImpl implements MetricData { + + public static Builder builder() { + return new AutoValue_MetricDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setResource(Resource value); + + public abstract Builder setInstrumentationScopeInfo(InstrumentationScopeInfo value); + + public abstract Builder setName(String value); + + public abstract Builder setDescription(String value); + + public abstract Builder setUnit(String value); + + public abstract Builder setType(MetricDataType value); + + public abstract Builder setData(Data value); + + public abstract MetricDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java new file mode 100644 index 000000000..17919f222 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java @@ -0,0 +1,15 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; + +import io.opentelemetry.sdk.metrics.data.Data; +import io.opentelemetry.sdk.metrics.data.PointData; +import java.util.ArrayList; +import java.util.Collection; + +public abstract class DataImpl implements Data { + public Collection points = new ArrayList<>(); + + @Override + public Collection getPoints() { + return points; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java new file mode 100644 index 000000000..aaae84bc6 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -0,0 +1,16 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.Constants; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; + +public class ExponentialHistogramDataImpl extends DataImpl + implements ExponentialHistogramData { + public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; + + @Override + public AggregationTemporality getAggregationTemporality() { + return aggregationTemporality; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java new file mode 100644 index 000000000..7ca53c220 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java @@ -0,0 +1,14 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; + +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.GaugeData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.PointData; + +public abstract class GaugeDataImpl extends DataImpl + implements GaugeData { + + public static class LongData extends GaugeDataImpl {} + + public static class DoubleData extends GaugeDataImpl {} +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java new file mode 100644 index 000000000..d032c4551 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java @@ -0,0 +1,15 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.Constants; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.HistogramData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; + +public class HistogramDataImpl extends DataImpl implements HistogramData { + public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; + + @Override + public AggregationTemporality getAggregationTemporality() { + return aggregationTemporality; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java new file mode 100644 index 000000000..c23d8b71a --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java @@ -0,0 +1,27 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.Constants; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.PointData; +import io.opentelemetry.sdk.metrics.data.SumData; + +public abstract class SumDataImpl extends DataImpl implements SumData { + public Boolean monotonic = false; + public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; + + @Override + public boolean isMonotonic() { + return monotonic; + } + + @Override + public AggregationTemporality getAggregationTemporality() { + return aggregationTemporality; + } + + public static class LongData extends SumDataImpl {} + + public static class DoubleData extends SumDataImpl {} +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java new file mode 100644 index 000000000..0fb30ad2d --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; + +import io.opentelemetry.sdk.metrics.data.SummaryData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; + +public class SummaryDataImpl extends DataImpl implements SummaryData {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java new file mode 100644 index 000000000..ab7ed1d12 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java @@ -0,0 +1,23 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import java.util.List; + +@AutoValue +public abstract class DoublePointDataImpl implements DoublePointData { + + public static Builder builder() { + return new AutoValue_DoublePointDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements PointDataBuilder { + public abstract Builder setValue(Double value); + + public abstract Builder setExemplars(List value); + + public abstract DoublePointDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java new file mode 100644 index 000000000..1ed50292e --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java @@ -0,0 +1,48 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; +import java.util.List; + +@AutoValue +public abstract class ExponentialHistogramPointDataImpl implements ExponentialHistogramPointData { + + public static Builder builder() { + return new AutoValue_ExponentialHistogramPointDataImpl.Builder(); + } + + @Override + public boolean hasMin() { + return getMin() > -1; + } + + @Override + public boolean hasMax() { + return getMax() > -1; + } + + @AutoValue.Builder + public abstract static class Builder implements PointDataBuilder { + public abstract Builder setScale(Integer value); + + public abstract Builder setSum(Double value); + + public abstract Builder setCount(Long value); + + public abstract Builder setZeroCount(Long value); + + public abstract Builder setMin(Double value); + + public abstract Builder setMax(Double value); + + public abstract Builder setExemplars(List value); + + public abstract Builder setPositiveBuckets(ExponentialHistogramBuckets value); + + public abstract Builder setNegativeBuckets(ExponentialHistogramBuckets value); + + public abstract ExponentialHistogramPointDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java new file mode 100644 index 000000000..951651ef7 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java @@ -0,0 +1,43 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import java.util.List; + +@AutoValue +public abstract class HistogramPointDataImpl implements HistogramPointData { + + public static Builder builder() { + return new AutoValue_HistogramPointDataImpl.Builder(); + } + + @Override + public boolean hasMin() { + return getMin() > -1; + } + + @Override + public boolean hasMax() { + return getMax() > -1; + } + + @AutoValue.Builder + public abstract static class Builder implements PointDataBuilder { + public abstract Builder setSum(Double value); + + public abstract Builder setCount(Long value); + + public abstract Builder setMin(Double value); + + public abstract Builder setMax(Double value); + + public abstract Builder setBoundaries(List value); + + public abstract Builder setCounts(List value); + + public abstract Builder setExemplars(List value); + + public abstract HistogramPointDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java new file mode 100644 index 000000000..6738ef431 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java @@ -0,0 +1,23 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import java.util.List; + +@AutoValue +public abstract class LongPointDataImpl implements LongPointData { + + public static Builder builder() { + return new AutoValue_LongPointDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements PointDataBuilder { + public abstract Builder setValue(Long value); + + public abstract Builder setExemplars(List value); + + public abstract LongPointDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java new file mode 100644 index 000000000..075744a56 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java @@ -0,0 +1,16 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; + +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.api.common.Attributes; + +public interface PointDataBuilder> { + + @CanIgnoreReturnValue + T setStartEpochNanos(Long value); + + @CanIgnoreReturnValue + T setEpochNanos(Long value); + + @CanIgnoreReturnValue + T setAttributes(Attributes value); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java new file mode 100644 index 000000000..8f3cfb9c2 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java @@ -0,0 +1,32 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.ExemplarData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import java.util.Collections; +import java.util.List; + +@AutoValue +public abstract class SummaryPointDataImpl implements SummaryPointData { + + public static Builder builder() { + return new AutoValue_SummaryPointDataImpl.Builder(); + } + + @Override + public List getExemplars() { + return Collections.emptyList(); + } + + @AutoValue.Builder + public abstract static class Builder implements PointDataBuilder { + public abstract Builder setCount(Long value); + + public abstract Builder setSum(Double value); + + public abstract Builder setValues(List value); + + public abstract SummaryPointDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java new file mode 100644 index 000000000..4ce3c82f3 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; + +@AutoValue +public abstract class DoubleExemplarDataImpl implements DoubleExemplarData { + + public static Builder builder() { + return new AutoValue_DoubleExemplarDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements ExemplarDataBuilder { + public abstract Builder setValue(Double value); + + public abstract DoubleExemplarDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java new file mode 100644 index 000000000..47e115621 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java @@ -0,0 +1,17 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; + +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; + +public interface ExemplarDataBuilder> { + + @CanIgnoreReturnValue + T setSpanContext(SpanContext value); + + @CanIgnoreReturnValue + T setEpochNanos(Long value); + + @CanIgnoreReturnValue + T setFilteredAttributes(Attributes value); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java new file mode 100644 index 000000000..4dd18b203 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java @@ -0,0 +1,26 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import java.util.List; + +@AutoValue +public abstract class ExponentialHistogramBucketsImpl implements ExponentialHistogramBuckets { + + public static Builder builder() { + return new AutoValue_ExponentialHistogramBucketsImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setScale(Integer value); + + public abstract Builder setOffset(Integer value); + + public abstract Builder setBucketCounts(List value); + + public abstract Builder setTotalCount(Long value); + + public abstract ExponentialHistogramBucketsImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java new file mode 100644 index 000000000..44d401264 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; + +@AutoValue +public abstract class LongExemplarDataImpl implements LongExemplarData { + + public static Builder builder() { + return new AutoValue_LongExemplarDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements ExemplarDataBuilder { + public abstract Builder setValue(Long value); + + public abstract LongExemplarDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java new file mode 100644 index 000000000..c5d5cf550 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java @@ -0,0 +1,21 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; + +@AutoValue +public abstract class ValueAtQuantileImpl implements ValueAtQuantile { + + public static Builder builder() { + return new AutoValue_ValueAtQuantileImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setQuantile(Double value); + + public abstract Builder setValue(Double value); + + public abstract ValueAtQuantileImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java index 929fe0cbd..f1568440f 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java @@ -14,7 +14,6 @@ public interface ResourceSpansMapper { ResourceSpansMapper INSTANCE = Mappers.getMapper(ResourceSpansMapper.class); @ResourceMapping - @Mapping(target = "scopeSignals", ignore = true) @Mapping(target = "scopeSpans", ignore = true) ResourceSpans resourceSpansToJson(Resource resource); } From b5874dc7fe3695305bdecc911cc9d23f5cc44438 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 17:27:23 +0200 Subject: [PATCH 015/209] Adding log mapping --- disk-buffer/build.gradle.kts | 1 + .../internal/mapping/common/ScopeMapping.java | 1 + .../mapping/logs/LogRecordMapper.java | 94 +++++++++++++++++++ .../mapping/logs/ResourceLogsDataMapper.java | 57 +++++++++++ .../mapping/logs/ResourceLogsMapper.java | 19 ++++ .../mapping/logs/ScopeLogsMapper.java | 18 ++++ .../logs/models/LogRecordDataImpl.java | 43 +++++++++ .../mapping/metrics/ScopeMetricsMapper.java | 1 - .../mapping/spans/ScopeSpansMapper.java | 1 - .../serialization/logs/LogRecordDataJson.java | 9 +- 10 files changed, 239 insertions(+), 5 deletions(-) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java diff --git a/disk-buffer/build.gradle.kts b/disk-buffer/build.gradle.kts index 6f3e4850d..3d7a584f4 100644 --- a/disk-buffer/build.gradle.kts +++ b/disk-buffer/build.gradle.kts @@ -19,6 +19,7 @@ val mapStructVersion = "1.5.5.Final" val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") + api("io.opentelemetry:opentelemetry-sdk-logs") implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") implementation("org.mapstruct:mapstruct:$mapStructVersion") implementation("com.google.auto.value:auto-value-annotations:$autovalueVersion") diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java index 57c53828b..f76a63822 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java @@ -10,4 +10,5 @@ @Target(ElementType.METHOD) @Mapping(target = "schemaUrl", source = "source.schemaUrl") @Mapping(target = "scope", source = "source") +@Mapping(target = "signalItems", ignore = true) public @interface ScopeMapping {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java new file mode 100644 index 000000000..1e408329c --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java @@ -0,0 +1,94 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; + +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.BodyJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.LogRecordDataJson; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.resources.Resource; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.Context; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; + +@Mapper +public abstract class LogRecordMapper { + + public static final LogRecordMapper INSTANCE = Mappers.getMapper(LogRecordMapper.class); + + @SpanContextMapping + @Mapping( + target = "flags", + expression = "java((int) source.getSpanContext().getTraceFlags().asByte())") + @Mapping(target = "droppedAttributesCount", ignore = true) + public abstract LogRecordDataJson logToJson(LogRecordData source); + + protected BodyJson bodyToJson(Body source) { + BodyJson bodyJson = new BodyJson(); + bodyJson.stringValue = source.asString(); + return bodyJson; + } + + protected Integer severityToNumber(Severity severity) { + return severity.getSeverityNumber(); + } + + @AfterMapping + protected void addDroppedAttributesCount( + LogRecordData source, @MappingTarget LogRecordDataJson target) { + target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); + } + + // FROM JSON + @BeanMapping(resultType = LogRecordDataImpl.class) + @Mapping(target = "resource", ignore = true) + @Mapping(target = "instrumentationScopeInfo", ignore = true) + @Mapping(target = "spanContext", ignore = true) + @Mapping(target = "totalAttributeCount", ignore = true) + public abstract LogRecordData jsonToLog( + LogRecordDataJson source, + @Context Resource resource, + @Context InstrumentationScopeInfo scopeInfo); + + @AfterMapping + protected void addExtras( + LogRecordDataJson source, + @Context Resource resource, + @Context InstrumentationScopeInfo scopeInfo, + @MappingTarget LogRecordDataImpl.Builder target) { + target.setResource(resource); + target.setInstrumentationScopeInfo(scopeInfo); + if (source.traceId != null && source.spanId != null) { + target.setSpanContext( + SpanContext.create( + source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); + } + target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); + } + + protected Body jsonToBody(BodyJson source) { + if (source.stringValue != null) { + return Body.string(source.stringValue); + } else { + return Body.empty(); + } + } + + protected Severity jsonToSeverity(Integer source) { + for (Severity severity : Severity.values()) { + if (severity.getSeverityNumber() == source) { + return severity; + } + } + throw new IllegalArgumentException(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java new file mode 100644 index 000000000..4c4d7c6ca --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java @@ -0,0 +1,57 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.LogRecordDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogs; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ScopeLogs; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.resources.Resource; +import java.util.Collection; + +public final class ResourceLogsDataMapper + extends BaseResourceSignalsDataMapper< + LogRecordData, LogRecordDataJson, ScopeLogs, ResourceLogs, ResourceLogsData> { + + public static final ResourceLogsDataMapper INSTANCE = new ResourceLogsDataMapper(); + + private ResourceLogsDataMapper() {} + + @Override + protected LogRecordDataJson signalItemToJson(LogRecordData sourceData) { + return LogRecordMapper.INSTANCE.logToJson(sourceData); + } + + @Override + protected ResourceLogs resourceSignalToJson(Resource resource) { + return ResourceLogsMapper.INSTANCE.resourceLogsToJson(resource); + } + + @Override + protected ScopeLogs instrumentationScopeToJson( + InstrumentationScopeInfo instrumentationScopeInfo) { + return ScopeLogsMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); + } + + @Override + protected LogRecordData jsonToSignalItem( + LogRecordDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { + return LogRecordMapper.INSTANCE.jsonToLog(jsonItem, resource, scopeInfo); + } + + @Override + protected ResourceLogsData createResourceData(Collection items) { + return new ResourceLogsData(items); + } + + @Override + protected Resource getResource(LogRecordData logRecordData) { + return logRecordData.getResource(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeInfo(LogRecordData logRecordData) { + return logRecordData.getInstrumentationScopeInfo(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java new file mode 100644 index 000000000..e2f836a5c --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogs; +import io.opentelemetry.sdk.resources.Resource; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper(uses = {ResourceMapper.class}) +public interface ResourceLogsMapper { + + ResourceLogsMapper INSTANCE = Mappers.getMapper(ResourceLogsMapper.class); + + @ResourceMapping + @Mapping(target = "scopeLogs", ignore = true) + ResourceLogs resourceLogsToJson(Resource resource); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java new file mode 100644 index 000000000..e227166d6 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java @@ -0,0 +1,18 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ScopeLogs; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface ScopeLogsMapper { + + ScopeLogsMapper INSTANCE = Mappers.getMapper(ScopeLogsMapper.class); + + @ScopeMapping + @Mapping(target = "logRecords", ignore = true) + ScopeLogs scopeInfoToJson(InstrumentationScopeInfo source); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java new file mode 100644 index 000000000..b7105e545 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java @@ -0,0 +1,43 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.resources.Resource; + +@AutoValue +public abstract class LogRecordDataImpl implements LogRecordData { + + public static Builder builder() { + return new AutoValue_LogRecordDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setResource(Resource value); + + public abstract Builder setInstrumentationScopeInfo(InstrumentationScopeInfo value); + + public abstract Builder setTimestampEpochNanos(Long value); + + public abstract Builder setObservedTimestampEpochNanos(Long value); + + public abstract Builder setSpanContext(SpanContext value); + + public abstract Builder setSeverity(Severity value); + + public abstract Builder setSeverityText(String value); + + public abstract Builder setBody(Body value); + + public abstract Builder setAttributes(Attributes value); + + public abstract Builder setTotalAttributeCount(Integer value); + + public abstract LogRecordDataImpl build(); + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java index 092caa182..3afee37c7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java @@ -13,7 +13,6 @@ public interface ScopeMetricsMapper { ScopeMetricsMapper INSTANCE = Mappers.getMapper(ScopeMetricsMapper.class); @ScopeMapping - @Mapping(target = "signalItems", ignore = true) @Mapping(target = "metrics", ignore = true) ScopeMetrics scopeInfoToJson(InstrumentationScopeInfo source); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java index 41c08c3dc..ec7062150 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java @@ -13,7 +13,6 @@ public interface ScopeSpansMapper { ScopeSpansMapper INSTANCE = Mappers.getMapper(ScopeSpansMapper.class); @ScopeMapping - @Mapping(target = "signalItems", ignore = true) @Mapping(target = "spans", ignore = true) ScopeSpan scopeInfoToJson(InstrumentationScopeInfo source); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java index 895690232..151255279 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java @@ -8,7 +8,11 @@ public final class LogRecordDataJson { @Nullable @JsonAttribute(name = "timeUnixNano") - public String epochNanos; + public String timestampEpochNanos; + + @Nullable + @JsonAttribute(name = "observedTimeUnixNano") + public String observedTimestampEpochNanos; @Nullable @JsonAttribute(name = "severityNumber") @@ -25,9 +29,8 @@ public final class LogRecordDataJson { @JsonAttribute(name = "attributes") public Attributes attributes = Attributes.empty(); - @Nullable @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount; + public Integer droppedAttributesCount = 0; @Nullable @JsonAttribute(name = "flags") From 69dbcd0845e5b038dfd5ebb571e1c8e865fc18ce Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 17:28:58 +0200 Subject: [PATCH 016/209] Making classes final --- .../internal/mapping/metrics/ResourceMetricsDataMapper.java | 2 +- .../metrics/models/data/ExponentialHistogramDataImpl.java | 2 +- .../internal/mapping/metrics/models/data/HistogramDataImpl.java | 2 +- .../internal/mapping/metrics/models/data/SummaryDataImpl.java | 2 +- .../buffer/internal/mapping/spans/ResourceSpansDataMapper.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java index f9f6f34df..fdf2dbd8b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java @@ -10,7 +10,7 @@ import io.opentelemetry.sdk.resources.Resource; import java.util.Collection; -public class ResourceMetricsDataMapper +public final class ResourceMetricsDataMapper extends BaseResourceSignalsDataMapper< MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index aaae84bc6..ca4bfbfd5 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -5,7 +5,7 @@ import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; -public class ExponentialHistogramDataImpl extends DataImpl +public final class ExponentialHistogramDataImpl extends DataImpl implements ExponentialHistogramData { public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java index d032c4551..3a66104eb 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java @@ -5,7 +5,7 @@ import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; -public class HistogramDataImpl extends DataImpl implements HistogramData { +public final class HistogramDataImpl extends DataImpl implements HistogramData { public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; @Override diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java index 0fb30ad2d..e48f4b0e9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java @@ -3,4 +3,4 @@ import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; -public class SummaryDataImpl extends DataImpl implements SummaryData {} +public final class SummaryDataImpl extends DataImpl implements SummaryData {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java index 0560f55d2..e41ee0e26 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java @@ -10,7 +10,7 @@ import io.opentelemetry.sdk.trace.data.SpanData; import java.util.Collection; -public class ResourceSpansDataMapper +public final class ResourceSpansDataMapper extends BaseResourceSignalsDataMapper< SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { From 103ab0561bcf1b6654cf820198ba84183981b7f0 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 18:42:30 +0200 Subject: [PATCH 017/209] Created SignalSerializer --- .../serializers/LogRecordDataSerializer.java | 40 ++++++++++++++ .../serializers/MetricDataSerializer.java | 27 ++++++++++ .../serializers/SignalSerializer.java | 22 ++++++++ .../serializers/SpanDataSerializer.java | 27 ++++++++++ .../logs/ResourceLogsDataMapperTest.java | 52 +++++++++++++++++++ .../LogRecordDataSerializerTest.java | 45 ++++++++++++++++ .../testutils/BaseSignalDataMapperTest.java | 29 +++++++++++ .../disk/buffer/testutils/TestData.java | 44 ++++++++++++++++ 8 files changed, 286 insertions(+) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java new file mode 100644 index 000000000..c9e5019b2 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -0,0 +1,40 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.ResourceLogsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import java.io.IOException; +import java.util.List; + +public final class LogRecordDataSerializer implements SignalSerializer { + private static LogRecordDataSerializer INSTANCE; + + private LogRecordDataSerializer() {} + + static LogRecordDataSerializer get() { + if (INSTANCE == null) { + INSTANCE = new LogRecordDataSerializer(); + } + return INSTANCE; + } + + @Override + public byte[] serialize(List logRecordData) { + try { + return Serializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public List deserialize(byte[] source) { + try { + ResourceLogsData deserialized = Serializer.deserialize(ResourceLogsData.class, source); + return ResourceLogsDataMapper.INSTANCE.fromJsonDto(deserialized); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java new file mode 100644 index 000000000..9c0d8eec7 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -0,0 +1,27 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import io.opentelemetry.sdk.metrics.data.MetricData; +import java.util.List; + +public final class MetricDataSerializer implements SignalSerializer { + private static MetricDataSerializer INSTANCE; + + private MetricDataSerializer() {} + + static MetricDataSerializer get() { + if (INSTANCE == null) { + INSTANCE = new MetricDataSerializer(); + } + return INSTANCE; + } + + @Override + public byte[] serialize(List metricData) { + return new byte[0]; + } + + @Override + public List deserialize(byte[] source) { + return null; + } +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java new file mode 100644 index 000000000..064034785 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java @@ -0,0 +1,22 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import java.util.List; + +public interface SignalSerializer { + + static SpanDataSerializer ofSpans() { + return SpanDataSerializer.get(); + } + + static MetricDataSerializer ofMetrics() { + return MetricDataSerializer.get(); + } + + static LogRecordDataSerializer ofLogs() { + return LogRecordDataSerializer.get(); + } + + byte[] serialize(List items); + + List deserialize(byte[] source); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java new file mode 100644 index 000000000..41d521039 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -0,0 +1,27 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import io.opentelemetry.sdk.trace.data.SpanData; +import java.util.List; + +public final class SpanDataSerializer implements SignalSerializer { + private static SpanDataSerializer INSTANCE; + + private SpanDataSerializer() {} + + static SpanDataSerializer get() { + if (INSTANCE == null) { + INSTANCE = new SpanDataSerializer(); + } + return INSTANCE; + } + + @Override + public byte[] serialize(List spanData) { + return new byte[0]; + } + + @Override + public List deserialize(byte[] source) { + return null; + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java new file mode 100644 index 000000000..5ee6dda58 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java @@ -0,0 +1,52 @@ +package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; +import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalDataMapperTest; +import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import org.junit.jupiter.api.Test; + +class ResourceLogsDataMapperTest extends BaseSignalDataMapperTest { + + private static final LogRecordData LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData LOG_RECORD_WITHOUT_SEVERITY_TEXT = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(Attributes.empty()) + .setBody(Body.string("Log body")) + .setSeverity(Severity.DEBUG) + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + @Test + public void verifyMapping() { + assertItemsMapping(LOG_RECORD, LOG_RECORD_WITHOUT_SEVERITY_TEXT); + } + + @Override + protected BaseResourceSignalsDataMapper getMapper() { + return ResourceLogsDataMapper.INSTANCE; + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java new file mode 100644 index 000000000..075f8b42f --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -0,0 +1,45 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import static org.junit.jupiter.api.Assertions.*; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import org.junit.jupiter.api.Test; + +class LogRecordDataSerializerTest { + private static final LogRecordData LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData LOG_RECORD_WITHOUT_SEVERITY_TEXT = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(Attributes.empty()) + .setBody(Body.string("Log body")) + .setSeverity(Severity.DEBUG) + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + @Test + public void verifySerialization() { + assertItemsMapping(LOG_RECORD, LOG_RECORD_WITHOUT_SEVERITY_TEXT); + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java new file mode 100644 index 000000000..80c2b6c55 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java @@ -0,0 +1,29 @@ +package io.opentelemetry.contrib.disk.buffer.testutils; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; +import java.util.Arrays; +import java.util.List; + +public abstract class BaseSignalDataMapperTest< + SIGNAL_SDK_ITEM, DTO_RESOURCE_DATA extends ResourceSignalsData> { + protected DTO_RESOURCE_DATA toDto(SIGNAL_SDK_ITEM... items) { + return getMapper().toJsonDto(Arrays.asList(items)); + } + + protected List fromDto(DTO_RESOURCE_DATA dto) { + return getMapper().fromJsonDto(dto); + } + + protected void assertItemsMapping(SIGNAL_SDK_ITEM... targets) { + DTO_RESOURCE_DATA dto = toDto(targets); + List mappedBack = fromDto(dto); + + assertThat(mappedBack).containsExactly(targets); + } + + protected abstract BaseResourceSignalsDataMapper + getMapper(); +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java new file mode 100644 index 000000000..99bdb9dc0 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java @@ -0,0 +1,44 @@ +package io.opentelemetry.contrib.disk.buffer.testutils; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; + +@SuppressWarnings("unchecked") +public final class TestData { + public static final String TRACE_ID = "b535b3b5232b5dabced5b0ab8037eb78"; + public static final String SPAN_ID = "f3fc364fb6b77cff"; + public static final Attributes ATTRIBUTES = + Attributes.builder() + .put("bear", "mya") + .put("warm", true) + .put("temperature", 30) + .put("length", 1.2) + .put("colors", "red", "blue") + .put("conditions", false, true) + .put("scores", 0L, 1L) + .put("coins", 0.01, 0.05, 0.1) + .build(); + + public static final Resource RESOURCE_FULL = + Resource.create( + Attributes.builder().put("resourceAttr", "resourceAttrValue").build(), + "resourceSchemaUrl"); + + public static final SpanContext SPAN_CONTEXT = + SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()); + public static final InstrumentationScopeInfo INSTRUMENTATION_SCOPE_INFO_FULL = + InstrumentationScopeInfo.builder("Instrumentation scope name") + .setVersion("1.2.3") + .setSchemaUrl("instrumentationScopeInfoSchemaUrl") + .setAttributes( + Attributes.builder() + .put("instrumentationScopeInfoAttr", "instrumentationScopeInfoAttrValue") + .build()) + .build(); + + private TestData() {} +} From 635a8e03883f2e963b95cf8d7ed06ec97bd20709 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 18:52:01 +0200 Subject: [PATCH 018/209] Verifying log serialization --- .../serializers/LogRecordDataSerializer.java | 17 +++--- .../serializers/MetricDataSerializer.java | 26 +++++++--- .../serializers/SpanDataSerializer.java | 26 +++++++--- .../logs/ResourceLogsDataMapperTest.java | 52 ------------------- .../LogRecordDataSerializerTest.java | 10 ++-- .../testutils/BaseSignalDataMapperTest.java | 29 ----------- .../testutils/BaseSignalSerializerTest.java | 26 ++++++++++ 7 files changed, 82 insertions(+), 104 deletions(-) delete mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java delete mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index c9e5019b2..b036df11a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -6,17 +6,18 @@ import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; import java.util.List; +import javax.annotation.Nullable; public final class LogRecordDataSerializer implements SignalSerializer { - private static LogRecordDataSerializer INSTANCE; + @Nullable private static LogRecordDataSerializer instance; private LogRecordDataSerializer() {} static LogRecordDataSerializer get() { - if (INSTANCE == null) { - INSTANCE = new LogRecordDataSerializer(); + if (instance == null) { + instance = new LogRecordDataSerializer(); } - return INSTANCE; + return instance; } @Override @@ -24,17 +25,17 @@ public byte[] serialize(List logRecordData) { try { return Serializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalArgumentException(e); } } @Override public List deserialize(byte[] source) { try { - ResourceLogsData deserialized = Serializer.deserialize(ResourceLogsData.class, source); - return ResourceLogsDataMapper.INSTANCE.fromJsonDto(deserialized); + return ResourceLogsDataMapper.INSTANCE.fromJsonDto( + Serializer.deserialize(ResourceLogsData.class, source)); } catch (IOException e) { - throw new RuntimeException(e); + throw new IllegalArgumentException(e); } } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index 9c0d8eec7..1ca352adb 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -1,27 +1,41 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.ResourceMetricsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; +import java.io.IOException; import java.util.List; +import javax.annotation.Nullable; public final class MetricDataSerializer implements SignalSerializer { - private static MetricDataSerializer INSTANCE; + @Nullable private static MetricDataSerializer instance; private MetricDataSerializer() {} static MetricDataSerializer get() { - if (INSTANCE == null) { - INSTANCE = new MetricDataSerializer(); + if (instance == null) { + instance = new MetricDataSerializer(); } - return INSTANCE; + return instance; } @Override public byte[] serialize(List metricData) { - return new byte[0]; + try { + return Serializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } } @Override public List deserialize(byte[] source) { - return null; + try { + return ResourceMetricsDataMapper.INSTANCE.fromJsonDto( + Serializer.deserialize(ResourceMetricsData.class, source)); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index 41d521039..ff653174e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -1,27 +1,41 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.ResourceSpansDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; +import java.io.IOException; import java.util.List; +import javax.annotation.Nullable; public final class SpanDataSerializer implements SignalSerializer { - private static SpanDataSerializer INSTANCE; + @Nullable private static SpanDataSerializer instance; private SpanDataSerializer() {} static SpanDataSerializer get() { - if (INSTANCE == null) { - INSTANCE = new SpanDataSerializer(); + if (instance == null) { + instance = new SpanDataSerializer(); } - return INSTANCE; + return instance; } @Override public byte[] serialize(List spanData) { - return new byte[0]; + try { + return Serializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } } @Override public List deserialize(byte[] source) { - return null; + try { + return ResourceSpansDataMapper.INSTANCE.fromJsonDto( + Serializer.deserialize(ResourceSpansData.class, source)); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } } } diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java deleted file mode 100644 index 5ee6dda58..000000000 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapperTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; -import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalDataMapperTest; -import io.opentelemetry.contrib.disk.buffer.testutils.TestData; -import io.opentelemetry.sdk.logs.data.Body; -import io.opentelemetry.sdk.logs.data.LogRecordData; -import org.junit.jupiter.api.Test; - -class ResourceLogsDataMapperTest extends BaseSignalDataMapperTest { - - private static final LogRecordData LOG_RECORD = - LogRecordDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setSpanContext(TestData.SPAN_CONTEXT) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setAttributes(TestData.ATTRIBUTES) - .setBody(Body.string("Log body")) - .setSeverity(Severity.DEBUG) - .setSeverityText("Log severity text") - .setTimestampEpochNanos(100L) - .setObservedTimestampEpochNanos(200L) - .setTotalAttributeCount(3) - .build(); - - private static final LogRecordData LOG_RECORD_WITHOUT_SEVERITY_TEXT = - LogRecordDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setSpanContext(TestData.SPAN_CONTEXT) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setAttributes(Attributes.empty()) - .setBody(Body.string("Log body")) - .setSeverity(Severity.DEBUG) - .setTimestampEpochNanos(100L) - .setObservedTimestampEpochNanos(200L) - .setTotalAttributeCount(3) - .build(); - - @Test - public void verifyMapping() { - assertItemsMapping(LOG_RECORD, LOG_RECORD_WITHOUT_SEVERITY_TEXT); - } - - @Override - protected BaseResourceSignalsDataMapper getMapper() { - return ResourceLogsDataMapper.INSTANCE; - } -} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java index 075f8b42f..641057cdb 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -1,16 +1,15 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import static org.junit.jupiter.api.Assertions.*; - import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffer.testutils.TestData; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; import org.junit.jupiter.api.Test; -class LogRecordDataSerializerTest { +class LogRecordDataSerializerTest extends BaseSignalSerializerTest { private static final LogRecordData LOG_RECORD = LogRecordDataImpl.builder() .setResource(TestData.RESOURCE_FULL) @@ -42,4 +41,9 @@ class LogRecordDataSerializerTest { public void verifySerialization() { assertItemsMapping(LOG_RECORD, LOG_RECORD_WITHOUT_SEVERITY_TEXT); } + + @Override + protected SignalSerializer getSerializer() { + return SignalSerializer.ofLogs(); + } } diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java deleted file mode 100644 index 80c2b6c55..000000000 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalDataMapperTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.testutils; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; -import java.util.Arrays; -import java.util.List; - -public abstract class BaseSignalDataMapperTest< - SIGNAL_SDK_ITEM, DTO_RESOURCE_DATA extends ResourceSignalsData> { - protected DTO_RESOURCE_DATA toDto(SIGNAL_SDK_ITEM... items) { - return getMapper().toJsonDto(Arrays.asList(items)); - } - - protected List fromDto(DTO_RESOURCE_DATA dto) { - return getMapper().fromJsonDto(dto); - } - - protected void assertItemsMapping(SIGNAL_SDK_ITEM... targets) { - DTO_RESOURCE_DATA dto = toDto(targets); - List mappedBack = fromDto(dto); - - assertThat(mappedBack).containsExactly(targets); - } - - protected abstract BaseResourceSignalsDataMapper - getMapper(); -} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java new file mode 100644 index 000000000..03acc08d6 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java @@ -0,0 +1,26 @@ +package io.opentelemetry.contrib.disk.buffer.testutils; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers.SignalSerializer; +import java.util.Arrays; +import java.util.List; + +public abstract class BaseSignalSerializerTest { + protected byte[] serialize(SIGNAL_SDK_ITEM... items) { + return getSerializer().serialize(Arrays.asList(items)); + } + + protected List deserialize(byte[] source) { + return getSerializer().deserialize(source); + } + + protected void assertItemsMapping(SIGNAL_SDK_ITEM... targets) { + byte[] serialized = serialize(targets); + List deserialized = deserialize(serialized); + + assertThat(deserialized).containsExactly(targets); + } + + protected abstract SignalSerializer getSerializer(); +} From 9ec3b7369784d7d5b6682360b8e13a1650c5ffd3 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 18:53:08 +0200 Subject: [PATCH 019/209] Renaming base serializer test methods --- .../serialization/serializers/LogRecordDataSerializerTest.java | 2 +- .../contrib/disk/buffer/testutils/BaseSignalSerializerTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java index 641057cdb..f8dad4f62 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -39,7 +39,7 @@ class LogRecordDataSerializerTest extends BaseSignalSerializerTest deserialize(byte[] source) { return getSerializer().deserialize(source); } - protected void assertItemsMapping(SIGNAL_SDK_ITEM... targets) { + protected void assertSerialization(SIGNAL_SDK_ITEM... targets) { byte[] serialized = serialize(targets); List deserialized = deserialize(serialized); From 0d108628d69867571187b815dfb663bf2458d248 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 18:59:26 +0200 Subject: [PATCH 020/209] Clean up --- .../disk/buffer/testutils/BaseSignalSerializerTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java index 1bd086804..26979906a 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java @@ -17,9 +17,7 @@ protected List deserialize(byte[] source) { protected void assertSerialization(SIGNAL_SDK_ITEM... targets) { byte[] serialized = serialize(targets); - List deserialized = deserialize(serialized); - - assertThat(deserialized).containsExactly(targets); + assertThat(deserialize(serialized)).containsExactly(targets); } protected abstract SignalSerializer getSerializer(); From 875e12078e77bf7b56a858f6966be484bfe1f493 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 19:24:44 +0200 Subject: [PATCH 021/209] Moving mapping to serialization --- .../common/BaseResourceSignalsDataMapper.java | 2 +- .../mapping/common/ResourceMapper.java | 2 +- .../mapping/common/ResourceMapping.java | 2 +- .../mapping/common/ScopeMapping.java | 2 +- .../mapping/common/SpanContextMapping.java | 2 +- .../converters/AttributesJsonConverter.java | 2 +- .../converters/MetricDataJsonConverter.java | 2 +- .../mapping/logs/LogRecordMapper.java | 6 ++--- .../mapping/logs/ResourceLogsDataMapper.java | 6 ++--- .../mapping/logs/ResourceLogsMapper.java | 6 ++--- .../mapping/logs/ScopeLogsMapper.java | 4 ++-- .../logs/models/LogRecordDataImpl.java | 3 ++- .../mapping/metrics/DataPointMapper.java | 22 +++++++++---------- .../mapping/metrics/MetricDataMapper.java | 12 +++++----- .../mapping/metrics/MetricMapper.java | 4 ++-- .../metrics/ResourceMetricsDataMapper.java | 6 ++--- .../metrics/ResourceMetricsMapper.java | 6 ++--- .../mapping/metrics/ScopeMetricsMapper.java | 4 ++-- .../mapping/metrics/models/Constants.java | 2 +- .../metrics/models/MetricDataImpl.java | 3 ++- .../mapping/metrics/models/data/DataImpl.java | 2 +- .../data/ExponentialHistogramDataImpl.java | 4 ++-- .../metrics/models/data/GaugeDataImpl.java | 2 +- .../models/data/HistogramDataImpl.java | 4 ++-- .../metrics/models/data/SumDataImpl.java | 4 ++-- .../metrics/models/data/SummaryDataImpl.java | 2 +- .../datapoints/DoublePointDataImpl.java | 3 ++- .../ExponentialHistogramPointDataImpl.java | 3 ++- .../datapoints/HistogramPointDataImpl.java | 3 ++- .../models/datapoints/LongPointDataImpl.java | 3 ++- .../models/datapoints/PointDataBuilder.java | 2 +- .../datapoints/SummaryPointDataImpl.java | 3 ++- .../data/DoubleExemplarDataImpl.java | 3 ++- .../datapoints/data/ExemplarDataBuilder.java | 2 +- .../data/ExponentialHistogramBucketsImpl.java | 3 ++- .../datapoints/data/LongExemplarDataImpl.java | 3 ++- .../datapoints/data/ValueAtQuantileImpl.java | 3 ++- .../spans/ResourceSpansDataMapper.java | 6 ++--- .../mapping/spans/ResourceSpansMapper.java | 6 ++--- .../mapping/spans/ScopeSpansMapper.java | 4 ++-- .../mapping/spans/SpanDataMapper.java | 10 ++++----- .../mapping/spans/models/SpanDataImpl.java | 3 ++- .../spans/models/data/EventDataImpl.java | 3 ++- .../spans/models/data/LinkDataImpl.java | 3 ++- .../serializers/LogRecordDataSerializer.java | 2 +- .../serializers/MetricDataSerializer.java | 2 +- .../serializers/SpanDataSerializer.java | 2 +- .../AttributesJsonConverterTest.java | 2 +- .../MetricDataJsonConverterTest.java | 2 +- .../LogRecordDataSerializerTest.java | 2 +- 50 files changed, 104 insertions(+), 90 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/common/BaseResourceSignalsDataMapper.java (98%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/common/ResourceMapper.java (89%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/common/ResourceMapping.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/common/ScopeMapping.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/common/SpanContextMapping.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => mapping}/converters/AttributesJsonConverter.java (99%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => mapping}/converters/MetricDataJsonConverter.java (99%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/logs/LogRecordMapper.java (91%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/logs/ResourceLogsDataMapper.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/logs/ResourceLogsMapper.java (64%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/logs/ScopeLogsMapper.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/logs/models/LogRecordDataImpl.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/DataPointMapper.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/MetricDataMapper.java (89%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/MetricMapper.java (96%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/ResourceMetricsDataMapper.java (86%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/ResourceMetricsMapper.java (65%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/ScopeMetricsMapper.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/Constants.java (72%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/MetricDataImpl.java (83%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/data/DataImpl.java (78%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/data/ExponentialHistogramDataImpl.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/data/GaugeDataImpl.java (83%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/data/HistogramDataImpl.java (71%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/data/SumDataImpl.java (81%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/data/SummaryDataImpl.java (68%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/DoublePointDataImpl.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java (85%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/HistogramPointDataImpl.java (82%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/LongPointDataImpl.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/PointDataBuilder.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/SummaryPointDataImpl.java (79%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java (68%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java (79%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java (74%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java (68%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java (68%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/ResourceSpansDataMapper.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/ResourceSpansMapper.java (65%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/ScopeSpansMapper.java (73%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/SpanDataMapper.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/models/SpanDataImpl.java (91%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/models/data/EventDataImpl.java (76%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/{ => serialization}/mapping/spans/models/data/LinkDataImpl.java (76%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => mapping}/converters/AttributesJsonConverterTest.java (98%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => mapping}/converters/MetricDataJsonConverterTest.java (99%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java similarity index 98% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java index 8e47b838d..4f4d0a1f9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/BaseResourceSignalsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java similarity index 89% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java index 7d878f0d4..6b479a78e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceJson; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java index 91cf60e73..d897d7917 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ResourceMapping.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java index f76a63822..a5a0bfe26 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/ScopeMapping.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java index 72303045e..e54f46f99 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/common/SpanContextMapping.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverter.java similarity index 99% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverter.java index a3cf017ce..c14ad0301 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; import com.dslplatform.json.BoolConverter; import com.dslplatform.json.JsonConverter; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java similarity index 99% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java index a4d345c22..f8d0c4f5f 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java similarity index 91% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java index 1e408329c..3279f27f7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/LogRecordMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java @@ -1,11 +1,11 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.SpanContextMapping; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models.LogRecordDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.BodyJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.LogRecordDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java index 4c4d7c6ca..a60ff9aae 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.LogRecordDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogs; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; @@ -12,7 +12,7 @@ public final class ResourceLogsDataMapper extends BaseResourceSignalsDataMapper< - LogRecordData, LogRecordDataJson, ScopeLogs, ResourceLogs, ResourceLogsData> { + LogRecordData, LogRecordDataJson, ScopeLogs, ResourceLogs, ResourceLogsData> { public static final ResourceLogsDataMapper INSTANCE = new ResourceLogsDataMapper(); diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java similarity index 64% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java index e2f836a5c..c840d23c5 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ResourceLogsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogs; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java index e227166d6..71dbc3c12 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/ScopeLogsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ScopeLogs; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java index b7105e545..ae700abd3 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/logs/models/LogRecordDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java @@ -1,9 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.AutoValue_LogRecordDataImpl; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java index f6fea23a7..f89012f98 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/DataPointMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java @@ -1,18 +1,18 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.DoublePointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.DataPoint; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.ExponentialHistogramDataPoint; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.HistogramDataPoint; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java similarity index 89% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java index b5dd0dbb3..bd0561eed 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.ExponentialHistogramDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.GaugeDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.HistogramDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.SumDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java similarity index 96% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java index fe52e5183..7c8663767 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/MetricMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java similarity index 86% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java index fdf2dbd8b..e3c7ab137 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetrics; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetricsData; @@ -12,7 +12,7 @@ public final class ResourceMetricsDataMapper extends BaseResourceSignalsDataMapper< - MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { + MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { public static final ResourceMetricsDataMapper INSTANCE = new ResourceMetricsDataMapper(); diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java similarity index 65% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java index d8718d3d6..f672249f7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ResourceMetricsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetrics; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java index 3afee37c7..cf12a5993 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/ScopeMetricsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ScopeMetrics; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java similarity index 72% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java index 682e2ffed..0d8b7dcf4 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/Constants.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java similarity index 83% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java index 927da0820..54f846cb2 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/MetricDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.AutoValue_MetricDataImpl; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.Data; import io.opentelemetry.sdk.metrics.data.MetricData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java similarity index 78% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java index 17919f222..3d52b60f1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/DataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import io.opentelemetry.sdk.metrics.data.Data; import io.opentelemetry.sdk.metrics.data.PointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index ca4bfbfd5..f22c4e911 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.Constants; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.Constants; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java similarity index 83% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java index 7ca53c220..161f53fb7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/GaugeDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.GaugeData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java similarity index 71% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index 3a66104eb..464933216 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.Constants; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.Constants; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java similarity index 81% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index c23d8b71a..ea872813a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.Constants; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.Constants; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.LongPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java similarity index 68% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java index e48f4b0e9..1ea8ad2dd 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/data/SummaryDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java index ab7ed1d12..f909a7afe 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/DoublePointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_DoublePointDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java similarity index 85% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java index 1ed50292e..ee07bb78e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_ExponentialHistogramPointDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java similarity index 82% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java index 951651ef7..23e3e6f0d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/HistogramPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_HistogramPointDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java index 6738ef431..e0d266a52 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/LongPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_LongPointDataImpl; import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java index 075744a56..8efad04d7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/PointDataBuilder.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java similarity index 79% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java index 8f3cfb9c2..408e19ac1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/SummaryPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_SummaryPointDataImpl; import io.opentelemetry.sdk.metrics.data.ExemplarData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java similarity index 68% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java index 4ce3c82f3..9aba8eb24 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_DoubleExemplarDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java similarity index 79% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java index 47e115621..b5008f39f 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java similarity index 74% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java index 4dd18b203..4a6eff221 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_ExponentialHistogramBucketsImpl; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java similarity index 68% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java index 44d401264..507f34480 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_LongExemplarDataImpl; import io.opentelemetry.sdk.metrics.data.LongExemplarData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java similarity index 68% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java index c5d5cf550..3130b9f12 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java @@ -1,6 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_ValueAtQuantileImpl; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java index e41ee0e26..d30441f6c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpans; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpansData; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ScopeSpan; @@ -12,7 +12,7 @@ public final class ResourceSpansDataMapper extends BaseResourceSignalsDataMapper< - SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { + SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { public static final ResourceSpansDataMapper INSTANCE = new ResourceSpansDataMapper(); diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java similarity index 65% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java index f1568440f..d019deb8e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ResourceSpansMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpans; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java similarity index 73% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java index ec7062150..69e5e167e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/ScopeSpansMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ScopeSpan; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java index b2625639d..32a05be81 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/SpanDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java @@ -1,14 +1,14 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.common.SpanContextMapping; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.EventDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.LinkDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.LinkDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.EventDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.LinkDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.SpanDataJson; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java similarity index 91% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java index 64cb40247..e16d0414b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/SpanDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java @@ -1,9 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.AutoValue_SpanDataImpl; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.EventData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java similarity index 76% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java index b3da248c1..7284dab7b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/EventDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java @@ -1,7 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.AutoValue_EventDataImpl; import io.opentelemetry.sdk.trace.data.EventData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java similarity index 76% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java index 1e779fe3f..d33a12deb 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/mapping/spans/models/data/LinkDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java @@ -1,8 +1,9 @@ -package io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.AutoValue_LinkDataImpl; import io.opentelemetry.sdk.trace.data.LinkData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index b036df11a..1d98e2d49 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.ResourceLogsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index 1ca352adb..e1b19d904 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.ResourceMetricsDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index ff653174e..d8003cf9e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.ResourceSpansDataMapper; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverterTest.java similarity index 98% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverterTest.java index 8c30e6073..444d6f9a4 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverterTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java similarity index 99% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java index 84b04ff67..f9a9968fb 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java index f8dad4f62..40ad9ff04 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -2,7 +2,7 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models.LogRecordDataImpl; import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffer.testutils.TestData; import io.opentelemetry.sdk.logs.data.Body; From cce475cb7b03b3c0649aba5453855b1c2966de28 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 19:26:11 +0200 Subject: [PATCH 022/209] Clean up imports --- .../serialization/mapping/logs/models/LogRecordDataImpl.java | 1 - .../serialization/mapping/metrics/models/MetricDataImpl.java | 1 - .../mapping/metrics/models/datapoints/DoublePointDataImpl.java | 1 - .../models/datapoints/ExponentialHistogramPointDataImpl.java | 1 - .../metrics/models/datapoints/HistogramPointDataImpl.java | 1 - .../mapping/metrics/models/datapoints/LongPointDataImpl.java | 1 - .../mapping/metrics/models/datapoints/SummaryPointDataImpl.java | 1 - .../metrics/models/datapoints/data/DoubleExemplarDataImpl.java | 1 - .../models/datapoints/data/ExponentialHistogramBucketsImpl.java | 1 - .../metrics/models/datapoints/data/LongExemplarDataImpl.java | 1 - .../metrics/models/datapoints/data/ValueAtQuantileImpl.java | 1 - .../serialization/mapping/spans/models/SpanDataImpl.java | 1 - .../serialization/mapping/spans/models/data/EventDataImpl.java | 1 - .../serialization/mapping/spans/models/data/LinkDataImpl.java | 1 - 14 files changed, 14 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java index ae700abd3..7a1a9de8a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java @@ -4,7 +4,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.logs.models.AutoValue_LogRecordDataImpl; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java index 54f846cb2..2c0752f5e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.AutoValue_MetricDataImpl; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.Data; import io.opentelemetry.sdk.metrics.data.MetricData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java index f909a7afe..5ce9775b6 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_DoublePointDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java index ee07bb78e..86b135ab0 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_ExponentialHistogramPointDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java index 23e3e6f0d..ee9535fe9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_HistogramPointDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java index e0d266a52..630783977 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_LongPointDataImpl; import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java index 408e19ac1..cd851713f 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.AutoValue_SummaryPointDataImpl; import io.opentelemetry.sdk.metrics.data.ExemplarData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java index 9aba8eb24..5a63a1d24 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_DoubleExemplarDataImpl; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java index 4a6eff221..5c7af3c31 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_ExponentialHistogramBucketsImpl; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java index 507f34480..a76838a43 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_LongExemplarDataImpl; import io.opentelemetry.sdk.metrics.data.LongExemplarData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java index 3130b9f12..fda638ec6 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.metrics.models.datapoints.data.AutoValue_ValueAtQuantileImpl; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java index e16d0414b..19cacaa8c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java @@ -4,7 +4,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.AutoValue_SpanDataImpl; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.EventData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java index 7284dab7b..0cc7a0bc9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java @@ -2,7 +2,6 @@ import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.AutoValue_EventDataImpl; import io.opentelemetry.sdk.trace.data.EventData; @AutoValue diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java index d33a12deb..ad5629d49 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java @@ -3,7 +3,6 @@ import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.contrib.disk.buffer.internal.mapping.spans.models.data.AutoValue_LinkDataImpl; import io.opentelemetry.sdk.trace.data.LinkData; @AutoValue From 36297c6a4e631cdf89cb5cc72192a11c432953bd Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 19:28:18 +0200 Subject: [PATCH 023/209] Reoarganizing json dtos --- .../common/BaseResourceSignalsDataMapper.java | 8 +++--- .../mapping/common/ResourceMapper.java | 2 +- .../converters/MetricDataJsonConverter.java | 22 ++++++++-------- .../mapping/logs/LogRecordMapper.java | 4 +-- .../mapping/logs/ResourceLogsDataMapper.java | 8 +++--- .../mapping/logs/ResourceLogsMapper.java | 2 +- .../mapping/logs/ScopeLogsMapper.java | 2 +- .../mapping/metrics/DataPointMapper.java | 16 ++++++------ .../mapping/metrics/MetricDataMapper.java | 12 ++++----- .../mapping/metrics/MetricMapper.java | 26 +++++++++---------- .../metrics/ResourceMetricsDataMapper.java | 8 +++--- .../metrics/ResourceMetricsMapper.java | 2 +- .../mapping/metrics/ScopeMetricsMapper.java | 2 +- .../spans/ResourceSpansDataMapper.java | 8 +++--- .../mapping/spans/ResourceSpansMapper.java | 2 +- .../mapping/spans/ScopeSpansMapper.java | 2 +- .../mapping/spans/SpanDataMapper.java | 8 +++--- .../{ => models}/common/ResourceJson.java | 2 +- .../{ => models}/common/ResourceSignals.java | 2 +- .../common/ResourceSignalsData.java | 2 +- .../{ => models}/common/ScopeJson.java | 2 +- .../{ => models}/common/ScopeSignals.java | 2 +- .../{ => models}/logs/BodyJson.java | 2 +- .../{ => models}/logs/LogRecordDataJson.java | 2 +- .../{ => models}/logs/ResourceLogs.java | 4 +-- .../{ => models}/logs/ResourceLogsData.java | 4 +-- .../{ => models}/logs/ScopeLogs.java | 4 +-- .../{ => models}/metrics/MetricDataJson.java | 4 +-- .../{ => models}/metrics/ResourceMetrics.java | 4 +-- .../metrics/ResourceMetricsData.java | 4 +-- .../{ => models}/metrics/ScopeMetrics.java | 4 +-- .../{ => models}/metrics/data/DataJson.java | 4 +-- .../metrics/data/ExponentialHistogram.java | 4 +-- .../{ => models}/metrics/data/Gauge.java | 4 +-- .../{ => models}/metrics/data/Histogram.java | 4 +-- .../{ => models}/metrics/data/Sum.java | 4 +-- .../{ => models}/metrics/data/Summary.java | 4 +-- .../metrics/datapoints/DataPoint.java | 2 +- .../ExponentialHistogramDataPoint.java | 6 ++--- .../datapoints/HistogramDataPoint.java | 4 +-- .../metrics/datapoints/NumberDataPoint.java | 4 +-- .../metrics/datapoints/SummaryDataPoint.java | 4 +-- .../metrics/datapoints/data/Buckets.java | 2 +- .../metrics/datapoints/data/Exemplar.java | 2 +- .../datapoints/data/QuantileValue.java | 2 +- .../impl/ExponentialHistogramMetric.java | 8 +++--- .../metrics/impl/GaugeMetric.java | 8 +++--- .../metrics/impl/HistogramMetric.java | 8 +++--- .../{ => models}/metrics/impl/SumMetric.java | 8 +++--- .../metrics/impl/SummaryMetric.java | 8 +++--- .../{ => models}/spans/EventDataJson.java | 2 +- .../{ => models}/spans/LinkDataJson.java | 2 +- .../{ => models}/spans/ResourceSpans.java | 4 +-- .../{ => models}/spans/ResourceSpansData.java | 4 +-- .../{ => models}/spans/ScopeSpan.java | 4 +-- .../{ => models}/spans/SpanDataJson.java | 2 +- .../{ => models}/spans/StatusDataJson.java | 2 +- .../serializers/LogRecordDataSerializer.java | 2 +- .../serializers/MetricDataSerializer.java | 2 +- .../serializers/SpanDataSerializer.java | 2 +- .../MetricDataJsonConverterTest.java | 22 ++++++++-------- 61 files changed, 157 insertions(+), 157 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/common/ResourceJson.java (93%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/common/ResourceSignals.java (96%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/common/ResourceSignalsData.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/common/ScopeJson.java (95%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/common/ScopeSignals.java (95%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/logs/BodyJson.java (93%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/logs/LogRecordDataJson.java (98%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/logs/ResourceLogs.java (93%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/logs/ResourceLogsData.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/logs/ScopeLogs.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/MetricDataJson.java (93%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/ResourceMetrics.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/ResourceMetricsData.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/ScopeMetrics.java (91%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/data/DataJson.java (90%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/data/ExponentialHistogram.java (84%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/data/Gauge.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/data/Histogram.java (85%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/data/Sum.java (87%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/data/Summary.java (77%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/DataPoint.java (94%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/ExponentialHistogramDataPoint.java (90%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/HistogramDataPoint.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/NumberDataPoint.java (93%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/SummaryDataPoint.java (88%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/data/Buckets.java (94%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/data/Exemplar.java (96%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/datapoints/data/QuantileValue.java (90%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/impl/ExponentialHistogramMetric.java (86%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/impl/GaugeMetric.java (86%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/impl/HistogramMetric.java (86%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/impl/SumMetric.java (86%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/metrics/impl/SummaryMetric.java (86%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/EventDataJson.java (96%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/LinkDataJson.java (96%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/ResourceSpans.java (93%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/ResourceSpansData.java (92%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/ScopeSpan.java (91%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/SpanDataJson.java (98%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{ => models}/spans/StatusDataJson.java (95%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java index 4f4d0a1f9..0cb1de8bf 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java @@ -1,9 +1,9 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.common.InstrumentationScopeInfoBuilder; import io.opentelemetry.sdk.resources.Resource; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java index 6b479a78e..d20b7e998 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceJson; import javax.annotation.Nullable; import org.mapstruct.Context; import org.mapstruct.Mapper; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java index f8d0c4f5f..017bc9e1a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java @@ -4,17 +4,17 @@ import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SummaryMetric; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java index 3279f27f7..6cd35580b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java @@ -6,8 +6,8 @@ import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.SpanContextMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models.LogRecordDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.BodyJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.LogRecordDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.BodyJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.LogRecordDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java index a60ff9aae..3fda92667 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java @@ -1,10 +1,10 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.LogRecordDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogs; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ScopeLogs; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.LogRecordDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogs; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ScopeLogs; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java index c840d23c5..4b7c11b89 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java @@ -2,7 +2,7 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogs; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogs; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java index 71dbc3c12..f81ffedf2 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ScopeLogs; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ScopeLogs; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java index f89012f98..6c847d89d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java @@ -13,14 +13,14 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.DataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.ExponentialHistogramDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.HistogramDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.SummaryDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.SummaryDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.QuantileValue; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.ExemplarData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java index bd0561eed..c2d779469 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -5,12 +5,12 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.Data; import io.opentelemetry.sdk.metrics.data.DoublePointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java index 7c8663767..7e65cd010 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java @@ -1,19 +1,19 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SummaryMetric; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricDataType; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java index e3c7ab137..9c36fe05d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java @@ -1,10 +1,10 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetrics; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetricsData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ScopeMetrics; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetrics; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ScopeMetrics; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.resources.Resource; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java index f672249f7..9964a84c4 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java @@ -2,7 +2,7 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetrics; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetrics; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java index cf12a5993..49ae09a8e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ScopeMetrics; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ScopeMetrics; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java index d30441f6c..64fdb2100 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java @@ -1,10 +1,10 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpans; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpansData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ScopeSpan; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.SpanDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpans; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ScopeSpan; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.SpanDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.SpanData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java index d019deb8e..f5cafe691 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java @@ -2,7 +2,7 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpans; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpans; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java index 69e5e167e..e17196f58 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ScopeSpan; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ScopeSpan; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java index 32a05be81..995c5b0a9 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java @@ -9,10 +9,10 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.SpanDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.EventDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.LinkDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.EventDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.LinkDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.SpanDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.StatusDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.EventDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.LinkDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.SpanDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.StatusDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.EventData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java similarity index 93% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java index d2a841776..3cdf22b2d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java similarity index 96% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java index 2afdb0386..4f154efb1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignalsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignalsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java index 62f3841f3..040774cde 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ResourceSignalsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; import java.util.Collection; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java similarity index 95% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java index 03aa263fa..a769c1617 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeSignals.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java similarity index 95% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeSignals.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java index efe63b606..4ebc510c1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/common/ScopeSignals.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.common; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/BodyJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java similarity index 93% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/BodyJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java index bf9c170a2..222c55e30 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/BodyJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java similarity index 98% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java index 151255279..a2602090d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/LogRecordDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java similarity index 93% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogs.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java index 08d867c1c..89807266b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogs.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java index 69d9f2b69..7d6b65edf 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ResourceLogsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ScopeLogs.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ScopeLogs.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java index 89ae45ae0..0a5b72ce1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/logs/ScopeLogs.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.logs; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/MetricDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java similarity index 93% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/MetricDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java index 980d8f95f..f9187b0da 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/MetricDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; import javax.annotation.Nullable; public abstract class MetricDataJson { diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetrics.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java index 74c8332e9..bc2f16c65 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetrics.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetricsData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetricsData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java index 9140419db..540a95351 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ResourceMetricsData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ScopeMetrics.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java similarity index 91% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ScopeMetrics.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java index 4647a582e..75abfba6b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/ScopeMetrics.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/DataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java similarity index 90% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/DataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java index 0c26f2195..5d4557b94 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/DataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.DataPoint; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/ExponentialHistogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java similarity index 84% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/ExponentialHistogram.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java index 92e694656..44afddb7e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/ExponentialHistogram.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java index 51a0e59b0..4c5eca337 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Gauge.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; @CompiledJson public final class Gauge extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Histogram.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java similarity index 85% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Histogram.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java index ba3a5fabd..640d6ca96 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Histogram.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.HistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Sum.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java similarity index 87% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Sum.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java index dd9a52713..3a9c820ad 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Sum.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java similarity index 77% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java index b4c940d47..9430a6fe7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/data/Summary.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.SummaryDataPoint; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.SummaryDataPoint; @CompiledJson public final class Summary extends DataJson {} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/DataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/DataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java index e0e49dda8..226316c9a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/DataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java similarity index 90% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java index 278791360..8cf2cb8dd 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/ExponentialHistogramDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -1,9 +1,9 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/HistogramDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/HistogramDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java index 39cafb271..bd4e6f8ee 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/HistogramDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/NumberDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java similarity index 93% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/NumberDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java index 3cf93719c..45230baac 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/NumberDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/SummaryDataPoint.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java similarity index 88% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/SummaryDataPoint.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java index 6effd84aa..2c219fd3a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/SummaryDataPoint.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.QuantileValue; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Buckets.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Buckets.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java index 978b46d10..984ac5c9a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Buckets.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import java.util.ArrayList; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Exemplar.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java similarity index 96% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Exemplar.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java index 9cc2047a4..0d9292a71 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/Exemplar.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/QuantileValue.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java similarity index 90% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/QuantileValue.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java index 2e1f58029..e484dd101 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/datapoints/data/QuantileValue.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/ExponentialHistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java similarity index 86% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/ExponentialHistogramMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java index 427c7f448..87897ada4 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/ExponentialHistogramMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/GaugeMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java similarity index 86% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/GaugeMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java index 76d2965f7..accff34c1 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/GaugeMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/HistogramMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java similarity index 86% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/HistogramMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java index 926cebc35..837b516be 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/HistogramMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SumMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java similarity index 86% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SumMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java index 050513117..7f48d343c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SumMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SummaryMetric.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java similarity index 86% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SummaryMetric.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java index 995eaa35b..d9b7b578c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/metrics/impl/SummaryMetric.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java similarity index 96% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java index b12fd75b5..517ae8af2 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/EventDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java similarity index 96% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java index c6a5c729a..f205cbac6 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/LinkDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpans.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java similarity index 93% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpans.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java index 4335110d1..0f2da7e12 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpans.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpansData.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java similarity index 92% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpansData.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java index b40e23113..52c928f84 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ResourceSpansData.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ScopeSpan.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java similarity index 91% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ScopeSpan.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java index 878609920..63ef80b32 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/ScopeSpan.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java similarity index 98% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java index dabf8caac..1752c9a20 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/SpanDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java similarity index 95% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java index f9b35e630..d08dc3cfd 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/spans/StatusDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.spans; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.trace.StatusCode; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index 1d98e2d49..869a34cab 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -2,7 +2,7 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.logs.ResourceLogsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index e1b19d904..dedd7a902 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -2,7 +2,7 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.ResourceMetricsData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; import java.io.IOException; import java.util.List; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index d8003cf9e..9d038c5ec 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -2,7 +2,7 @@ import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.spans.ResourceSpansData; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; import java.io.IOException; import java.util.List; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java index f9a9968fb..377b3f429 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java @@ -3,17 +3,17 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SummaryMetric; import io.opentelemetry.contrib.disk.buffer.testutils.BaseJsonSerializationTest; import org.junit.jupiter.api.Test; From f92ea017256bd811c89fd87d6c2b7ca17905bf17 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 19:30:30 +0200 Subject: [PATCH 024/209] Reorganizing json custom converters --- .../{mapping => }/converters/AttributesJsonConverter.java | 2 +- .../{mapping => }/converters/MetricDataJsonConverter.java | 2 +- .../{mapping => }/converters/AttributesJsonConverterTest.java | 2 +- .../{mapping => }/converters/MetricDataJsonConverterTest.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{mapping => }/converters/AttributesJsonConverter.java (99%) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{mapping => }/converters/MetricDataJsonConverter.java (99%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{mapping => }/converters/AttributesJsonConverterTest.java (98%) rename disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{mapping => }/converters/MetricDataJsonConverterTest.java (99%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java similarity index 99% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java index c14ad0301..a3cf017ce 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import com.dslplatform.json.BoolConverter; import com.dslplatform.json.JsonConverter; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java similarity index 99% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java index 017bc9e1a..44d742070 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java similarity index 98% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java index 444d6f9a4..8c30e6073 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/AttributesJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java similarity index 99% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java rename to disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java index 377b3f429..3477f583d 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/converters/MetricDataJsonConverterTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.converters; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; From c1a5935b6e2a9a5e347ff36e3bdb533d3e196f1c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 21:45:56 +0200 Subject: [PATCH 025/209] Using autovalue on metric point data implementation --- .../metrics/models/data/DataBuilder.java | 11 +++++ .../mapping/metrics/models/data/DataImpl.java | 15 ------- .../data/ExponentialHistogramDataImpl.java | 20 ++++++--- .../metrics/models/data/GaugeDataImpl.java | 30 +++++++++++-- .../models/data/HistogramDataImpl.java | 18 +++++--- .../metrics/models/data/SumDataImpl.java | 43 +++++++++++++------ .../metrics/models/data/SummaryDataImpl.java | 14 +++++- 7 files changed, 105 insertions(+), 46 deletions(-) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java delete mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java new file mode 100644 index 000000000..7db568feb --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java @@ -0,0 +1,11 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; + +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.sdk.metrics.data.PointData; +import java.util.Collection; + +public interface DataBuilder

> { + + @CanIgnoreReturnValue + T setPoints(Collection

value); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java deleted file mode 100644 index 3d52b60f1..000000000 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataImpl.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; - -import io.opentelemetry.sdk.metrics.data.Data; -import io.opentelemetry.sdk.metrics.data.PointData; -import java.util.ArrayList; -import java.util.Collection; - -public abstract class DataImpl implements Data { - public Collection points = new ArrayList<>(); - - @Override - public Collection getPoints() { - return points; - } -} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index f22c4e911..b0b9d5aa8 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -1,16 +1,22 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.Constants; +import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; -public final class ExponentialHistogramDataImpl extends DataImpl - implements ExponentialHistogramData { - public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; +@AutoValue +public abstract class ExponentialHistogramDataImpl implements ExponentialHistogramData { - @Override - public AggregationTemporality getAggregationTemporality() { - return aggregationTemporality; + public static Builder builder() { + return new AutoValue_ExponentialHistogramDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder + implements DataBuilder { + public abstract Builder setAggregationTemporality(AggregationTemporality value); + + public abstract ExponentialHistogramDataImpl build(); } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java index 161f53fb7..ac98390b7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java @@ -1,14 +1,36 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.GaugeData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.PointData; -public abstract class GaugeDataImpl extends DataImpl - implements GaugeData { +public abstract class GaugeDataImpl implements GaugeData { - public static class LongData extends GaugeDataImpl {} + @AutoValue + public abstract static class LongData extends GaugeDataImpl { - public static class DoubleData extends GaugeDataImpl {} + public static Builder builder() { + return new AutoValue_GaugeDataImpl_LongData.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements DataBuilder { + public abstract LongData build(); + } + } + + @AutoValue + public abstract static class DoubleData extends GaugeDataImpl { + + public static Builder builder() { + return new AutoValue_GaugeDataImpl_DoubleData.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements DataBuilder { + public abstract DoubleData build(); + } + } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index 464933216..4995128ea 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -1,15 +1,21 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.Constants; +import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; -public final class HistogramDataImpl extends DataImpl implements HistogramData { - public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; +@AutoValue +public abstract class HistogramDataImpl implements HistogramData { - @Override - public AggregationTemporality getAggregationTemporality() { - return aggregationTemporality; + public static Builder builder() { + return new AutoValue_HistogramDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements DataBuilder { + public abstract Builder setAggregationTemporality(AggregationTemporality value); + + public abstract HistogramDataImpl build(); } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index ea872813a..ba48e71c6 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -1,27 +1,44 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.Constants; +import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.PointData; import io.opentelemetry.sdk.metrics.data.SumData; -public abstract class SumDataImpl extends DataImpl implements SumData { - public Boolean monotonic = false; - public AggregationTemporality aggregationTemporality = Constants.DEFAULT_AGGREGATION_TEMPORALITY; +public abstract class SumDataImpl implements SumData { + @AutoValue + public abstract static class LongData extends SumDataImpl { - @Override - public boolean isMonotonic() { - return monotonic; - } + public static Builder builder() { + return new AutoValue_SumDataImpl_LongData.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements DataBuilder { + public abstract Builder setMonotonic(Boolean value); - @Override - public AggregationTemporality getAggregationTemporality() { - return aggregationTemporality; + public abstract Builder setAggregationTemporality(AggregationTemporality value); + + public abstract LongData build(); + } } - public static class LongData extends SumDataImpl {} + @AutoValue + public abstract static class DoubleData extends SumDataImpl { + + public static Builder builder() { + return new AutoValue_SumDataImpl_DoubleData.Builder(); + } - public static class DoubleData extends SumDataImpl {} + @AutoValue.Builder + public abstract static class Builder implements DataBuilder { + public abstract Builder setMonotonic(Boolean value); + + public abstract Builder setAggregationTemporality(AggregationTemporality value); + + public abstract DoubleData build(); + } + } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java index 1ea8ad2dd..424397499 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java @@ -1,6 +1,18 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; -public final class SummaryDataImpl extends DataImpl implements SummaryData {} +@AutoValue +public abstract class SummaryDataImpl implements SummaryData { + + public static Builder builder() { + return new AutoValue_SummaryDataImpl.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder implements DataBuilder { + public abstract SummaryDataImpl build(); + } +} From dbd58d1f5c2bbe308b5021650789745e2260416a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 21:52:32 +0200 Subject: [PATCH 026/209] Abstracting common metric data point builder methods --- .../data/ExponentialHistogramDataImpl.java | 8 +++---- .../metrics/models/data/GaugeDataImpl.java | 1 + .../models/data/HistogramDataImpl.java | 8 +++---- .../metrics/models/data/SumDataImpl.java | 22 +++++++++---------- .../metrics/models/data/SummaryDataImpl.java | 1 + .../base/AggregationTemporalityBuilder.java | 10 +++++++++ .../models/data/{ => base}/DataBuilder.java | 2 +- .../models/data/base/MonotonicBuilder.java | 9 ++++++++ 8 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/{ => base}/DataBuilder.java (90%) create mode 100644 disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index b0b9d5aa8..121f0550b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -1,7 +1,8 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; @@ -14,9 +15,8 @@ public static Builder builder() { @AutoValue.Builder public abstract static class Builder - implements DataBuilder { - public abstract Builder setAggregationTemporality(AggregationTemporality value); - + implements DataBuilder, + AggregationTemporalityBuilder { public abstract ExponentialHistogramDataImpl build(); } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java index ac98390b7..d9a1e222d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java @@ -1,6 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.GaugeData; import io.opentelemetry.sdk.metrics.data.LongPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index 4995128ea..3e549bbe2 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -1,7 +1,8 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; @@ -13,9 +14,8 @@ public static Builder builder() { } @AutoValue.Builder - public abstract static class Builder implements DataBuilder { - public abstract Builder setAggregationTemporality(AggregationTemporality value); - + public abstract static class Builder + implements DataBuilder, AggregationTemporalityBuilder { public abstract HistogramDataImpl build(); } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index ba48e71c6..99492e34c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -1,7 +1,9 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.MonotonicBuilder; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.PointData; @@ -16,11 +18,10 @@ public static Builder builder() { } @AutoValue.Builder - public abstract static class Builder implements DataBuilder { - public abstract Builder setMonotonic(Boolean value); - - public abstract Builder setAggregationTemporality(AggregationTemporality value); - + public abstract static class Builder + implements DataBuilder, + AggregationTemporalityBuilder, + MonotonicBuilder { public abstract LongData build(); } } @@ -33,11 +34,10 @@ public static Builder builder() { } @AutoValue.Builder - public abstract static class Builder implements DataBuilder { - public abstract Builder setMonotonic(Boolean value); - - public abstract Builder setAggregationTemporality(AggregationTemporality value); - + public abstract static class Builder + implements DataBuilder, + AggregationTemporalityBuilder, + MonotonicBuilder { public abstract DoubleData build(); } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java index 424397499..6899ad0bc 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java @@ -1,6 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java new file mode 100644 index 000000000..32b2c4404 --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java @@ -0,0 +1,10 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base; + +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; + +public interface AggregationTemporalityBuilder> { + + @CanIgnoreReturnValue + T setAggregationTemporality(AggregationTemporality value); +} diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java similarity index 90% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java index 7db568feb..d3ff81b7d 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/DataBuilder.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.sdk.metrics.data.PointData; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java new file mode 100644 index 000000000..4e705542a --- /dev/null +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java @@ -0,0 +1,9 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base; + +import com.google.errorprone.annotations.CanIgnoreReturnValue; + +public interface MonotonicBuilder> { + + @CanIgnoreReturnValue + T setMonotonic(Boolean value); +} From 62e459877129f3d04b587896000d4550f48062c7 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:31:39 +0200 Subject: [PATCH 027/209] Validating metrics serialization --- .../serializers/MetricDataSerializerTest.java | 264 ++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java new file mode 100644 index 000000000..2182bf908 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java @@ -0,0 +1,264 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; +import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.data.GaugeData; +import io.opentelemetry.sdk.metrics.data.HistogramData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.metrics.data.SumData; +import io.opentelemetry.sdk.metrics.data.SummaryData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import java.util.Arrays; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +class MetricDataSerializerTest extends BaseSignalSerializerTest { + + private static final LongExemplarData LONG_EXEMPLAR_DATA = + LongExemplarDataImpl.builder() + .setValue(1L) + .setEpochNanos(100L) + .setFilteredAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT) + .build(); + + private static final DoubleExemplarData DOUBLE_EXEMPLAR_DATA = + DoubleExemplarDataImpl.builder() + .setValue(1.0) + .setEpochNanos(100L) + .setFilteredAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT) + .build(); + private static final LongPointData LONG_POINT_DATA = + LongPointDataImpl.builder() + .setValue(1L) + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(2L) + .setStartEpochNanos(1L) + .setExemplars(Collections.singletonList(LONG_EXEMPLAR_DATA)) + .build(); + + private static final DoublePointData DOUBLE_POINT_DATA = + DoublePointDataImpl.builder() + .setValue(1.0) + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(2L) + .setStartEpochNanos(1L) + .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) + .build(); + + private static final GaugeData LONG_GAUGE_DATA = + GaugeDataImpl.LongData.builder() + .setPoints(Collections.singletonList(LONG_POINT_DATA)) + .build(); + + private static final GaugeData DOUBLE_GAUGE_DATA = + GaugeDataImpl.DoubleData.builder() + .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) + .build(); + + private static final SumData LONG_SUM_DATA = + SumDataImpl.LongData.builder() + .setMonotonic(true) + .setAggregationTemporality(AggregationTemporality.DELTA) + .setPoints(Collections.singletonList(LONG_POINT_DATA)) + .build(); + + private static final SumData DOUBLE_SUM_DATA = + SumDataImpl.DoubleData.builder() + .setMonotonic(true) + .setAggregationTemporality(AggregationTemporality.DELTA) + .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) + .build(); + + private static final ValueAtQuantileImpl VALUE_AT_QUANTILE = + ValueAtQuantileImpl.builder().setValue(1.0).setQuantile(2.0).build(); + private static final SummaryPointData SUMMARY_POINT_DATA = + SummaryPointDataImpl.builder() + .setCount(1L) + .setSum(2.0) + .setStartEpochNanos(1L) + .setEpochNanos(2L) + .setAttributes(TestData.ATTRIBUTES) + .setValues(Collections.singletonList(VALUE_AT_QUANTILE)) + .build(); + + private static final SummaryData SUMMARY_DATA = + SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); + + private static final HistogramPointData HISTOGRAM_POINT_DATA = + HistogramPointDataImpl.builder() + .setCount(3L) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEpochNanos(2L) + .setSum(15.0) + .setMin(4.0) + .setMax(7.0) + .setBoundaries(Collections.singletonList(10.0)) + .setCounts(Arrays.asList(1L, 2L)) + .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) + .build(); + + private static final ExponentialHistogramBuckets POSITIVE_BUCKET = + ExponentialHistogramBucketsImpl.builder() + .setBucketCounts(Arrays.asList(1L, 10L)) + .setTotalCount(11L) + .setOffset(10) + .setScale(1) + .build(); + + private static final ExponentialHistogramBuckets NEGATIVE_BUCKET = + ExponentialHistogramBucketsImpl.builder() + .setBucketCounts(Collections.emptyList()) + .setTotalCount(0L) + .setOffset(0) + .setScale(1) + .build(); + + private static final ExponentialHistogramPointData EXPONENTIAL_HISTOGRAM_POINT_DATA = + ExponentialHistogramPointDataImpl.builder() + .setCount(1L) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEpochNanos(2L) + .setSum(10.0) + .setMin(2.0) + .setMax(4.0) + .setZeroCount(1L) + .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) + .setPositiveBuckets(POSITIVE_BUCKET) + .setNegativeBuckets(NEGATIVE_BUCKET) + .setScale(1) + .build(); + private static final HistogramData HISTOGRAM_DATA = + HistogramDataImpl.builder() + .setAggregationTemporality(AggregationTemporality.CUMULATIVE) + .setPoints(Collections.singletonList(HISTOGRAM_POINT_DATA)) + .build(); + + private static final ExponentialHistogramData EXPONENTIAL_HISTOGRAM_DATA = + ExponentialHistogramDataImpl.builder() + .setAggregationTemporality(AggregationTemporality.CUMULATIVE) + .setPoints(Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)) + .build(); + + private static final MetricData LONG_GAUGE_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Long gauge name") + .setDescription("Long gauge description") + .setUnit("ms") + .setType(MetricDataType.LONG_GAUGE) + .setData(LONG_GAUGE_DATA) + .build(); + + private static final MetricData DOUBLE_GAUGE_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Double gauge name") + .setDescription("Double gauge description") + .setUnit("ms") + .setType(MetricDataType.DOUBLE_GAUGE) + .setData(DOUBLE_GAUGE_DATA) + .build(); + + private static final MetricData LONG_SUM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Long sum name") + .setDescription("Long sum description") + .setUnit("ms") + .setType(MetricDataType.LONG_SUM) + .setData(LONG_SUM_DATA) + .build(); + + private static final MetricData DOUBLE_SUM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Double sum name") + .setDescription("Double sum description") + .setUnit("ms") + .setType(MetricDataType.DOUBLE_SUM) + .setData(DOUBLE_SUM_DATA) + .build(); + + private static final MetricData SUMMARY_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Summary name") + .setDescription("Summary description") + .setUnit("ms") + .setType(MetricDataType.SUMMARY) + .setData(SUMMARY_DATA) + .build(); + + private static final MetricData HISTOGRAM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Histogram name") + .setDescription("Histogram description") + .setUnit("ms") + .setType(MetricDataType.HISTOGRAM) + .setData(HISTOGRAM_DATA) + .build(); + + private static final MetricData EXPONENTIAL_HISTOGRAM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Exponential histogram name") + .setDescription("Exponential histogram description") + .setUnit("ms") + .setType(MetricDataType.EXPONENTIAL_HISTOGRAM) + .setData(EXPONENTIAL_HISTOGRAM_DATA) + .build(); + + @Test + public void verifySerialization() { + assertSerialization( + LONG_GAUGE_METRIC, + DOUBLE_GAUGE_METRIC, + LONG_SUM_METRIC, + DOUBLE_SUM_METRIC, + SUMMARY_METRIC, + HISTOGRAM_METRIC, + EXPONENTIAL_HISTOGRAM_METRIC); + } + + @Override + protected SignalSerializer getSerializer() { + return SignalSerializer.ofMetrics(); + } +} From 10a4a7cd2126029224d47d4227114d43f236c882 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:39:33 +0200 Subject: [PATCH 028/209] Validating spans serialization --- .../serializers/SpanDataSerializerTest.java | 61 +++++++++++++++++++ .../disk/buffer/testutils/TestData.java | 4 ++ 2 files changed, 65 insertions(+) create mode 100644 disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java new file mode 100644 index 000000000..2ab6be0b6 --- /dev/null +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java @@ -0,0 +1,61 @@ +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; + +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.LinkDataImpl; +import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; +import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.LinkData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +class SpanDataSerializerTest extends BaseSignalSerializerTest { + + private static final EventData EVENT_DATA = + EventDataImpl.builder() + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(1L) + .setName("Event name") + .setTotalAttributeCount(10) + .build(); + + private static final LinkData LINK_DATA = + LinkDataImpl.builder() + .setAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT) + .setTotalAttributeCount(20) + .build(); + + private static final SpanData SPAN_DATA = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Span name") + .setSpanContext(TestData.SPAN_CONTEXT) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Collections.singletonList(LINK_DATA)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + @Test + public void verifySerialization() { + assertSerialization(SPAN_DATA); + } + + @Override + protected SignalSerializer getSerializer() { + return SignalSerializer.ofSpans(); + } +} diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java index 99bdb9dc0..d95a2ed48 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java @@ -11,6 +11,7 @@ public final class TestData { public static final String TRACE_ID = "b535b3b5232b5dabced5b0ab8037eb78"; public static final String SPAN_ID = "f3fc364fb6b77cff"; + public static final String PARENT_SPAN_ID = "d3fc364fb6b77cfa"; public static final Attributes ATTRIBUTES = Attributes.builder() .put("bear", "mya") @@ -30,6 +31,9 @@ public final class TestData { public static final SpanContext SPAN_CONTEXT = SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()); + public static final SpanContext PARENT_SPAN_CONTEXT = + SpanContext.create( + TRACE_ID, PARENT_SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()); public static final InstrumentationScopeInfo INSTRUMENTATION_SCOPE_INFO_FULL = InstrumentationScopeInfo.builder("Instrumentation scope name") .setVersion("1.2.3") From d84d32925968901cd6152ad13f3e830f007f0703 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:45:23 +0200 Subject: [PATCH 029/209] Renaming Serializer to JsonSerializer --- .../serialization/{Serializer.java => JsonSerializer.java} | 4 ++-- .../serialization/converters/MetricDataJsonConverter.java | 6 +++--- .../serialization/serializers/LogRecordDataSerializer.java | 6 +++--- .../serialization/serializers/MetricDataSerializer.java | 6 +++--- .../serialization/serializers/SpanDataSerializer.java | 6 +++--- .../disk/buffer/testutils/BaseJsonSerializationTest.java | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{Serializer.java => JsonSerializer.java} (94%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/JsonSerializer.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/JsonSerializer.java index c028d29da..22e52a198 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/JsonSerializer.java @@ -8,12 +8,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; -public final class Serializer { +public final class JsonSerializer { private static final DslJson dslJson = new DslJson<>(Settings.basicSetup().skipDefaultValues(true)); - private Serializer() {} + private JsonSerializer() {} public static JsonReader.ReadObject tryFindReader(Class manifest) { return dslJson.tryFindReader(manifest); diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java index 44d742070..ef8549e6e 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java @@ -3,7 +3,7 @@ import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; @@ -101,7 +101,7 @@ public static void write(JsonWriter writer, MetricDataJson value) { private static JsonReader.ReadObject getReader(Class type) { JsonReader.ReadObject reader = READERS.get(type); if (reader == null) { - reader = Serializer.tryFindReader(type); + reader = JsonSerializer.tryFindReader(type); READERS.put(type, reader); } @@ -111,7 +111,7 @@ private static JsonReader.ReadObject getReader(Class type) { private static JsonWriter.WriteObject getWriter(Class type) { JsonWriter.WriteObject writer = WRITERS.get(type); if (writer == null) { - writer = Serializer.tryFindWriter(type); + writer = JsonSerializer.tryFindWriter(type); WRITERS.put(type, writer); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index 869a34cab..d1ee99a16 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; @@ -23,7 +23,7 @@ static LogRecordDataSerializer get() { @Override public byte[] serialize(List logRecordData) { try { - return Serializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); + return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +33,7 @@ public byte[] serialize(List logRecordData) { public List deserialize(byte[] source) { try { return ResourceLogsDataMapper.INSTANCE.fromJsonDto( - Serializer.deserialize(ResourceLogsData.class, source)); + JsonSerializer.deserialize(ResourceLogsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index dedd7a902..fa2f63837 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; import java.io.IOException; @@ -23,7 +23,7 @@ static MetricDataSerializer get() { @Override public byte[] serialize(List metricData) { try { - return Serializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); + return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +33,7 @@ public byte[] serialize(List metricData) { public List deserialize(byte[] source) { try { return ResourceMetricsDataMapper.INSTANCE.fromJsonDto( - Serializer.deserialize(ResourceMetricsData.class, source)); + JsonSerializer.deserialize(ResourceMetricsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index 9d038c5ec..33e565eff 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; import java.io.IOException; @@ -23,7 +23,7 @@ static SpanDataSerializer get() { @Override public byte[] serialize(List spanData) { try { - return Serializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); + return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +33,7 @@ public byte[] serialize(List spanData) { public List deserialize(byte[] source) { try { return ResourceSpansDataMapper.INSTANCE.fromJsonDto( - Serializer.deserialize(ResourceSpansData.class, source)); + JsonSerializer.deserialize(ResourceSpansData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java index c489113a5..e06930517 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java @@ -1,12 +1,12 @@ package io.opentelemetry.contrib.disk.buffer.testutils; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { protected byte[] serialize(T item) { try { - return Serializer.serialize(item); + return JsonSerializer.serialize(item); } catch (IOException e) { throw new RuntimeException(e); } @@ -14,7 +14,7 @@ protected byte[] serialize(T item) { protected T deserialize(byte[] json) { try { - return Serializer.deserialize(getTargetClass(), json); + return JsonSerializer.deserialize(getTargetClass(), json); } catch (IOException e) { throw new RuntimeException(e); } From 300479f9b29bfe85013c11f8abe76d96d40b865c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:52:10 +0200 Subject: [PATCH 030/209] Revert "Renaming Serializer to JsonSerializer" This reverts commit d84d32925968901cd6152ad13f3e830f007f0703. --- .../serialization/{JsonSerializer.java => Serializer.java} | 4 ++-- .../serialization/converters/MetricDataJsonConverter.java | 6 +++--- .../serialization/serializers/LogRecordDataSerializer.java | 6 +++--- .../serialization/serializers/MetricDataSerializer.java | 6 +++--- .../serialization/serializers/SpanDataSerializer.java | 6 +++--- .../disk/buffer/testutils/BaseJsonSerializationTest.java | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{JsonSerializer.java => Serializer.java} (94%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/JsonSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java similarity index 94% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/JsonSerializer.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java index 22e52a198..c028d29da 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/JsonSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java @@ -8,12 +8,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; -public final class JsonSerializer { +public final class Serializer { private static final DslJson dslJson = new DslJson<>(Settings.basicSetup().skipDefaultValues(true)); - private JsonSerializer() {} + private Serializer() {} public static JsonReader.ReadObject tryFindReader(Class manifest) { return dslJson.tryFindReader(manifest); diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java index ef8549e6e..44d742070 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java @@ -3,7 +3,7 @@ import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; @@ -101,7 +101,7 @@ public static void write(JsonWriter writer, MetricDataJson value) { private static JsonReader.ReadObject getReader(Class type) { JsonReader.ReadObject reader = READERS.get(type); if (reader == null) { - reader = JsonSerializer.tryFindReader(type); + reader = Serializer.tryFindReader(type); READERS.put(type, reader); } @@ -111,7 +111,7 @@ private static JsonReader.ReadObject getReader(Class type) { private static JsonWriter.WriteObject getWriter(Class type) { JsonWriter.WriteObject writer = WRITERS.get(type); if (writer == null) { - writer = JsonSerializer.tryFindWriter(type); + writer = Serializer.tryFindWriter(type); WRITERS.put(type, writer); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index d1ee99a16..869a34cab 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; @@ -23,7 +23,7 @@ static LogRecordDataSerializer get() { @Override public byte[] serialize(List logRecordData) { try { - return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); + return Serializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +33,7 @@ public byte[] serialize(List logRecordData) { public List deserialize(byte[] source) { try { return ResourceLogsDataMapper.INSTANCE.fromJsonDto( - JsonSerializer.deserialize(ResourceLogsData.class, source)); + Serializer.deserialize(ResourceLogsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index fa2f63837..dedd7a902 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; import java.io.IOException; @@ -23,7 +23,7 @@ static MetricDataSerializer get() { @Override public byte[] serialize(List metricData) { try { - return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); + return Serializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +33,7 @@ public byte[] serialize(List metricData) { public List deserialize(byte[] source) { try { return ResourceMetricsDataMapper.INSTANCE.fromJsonDto( - JsonSerializer.deserialize(ResourceMetricsData.class, source)); + Serializer.deserialize(ResourceMetricsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index 33e565eff..9d038c5ec 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; import java.io.IOException; @@ -23,7 +23,7 @@ static SpanDataSerializer get() { @Override public byte[] serialize(List spanData) { try { - return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); + return Serializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +33,7 @@ public byte[] serialize(List spanData) { public List deserialize(byte[] source) { try { return ResourceSpansDataMapper.INSTANCE.fromJsonDto( - JsonSerializer.deserialize(ResourceSpansData.class, source)); + Serializer.deserialize(ResourceSpansData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java index e06930517..c489113a5 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java @@ -1,12 +1,12 @@ package io.opentelemetry.contrib.disk.buffer.testutils; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.JsonSerializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { protected byte[] serialize(T item) { try { - return JsonSerializer.serialize(item); + return Serializer.serialize(item); } catch (IOException e) { throw new RuntimeException(e); } @@ -14,7 +14,7 @@ protected byte[] serialize(T item) { protected T deserialize(byte[] json) { try { - return JsonSerializer.deserialize(getTargetClass(), json); + return Serializer.deserialize(getTargetClass(), json); } catch (IOException e) { throw new RuntimeException(e); } From 699f4582dcc52c9320862afd12a5afec1c11f947 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 08:03:45 +0200 Subject: [PATCH 031/209] Clean up --- .../serialization/serializers/LogRecordDataSerializer.java | 2 +- .../serialization/serializers/MetricDataSerializer.java | 2 +- .../internal/serialization/serializers/SpanDataSerializer.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index 869a34cab..d7c7655fb 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index dedd7a902..3ba3cac4c 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; import java.io.IOException; diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index 9d038c5ec..379abbaff 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; import java.io.IOException; From 97aa0dffa8e9d46651284d96a6197caf445ced8c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 08:33:28 +0200 Subject: [PATCH 032/209] Adding traceState when serializing span links --- .../serialization/mapping/spans/SpanDataMapper.java | 13 ++++++++++--- .../serialization/models/spans/LinkDataJson.java | 4 ++++ .../serializers/SpanDataSerializerTest.java | 10 +++++++++- .../contrib/disk/buffer/testutils/TestData.java | 6 ++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java index 995c5b0a9..460191f61 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java @@ -5,6 +5,7 @@ import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.api.trace.propagation.internal.W3CTraceContextEncoding; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.SpanContextMapping; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.SpanDataImpl; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.EventDataImpl; @@ -42,6 +43,7 @@ public abstract class SpanDataMapper { @SpanContextMapping @Mapping(target = "droppedAttributesCount", ignore = true) + @Mapping(target = "traceState", ignore = true) protected abstract LinkDataJson linkDataToJson(LinkData source); @AfterMapping @@ -59,8 +61,10 @@ private static int getListSize(List list) { } @AfterMapping - protected void addDroppedAttributesCount(LinkData source, @MappingTarget LinkDataJson target) { + protected void addLinkExtras(LinkData source, @MappingTarget LinkDataJson target) { target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); + target.traceState = + W3CTraceContextEncoding.encodeTraceState(source.getSpanContext().getTraceState()); } protected Integer mapSpanKindToJson(SpanKind value) { @@ -140,9 +144,12 @@ protected void addLinkDataJsonExtras( LinkDataJson source, @MappingTarget LinkDataImpl.Builder target) { target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); if (source.traceId != null && source.spanId != null) { + TraceState traceState = + (source.traceState == null || source.traceState.isEmpty()) + ? TraceState.getDefault() + : W3CTraceContextEncoding.decodeTraceState(source.traceState); target.setSpanContext( - SpanContext.create( - source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); + SpanContext.create(source.traceId, source.spanId, TraceFlags.getSampled(), traceState)); } } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java index f205cbac6..3e3cbc82f 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java @@ -14,6 +14,10 @@ public final class LinkDataJson { @JsonAttribute(name = "spanId") public String spanId; + @Nullable + @JsonAttribute(name = "traceState") + public String traceState; + @JsonAttribute(name = "attributes") public Attributes attributes = Attributes.empty(); diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java index 2ab6be0b6..669e03f98 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java @@ -10,6 +10,7 @@ import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.Arrays; import java.util.Collections; import org.junit.jupiter.api.Test; @@ -30,6 +31,13 @@ class SpanDataSerializerTest extends BaseSignalSerializerTest { .setTotalAttributeCount(20) .build(); + private static final LinkData LINK_DATA_WITH_TRACE_STATE = + LinkDataImpl.builder() + .setAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT_WITH_TRACE_STATE) + .setTotalAttributeCount(20) + .build(); + private static final SpanData SPAN_DATA = SpanDataImpl.builder() .setResource(TestData.RESOURCE_FULL) @@ -43,7 +51,7 @@ class SpanDataSerializerTest extends BaseSignalSerializerTest { .setKind(SpanKind.CLIENT) .setStatus(StatusData.error()) .setEvents(Collections.singletonList(EVENT_DATA)) - .setLinks(Collections.singletonList(LINK_DATA)) + .setLinks(Arrays.asList(LINK_DATA, LINK_DATA_WITH_TRACE_STATE)) .setTotalAttributeCount(10) .setTotalRecordedEvents(2) .setTotalRecordedLinks(2) diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java index d95a2ed48..d1730e741 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java @@ -31,6 +31,12 @@ public final class TestData { public static final SpanContext SPAN_CONTEXT = SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()); + public static final SpanContext SPAN_CONTEXT_WITH_TRACE_STATE = + SpanContext.create( + TRACE_ID, + SPAN_ID, + TraceFlags.getSampled(), + TraceState.builder().put("aaa", "bbb").put("ccc", "ddd").build()); public static final SpanContext PARENT_SPAN_CONTEXT = SpanContext.create( TRACE_ID, PARENT_SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()); From 1e626984d6de181c9f86792673548d7c35ac6da0 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 08:36:03 +0200 Subject: [PATCH 033/209] Avoiding to serialize link traceState when it's empty --- .../serialization/mapping/spans/SpanDataMapper.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java index 460191f61..81ddbd98b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java @@ -63,8 +63,10 @@ private static int getListSize(List list) { @AfterMapping protected void addLinkExtras(LinkData source, @MappingTarget LinkDataJson target) { target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); - target.traceState = - W3CTraceContextEncoding.encodeTraceState(source.getSpanContext().getTraceState()); + TraceState traceState = source.getSpanContext().getTraceState(); + if (!traceState.isEmpty()) { + target.traceState = W3CTraceContextEncoding.encodeTraceState(traceState); + } } protected Integer mapSpanKindToJson(SpanKind value) { From 89e4376d39953b0c1b57cfd6767a74a2d2bee2f6 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 08:50:11 +0200 Subject: [PATCH 034/209] Adding traceState serialization support for spans --- .../mapping/spans/SpanDataMapper.java | 36 +++++++++++++------ .../models/spans/SpanDataJson.java | 4 +++ .../serializers/SpanDataSerializerTest.java | 21 ++++++++++- 3 files changed, 50 insertions(+), 11 deletions(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java index 81ddbd98b..97b5ca48b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java @@ -39,6 +39,7 @@ public abstract class SpanDataMapper { @Mapping(target = "droppedAttributesCount", ignore = true) @Mapping(target = "droppedEventsCount", ignore = true) @Mapping(target = "droppedLinksCount", ignore = true) + @Mapping(target = "traceState", ignore = true) public abstract SpanDataJson spanDataToJson(SpanData source); @SpanContextMapping @@ -47,10 +48,11 @@ public abstract class SpanDataMapper { protected abstract LinkDataJson linkDataToJson(LinkData source); @AfterMapping - protected void addDroppedCount(SpanData source, @MappingTarget SpanDataJson target) { + protected void addSpanDataJsonExtras(SpanData source, @MappingTarget SpanDataJson target) { target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); target.droppedEventsCount = source.getTotalRecordedEvents() - getListSize(source.getEvents()); target.droppedLinksCount = source.getTotalRecordedLinks() - getListSize(source.getLinks()); + target.traceState = encodeTraceState(source.getSpanContext().getTraceState()); } private static int getListSize(List list) { @@ -63,10 +65,15 @@ private static int getListSize(List list) { @AfterMapping protected void addLinkExtras(LinkData source, @MappingTarget LinkDataJson target) { target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); - TraceState traceState = source.getSpanContext().getTraceState(); + target.traceState = encodeTraceState(source.getSpanContext().getTraceState()); + } + + @Nullable + private static String encodeTraceState(TraceState traceState) { if (!traceState.isEmpty()) { - target.traceState = W3CTraceContextEncoding.encodeTraceState(traceState); + return W3CTraceContextEncoding.encodeTraceState(traceState); } + return null; } protected Integer mapSpanKindToJson(SpanKind value) { @@ -101,7 +108,7 @@ public abstract SpanData jsonToSpanData( protected abstract EventData jsonToEventData(EventDataJson source); @AfterMapping - protected void addSpanDataJsonExtras( + protected void addSpanDataExtras( SpanDataJson source, @MappingTarget SpanDataImpl.Builder target, @Context Resource resource, @@ -112,7 +119,10 @@ protected void addSpanDataJsonExtras( if (source.spanId != null) { target.setSpanContext( SpanContext.create( - source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); + source.traceId, + source.spanId, + TraceFlags.getSampled(), + decodeTraceState(source.traceState))); } if (source.parentSpanId != null) { target.setParentSpanContext( @@ -146,15 +156,21 @@ protected void addLinkDataJsonExtras( LinkDataJson source, @MappingTarget LinkDataImpl.Builder target) { target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); if (source.traceId != null && source.spanId != null) { - TraceState traceState = - (source.traceState == null || source.traceState.isEmpty()) - ? TraceState.getDefault() - : W3CTraceContextEncoding.decodeTraceState(source.traceState); target.setSpanContext( - SpanContext.create(source.traceId, source.spanId, TraceFlags.getSampled(), traceState)); + SpanContext.create( + source.traceId, + source.spanId, + TraceFlags.getSampled(), + decodeTraceState(source.traceState))); } } + private static TraceState decodeTraceState(@Nullable String source) { + return (source == null || source.isEmpty()) + ? TraceState.getDefault() + : W3CTraceContextEncoding.decodeTraceState(source); + } + protected StatusData jsonToStatusData(StatusDataJson source) { return StatusData.create(getStatusCode(source.statusCode), source.description); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java index 1752c9a20..40f56614a 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java @@ -18,6 +18,10 @@ public final class SpanDataJson { @JsonAttribute(name = "parentSpanId") public String parentSpanId; + @Nullable + @JsonAttribute(name = "traceState") + public String traceState; + @Nullable @JsonAttribute(name = "name") public String name; diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java index 669e03f98..1da1c082f 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java @@ -57,9 +57,28 @@ class SpanDataSerializerTest extends BaseSignalSerializerTest { .setTotalRecordedLinks(2) .build(); + private static final SpanData SPAN_DATA_WITH_TRACE_STATE = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Span name2") + .setSpanContext(TestData.SPAN_CONTEXT_WITH_TRACE_STATE) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Collections.singletonList(LINK_DATA)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + @Test public void verifySerialization() { - assertSerialization(SPAN_DATA); + assertSerialization(SPAN_DATA, SPAN_DATA_WITH_TRACE_STATE); } @Override From 5b708d68919704e1175df154677d72d91f0728dc Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:14:26 +0200 Subject: [PATCH 035/209] Manually registering generated json configurations --- .../internal/serialization/Serializer.java | 80 ++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java index c028d29da..ae339e028 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java @@ -4,6 +4,44 @@ import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; import com.dslplatform.json.runtime.Settings; +import io.opentelemetry.api.common._Attributes_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common._ResourceJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common._ResourceSignals_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common._ScopeJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._BodyJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._LogRecordDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._ResourceLogsData_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._ResourceLogs_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._ScopeLogs_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._MetricDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._ResourceMetricsData_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._ResourceMetrics_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._ScopeMetrics_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._DataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._ExponentialHistogram_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Gauge_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Histogram_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Sum_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Summary_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._ExponentialHistogramDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._HistogramDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._NumberDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._SummaryDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data._Buckets_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data._Exemplar_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data._QuantileValue_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._ExponentialHistogramMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._GaugeMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._HistogramMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._SumMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._SummaryMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._EventDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._LinkDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._ResourceSpansData_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._ResourceSpans_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._ScopeSpan_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._SpanDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._StatusDataJson_DslJsonConverter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -11,7 +49,47 @@ public final class Serializer { private static final DslJson dslJson = - new DslJson<>(Settings.basicSetup().skipDefaultValues(true)); + new DslJson<>( + Settings.withAnalyzers(/* unknownReader= */ false, /* unknownWriter= */ false) + .skipDefaultValues(true) + .with(new _Attributes_DslJsonConverter()) + .with(new _BodyJson_DslJsonConverter()) + .with(new _Buckets_DslJsonConverter()) + .with(new _DataJson_DslJsonConverter()) + .with(new _EventDataJson_DslJsonConverter()) + .with(new _Exemplar_DslJsonConverter()) + .with(new _ExponentialHistogramDataPoint_DslJsonConverter()) + .with(new _ExponentialHistogramMetric_DslJsonConverter()) + .with(new _ExponentialHistogram_DslJsonConverter()) + .with(new _GaugeMetric_DslJsonConverter()) + .with(new _Gauge_DslJsonConverter()) + .with(new _HistogramDataPoint_DslJsonConverter()) + .with(new _HistogramMetric_DslJsonConverter()) + .with(new _Histogram_DslJsonConverter()) + .with(new _LinkDataJson_DslJsonConverter()) + .with(new _LogRecordDataJson_DslJsonConverter()) + .with(new _MetricDataJson_DslJsonConverter()) + .with(new _NumberDataPoint_DslJsonConverter()) + .with(new _QuantileValue_DslJsonConverter()) + .with(new _ResourceJson_DslJsonConverter()) + .with(new _ResourceLogsData_DslJsonConverter()) + .with(new _ResourceLogs_DslJsonConverter()) + .with(new _ResourceMetricsData_DslJsonConverter()) + .with(new _ResourceMetrics_DslJsonConverter()) + .with(new _ResourceSignals_DslJsonConverter()) + .with(new _ResourceSpansData_DslJsonConverter()) + .with(new _ResourceSpans_DslJsonConverter()) + .with(new _ScopeJson_DslJsonConverter()) + .with(new _ScopeLogs_DslJsonConverter()) + .with(new _ScopeMetrics_DslJsonConverter()) + .with(new _ScopeSpan_DslJsonConverter()) + .with(new _SpanDataJson_DslJsonConverter()) + .with(new _StatusDataJson_DslJsonConverter()) + .with(new _SumMetric_DslJsonConverter()) + .with(new _Sum_DslJsonConverter()) + .with(new _SummaryDataPoint_DslJsonConverter()) + .with(new _SummaryMetric_DslJsonConverter()) + .with(new _Summary_DslJsonConverter())); private Serializer() {} From 114da0fd695faffe1c21e9a9fe3d6c450754d966 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:17:38 +0200 Subject: [PATCH 036/209] Moving JsonSerializer to serializers --- .../serialization/converters/MetricDataJsonConverter.java | 6 +++--- .../{Serializer.java => serializers/JsonSerializer.java} | 6 +++--- .../serialization/serializers/LogRecordDataSerializer.java | 5 ++--- .../serialization/serializers/MetricDataSerializer.java | 5 ++--- .../serialization/serializers/SpanDataSerializer.java | 5 ++--- .../disk/buffer/testutils/BaseJsonSerializationTest.java | 6 +++--- 6 files changed, 15 insertions(+), 18 deletions(-) rename disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/{Serializer.java => serializers/JsonSerializer.java} (98%) diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java index 44d742070..688c9ca61 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java @@ -3,7 +3,7 @@ import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers.JsonSerializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; @@ -101,7 +101,7 @@ public static void write(JsonWriter writer, MetricDataJson value) { private static JsonReader.ReadObject getReader(Class type) { JsonReader.ReadObject reader = READERS.get(type); if (reader == null) { - reader = Serializer.tryFindReader(type); + reader = JsonSerializer.tryFindReader(type); READERS.put(type, reader); } @@ -111,7 +111,7 @@ private static JsonReader.ReadObject getReader(Class type) { private static JsonWriter.WriteObject getWriter(Class type) { JsonWriter.WriteObject writer = WRITERS.get(type); if (writer == null) { - writer = Serializer.tryFindWriter(type); + writer = JsonSerializer.tryFindWriter(type); WRITERS.put(type, writer); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java similarity index 98% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java rename to disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java index ae339e028..751222b48 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/Serializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization; +package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; import com.dslplatform.json.DslJson; import com.dslplatform.json.JsonReader; @@ -46,7 +46,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; -public final class Serializer { +public final class JsonSerializer { private static final DslJson dslJson = new DslJson<>( @@ -91,7 +91,7 @@ public final class Serializer { .with(new _SummaryMetric_DslJsonConverter()) .with(new _Summary_DslJsonConverter())); - private Serializer() {} + private JsonSerializer() {} public static JsonReader.ReadObject tryFindReader(Class manifest) { return dslJson.tryFindReader(manifest); diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java index d7c7655fb..b567a1d5b 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,6 +1,5 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; @@ -23,7 +22,7 @@ static LogRecordDataSerializer get() { @Override public byte[] serialize(List logRecordData) { try { - return Serializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); + return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +32,7 @@ public byte[] serialize(List logRecordData) { public List deserialize(byte[] source) { try { return ResourceLogsDataMapper.INSTANCE.fromJsonDto( - Serializer.deserialize(ResourceLogsData.class, source)); + JsonSerializer.deserialize(ResourceLogsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java index 3ba3cac4c..7bbcdc3a3 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java @@ -1,6 +1,5 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; @@ -23,7 +22,7 @@ static MetricDataSerializer get() { @Override public byte[] serialize(List metricData) { try { - return Serializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); + return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +32,7 @@ public byte[] serialize(List metricData) { public List deserialize(byte[] source) { try { return ResourceMetricsDataMapper.INSTANCE.fromJsonDto( - Serializer.deserialize(ResourceMetricsData.class, source)); + JsonSerializer.deserialize(ResourceMetricsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java index 379abbaff..4ce5962d7 100644 --- a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java @@ -1,6 +1,5 @@ package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; @@ -23,7 +22,7 @@ static SpanDataSerializer get() { @Override public byte[] serialize(List spanData) { try { - return Serializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); + return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -33,7 +32,7 @@ public byte[] serialize(List spanData) { public List deserialize(byte[] source) { try { return ResourceSpansDataMapper.INSTANCE.fromJsonDto( - Serializer.deserialize(ResourceSpansData.class, source)); + JsonSerializer.deserialize(ResourceSpansData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java index c489113a5..c5dca862f 100644 --- a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java +++ b/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java @@ -1,12 +1,12 @@ package io.opentelemetry.contrib.disk.buffer.testutils; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.Serializer; +import io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers.JsonSerializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { protected byte[] serialize(T item) { try { - return Serializer.serialize(item); + return JsonSerializer.serialize(item); } catch (IOException e) { throw new RuntimeException(e); } @@ -14,7 +14,7 @@ protected byte[] serialize(T item) { protected T deserialize(byte[] json) { try { - return Serializer.deserialize(getTargetClass(), json); + return JsonSerializer.deserialize(getTargetClass(), json); } catch (IOException e) { throw new RuntimeException(e); } From c56b27cd43e6bb61374edca4bc4bbb1b7ed9c638 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:26:54 +0200 Subject: [PATCH 037/209] Renaming module from disk-buffer to disk-buffering --- disk-buffer/lint.xml | 6 ------ {disk-buffer => disk-buffering}/build.gradle.kts | 2 +- .../serialization/converters/AttributesJsonConverter.java | 0 .../serialization/converters/MetricDataJsonConverter.java | 0 .../mapping/common/BaseResourceSignalsDataMapper.java | 0 .../serialization/mapping/common/ResourceMapper.java | 0 .../serialization/mapping/common/ResourceMapping.java | 0 .../internal/serialization/mapping/common/ScopeMapping.java | 0 .../serialization/mapping/common/SpanContextMapping.java | 0 .../serialization/mapping/logs/LogRecordMapper.java | 0 .../serialization/mapping/logs/ResourceLogsDataMapper.java | 0 .../serialization/mapping/logs/ResourceLogsMapper.java | 0 .../serialization/mapping/logs/ScopeLogsMapper.java | 0 .../mapping/logs/models/LogRecordDataImpl.java | 0 .../serialization/mapping/metrics/DataPointMapper.java | 0 .../serialization/mapping/metrics/MetricDataMapper.java | 0 .../serialization/mapping/metrics/MetricMapper.java | 0 .../mapping/metrics/ResourceMetricsDataMapper.java | 0 .../mapping/metrics/ResourceMetricsMapper.java | 0 .../serialization/mapping/metrics/ScopeMetricsMapper.java | 0 .../serialization/mapping/metrics/models/Constants.java | 0 .../mapping/metrics/models/MetricDataImpl.java | 0 .../metrics/models/data/ExponentialHistogramDataImpl.java | 0 .../mapping/metrics/models/data/GaugeDataImpl.java | 0 .../mapping/metrics/models/data/HistogramDataImpl.java | 0 .../mapping/metrics/models/data/SumDataImpl.java | 0 .../mapping/metrics/models/data/SummaryDataImpl.java | 0 .../models/data/base/AggregationTemporalityBuilder.java | 0 .../mapping/metrics/models/data/base/DataBuilder.java | 0 .../mapping/metrics/models/data/base/MonotonicBuilder.java | 0 .../metrics/models/datapoints/DoublePointDataImpl.java | 0 .../datapoints/ExponentialHistogramPointDataImpl.java | 0 .../metrics/models/datapoints/HistogramPointDataImpl.java | 0 .../metrics/models/datapoints/LongPointDataImpl.java | 0 .../mapping/metrics/models/datapoints/PointDataBuilder.java | 0 .../metrics/models/datapoints/SummaryPointDataImpl.java | 0 .../models/datapoints/data/DoubleExemplarDataImpl.java | 0 .../metrics/models/datapoints/data/ExemplarDataBuilder.java | 0 .../datapoints/data/ExponentialHistogramBucketsImpl.java | 0 .../models/datapoints/data/LongExemplarDataImpl.java | 0 .../metrics/models/datapoints/data/ValueAtQuantileImpl.java | 0 .../mapping/spans/ResourceSpansDataMapper.java | 0 .../serialization/mapping/spans/ResourceSpansMapper.java | 0 .../serialization/mapping/spans/ScopeSpansMapper.java | 0 .../serialization/mapping/spans/SpanDataMapper.java | 0 .../serialization/mapping/spans/models/SpanDataImpl.java | 0 .../mapping/spans/models/data/EventDataImpl.java | 0 .../mapping/spans/models/data/LinkDataImpl.java | 0 .../internal/serialization/models/common/ResourceJson.java | 0 .../serialization/models/common/ResourceSignals.java | 0 .../serialization/models/common/ResourceSignalsData.java | 0 .../internal/serialization/models/common/ScopeJson.java | 0 .../internal/serialization/models/common/ScopeSignals.java | 0 .../buffer/internal/serialization/models/logs/BodyJson.java | 0 .../serialization/models/logs/LogRecordDataJson.java | 0 .../internal/serialization/models/logs/ResourceLogs.java | 0 .../serialization/models/logs/ResourceLogsData.java | 0 .../internal/serialization/models/logs/ScopeLogs.java | 0 .../serialization/models/metrics/MetricDataJson.java | 0 .../serialization/models/metrics/ResourceMetrics.java | 0 .../serialization/models/metrics/ResourceMetricsData.java | 0 .../internal/serialization/models/metrics/ScopeMetrics.java | 0 .../serialization/models/metrics/data/DataJson.java | 0 .../models/metrics/data/ExponentialHistogram.java | 0 .../internal/serialization/models/metrics/data/Gauge.java | 0 .../serialization/models/metrics/data/Histogram.java | 0 .../internal/serialization/models/metrics/data/Sum.java | 0 .../internal/serialization/models/metrics/data/Summary.java | 0 .../serialization/models/metrics/datapoints/DataPoint.java | 0 .../metrics/datapoints/ExponentialHistogramDataPoint.java | 0 .../models/metrics/datapoints/HistogramDataPoint.java | 0 .../models/metrics/datapoints/NumberDataPoint.java | 0 .../models/metrics/datapoints/SummaryDataPoint.java | 0 .../models/metrics/datapoints/data/Buckets.java | 0 .../models/metrics/datapoints/data/Exemplar.java | 0 .../models/metrics/datapoints/data/QuantileValue.java | 0 .../models/metrics/impl/ExponentialHistogramMetric.java | 0 .../serialization/models/metrics/impl/GaugeMetric.java | 0 .../serialization/models/metrics/impl/HistogramMetric.java | 0 .../serialization/models/metrics/impl/SumMetric.java | 0 .../serialization/models/metrics/impl/SummaryMetric.java | 0 .../internal/serialization/models/spans/EventDataJson.java | 0 .../internal/serialization/models/spans/LinkDataJson.java | 0 .../internal/serialization/models/spans/ResourceSpans.java | 0 .../serialization/models/spans/ResourceSpansData.java | 0 .../internal/serialization/models/spans/ScopeSpan.java | 0 .../internal/serialization/models/spans/SpanDataJson.java | 0 .../internal/serialization/models/spans/StatusDataJson.java | 0 .../internal/serialization/serializers/JsonSerializer.java | 0 .../serialization/serializers/LogRecordDataSerializer.java | 0 .../serialization/serializers/MetricDataSerializer.java | 0 .../serialization/serializers/SignalSerializer.java | 0 .../serialization/serializers/SpanDataSerializer.java | 0 .../converters/AttributesJsonConverterTest.java | 0 .../converters/MetricDataJsonConverterTest.java | 0 .../serializers/LogRecordDataSerializerTest.java | 0 .../serialization/serializers/MetricDataSerializerTest.java | 0 .../serialization/serializers/SpanDataSerializerTest.java | 0 .../disk/buffer/testutils/BaseJsonSerializationTest.java | 0 .../disk/buffer/testutils/BaseSignalSerializerTest.java | 0 .../contrib/disk/buffer/testutils/TestData.java | 0 settings.gradle.kts | 2 +- 102 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 disk-buffer/lint.xml rename {disk-buffer => disk-buffering}/build.gradle.kts (93%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java (100%) rename {disk-buffer => disk-buffering}/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java (100%) rename {disk-buffer => disk-buffering}/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java (100%) diff --git a/disk-buffer/lint.xml b/disk-buffer/lint.xml deleted file mode 100644 index 4d72fb8fd..000000000 --- a/disk-buffer/lint.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/disk-buffer/build.gradle.kts b/disk-buffering/build.gradle.kts similarity index 93% rename from disk-buffer/build.gradle.kts rename to disk-buffering/build.gradle.kts index 3d7a584f4..e1d6a3951 100644 --- a/disk-buffer/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } description = "Exporter implementations that store signals in disk" -otelJava.moduleName.set("io.opentelemetry.contrib.disk.buffer") +otelJava.moduleName.set("io.opentelemetry.contrib.disk.buffering") tasks { withType().configureEach { diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java diff --git a/disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java similarity index 100% rename from disk-buffer/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java diff --git a/disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java similarity index 100% rename from disk-buffer/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java diff --git a/settings.gradle.kts b/settings.gradle.kts index db7156a7a..945050271 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -43,6 +43,7 @@ include(":aws-xray") include(":aws-xray-propagator") include(":consistent-sampling") include(":dependencyManagement") +include(":disk-buffering") include(":example") include(":jfr-events") include(":jfr-connection") @@ -60,4 +61,3 @@ include(":static-instrumenter:maven-plugin") include(":static-instrumenter:agent-extension") include(":static-instrumenter:bootstrap") include(":static-instrumenter:test-app") -include(":disk-buffer") From 2a96ce6cf624018c76d2ad1a84e2ed3946b16d28 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:28:16 +0200 Subject: [PATCH 038/209] Renaming disk buffering package --- .../models/metrics/data/Gauge.java | 7 -- .../models/metrics/data/Summary.java | 7 -- .../serializers/JsonSerializer.java | 116 ------------------ .../converters/AttributesJsonConverter.java | 2 +- .../converters/MetricDataJsonConverter.java | 26 ++-- .../common/BaseResourceSignalsDataMapper.java | 10 +- .../mapping/common/ResourceMapper.java | 4 +- .../mapping/common/ResourceMapping.java | 2 +- .../mapping/common/ScopeMapping.java | 2 +- .../mapping/common/SpanContextMapping.java | 2 +- .../mapping/logs/LogRecordMapper.java | 10 +- .../mapping/logs/ResourceLogsDataMapper.java | 12 +- .../mapping/logs/ResourceLogsMapper.java | 8 +- .../mapping/logs/ScopeLogsMapper.java | 6 +- .../logs/models/LogRecordDataImpl.java | 2 +- .../mapping/metrics/DataPointMapper.java | 38 +++--- .../mapping/metrics/MetricDataMapper.java | 26 ++-- .../mapping/metrics/MetricMapper.java | 30 ++--- .../metrics/ResourceMetricsDataMapper.java | 12 +- .../metrics/ResourceMetricsMapper.java | 8 +- .../mapping/metrics/ScopeMetricsMapper.java | 6 +- .../mapping/metrics/models/Constants.java | 2 +- .../metrics/models/MetricDataImpl.java | 2 +- .../data/ExponentialHistogramDataImpl.java | 6 +- .../metrics/models/data/GaugeDataImpl.java | 4 +- .../models/data/HistogramDataImpl.java | 6 +- .../metrics/models/data/SumDataImpl.java | 8 +- .../metrics/models/data/SummaryDataImpl.java | 4 +- .../base/AggregationTemporalityBuilder.java | 2 +- .../metrics/models/data/base/DataBuilder.java | 2 +- .../models/data/base/MonotonicBuilder.java | 2 +- .../datapoints/DoublePointDataImpl.java | 2 +- .../ExponentialHistogramPointDataImpl.java | 2 +- .../datapoints/HistogramPointDataImpl.java | 2 +- .../models/datapoints/LongPointDataImpl.java | 2 +- .../models/datapoints/PointDataBuilder.java | 2 +- .../datapoints/SummaryPointDataImpl.java | 2 +- .../data/DoubleExemplarDataImpl.java | 2 +- .../datapoints/data/ExemplarDataBuilder.java | 2 +- .../data/ExponentialHistogramBucketsImpl.java | 2 +- .../datapoints/data/LongExemplarDataImpl.java | 2 +- .../datapoints/data/ValueAtQuantileImpl.java | 2 +- .../spans/ResourceSpansDataMapper.java | 12 +- .../mapping/spans/ResourceSpansMapper.java | 8 +- .../mapping/spans/ScopeSpansMapper.java | 6 +- .../mapping/spans/SpanDataMapper.java | 18 +-- .../mapping/spans/models/SpanDataImpl.java | 2 +- .../spans/models/data/EventDataImpl.java | 2 +- .../spans/models/data/LinkDataImpl.java | 2 +- .../models/common/ResourceJson.java | 2 +- .../models/common/ResourceSignals.java | 2 +- .../models/common/ResourceSignalsData.java | 2 +- .../models/common/ScopeJson.java | 2 +- .../models/common/ScopeSignals.java | 2 +- .../serialization/models/logs/BodyJson.java | 2 +- .../models/logs/LogRecordDataJson.java | 2 +- .../models/logs/ResourceLogs.java | 4 +- .../models/logs/ResourceLogsData.java | 4 +- .../serialization/models/logs/ScopeLogs.java | 4 +- .../models/metrics/MetricDataJson.java | 4 +- .../models/metrics/ResourceMetrics.java | 4 +- .../models/metrics/ResourceMetricsData.java | 4 +- .../models/metrics/ScopeMetrics.java | 4 +- .../models/metrics/data/DataJson.java | 4 +- .../metrics/data/ExponentialHistogram.java | 4 +- .../models/metrics/data/Gauge.java | 7 ++ .../models/metrics/data/Histogram.java | 4 +- .../models/metrics/data/Sum.java | 4 +- .../models/metrics/data/Summary.java | 7 ++ .../models/metrics/datapoints/DataPoint.java | 2 +- .../ExponentialHistogramDataPoint.java | 6 +- .../datapoints/HistogramDataPoint.java | 4 +- .../metrics/datapoints/NumberDataPoint.java | 4 +- .../metrics/datapoints/SummaryDataPoint.java | 4 +- .../metrics/datapoints/data/Buckets.java | 2 +- .../metrics/datapoints/data/Exemplar.java | 2 +- .../datapoints/data/QuantileValue.java | 2 +- .../impl/ExponentialHistogramMetric.java | 8 +- .../models/metrics/impl/GaugeMetric.java | 8 +- .../models/metrics/impl/HistogramMetric.java | 8 +- .../models/metrics/impl/SumMetric.java | 8 +- .../models/metrics/impl/SummaryMetric.java | 8 +- .../models/spans/EventDataJson.java | 2 +- .../models/spans/LinkDataJson.java | 2 +- .../models/spans/ResourceSpans.java | 4 +- .../models/spans/ResourceSpansData.java | 4 +- .../serialization/models/spans/ScopeSpan.java | 4 +- .../models/spans/SpanDataJson.java | 2 +- .../models/spans/StatusDataJson.java | 2 +- .../serializers/JsonSerializer.java | 116 ++++++++++++++++++ .../serializers/LogRecordDataSerializer.java | 6 +- .../serializers/MetricDataSerializer.java | 6 +- .../serializers/SignalSerializer.java | 2 +- .../serializers/SpanDataSerializer.java | 6 +- .../AttributesJsonConverterTest.java | 4 +- .../MetricDataJsonConverterTest.java | 26 ++-- .../LogRecordDataSerializerTest.java | 8 +- .../serializers/MetricDataSerializerTest.java | 36 +++--- .../serializers/SpanDataSerializerTest.java | 12 +- .../testutils/BaseJsonSerializationTest.java | 4 +- .../testutils/BaseSignalSerializerTest.java | 4 +- .../testutils/TestData.java | 2 +- 102 files changed, 418 insertions(+), 418 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/converters/AttributesJsonConverter.java (98%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/converters/MetricDataJsonConverter.java (74%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java (88%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/common/ResourceMapper.java (76%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/common/ResourceMapping.java (83%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/common/ScopeMapping.java (83%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/common/SpanContextMapping.java (84%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/logs/LogRecordMapper.java (86%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/logs/ResourceLogsDataMapper.java (73%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/logs/ResourceLogsMapper.java (52%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/logs/ScopeLogsMapper.java (59%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/logs/models/LogRecordDataImpl.java (93%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/DataPointMapper.java (64%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/MetricDataMapper.java (79%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/MetricMapper.java (74%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java (73%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/ResourceMetricsMapper.java (53%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/ScopeMetricsMapper.java (59%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/Constants.java (71%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/MetricDataImpl.java (91%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java (64%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java (83%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java (60%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/SumDataImpl.java (72%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java (69%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java (74%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java (73%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java (64%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java (85%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java (92%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java (91%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java (85%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java (77%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java (89%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java (81%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java (79%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java (86%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java (81%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java (82%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/ResourceSpansDataMapper.java (73%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/ResourceSpansMapper.java (52%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/ScopeSpansMapper.java (59%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/SpanDataMapper.java (88%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/models/SpanDataImpl.java (95%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/models/data/EventDataImpl.java (86%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/mapping/spans/models/data/LinkDataImpl.java (86%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/common/ResourceJson.java (71%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/common/ResourceSignals.java (86%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/common/ResourceSignalsData.java (66%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/common/ScopeJson.java (81%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/common/ScopeSignals.java (81%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/logs/BodyJson.java (69%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/logs/LogRecordDataJson.java (92%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/logs/ResourceLogs.java (75%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/logs/ResourceLogsData.java (75%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/logs/ScopeLogs.java (71%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/MetricDataJson.java (75%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/ResourceMetrics.java (75%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/ResourceMetricsData.java (76%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/ScopeMetrics.java (70%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/data/DataJson.java (71%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/data/ExponentialHistogram.java (60%) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/data/Histogram.java (59%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/data/Sum.java (64%) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/DataPoint.java (81%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java (74%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java (79%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/NumberDataPoint.java (81%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java (69%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/data/Buckets.java (83%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/data/Exemplar.java (88%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/datapoints/data/QuantileValue.java (71%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java (61%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/impl/GaugeMetric.java (58%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/impl/HistogramMetric.java (59%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/impl/SumMetric.java (57%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/metrics/impl/SummaryMetric.java (58%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/EventDataJson.java (85%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/LinkDataJson.java (87%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/ResourceSpans.java (75%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/ResourceSpansData.java (75%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/ScopeSpan.java (69%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/SpanDataJson.java (94%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/models/spans/StatusDataJson.java (79%) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/LogRecordDataSerializer.java (78%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/MetricDataSerializer.java (77%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/SignalSerializer.java (83%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/SpanDataSerializer.java (77%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/converters/AttributesJsonConverterTest.java (90%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/converters/MetricDataJsonConverterTest.java (66%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/LogRecordDataSerializerTest.java (83%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/MetricDataSerializerTest.java (81%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/internal/serialization/serializers/SpanDataSerializerTest.java (84%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/testutils/BaseJsonSerializationTest.java (76%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/testutils/BaseSignalSerializerTest.java (80%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/{buffer => buffering}/testutils/TestData.java (97%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java deleted file mode 100644 index 4c5eca337..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Gauge.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; - -@CompiledJson -public final class Gauge extends DataJson {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java deleted file mode 100644 index 9430a6fe7..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Summary.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.SummaryDataPoint; - -@CompiledJson -public final class Summary extends DataJson {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java deleted file mode 100644 index 751222b48..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/JsonSerializer.java +++ /dev/null @@ -1,116 +0,0 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; - -import com.dslplatform.json.DslJson; -import com.dslplatform.json.JsonReader; -import com.dslplatform.json.JsonWriter; -import com.dslplatform.json.runtime.Settings; -import io.opentelemetry.api.common._Attributes_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common._ResourceJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common._ResourceSignals_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common._ScopeJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._BodyJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._LogRecordDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._ResourceLogsData_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._ResourceLogs_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs._ScopeLogs_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._MetricDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._ResourceMetricsData_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._ResourceMetrics_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics._ScopeMetrics_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._DataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._ExponentialHistogram_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Gauge_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Histogram_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Sum_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data._Summary_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._ExponentialHistogramDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._HistogramDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._NumberDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints._SummaryDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data._Buckets_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data._Exemplar_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data._QuantileValue_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._ExponentialHistogramMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._GaugeMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._HistogramMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._SumMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl._SummaryMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._EventDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._LinkDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._ResourceSpansData_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._ResourceSpans_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._ScopeSpan_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._SpanDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans._StatusDataJson_DslJsonConverter; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -public final class JsonSerializer { - - private static final DslJson dslJson = - new DslJson<>( - Settings.withAnalyzers(/* unknownReader= */ false, /* unknownWriter= */ false) - .skipDefaultValues(true) - .with(new _Attributes_DslJsonConverter()) - .with(new _BodyJson_DslJsonConverter()) - .with(new _Buckets_DslJsonConverter()) - .with(new _DataJson_DslJsonConverter()) - .with(new _EventDataJson_DslJsonConverter()) - .with(new _Exemplar_DslJsonConverter()) - .with(new _ExponentialHistogramDataPoint_DslJsonConverter()) - .with(new _ExponentialHistogramMetric_DslJsonConverter()) - .with(new _ExponentialHistogram_DslJsonConverter()) - .with(new _GaugeMetric_DslJsonConverter()) - .with(new _Gauge_DslJsonConverter()) - .with(new _HistogramDataPoint_DslJsonConverter()) - .with(new _HistogramMetric_DslJsonConverter()) - .with(new _Histogram_DslJsonConverter()) - .with(new _LinkDataJson_DslJsonConverter()) - .with(new _LogRecordDataJson_DslJsonConverter()) - .with(new _MetricDataJson_DslJsonConverter()) - .with(new _NumberDataPoint_DslJsonConverter()) - .with(new _QuantileValue_DslJsonConverter()) - .with(new _ResourceJson_DslJsonConverter()) - .with(new _ResourceLogsData_DslJsonConverter()) - .with(new _ResourceLogs_DslJsonConverter()) - .with(new _ResourceMetricsData_DslJsonConverter()) - .with(new _ResourceMetrics_DslJsonConverter()) - .with(new _ResourceSignals_DslJsonConverter()) - .with(new _ResourceSpansData_DslJsonConverter()) - .with(new _ResourceSpans_DslJsonConverter()) - .with(new _ScopeJson_DslJsonConverter()) - .with(new _ScopeLogs_DslJsonConverter()) - .with(new _ScopeMetrics_DslJsonConverter()) - .with(new _ScopeSpan_DslJsonConverter()) - .with(new _SpanDataJson_DslJsonConverter()) - .with(new _StatusDataJson_DslJsonConverter()) - .with(new _SumMetric_DslJsonConverter()) - .with(new _Sum_DslJsonConverter()) - .with(new _SummaryDataPoint_DslJsonConverter()) - .with(new _SummaryMetric_DslJsonConverter()) - .with(new _Summary_DslJsonConverter())); - - private JsonSerializer() {} - - public static JsonReader.ReadObject tryFindReader(Class manifest) { - return dslJson.tryFindReader(manifest); - } - - public static JsonWriter.WriteObject tryFindWriter(Class manifest) { - return dslJson.tryFindWriter(manifest); - } - - public static T deserialize(Class type, byte[] value) throws IOException { - try (ByteArrayInputStream in = new ByteArrayInputStream(value)) { - return dslJson.deserialize(type, in); - } - } - - public static byte[] serialize(Object object) throws IOException { - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - dslJson.serialize(object, out); - return out.toByteArray(); - } - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java similarity index 98% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java index a3cf017ce..5134063c0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import com.dslplatform.json.BoolConverter; import com.dslplatform.json.JsonConverter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java similarity index 74% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java index 688c9ca61..aa5505ffe 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java @@ -1,20 +1,20 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers.JsonSerializer; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java similarity index 88% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java index 0cb1de8bf..c4ff3a211 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java @@ -1,9 +1,9 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.common.InstrumentationScopeInfoBuilder; import io.opentelemetry.sdk.resources.Resource; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java similarity index 76% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index d20b7e998..e444b6e41 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceJson; import javax.annotation.Nullable; import org.mapstruct.Context; import org.mapstruct.Mapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java similarity index 83% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java index d897d7917..477043cac 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ResourceMapping.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java similarity index 83% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java index a5a0bfe26..f12ba28e6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/ScopeMapping.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java similarity index 84% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java index e54f46f99..fffc938df 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/common/SpanContextMapping.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java index 6cd35580b..71277a509 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/LogRecordMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java @@ -1,13 +1,13 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.SpanContextMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models.LogRecordDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.BodyJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.LogRecordDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.BodyJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.LogRecordDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java similarity index 73% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java index 3fda92667..104d7603a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.LogRecordDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogs; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ScopeLogs; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.LogRecordDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogs; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ScopeLogs; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java similarity index 52% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java index 4b7c11b89..3998bd3bb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ResourceLogsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogs; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogs; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java similarity index 59% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java index f81ffedf2..741c024f4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/ScopeLogsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ScopeLogs; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ScopeLogs; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java similarity index 93% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java index 7a1a9de8a..916660133 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/logs/models/LogRecordDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java similarity index 64% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java index 6c847d89d..7504d54d8 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/DataPointMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java @@ -1,26 +1,26 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.DataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.HistogramDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.SummaryDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.SummaryDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.QuantileValue; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.ExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java similarity index 79% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index c2d779469..f5ab2789a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -1,16 +1,16 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; - -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SumDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.Data; import io.opentelemetry.sdk.metrics.data.DoublePointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java similarity index 74% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java index 7e65cd010..1330d0e05 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/MetricMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java @@ -1,19 +1,19 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricDataType; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java similarity index 73% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java index 9c36fe05d..ce8c9f9d0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetrics; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ScopeMetrics; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetrics; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetricsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ScopeMetrics; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.resources.Resource; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java similarity index 53% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java index 9964a84c4..3d5c79fc9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ResourceMetricsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetrics; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetrics; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java similarity index 59% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java index 49ae09a8e..6a7d5d686 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/ScopeMetricsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ScopeMetrics; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ScopeMetrics; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java similarity index 71% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java index 0d8b7dcf4..8fc58447f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/Constants.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java similarity index 91% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java index 2c0752f5e..f5c72d6e0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/MetricDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java similarity index 64% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index 121f0550b..af5948e0d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java similarity index 83% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java index d9a1e222d..16fd25327 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.GaugeData; import io.opentelemetry.sdk.metrics.data.LongPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java similarity index 60% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index 3e549bbe2..0cde5fb08 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java similarity index 72% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index 99492e34c..65dfc3a74 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -1,9 +1,9 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.MonotonicBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.MonotonicBuilder; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.PointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java similarity index 69% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java index 6899ad0bc..258823f06 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java similarity index 74% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java index 32b2c4404..bb3f8820b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java similarity index 73% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java index d3ff81b7d..eb99cf94d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.sdk.metrics.data.PointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java similarity index 64% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java index 4e705542a..d60b86d1d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.base; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java similarity index 85% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java index 5ce9775b6..1be181e18 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java similarity index 92% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java index 86b135ab0..b886f5839 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java similarity index 91% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java index ee9535fe9..1aa2b58a3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java similarity index 85% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java index 630783977..5af65fcf4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.LongExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java similarity index 77% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java index 8efad04d7..2fbf5caac 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java similarity index 89% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java index cd851713f..85e3bd49c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.ExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java similarity index 81% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java index 5a63a1d24..a6100318d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java similarity index 79% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java index b5008f39f..8c5cb56a9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java index 5c7af3c31..f88fd4501 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java similarity index 81% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java index a76838a43..cc79d9efb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.LongExemplarData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java similarity index 82% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java index fda638ec6..a663474b4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java similarity index 73% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java index 64fdb2100..c7bfb275b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpans; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ScopeSpan; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.SpanDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpans; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpansData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ScopeSpan; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.SpanDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.SpanData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java similarity index 52% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java index f5cafe691..48ea387f0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ResourceSpansMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpans; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpans; import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java similarity index 59% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java index e17196f58..30062258f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/ScopeSpansMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ScopeSpan; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ScopeSpan; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java similarity index 88% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index 97b5ca48b..afdcbff33 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; @@ -6,14 +6,14 @@ import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.api.trace.propagation.internal.W3CTraceContextEncoding; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.common.SpanContextMapping; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.EventDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.LinkDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.EventDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.LinkDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.SpanDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.StatusDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.LinkDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.EventDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.LinkDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.SpanDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.StatusDataJson; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.EventData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java similarity index 95% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java index 19cacaa8c..74a59533e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/SpanDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java index 0cc7a0bc9..f719c9f81 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/EventDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java index ad5629d49..71b2a797a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/mapping/spans/models/data/LinkDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data; import com.google.auto.value.AutoValue; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java similarity index 71% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java index 3cdf22b2d..59ec1f70a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java index 4f154efb1..502333419 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignals.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java similarity index 66% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java index 040774cde..c73f03fee 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ResourceSignalsData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import java.util.Collection; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java similarity index 81% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java index a769c1617..0ac148950 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java similarity index 81% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java index 4ebc510c1..6d4059e86 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/common/ScopeSignals.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java similarity index 69% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java index 222c55e30..4bc2bdfce 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/BodyJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java similarity index 92% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java index a2602090d..6117adc4d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/LogRecordDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java similarity index 75% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java index 89807266b..db55c8214 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogs.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java similarity index 75% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java index 7d6b65edf..ddbd5bad5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ResourceLogsData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java similarity index 71% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java index 0a5b72ce1..d9e59851b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/logs/ScopeLogs.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java similarity index 75% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java index f9187b0da..4ff5514d2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/MetricDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import javax.annotation.Nullable; public abstract class MetricDataJson { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java similarity index 75% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java index bc2f16c65..62dedaafc 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetrics.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java similarity index 76% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java index 540a95351..07a206b0b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ResourceMetricsData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java similarity index 70% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java index 75abfba6b..fa428ac1e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/ScopeMetrics.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java similarity index 71% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java index 5d4557b94..37295a5b9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/DataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.DataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.DataPoint; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java similarity index 60% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java index 44afddb7e..f3b5af7db 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/ExponentialHistogram.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java new file mode 100644 index 000000000..0b37e7348 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; + +@CompiledJson +public final class Gauge extends DataJson {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java similarity index 59% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java index 640d6ca96..4f614cf12 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Histogram.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.HistogramDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.HistogramDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java similarity index 64% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java index 3a9c820ad..9a1167b57 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/data/Sum.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.NumberDataPoint; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; import javax.annotation.Nullable; @CompiledJson diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java new file mode 100644 index 000000000..c5ca0cbe1 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; + +import com.dslplatform.json.CompiledJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.SummaryDataPoint; + +@CompiledJson +public final class Summary extends DataJson {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java similarity index 81% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java index 226316c9a..0a5e7c387 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/DataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java similarity index 74% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java index 8cf2cb8dd..77df7d3b9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -1,9 +1,9 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Buckets; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java similarity index 79% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java index bd4e6f8ee..0297eb5c3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java similarity index 81% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java index 45230baac..54bb9eddd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/NumberDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.Exemplar; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java similarity index 69% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java index 2c219fd3a..77757ecc6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data.QuantileValue; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.QuantileValue; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java similarity index 83% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java index 984ac5c9a..8581c5d36 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Buckets.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import java.util.ArrayList; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java similarity index 88% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java index 0d9292a71..90ecf397c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/Exemplar.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java similarity index 71% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java index e484dd101..bb311fc71 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/datapoints/data/QuantileValue.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.datapoints.data; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java similarity index 61% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java index 87897ada4..eb426934a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java similarity index 58% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java index accff34c1..298fb7f94 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/GaugeMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java similarity index 59% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java index 837b516be..c799aa3e6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/HistogramMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java similarity index 57% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java index 7f48d343c..f9c0cdf86 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SumMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java similarity index 58% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java index d9b7b578c..0ab732028 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/metrics/impl/SummaryMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java similarity index 85% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java index 517ae8af2..927b1ee58 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/EventDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java similarity index 87% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java index 3e3cbc82f..ae5d8b8df 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/LinkDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java similarity index 75% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java index 0f2da7e12..036ad7935 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpans.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java similarity index 75% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java index 52c928f84..a4fb0463a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ResourceSpansData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ResourceSignalsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; import java.util.Collection; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java similarity index 69% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java index 63ef80b32..dc8781602 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/ScopeSpan.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.common.ScopeSignals; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; import java.util.ArrayList; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java similarity index 94% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java index 40f56614a..2b93b93d5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/SpanDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java similarity index 79% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java index d08dc3cfd..c6ecd2f15 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/models/spans/StatusDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; import io.opentelemetry.api.trace.StatusCode; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java new file mode 100644 index 000000000..8ccbb1031 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java @@ -0,0 +1,116 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; + +import com.dslplatform.json.DslJson; +import com.dslplatform.json.JsonReader; +import com.dslplatform.json.JsonWriter; +import com.dslplatform.json.runtime.Settings; +import io.opentelemetry.api.common._Attributes_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common._ResourceJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common._ResourceSignals_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common._ScopeJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._BodyJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._LogRecordDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._ResourceLogsData_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._ResourceLogs_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._ScopeLogs_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._MetricDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._ResourceMetricsData_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._ResourceMetrics_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._ScopeMetrics_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._DataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._ExponentialHistogram_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Gauge_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Histogram_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Sum_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Summary_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._ExponentialHistogramDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._HistogramDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._NumberDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._SummaryDataPoint_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data._Buckets_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data._Exemplar_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data._QuantileValue_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._ExponentialHistogramMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._GaugeMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._HistogramMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._SumMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._SummaryMetric_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._EventDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._LinkDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._ResourceSpansData_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._ResourceSpans_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._ScopeSpan_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._SpanDataJson_DslJsonConverter; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._StatusDataJson_DslJsonConverter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +public final class JsonSerializer { + + private static final DslJson dslJson = + new DslJson<>( + Settings.withAnalyzers(/* unknownReader= */ false, /* unknownWriter= */ false) + .skipDefaultValues(true) + .with(new _Attributes_DslJsonConverter()) + .with(new _BodyJson_DslJsonConverter()) + .with(new _Buckets_DslJsonConverter()) + .with(new _DataJson_DslJsonConverter()) + .with(new _EventDataJson_DslJsonConverter()) + .with(new _Exemplar_DslJsonConverter()) + .with(new _ExponentialHistogramDataPoint_DslJsonConverter()) + .with(new _ExponentialHistogramMetric_DslJsonConverter()) + .with(new _ExponentialHistogram_DslJsonConverter()) + .with(new _GaugeMetric_DslJsonConverter()) + .with(new _Gauge_DslJsonConverter()) + .with(new _HistogramDataPoint_DslJsonConverter()) + .with(new _HistogramMetric_DslJsonConverter()) + .with(new _Histogram_DslJsonConverter()) + .with(new _LinkDataJson_DslJsonConverter()) + .with(new _LogRecordDataJson_DslJsonConverter()) + .with(new _MetricDataJson_DslJsonConverter()) + .with(new _NumberDataPoint_DslJsonConverter()) + .with(new _QuantileValue_DslJsonConverter()) + .with(new _ResourceJson_DslJsonConverter()) + .with(new _ResourceLogsData_DslJsonConverter()) + .with(new _ResourceLogs_DslJsonConverter()) + .with(new _ResourceMetricsData_DslJsonConverter()) + .with(new _ResourceMetrics_DslJsonConverter()) + .with(new _ResourceSignals_DslJsonConverter()) + .with(new _ResourceSpansData_DslJsonConverter()) + .with(new _ResourceSpans_DslJsonConverter()) + .with(new _ScopeJson_DslJsonConverter()) + .with(new _ScopeLogs_DslJsonConverter()) + .with(new _ScopeMetrics_DslJsonConverter()) + .with(new _ScopeSpan_DslJsonConverter()) + .with(new _SpanDataJson_DslJsonConverter()) + .with(new _StatusDataJson_DslJsonConverter()) + .with(new _SumMetric_DslJsonConverter()) + .with(new _Sum_DslJsonConverter()) + .with(new _SummaryDataPoint_DslJsonConverter()) + .with(new _SummaryMetric_DslJsonConverter()) + .with(new _Summary_DslJsonConverter())); + + private JsonSerializer() {} + + public static JsonReader.ReadObject tryFindReader(Class manifest) { + return dslJson.tryFindReader(manifest); + } + + public static JsonWriter.WriteObject tryFindWriter(Class manifest) { + return dslJson.tryFindWriter(manifest); + } + + public static T deserialize(Class type, byte[] value) throws IOException { + try (ByteArrayInputStream in = new ByteArrayInputStream(value)) { + return dslJson.deserialize(type, in); + } + } + + public static byte[] serialize(Object object) throws IOException { + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + dslJson.serialize(object, out); + return out.toByteArray(); + } + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java similarity index 78% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index b567a1d5b..8bae6737d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.ResourceLogsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.logs.ResourceLogsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.ResourceLogsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java similarity index 77% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 7bbcdc3a3..4e2a6cf44 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.ResourceMetricsData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; import java.io.IOException; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java similarity index 83% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java index 064034785..e90d36eff 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SignalSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import java.util.List; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java similarity index 77% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index 4ce5962d7..f65dc19d7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -1,7 +1,7 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.ResourceSpansDataMapper; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.spans.ResourceSpansData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.ResourceSpansDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; import java.io.IOException; import java.util.List; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java similarity index 90% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java index 8c30e6073..342168ac2 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/AttributesJsonConverterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.contrib.disk.buffer.testutils.BaseJsonSerializationTest; +import io.opentelemetry.contrib.disk.buffering.testutils.BaseJsonSerializationTest; import java.util.Arrays; import org.junit.jupiter.api.Test; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java similarity index 66% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java index 3477f583d..8806fc1b9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/converters/MetricDataJsonConverterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java @@ -1,20 +1,20 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.converters; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.models.metrics.impl.SummaryMetric; -import io.opentelemetry.contrib.disk.buffer.testutils.BaseJsonSerializationTest; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.GaugeMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffering.testutils.BaseJsonSerializationTest; import org.junit.jupiter.api.Test; class MetricDataJsonConverterTest extends BaseJsonSerializationTest { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java similarity index 83% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java index 40ad9ff04..2d1b1c807 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/LogRecordDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -1,10 +1,10 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.logs.models.LogRecordDataImpl; -import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; -import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; import org.junit.jupiter.api.Test; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java similarity index 81% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 2182bf908..6af2c5b4e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -1,22 +1,22 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SumDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; -import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; -import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java similarity index 84% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java index 1da1c082f..2bb7e6087 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/internal/serialization/serializers/SpanDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java @@ -1,11 +1,11 @@ -package io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.EventDataImpl; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.mapping.spans.models.data.LinkDataImpl; -import io.opentelemetry.contrib.disk.buffer.testutils.BaseSignalSerializerTest; -import io.opentelemetry.contrib.disk.buffer.testutils.TestData; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.LinkDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.trace.data.EventData; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java similarity index 76% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java index c5dca862f..1627d0def 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseJsonSerializationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffer.testutils; +package io.opentelemetry.contrib.disk.buffering.testutils; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers.JsonSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; import java.io.IOException; public abstract class BaseJsonSerializationTest { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java similarity index 80% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java index 26979906a..655ecbd72 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/BaseSignalSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java @@ -1,8 +1,8 @@ -package io.opentelemetry.contrib.disk.buffer.testutils; +package io.opentelemetry.contrib.disk.buffering.testutils; import static org.assertj.core.api.Assertions.assertThat; -import io.opentelemetry.contrib.disk.buffer.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import java.util.Arrays; import java.util.List; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java similarity index 97% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java index d1730e741..a593bfb84 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffer/testutils/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffer.testutils; +package io.opentelemetry.contrib.disk.buffering.testutils; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; From 500ecb3a88321f50f2bc72c4a2f179c31de1521a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:44:47 +0200 Subject: [PATCH 039/209] Renaming constant fields --- .../serialization/serializers/JsonSerializer.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java index 8ccbb1031..9a0cc35c4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java @@ -48,7 +48,7 @@ public final class JsonSerializer { - private static final DslJson dslJson = + private static final DslJson DSL_JSON = new DslJson<>( Settings.withAnalyzers(/* unknownReader= */ false, /* unknownWriter= */ false) .skipDefaultValues(true) @@ -94,22 +94,22 @@ public final class JsonSerializer { private JsonSerializer() {} public static JsonReader.ReadObject tryFindReader(Class manifest) { - return dslJson.tryFindReader(manifest); + return DSL_JSON.tryFindReader(manifest); } public static JsonWriter.WriteObject tryFindWriter(Class manifest) { - return dslJson.tryFindWriter(manifest); + return DSL_JSON.tryFindWriter(manifest); } public static T deserialize(Class type, byte[] value) throws IOException { try (ByteArrayInputStream in = new ByteArrayInputStream(value)) { - return dslJson.deserialize(type, in); + return DSL_JSON.deserialize(type, in); } } public static byte[] serialize(Object object) throws IOException { try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - dslJson.serialize(object, out); + DSL_JSON.serialize(object, out); return out.toByteArray(); } } From 2dbe018a2e547c8f1f7a2ae911381e58f903cd13 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:15:48 +0200 Subject: [PATCH 040/209] Creating and reusing writable files --- .../internal/storage/Configuration.java | 9 +++ .../internal/storage/FileHolder.java | 7 +++ .../internal/storage/FileProvider.java | 63 +++++++++++++++++++ .../internal/storage/utils/TimeProvider.java | 7 +++ .../internal/storage/FileProviderTest.java | 49 +++++++++++++++ 5 files changed, 135 insertions(+) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java new file mode 100644 index 000000000..035e696f7 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -0,0 +1,9 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +public class Configuration { + public final long maxFileAgeInMillis; + + public Configuration(long maxFileAgeInMillis) { + this.maxFileAgeInMillis = maxFileAgeInMillis; + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java new file mode 100644 index 000000000..b5508c4ad --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +import java.io.File; + +public interface FileHolder { + File getFile(); +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java new file mode 100644 index 000000000..b35578a82 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -0,0 +1,63 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +import com.google.errorprone.annotations.DoNotCall; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import java.io.File; +import javax.annotation.Nullable; + +public class FileProvider { + private final File rootDir; + private final TimeProvider timeProvider; + private final Configuration configuration; + + public FileProvider(File rootDir, TimeProvider timeProvider, Configuration configuration) { + this.rootDir = rootDir; + this.timeProvider = timeProvider; + this.configuration = configuration; + } + + @DoNotCall + public final FileHolder getReadableFile() { + throw new UnsupportedOperationException(); + } + + public FileHolder getWritableFile() { + long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); + File existingFile = findExistingUnexpiredFile(systemCurrentTimeMillis); + if (existingFile != null) { + return new SimpleFileHolder(existingFile); + } + File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); + return new SimpleFileHolder(file); + } + + @Nullable + private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { + File[] existingFiles = rootDir.listFiles(); + if (existingFiles != null) { + for (File existingFile : existingFiles) { + if (hasNotExpired(systemCurrentTimeMillis, Long.parseLong(existingFile.getName()))) { + return existingFile; + } + } + } + return null; + } + + private boolean hasNotExpired(long systemCurrentTimeMillis, long createdTimeInMillis) { + return systemCurrentTimeMillis < (createdTimeInMillis + configuration.maxFileAgeInMillis); + } + + public static final class SimpleFileHolder implements FileHolder { + private final File file; + + public SimpleFileHolder(File file) { + this.file = file; + } + + @Override + public File getFile() { + return file; + } + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java new file mode 100644 index 000000000..54cd53c59 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java @@ -0,0 +1,7 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; + +public class TimeProvider { + public long getSystemCurrentTimeMillis() { + return System.currentTimeMillis(); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java new file mode 100644 index 000000000..7308009d9 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -0,0 +1,49 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; + +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import java.io.File; +import java.io.IOException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class FileProviderTest { + + @TempDir File rootDir; + private FileProvider fileProvider; + private TimeProvider timeProvider; + private static final long MAX_FILE_AGE_MILLIS = 1000; + + @BeforeEach + public void setUp() { + timeProvider = mock(); + fileProvider = new FileProvider(rootDir, timeProvider, new Configuration(MAX_FILE_AGE_MILLIS)); + } + + @Test + public void verifyWritableFileIsCreated_withTimeMillisAsName() { + doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder file = fileProvider.getWritableFile(); + + assertEquals("1000", file.getFile().getName()); + } + + @Test + public void verifyWritableFileIsReused_whenItHasNotExpired() throws IOException { + File existingFile = new File(rootDir, "1000"); + if (!existingFile.createNewFile()) { + fail("Could not create temporary file"); + } + doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder file = fileProvider.getWritableFile(); + + assertEquals(existingFile, file.getFile()); + } +} From 33a7c54ad4b76108452fbe25e7212360246d301f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:43:30 +0200 Subject: [PATCH 041/209] Purging old files and creating new one when existing cannot be reused --- .../internal/storage/FileProvider.java | 16 +++++++++ .../internal/storage/FileProviderTest.java | 34 +++++++++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index b35578a82..f2f3aa25a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -27,10 +27,22 @@ public FileHolder getWritableFile() { if (existingFile != null) { return new SimpleFileHolder(existingFile); } + purgeExpiredFilesIfAny(systemCurrentTimeMillis); File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); return new SimpleFileHolder(file); } + private void purgeExpiredFilesIfAny(long currentTimeMillis) { + File[] existingFiles = rootDir.listFiles(); + if (existingFiles != null) { + for (File existingFile : existingFiles) { + if (hasExpired(currentTimeMillis, Long.parseLong(existingFile.getName()))) { + existingFile.delete(); + } + } + } + } + @Nullable private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { File[] existingFiles = rootDir.listFiles(); @@ -44,6 +56,10 @@ private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { return null; } + private boolean hasExpired(long systemCurrentTimeMillis, long createdTimeInMillis) { + return !hasNotExpired(systemCurrentTimeMillis, createdTimeInMillis); + } + private boolean hasNotExpired(long systemCurrentTimeMillis, long createdTimeInMillis) { return systemCurrentTimeMillis < (createdTimeInMillis + configuration.maxFileAgeInMillis); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 7308009d9..cee691072 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -1,6 +1,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -26,7 +28,7 @@ public void setUp() { } @Test - public void verifyWritableFileIsCreated_withTimeMillisAsName() { + public void createWritableFile_withTimeMillisAsName() { doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); FileHolder file = fileProvider.getWritableFile(); @@ -35,7 +37,7 @@ public void verifyWritableFileIsCreated_withTimeMillisAsName() { } @Test - public void verifyWritableFileIsReused_whenItHasNotExpired() throws IOException { + public void reuseWritableFile_whenItHasNotExpired() throws IOException { File existingFile = new File(rootDir, "1000"); if (!existingFile.createNewFile()) { fail("Could not create temporary file"); @@ -46,4 +48,32 @@ public void verifyWritableFileIsReused_whenItHasNotExpired() throws IOException assertEquals(existingFile, file.getFile()); } + + @Test + public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException { + File existingFile = new File(rootDir, "1000"); + if (!existingFile.createNewFile()) { + fail("Could not create temporary file"); + } + doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder file = fileProvider.getWritableFile(); + + assertNotEquals(existingFile, file.getFile()); + } + + @Test + public void purgeExpiredFiles_whenCreatingNewOne() throws IOException { + File expiredFile1 = new File(rootDir, "1000"); + File expiredFile2 = new File(rootDir, "1100"); + if (!expiredFile1.createNewFile() || !expiredFile2.createNewFile()) { + fail("Could not create temporary files"); + } + doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); + + fileProvider.getWritableFile(); + + assertFalse(expiredFile1.exists()); + assertFalse(expiredFile2.exists()); + } } From 349cb226ce4fda8162d40eca44cc1756670001e0 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:04:28 +0200 Subject: [PATCH 042/209] Synchronizing writable file provider method --- .../contrib/disk/buffering/internal/storage/FileProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index f2f3aa25a..b2f64302e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -21,7 +21,7 @@ public final FileHolder getReadableFile() { throw new UnsupportedOperationException(); } - public FileHolder getWritableFile() { + public synchronized FileHolder getWritableFile() { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); File existingFile = findExistingUnexpiredFile(systemCurrentTimeMillis); if (existingFile != null) { From 3652a43d21947967b634e99eb181e63739db5646 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:17:47 +0200 Subject: [PATCH 043/209] Purging only expired files for reading when creating new one --- .../internal/storage/Configuration.java | 13 ++++++-- .../internal/storage/FileProvider.java | 15 +++++---- .../internal/storage/FileProviderTest.java | 33 +++++++++++++------ 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index 035e696f7..47d9688e3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -1,9 +1,16 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; public class Configuration { - public final long maxFileAgeInMillis; + public final long maxFileAgeForWriteInMillis; + public final long minFileAgeForReadInMillis; + public final long maxFileAgeForReadInMillis; - public Configuration(long maxFileAgeInMillis) { - this.maxFileAgeInMillis = maxFileAgeInMillis; + public Configuration( + long maxFileAgeForWriteInMillis, + long minFileAgeForReadInMillis, + long maxFileAgeForReadInMillis) { + this.maxFileAgeForWriteInMillis = maxFileAgeForWriteInMillis; + this.minFileAgeForReadInMillis = minFileAgeForReadInMillis; + this.maxFileAgeForReadInMillis = maxFileAgeForReadInMillis; } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index b2f64302e..5b78d26ea 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -36,7 +36,7 @@ private void purgeExpiredFilesIfAny(long currentTimeMillis) { File[] existingFiles = rootDir.listFiles(); if (existingFiles != null) { for (File existingFile : existingFiles) { - if (hasExpired(currentTimeMillis, Long.parseLong(existingFile.getName()))) { + if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { existingFile.delete(); } } @@ -48,7 +48,8 @@ private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { File[] existingFiles = rootDir.listFiles(); if (existingFiles != null) { for (File existingFile : existingFiles) { - if (hasNotExpired(systemCurrentTimeMillis, Long.parseLong(existingFile.getName()))) { + if (hasNotExpiredForWriting( + systemCurrentTimeMillis, Long.parseLong(existingFile.getName()))) { return existingFile; } } @@ -56,12 +57,14 @@ private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { return null; } - private boolean hasExpired(long systemCurrentTimeMillis, long createdTimeInMillis) { - return !hasNotExpired(systemCurrentTimeMillis, createdTimeInMillis); + private boolean hasExpiredForReading(long systemCurrentTimeMillis, long createdTimeInMillis) { + return systemCurrentTimeMillis + > (createdTimeInMillis + configuration.maxFileAgeForReadInMillis); } - private boolean hasNotExpired(long systemCurrentTimeMillis, long createdTimeInMillis) { - return systemCurrentTimeMillis < (createdTimeInMillis + configuration.maxFileAgeInMillis); + private boolean hasNotExpiredForWriting(long systemCurrentTimeMillis, long createdTimeInMillis) { + return systemCurrentTimeMillis + < (createdTimeInMillis + configuration.maxFileAgeForWriteInMillis); } public static final class SimpleFileHolder implements FileHolder { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index cee691072..4a5d6a1c8 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -19,12 +20,21 @@ class FileProviderTest { @TempDir File rootDir; private FileProvider fileProvider; private TimeProvider timeProvider; - private static final long MAX_FILE_AGE_MILLIS = 1000; + private static final long MAX_FILE_AGE_FOR_WRITE_MILLIS = 1000; + private static final long MIN_FILE_AGE_FOR_READ_MILLIS = MAX_FILE_AGE_FOR_WRITE_MILLIS + 500; + private static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; @BeforeEach public void setUp() { timeProvider = mock(); - fileProvider = new FileProvider(rootDir, timeProvider, new Configuration(MAX_FILE_AGE_MILLIS)); + fileProvider = + new FileProvider( + rootDir, + timeProvider, + new Configuration( + MAX_FILE_AGE_FOR_WRITE_MILLIS, + MIN_FILE_AGE_FOR_READ_MILLIS, + MAX_FILE_AGE_FOR_READ_MILLIS)); } @Test @@ -63,17 +73,20 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException } @Test - public void purgeExpiredFiles_whenCreatingNewOne() throws IOException { - File expiredFile1 = new File(rootDir, "1000"); - File expiredFile2 = new File(rootDir, "1100"); - if (!expiredFile1.createNewFile() || !expiredFile2.createNewFile()) { + public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { + // Files that cannot be read from are considered fully expired. + File expiredReadableFile = new File(rootDir, "1000"); + // Files that cannot be written, but can still be read, aren't expired. + File expiredWritableFile = new File(rootDir, "10000"); + if (!expiredReadableFile.createNewFile() || !expiredWritableFile.createNewFile()) { fail("Could not create temporary files"); } - doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); - fileProvider.getWritableFile(); + FileHolder file = fileProvider.getWritableFile(); - assertFalse(expiredFile1.exists()); - assertFalse(expiredFile2.exists()); + assertFalse(expiredReadableFile.exists()); + assertTrue(expiredWritableFile.exists()); + assertNotEquals(expiredWritableFile, file.getFile()); } } From c2f462673d8535d0026dcc0878b566966fe96ff8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:18:56 +0200 Subject: [PATCH 044/209] Updating comments --- .../disk/buffering/internal/storage/FileProviderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 4a5d6a1c8..a8d941387 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -76,7 +76,7 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { // Files that cannot be read from are considered fully expired. File expiredReadableFile = new File(rootDir, "1000"); - // Files that cannot be written, but can still be read, aren't expired. + // Files that cannot be written, but can still be read, aren't ready to be deleted. File expiredWritableFile = new File(rootDir, "10000"); if (!expiredReadableFile.createNewFile() || !expiredWritableFile.createNewFile()) { fail("Could not create temporary files"); From 5133952c403f7f1363c0886b334c198ac8b227ef Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:46:43 +0200 Subject: [PATCH 045/209] Providing readable files only after their min age to read has passed --- .../internal/storage/FileProvider.java | 35 +++++++++++++++---- .../internal/storage/FileProviderTest.java | 34 +++++++++++++----- 2 files changed, 53 insertions(+), 16 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 5b78d26ea..e4a15748a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -1,11 +1,10 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; -import com.google.errorprone.annotations.DoNotCall; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import javax.annotation.Nullable; -public class FileProvider { +public final class FileProvider { private final File rootDir; private final TimeProvider timeProvider; private final Configuration configuration; @@ -16,14 +15,18 @@ public FileProvider(File rootDir, TimeProvider timeProvider, Configuration confi this.configuration = configuration; } - @DoNotCall - public final FileHolder getReadableFile() { - throw new UnsupportedOperationException(); + @Nullable + public synchronized FileHolder getReadableFile() { + File readableFile = findReadableFile(); + if (readableFile != null) { + return new SimpleFileHolder(readableFile); + } + return null; } public synchronized FileHolder getWritableFile() { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); - File existingFile = findExistingUnexpiredFile(systemCurrentTimeMillis); + File existingFile = findExistingWritableFile(systemCurrentTimeMillis); if (existingFile != null) { return new SimpleFileHolder(existingFile); } @@ -44,7 +47,21 @@ private void purgeExpiredFilesIfAny(long currentTimeMillis) { } @Nullable - private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { + private File findReadableFile() { + long currentTime = timeProvider.getSystemCurrentTimeMillis(); + File[] existingFiles = rootDir.listFiles(); + if (existingFiles != null) { + for (File existingFile : existingFiles) { + if (isReadyToBeRead(currentTime, Long.parseLong(existingFile.getName()))) { + return existingFile; + } + } + } + return null; + } + + @Nullable + private File findExistingWritableFile(long systemCurrentTimeMillis) { File[] existingFiles = rootDir.listFiles(); if (existingFiles != null) { for (File existingFile : existingFiles) { @@ -57,6 +74,10 @@ private File findExistingUnexpiredFile(long systemCurrentTimeMillis) { return null; } + private boolean isReadyToBeRead(long currentTimeMillis, long createdTimeInMillis) { + return currentTimeMillis >= (createdTimeInMillis + configuration.minFileAgeForReadInMillis); + } + private boolean hasExpiredForReading(long systemCurrentTimeMillis, long createdTimeInMillis) { return systemCurrentTimeMillis > (createdTimeInMillis + configuration.maxFileAgeForReadInMillis); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index a8d941387..d10c7ff07 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -49,9 +49,7 @@ public void createWritableFile_withTimeMillisAsName() { @Test public void reuseWritableFile_whenItHasNotExpired() throws IOException { File existingFile = new File(rootDir, "1000"); - if (!existingFile.createNewFile()) { - fail("Could not create temporary file"); - } + createFiles(existingFile); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); FileHolder file = fileProvider.getWritableFile(); @@ -62,9 +60,7 @@ public void reuseWritableFile_whenItHasNotExpired() throws IOException { @Test public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException { File existingFile = new File(rootDir, "1000"); - if (!existingFile.createNewFile()) { - fail("Could not create temporary file"); - } + createFiles(existingFile); doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); FileHolder file = fileProvider.getWritableFile(); @@ -78,9 +74,7 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { File expiredReadableFile = new File(rootDir, "1000"); // Files that cannot be written, but can still be read, aren't ready to be deleted. File expiredWritableFile = new File(rootDir, "10000"); - if (!expiredReadableFile.createNewFile() || !expiredWritableFile.createNewFile()) { - fail("Could not create temporary files"); - } + createFiles(expiredReadableFile, expiredWritableFile); doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); FileHolder file = fileProvider.getWritableFile(); @@ -89,4 +83,26 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { assertTrue(expiredWritableFile.exists()); assertNotEquals(expiredWritableFile, file.getFile()); } + + @Test + public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOException { + long readableFileCreationTime = 1000; + long currentTime = readableFileCreationTime + MIN_FILE_AGE_FOR_READ_MILLIS; + doReturn(currentTime).when(timeProvider).getSystemCurrentTimeMillis(); + File writableFile = new File(rootDir, String.valueOf(currentTime)); + File readableFile = new File(rootDir, String.valueOf(readableFileCreationTime)); + createFiles(writableFile, readableFile); + + FileHolder file = fileProvider.getReadableFile(); + + assertEquals(readableFile, file.getFile()); + } + + private static void createFiles(File... files) throws IOException { + for (File file : files) { + if (!file.createNewFile()) { + fail("Could not create temporary file: " + file); + } + } + } } From 8ea5ec83735d94773c4a97298ecbf8dd02bf2e16 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 18:16:00 +0200 Subject: [PATCH 046/209] Ensuring the oldest readable file is provided --- .../buffering/internal/storage/FileProvider.java | 13 ++++++++++--- .../internal/storage/FileProviderTest.java | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index e4a15748a..4da5e372b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -50,14 +50,21 @@ private void purgeExpiredFilesIfAny(long currentTimeMillis) { private File findReadableFile() { long currentTime = timeProvider.getSystemCurrentTimeMillis(); File[] existingFiles = rootDir.listFiles(); + File oldestFileAvailable = null; + long oldestFileCreationTimeMillis = 0; if (existingFiles != null) { for (File existingFile : existingFiles) { - if (isReadyToBeRead(currentTime, Long.parseLong(existingFile.getName()))) { - return existingFile; + long existingFileCreationTimeMillis = Long.parseLong(existingFile.getName()); + if (isReadyToBeRead(currentTime, existingFileCreationTimeMillis)) { + if (oldestFileAvailable == null + || existingFileCreationTimeMillis < oldestFileCreationTimeMillis) { + oldestFileCreationTimeMillis = existingFileCreationTimeMillis; + oldestFileAvailable = existingFile; + } } } } - return null; + return oldestFileAvailable; } @Nullable diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index d10c7ff07..4995f3bdd 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -98,6 +98,22 @@ public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOEx assertEquals(readableFile, file.getFile()); } + @Test + public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() throws IOException { + long newerReadableFileCreationTime = 1000; + long olderReadableFileCreationTime = 900; + long currentTime = newerReadableFileCreationTime + MIN_FILE_AGE_FOR_READ_MILLIS; + doReturn(currentTime).when(timeProvider).getSystemCurrentTimeMillis(); + File writableFile = new File(rootDir, String.valueOf(currentTime)); + File readableFileOlder = new File(rootDir, String.valueOf(olderReadableFileCreationTime)); + File readableFileNewer = new File(rootDir, String.valueOf(newerReadableFileCreationTime)); + createFiles(writableFile, readableFileNewer, readableFileOlder); + + FileHolder file = fileProvider.getReadableFile(); + + assertEquals(readableFileOlder, file.getFile()); + } + private static void createFiles(File... files) throws IOException { for (File file : files) { if (!file.createNewFile()) { From a875d2374cb7306ca030a21eeccb006cd4d58376 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 18:29:08 +0200 Subject: [PATCH 047/209] Avoiding to provide expired readable files --- .../internal/storage/FileProvider.java | 3 +- .../internal/storage/FileProviderTest.java | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 4da5e372b..b22927f43 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -55,7 +55,8 @@ private File findReadableFile() { if (existingFiles != null) { for (File existingFile : existingFiles) { long existingFileCreationTimeMillis = Long.parseLong(existingFile.getName()); - if (isReadyToBeRead(currentTime, existingFileCreationTimeMillis)) { + if (isReadyToBeRead(currentTime, existingFileCreationTimeMillis) + && !hasExpiredForReading(currentTime, existingFileCreationTimeMillis)) { if (oldestFileAvailable == null || existingFileCreationTimeMillis < oldestFileCreationTimeMillis) { oldestFileCreationTimeMillis = existingFileCreationTimeMillis; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 4995f3bdd..7ffe34b72 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.doReturn; @@ -114,6 +115,33 @@ public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() thr assertEquals(readableFileOlder, file.getFile()); } + @Test + public void provideNullFileForRead_whenNoFilesAreAvailable() { + assertNull(fileProvider.getReadableFile()); + } + + @Test + public void provideNullFileForRead_whenOnlyReadableFilesAreAvailable() throws IOException { + long currentTime = 1000; + File writableFile = new File(rootDir, String.valueOf(currentTime)); + createFiles(writableFile); + + assertNull(fileProvider.getReadableFile()); + } + + @Test + public void provideNullFileForRead_whenReadableFilesAreExpired() throws IOException { + long creationReferenceTime = 1000; + File expiredReadableFile1 = new File(rootDir, String.valueOf(creationReferenceTime - 1)); + File expiredReadableFile2 = new File(rootDir, String.valueOf(creationReferenceTime - 10)); + createFiles(expiredReadableFile1, expiredReadableFile2); + doReturn(creationReferenceTime + MAX_FILE_AGE_FOR_READ_MILLIS) + .when(timeProvider) + .getSystemCurrentTimeMillis(); + + assertNull(fileProvider.getReadableFile()); + } + private static void createFiles(File... files) throws IOException { for (File file : files) { if (!file.createNewFile()) { From 03bb26bc7457cb08cf7464ba2055cd2736e2c26f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:03:07 +0200 Subject: [PATCH 048/209] Validating writable max file size --- .../internal/storage/Configuration.java | 5 +++- .../internal/storage/FileProvider.java | 6 ++++- .../internal/storage/FileProviderTest.java | 25 ++++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index 47d9688e3..acba9d4aa 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -4,13 +4,16 @@ public class Configuration { public final long maxFileAgeForWriteInMillis; public final long minFileAgeForReadInMillis; public final long maxFileAgeForReadInMillis; + public final long maxFileSize; public Configuration( long maxFileAgeForWriteInMillis, long minFileAgeForReadInMillis, - long maxFileAgeForReadInMillis) { + long maxFileAgeForReadInMillis, + long maxFileSize) { this.maxFileAgeForWriteInMillis = maxFileAgeForWriteInMillis; this.minFileAgeForReadInMillis = minFileAgeForReadInMillis; this.maxFileAgeForReadInMillis = maxFileAgeForReadInMillis; + this.maxFileSize = maxFileSize; } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index b22927f43..1c76ec6f8 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -27,7 +27,7 @@ public synchronized FileHolder getReadableFile() { public synchronized FileHolder getWritableFile() { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); File existingFile = findExistingWritableFile(systemCurrentTimeMillis); - if (existingFile != null) { + if (existingFile != null && hasNotReachedMaxSize(existingFile)) { return new SimpleFileHolder(existingFile); } purgeExpiredFilesIfAny(systemCurrentTimeMillis); @@ -96,6 +96,10 @@ private boolean hasNotExpiredForWriting(long systemCurrentTimeMillis, long creat < (createdTimeInMillis + configuration.maxFileAgeForWriteInMillis); } + private boolean hasNotReachedMaxSize(File file) { + return file.length() < configuration.maxFileSize; + } + public static final class SimpleFileHolder implements FileHolder { private final File file; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 7ffe34b72..97ceb457f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -12,10 +12,13 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +@SuppressWarnings("SystemOut") class FileProviderTest { @TempDir File rootDir; @@ -24,6 +27,7 @@ class FileProviderTest { private static final long MAX_FILE_AGE_FOR_WRITE_MILLIS = 1000; private static final long MIN_FILE_AGE_FOR_READ_MILLIS = MAX_FILE_AGE_FOR_WRITE_MILLIS + 500; private static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; + private static final long MAX_FILE_SIZE = 100; @BeforeEach public void setUp() { @@ -35,7 +39,8 @@ public void setUp() { new Configuration( MAX_FILE_AGE_FOR_WRITE_MILLIS, MIN_FILE_AGE_FOR_READ_MILLIS, - MAX_FILE_AGE_FOR_READ_MILLIS)); + MAX_FILE_AGE_FOR_READ_MILLIS, + MAX_FILE_SIZE)); } @Test @@ -69,6 +74,18 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException assertNotEquals(existingFile, file.getFile()); } + @Test + public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOException { + File existingFile = new File(rootDir, "1000"); + createFiles(existingFile); + fillWithBytes(existingFile, 100); + doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder file = fileProvider.getWritableFile(); + + assertNotEquals(existingFile, file.getFile()); + } + @Test public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { // Files that cannot be read from are considered fully expired. @@ -142,6 +159,12 @@ public void provideNullFileForRead_whenReadableFilesAreExpired() throws IOExcept assertNull(fileProvider.getReadableFile()); } + private static void fillWithBytes(File file, int size) throws IOException { + byte[] bytes = new byte[size]; + Arrays.fill(bytes, (byte) 1); + Files.write(file.toPath(), bytes); + } + private static void createFiles(File... files) throws IOException { for (File file : files) { if (!file.createNewFile()) { From 9255f733e10913567e74814536a44f514e013c67 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:04:39 +0200 Subject: [PATCH 049/209] Making max file size int --- .../disk/buffering/internal/storage/Configuration.java | 4 ++-- .../disk/buffering/internal/storage/FileProviderTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index acba9d4aa..f3b7be157 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -4,13 +4,13 @@ public class Configuration { public final long maxFileAgeForWriteInMillis; public final long minFileAgeForReadInMillis; public final long maxFileAgeForReadInMillis; - public final long maxFileSize; + public final int maxFileSize; public Configuration( long maxFileAgeForWriteInMillis, long minFileAgeForReadInMillis, long maxFileAgeForReadInMillis, - long maxFileSize) { + int maxFileSize) { this.maxFileAgeForWriteInMillis = maxFileAgeForWriteInMillis; this.minFileAgeForReadInMillis = minFileAgeForReadInMillis; this.maxFileAgeForReadInMillis = maxFileAgeForReadInMillis; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 97ceb457f..6eaebc11a 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -27,7 +27,7 @@ class FileProviderTest { private static final long MAX_FILE_AGE_FOR_WRITE_MILLIS = 1000; private static final long MIN_FILE_AGE_FOR_READ_MILLIS = MAX_FILE_AGE_FOR_WRITE_MILLIS + 500; private static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; - private static final long MAX_FILE_SIZE = 100; + private static final int MAX_FILE_SIZE = 100; @BeforeEach public void setUp() { @@ -78,7 +78,7 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOException { File existingFile = new File(rootDir, "1000"); createFiles(existingFile); - fillWithBytes(existingFile, 100); + fillWithBytes(existingFile, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); FileHolder file = fileProvider.getWritableFile(); From 9ca6272a71812545b37e82652f3e67ff0876b6b6 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:05:45 +0200 Subject: [PATCH 050/209] Clean up --- .../internal/storage/FileProvider.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 1c76ec6f8..350a65f4e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -35,17 +35,6 @@ public synchronized FileHolder getWritableFile() { return new SimpleFileHolder(file); } - private void purgeExpiredFilesIfAny(long currentTimeMillis) { - File[] existingFiles = rootDir.listFiles(); - if (existingFiles != null) { - for (File existingFile : existingFiles) { - if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { - existingFile.delete(); - } - } - } - } - @Nullable private File findReadableFile() { long currentTime = timeProvider.getSystemCurrentTimeMillis(); @@ -82,6 +71,17 @@ private File findExistingWritableFile(long systemCurrentTimeMillis) { return null; } + private void purgeExpiredFilesIfAny(long currentTimeMillis) { + File[] existingFiles = rootDir.listFiles(); + if (existingFiles != null) { + for (File existingFile : existingFiles) { + if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { + existingFile.delete(); + } + } + } + } + private boolean isReadyToBeRead(long currentTimeMillis, long createdTimeInMillis) { return currentTimeMillis >= (createdTimeInMillis + configuration.minFileAgeForReadInMillis); } From e3ddd63902ba0dbfff0095e0d76851803b4bf0b9 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 19:54:18 +0200 Subject: [PATCH 051/209] Removing old file if space is needed in the folder --- .../internal/storage/Configuration.java | 5 +- .../internal/storage/FileProvider.java | 67 +++++++++++++------ .../internal/storage/FileProviderTest.java | 33 +++++++-- 3 files changed, 78 insertions(+), 27 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index f3b7be157..9eb9a39ce 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -5,15 +5,18 @@ public class Configuration { public final long minFileAgeForReadInMillis; public final long maxFileAgeForReadInMillis; public final int maxFileSize; + public final int maxFolderSize; public Configuration( long maxFileAgeForWriteInMillis, long minFileAgeForReadInMillis, long maxFileAgeForReadInMillis, - int maxFileSize) { + int maxFileSize, + int maxFolderSize) { this.maxFileAgeForWriteInMillis = maxFileAgeForWriteInMillis; this.minFileAgeForReadInMillis = minFileAgeForReadInMillis; this.maxFileAgeForReadInMillis = maxFileAgeForReadInMillis; this.maxFileSize = maxFileSize; + this.maxFolderSize = maxFolderSize; } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 350a65f4e..be10612f2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -2,6 +2,8 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; +import java.io.IOException; +import java.util.Objects; import javax.annotation.Nullable; public final class FileProvider { @@ -24,13 +26,17 @@ public synchronized FileHolder getReadableFile() { return null; } - public synchronized FileHolder getWritableFile() { + public synchronized FileHolder getWritableFile() throws IOException { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); - File existingFile = findExistingWritableFile(systemCurrentTimeMillis); - if (existingFile != null && hasNotReachedMaxSize(existingFile)) { - return new SimpleFileHolder(existingFile); + File[] existingFiles = rootDir.listFiles(); + if (existingFiles != null) { + File existingFile = findExistingWritableFile(existingFiles, systemCurrentTimeMillis); + if (existingFile != null && hasNotReachedMaxSize(existingFile)) { + return new SimpleFileHolder(existingFile); + } + purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis); + removeOldestFileIfSpaceIsNeeded(existingFiles); } - purgeExpiredFilesIfAny(systemCurrentTimeMillis); File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); return new SimpleFileHolder(file); } @@ -58,30 +64,51 @@ private File findReadableFile() { } @Nullable - private File findExistingWritableFile(long systemCurrentTimeMillis) { - File[] existingFiles = rootDir.listFiles(); - if (existingFiles != null) { - for (File existingFile : existingFiles) { - if (hasNotExpiredForWriting( - systemCurrentTimeMillis, Long.parseLong(existingFile.getName()))) { - return existingFile; - } + private File findExistingWritableFile(File[] existingFiles, long systemCurrentTimeMillis) { + for (File existingFile : existingFiles) { + if (hasNotExpiredForWriting( + systemCurrentTimeMillis, Long.parseLong(existingFile.getName()))) { + return existingFile; } } return null; } - private void purgeExpiredFilesIfAny(long currentTimeMillis) { - File[] existingFiles = rootDir.listFiles(); - if (existingFiles != null) { - for (File existingFile : existingFiles) { - if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { - existingFile.delete(); - } + private void purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) { + for (File existingFile : existingFiles) { + if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { + existingFile.delete(); } } } + private void removeOldestFileIfSpaceIsNeeded(File[] existingFiles) throws IOException { + if (neededToClearSpaceForNewFile(existingFiles)) { + File oldest = getOldest(existingFiles); + if (!oldest.delete()) { + throw new IOException("Could not delete the file: " + oldest); + } + } + } + + private static File getOldest(File[] existingFiles) { + File oldest = null; + for (File existingFile : existingFiles) { + if (oldest == null || existingFile.getName().compareTo(oldest.getName()) < 0) { + oldest = existingFile; + } + } + return Objects.requireNonNull(oldest); + } + + private boolean neededToClearSpaceForNewFile(File[] existingFiles) { + int currentFolderSize = 0; + for (File existingFile : existingFiles) { + currentFolderSize += (int) existingFile.length(); + } + return (currentFolderSize + configuration.maxFileSize) > configuration.maxFolderSize; + } + private boolean isReadyToBeRead(long currentTimeMillis, long createdTimeInMillis) { return currentTimeMillis >= (createdTimeInMillis + configuration.minFileAgeForReadInMillis); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 6eaebc11a..fa849700d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -13,7 +13,6 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -28,6 +27,7 @@ class FileProviderTest { private static final long MIN_FILE_AGE_FOR_READ_MILLIS = MAX_FILE_AGE_FOR_WRITE_MILLIS + 500; private static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; private static final int MAX_FILE_SIZE = 100; + private static final int MAX_FOLDER_SIZE = 300; @BeforeEach public void setUp() { @@ -40,11 +40,12 @@ public void setUp() { MAX_FILE_AGE_FOR_WRITE_MILLIS, MIN_FILE_AGE_FOR_READ_MILLIS, MAX_FILE_AGE_FOR_READ_MILLIS, - MAX_FILE_SIZE)); + MAX_FILE_SIZE, + MAX_FOLDER_SIZE)); } @Test - public void createWritableFile_withTimeMillisAsName() { + public void createWritableFile_withTimeMillisAsName() throws IOException { doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); FileHolder file = fileProvider.getWritableFile(); @@ -86,6 +87,28 @@ public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOE assertNotEquals(existingFile, file.getFile()); } + @Test + public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSizeLimit() + throws IOException { + File existingFile1 = new File(rootDir, "1000"); + File existingFile2 = new File(rootDir, "1400"); + File existingFile3 = new File(rootDir, "1100"); + createFiles(existingFile3, existingFile2, existingFile1); + fillWithBytes(existingFile1, MAX_FILE_SIZE); + fillWithBytes(existingFile2, MAX_FILE_SIZE); + fillWithBytes(existingFile3, MAX_FILE_SIZE); + doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder file = fileProvider.getWritableFile(); + + assertNotEquals(existingFile1, file.getFile()); + assertNotEquals(existingFile2, file.getFile()); + assertNotEquals(existingFile3, file.getFile()); + assertTrue(existingFile2.exists()); + assertTrue(existingFile3.exists()); + assertFalse(existingFile1.exists()); + } + @Test public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { // Files that cannot be read from are considered fully expired. @@ -160,9 +183,7 @@ public void provideNullFileForRead_whenReadableFilesAreExpired() throws IOExcept } private static void fillWithBytes(File file, int size) throws IOException { - byte[] bytes = new byte[size]; - Arrays.fill(bytes, (byte) 1); - Files.write(file.toPath(), bytes); + Files.write(file.toPath(), new byte[size]); } private static void createFiles(File... files) throws IOException { From 975917e05ec38ac19d9847d04f2d04bc6aa5b96e Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 20:01:36 +0200 Subject: [PATCH 052/209] Validating checking existing files after purge is done --- .../internal/storage/FileProvider.java | 12 ++++++---- .../internal/storage/FileProviderTest.java | 23 +++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index be10612f2..13c0ad2e4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -35,7 +35,7 @@ public synchronized FileHolder getWritableFile() throws IOException { return new SimpleFileHolder(existingFile); } purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis); - removeOldestFileIfSpaceIsNeeded(existingFiles); + removeOldestFileIfSpaceIsNeeded(rootDir.listFiles()); } File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); return new SimpleFileHolder(file); @@ -83,10 +83,12 @@ private void purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis } private void removeOldestFileIfSpaceIsNeeded(File[] existingFiles) throws IOException { - if (neededToClearSpaceForNewFile(existingFiles)) { - File oldest = getOldest(existingFiles); - if (!oldest.delete()) { - throw new IOException("Could not delete the file: " + oldest); + if (existingFiles != null && existingFiles.length > 0) { + if (neededToClearSpaceForNewFile(existingFiles)) { + File oldest = getOldest(existingFiles); + if (!oldest.delete()) { + throw new IOException("Could not delete the file: " + oldest); + } } } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index fa849700d..a01594408 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -109,6 +109,29 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz assertFalse(existingFile1.exists()); } + @Test + public void + createWritableFile_andDoNotRemoveOldestOne_whenNonExpiredOneReachedTheSizeLimit_andExpiredFilesArePurged() + throws IOException { + File existingFile1 = new File(rootDir, "1100"); + File existingFile2 = new File(rootDir, "1400"); + File existingFile3 = new File(rootDir, "900"); + createFiles(existingFile3, existingFile2, existingFile1); + fillWithBytes(existingFile1, MAX_FILE_SIZE); + fillWithBytes(existingFile2, MAX_FILE_SIZE); + fillWithBytes(existingFile3, MAX_FILE_SIZE); + doReturn(11_000L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder file = fileProvider.getWritableFile(); + + assertNotEquals(existingFile1, file.getFile()); + assertNotEquals(existingFile2, file.getFile()); + assertNotEquals(existingFile3, file.getFile()); + assertTrue(existingFile2.exists()); + assertTrue(existingFile1.exists()); + assertFalse(existingFile3.exists()); + } + @Test public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { // Files that cannot be read from are considered fully expired. From c9919d470a06926ae4c2320c820b911c73a9968b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 21:35:41 +0200 Subject: [PATCH 053/209] Improving getting writable file by listing files once --- .../buffering/internal/storage/FileProvider.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 13c0ad2e4..13483e8e7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -34,8 +34,9 @@ public synchronized FileHolder getWritableFile() throws IOException { if (existingFile != null && hasNotReachedMaxSize(existingFile)) { return new SimpleFileHolder(existingFile); } - purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis); - removeOldestFileIfSpaceIsNeeded(rootDir.listFiles()); + if (purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis) == 0) { + removeOldestFileIfSpaceIsNeeded(existingFiles); + } } File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); return new SimpleFileHolder(file); @@ -74,16 +75,20 @@ private File findExistingWritableFile(File[] existingFiles, long systemCurrentTi return null; } - private void purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) { + private int purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) { + int filesDeleted = 0; for (File existingFile : existingFiles) { if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { - existingFile.delete(); + if (existingFile.delete()) { + filesDeleted++; + } } } + return filesDeleted; } private void removeOldestFileIfSpaceIsNeeded(File[] existingFiles) throws IOException { - if (existingFiles != null && existingFiles.length > 0) { + if (existingFiles.length > 0) { if (neededToClearSpaceForNewFile(existingFiles)) { File oldest = getOldest(existingFiles); if (!oldest.delete()) { From 325661cb83d59072f530a0fd0f056115fb7140fe Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 21:43:26 +0200 Subject: [PATCH 054/209] Created filderholder implementations --- .../internal/storage/FileHolder.java | 7 ----- .../internal/storage/FileProvider.java | 25 +++++------------ .../internal/storage/files/FileHolder.java | 12 +++++++++ .../internal/storage/files/ReadableFile.java | 13 +++++++++ .../internal/storage/files/WritableFile.java | 13 +++++++++ .../internal/storage/FileProviderTest.java | 27 ++++++++++--------- 6 files changed, 59 insertions(+), 38 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java deleted file mode 100644 index b5508c4ad..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileHolder.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.opentelemetry.contrib.disk.buffering.internal.storage; - -import java.io.File; - -public interface FileHolder { - File getFile(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 13483e8e7..073927d7b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -1,5 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -18,28 +20,28 @@ public FileProvider(File rootDir, TimeProvider timeProvider, Configuration confi } @Nullable - public synchronized FileHolder getReadableFile() { + public synchronized ReadableFile getReadableFile() { File readableFile = findReadableFile(); if (readableFile != null) { - return new SimpleFileHolder(readableFile); + return new ReadableFile(readableFile); } return null; } - public synchronized FileHolder getWritableFile() throws IOException { + public synchronized WritableFile getWritableFile() throws IOException { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); File[] existingFiles = rootDir.listFiles(); if (existingFiles != null) { File existingFile = findExistingWritableFile(existingFiles, systemCurrentTimeMillis); if (existingFile != null && hasNotReachedMaxSize(existingFile)) { - return new SimpleFileHolder(existingFile); + return new WritableFile(existingFile); } if (purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis) == 0) { removeOldestFileIfSpaceIsNeeded(existingFiles); } } File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); - return new SimpleFileHolder(file); + return new WritableFile(file); } @Nullable @@ -133,17 +135,4 @@ private boolean hasNotExpiredForWriting(long systemCurrentTimeMillis, long creat private boolean hasNotReachedMaxSize(File file) { return file.length() < configuration.maxFileSize; } - - public static final class SimpleFileHolder implements FileHolder { - private final File file; - - public SimpleFileHolder(File file) { - this.file = file; - } - - @Override - public File getFile() { - return file; - } - } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java new file mode 100644 index 000000000..b9f3a5798 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java @@ -0,0 +1,12 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files; + +import java.io.Closeable; +import java.io.File; + +public abstract class FileHolder implements Closeable { + public final File file; + + public FileHolder(File file) { + this.file = file; + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java new file mode 100644 index 000000000..ea9af70a8 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -0,0 +1,13 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files; + +import java.io.File; +import java.io.IOException; + +public class ReadableFile extends FileHolder { + public ReadableFile(File file) { + super(file); + } + + @Override + public void close() throws IOException {} +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java new file mode 100644 index 000000000..b2d2a24e9 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -0,0 +1,13 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files; + +import java.io.File; +import java.io.IOException; + +public class WritableFile extends FileHolder { + public WritableFile(File file) { + super(file); + } + + @Override + public void close() throws IOException {} +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index a01594408..cc6cbd861 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -9,6 +9,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.FileHolder; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -50,7 +51,7 @@ public void createWritableFile_withTimeMillisAsName() throws IOException { FileHolder file = fileProvider.getWritableFile(); - assertEquals("1000", file.getFile().getName()); + assertEquals("1000", file.file.getName()); } @Test @@ -61,7 +62,7 @@ public void reuseWritableFile_whenItHasNotExpired() throws IOException { FileHolder file = fileProvider.getWritableFile(); - assertEquals(existingFile, file.getFile()); + assertEquals(existingFile, file.file); } @Test @@ -72,7 +73,7 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException FileHolder file = fileProvider.getWritableFile(); - assertNotEquals(existingFile, file.getFile()); + assertNotEquals(existingFile, file.file); } @Test @@ -84,7 +85,7 @@ public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOE FileHolder file = fileProvider.getWritableFile(); - assertNotEquals(existingFile, file.getFile()); + assertNotEquals(existingFile, file.file); } @Test @@ -101,9 +102,9 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz FileHolder file = fileProvider.getWritableFile(); - assertNotEquals(existingFile1, file.getFile()); - assertNotEquals(existingFile2, file.getFile()); - assertNotEquals(existingFile3, file.getFile()); + assertNotEquals(existingFile1, file.file); + assertNotEquals(existingFile2, file.file); + assertNotEquals(existingFile3, file.file); assertTrue(existingFile2.exists()); assertTrue(existingFile3.exists()); assertFalse(existingFile1.exists()); @@ -124,9 +125,9 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz FileHolder file = fileProvider.getWritableFile(); - assertNotEquals(existingFile1, file.getFile()); - assertNotEquals(existingFile2, file.getFile()); - assertNotEquals(existingFile3, file.getFile()); + assertNotEquals(existingFile1, file.file); + assertNotEquals(existingFile2, file.file); + assertNotEquals(existingFile3, file.file); assertTrue(existingFile2.exists()); assertTrue(existingFile1.exists()); assertFalse(existingFile3.exists()); @@ -145,7 +146,7 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { assertFalse(expiredReadableFile.exists()); assertTrue(expiredWritableFile.exists()); - assertNotEquals(expiredWritableFile, file.getFile()); + assertNotEquals(expiredWritableFile, file.file); } @Test @@ -159,7 +160,7 @@ public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOEx FileHolder file = fileProvider.getReadableFile(); - assertEquals(readableFile, file.getFile()); + assertEquals(readableFile, file.file); } @Test @@ -175,7 +176,7 @@ public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() thr FileHolder file = fileProvider.getReadableFile(); - assertEquals(readableFileOlder, file.getFile()); + assertEquals(readableFileOlder, file.file); } @Test From 3b3618f2bafaa9ffd38300a5ddb81398fd0e8b9f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 21:44:00 +0200 Subject: [PATCH 055/209] Making fileholder implementations final --- .../disk/buffering/internal/storage/files/ReadableFile.java | 2 +- .../disk/buffering/internal/storage/files/WritableFile.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index ea9af70a8..0fc817c6b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -3,7 +3,7 @@ import java.io.File; import java.io.IOException; -public class ReadableFile extends FileHolder { +public final class ReadableFile extends FileHolder { public ReadableFile(File file) { super(file); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index b2d2a24e9..d2edb60f0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -3,7 +3,7 @@ import java.io.File; import java.io.IOException; -public class WritableFile extends FileHolder { +public final class WritableFile extends FileHolder { public WritableFile(File file) { super(file); } From 03e2e92301883a7dc8451548f4488e80a2be6a17 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 21:44:36 +0200 Subject: [PATCH 056/209] Clean up --- .../disk/buffering/internal/storage/files/ReadableFile.java | 3 +-- .../disk/buffering/internal/storage/files/WritableFile.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 0fc817c6b..01aada293 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import java.io.File; -import java.io.IOException; public final class ReadableFile extends FileHolder { public ReadableFile(File file) { @@ -9,5 +8,5 @@ public ReadableFile(File file) { } @Override - public void close() throws IOException {} + public void close() {} } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index d2edb60f0..d020b0b58 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -1,7 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import java.io.File; -import java.io.IOException; public final class WritableFile extends FileHolder { public WritableFile(File file) { @@ -9,5 +8,5 @@ public WritableFile(File file) { } @Override - public void close() throws IOException {} + public void close() {} } From bbccc77847fbb175f3f146042314ae18f7280f5c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:05:03 +0200 Subject: [PATCH 057/209] Reusing writable file from memory --- .../internal/storage/FileProvider.java | 20 ++++++++++++++----- .../internal/storage/files/FileHolder.java | 2 ++ .../internal/storage/files/ReadableFile.java | 5 +++++ .../internal/storage/files/WritableFile.java | 5 +++++ .../internal/storage/FileProviderTest.java | 11 ++++++++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 073927d7b..46ff0cebd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -12,6 +12,8 @@ public final class FileProvider { private final File rootDir; private final TimeProvider timeProvider; private final Configuration configuration; + @Nullable private WritableFile currentWritableFile; + // private ReadableFile currentReadableFile; public FileProvider(File rootDir, TimeProvider timeProvider, Configuration configuration) { this.rootDir = rootDir; @@ -29,19 +31,27 @@ public synchronized ReadableFile getReadableFile() { } public synchronized WritableFile getWritableFile() throws IOException { + if (currentWritableFile != null) { + return currentWritableFile; + } long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); File[] existingFiles = rootDir.listFiles(); if (existingFiles != null) { File existingFile = findExistingWritableFile(existingFiles, systemCurrentTimeMillis); - if (existingFile != null && hasNotReachedMaxSize(existingFile)) { - return new WritableFile(existingFile); + if (existingFile != null && hasNotReachedMaxSize(existingFile.length())) { + return createWritableFile(existingFile); } if (purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis) == 0) { removeOldestFileIfSpaceIsNeeded(existingFiles); } } File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); - return new WritableFile(file); + return createWritableFile(file); + } + + private WritableFile createWritableFile(File existingFile) { + currentWritableFile = new WritableFile(existingFile); + return currentWritableFile; } @Nullable @@ -132,7 +142,7 @@ private boolean hasNotExpiredForWriting(long systemCurrentTimeMillis, long creat < (createdTimeInMillis + configuration.maxFileAgeForWriteInMillis); } - private boolean hasNotReachedMaxSize(File file) { - return file.length() < configuration.maxFileSize; + private boolean hasNotReachedMaxSize(long fileSize) { + return fileSize < configuration.maxFileSize; } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java index b9f3a5798..efc2015ec 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java @@ -9,4 +9,6 @@ public abstract class FileHolder implements Closeable { public FileHolder(File file) { this.file = file; } + + public abstract long getSize(); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 01aada293..92e8824e9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -7,6 +7,11 @@ public ReadableFile(File file) { super(file); } + @Override + public long getSize() { + return file.length(); + } + @Override public void close() {} } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index d020b0b58..1a1dbc170 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -7,6 +7,11 @@ public WritableFile(File file) { super(file); } + @Override + public long getSize() { + return file.length(); + } + @Override public void close() {} } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index cc6cbd861..93f0c346f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -65,6 +65,17 @@ public void reuseWritableFile_whenItHasNotExpired() throws IOException { assertEquals(existingFile, file.file); } + @Test + public void reuseWritableFile_fromMemory() throws IOException { + File existingFile = new File(rootDir, "1000"); + createFiles(existingFile); + doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + + FileHolder reusedFile = fileProvider.getWritableFile(); + + assertEquals(reusedFile, fileProvider.getWritableFile()); + } + @Test public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException { File existingFile = new File(rootDir, "1000"); From d6a9c817ca8183de6f5f1fb02cbcd1ba5756e658 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:09:20 +0200 Subject: [PATCH 058/209] Not returning current writable file from memory --- .../disk/buffering/internal/storage/FileProvider.java | 10 ++++------ .../buffering/internal/storage/FileProviderTest.java | 11 ----------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 46ff0cebd..04d0c563d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -8,6 +8,7 @@ import java.util.Objects; import javax.annotation.Nullable; +@SuppressWarnings("FieldCanBeLocal") // todo delete public final class FileProvider { private final File rootDir; private final TimeProvider timeProvider; @@ -31,14 +32,11 @@ public synchronized ReadableFile getReadableFile() { } public synchronized WritableFile getWritableFile() throws IOException { - if (currentWritableFile != null) { - return currentWritableFile; - } long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); File[] existingFiles = rootDir.listFiles(); if (existingFiles != null) { File existingFile = findExistingWritableFile(existingFiles, systemCurrentTimeMillis); - if (existingFile != null && hasNotReachedMaxSize(existingFile.length())) { + if (existingFile != null && hasNotReachedMaxSize(existingFile)) { return createWritableFile(existingFile); } if (purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis) == 0) { @@ -142,7 +140,7 @@ private boolean hasNotExpiredForWriting(long systemCurrentTimeMillis, long creat < (createdTimeInMillis + configuration.maxFileAgeForWriteInMillis); } - private boolean hasNotReachedMaxSize(long fileSize) { - return fileSize < configuration.maxFileSize; + private boolean hasNotReachedMaxSize(File file) { + return file.length() < configuration.maxFileSize; } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index 93f0c346f..cc6cbd861 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -65,17 +65,6 @@ public void reuseWritableFile_whenItHasNotExpired() throws IOException { assertEquals(existingFile, file.file); } - @Test - public void reuseWritableFile_fromMemory() throws IOException { - File existingFile = new File(rootDir, "1000"); - createFiles(existingFile); - doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - - FileHolder reusedFile = fileProvider.getWritableFile(); - - assertEquals(reusedFile, fileProvider.getWritableFile()); - } - @Test public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException { File existingFile = new File(rootDir, "1000"); From 0e2aece048bc5f7254510e87dab116bc2cb7e3e9 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 23:22:04 +0200 Subject: [PATCH 059/209] Starting to implement Writable file methods --- .../internal/storage/FileProvider.java | 2 +- .../internal/storage/files/ReadableFile.java | 7 ++- .../{FileHolder.java => StorageFile.java} | 6 +- .../internal/storage/files/WritableFile.java | 37 +++++++++++-- .../internal/storage/FileProviderTest.java | 39 +++++-------- .../buffering/internal/storage/TestData.java | 19 +++++++ .../storage/files/WritableFileTest.java | 55 +++++++++++++++++++ 7 files changed, 132 insertions(+), 33 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/{FileHolder.java => StorageFile.java} (62%) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java index 04d0c563d..dc4cc2de7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java @@ -48,7 +48,7 @@ public synchronized WritableFile getWritableFile() throws IOException { } private WritableFile createWritableFile(File existingFile) { - currentWritableFile = new WritableFile(existingFile); + currentWritableFile = new WritableFile(existingFile, configuration, timeProvider); return currentWritableFile; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 92e8824e9..5af1430e7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -2,7 +2,7 @@ import java.io.File; -public final class ReadableFile extends FileHolder { +public final class ReadableFile extends StorageFile { public ReadableFile(File file) { super(file); } @@ -12,6 +12,11 @@ public long getSize() { return file.length(); } + @Override + public boolean isValid() { + return true; + } + @Override public void close() {} } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java similarity index 62% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java index efc2015ec..c25cd2bb7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/FileHolder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java @@ -3,12 +3,14 @@ import java.io.Closeable; import java.io.File; -public abstract class FileHolder implements Closeable { +public abstract class StorageFile implements Closeable { public final File file; - public FileHolder(File file) { + public StorageFile(File file) { this.file = file; } public abstract long getSize(); + + public abstract boolean isValid(); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 1a1dbc170..f525b1bab 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -1,17 +1,46 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; -public final class WritableFile extends FileHolder { - public WritableFile(File file) { +public final class WritableFile extends StorageFile { + private final Configuration configuration; + private final TimeProvider timeProvider; + private final long expireTimeMillis; + private int size; + + public WritableFile(File file, Configuration configuration, TimeProvider timeProvider) { super(file); + this.configuration = configuration; + this.timeProvider = timeProvider; + long createdTimeMillis = Long.parseLong(file.getName()); + expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForWriteInMillis; + size = (int) file.length(); + } + + public synchronized void append(byte[] data) { + size += data.length; } @Override public long getSize() { - return file.length(); + return size; + } + + @Override + public synchronized boolean isValid() { + return writingTimeHasNotExpired() && hasNotReachedMaxSize(); + } + + private boolean hasNotReachedMaxSize() { + return size < configuration.maxFileSize; + } + + private boolean writingTimeHasNotExpired() { + return expireTimeMillis > timeProvider.getSystemCurrentTimeMillis(); } @Override - public void close() {} + public synchronized void close() {} } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java index cc6cbd861..824242b3a 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java @@ -1,5 +1,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_READ_MILLIS; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MIN_FILE_AGE_FOR_READ_MILLIS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -9,7 +12,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.FileHolder; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.StorageFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -24,32 +27,18 @@ class FileProviderTest { @TempDir File rootDir; private FileProvider fileProvider; private TimeProvider timeProvider; - private static final long MAX_FILE_AGE_FOR_WRITE_MILLIS = 1000; - private static final long MIN_FILE_AGE_FOR_READ_MILLIS = MAX_FILE_AGE_FOR_WRITE_MILLIS + 500; - private static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; - private static final int MAX_FILE_SIZE = 100; - private static final int MAX_FOLDER_SIZE = 300; @BeforeEach public void setUp() { timeProvider = mock(); - fileProvider = - new FileProvider( - rootDir, - timeProvider, - new Configuration( - MAX_FILE_AGE_FOR_WRITE_MILLIS, - MIN_FILE_AGE_FOR_READ_MILLIS, - MAX_FILE_AGE_FOR_READ_MILLIS, - MAX_FILE_SIZE, - MAX_FOLDER_SIZE)); + fileProvider = new FileProvider(rootDir, timeProvider, TestData.CONFIGURATION); } @Test public void createWritableFile_withTimeMillisAsName() throws IOException { doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertEquals("1000", file.file.getName()); } @@ -60,7 +49,7 @@ public void reuseWritableFile_whenItHasNotExpired() throws IOException { createFiles(existingFile); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertEquals(existingFile, file.file); } @@ -71,7 +60,7 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException createFiles(existingFile); doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertNotEquals(existingFile, file.file); } @@ -83,7 +72,7 @@ public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOE fillWithBytes(existingFile, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertNotEquals(existingFile, file.file); } @@ -100,7 +89,7 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz fillWithBytes(existingFile3, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertNotEquals(existingFile1, file.file); assertNotEquals(existingFile2, file.file); @@ -123,7 +112,7 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz fillWithBytes(existingFile3, MAX_FILE_SIZE); doReturn(11_000L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertNotEquals(existingFile1, file.file); assertNotEquals(existingFile2, file.file); @@ -142,7 +131,7 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { createFiles(expiredReadableFile, expiredWritableFile); doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); - FileHolder file = fileProvider.getWritableFile(); + StorageFile file = fileProvider.getWritableFile(); assertFalse(expiredReadableFile.exists()); assertTrue(expiredWritableFile.exists()); @@ -158,7 +147,7 @@ public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOEx File readableFile = new File(rootDir, String.valueOf(readableFileCreationTime)); createFiles(writableFile, readableFile); - FileHolder file = fileProvider.getReadableFile(); + StorageFile file = fileProvider.getReadableFile(); assertEquals(readableFile, file.file); } @@ -174,7 +163,7 @@ public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() thr File readableFileNewer = new File(rootDir, String.valueOf(newerReadableFileCreationTime)); createFiles(writableFile, readableFileNewer, readableFileOlder); - FileHolder file = fileProvider.getReadableFile(); + StorageFile file = fileProvider.getReadableFile(); assertEquals(readableFileOlder, file.file); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java new file mode 100644 index 000000000..95c5fd371 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -0,0 +1,19 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +public final class TestData { + + public static final long MAX_FILE_AGE_FOR_WRITE_MILLIS = 1000; + public static final long MIN_FILE_AGE_FOR_READ_MILLIS = MAX_FILE_AGE_FOR_WRITE_MILLIS + 500; + public static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; + public static final int MAX_FILE_SIZE = 100; + public static final int MAX_FOLDER_SIZE = 300; + public static final Configuration CONFIGURATION = + new Configuration( + MAX_FILE_AGE_FOR_WRITE_MILLIS, + MIN_FILE_AGE_FOR_READ_MILLIS, + MAX_FILE_AGE_FOR_READ_MILLIS, + MAX_FILE_SIZE, + MAX_FOLDER_SIZE); + + private TestData() {} +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java new file mode 100644 index 000000000..14eb79a6d --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -0,0 +1,55 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files; + +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; + +import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import java.io.File; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class WritableFileTest { + + @TempDir File rootDir; + private TimeProvider timeProvider; + private WritableFile writableFile; + private static final long CREATED_TIME_MILLIS = 1000L; + + @BeforeEach + public void setUp() { + timeProvider = mock(); + writableFile = + new WritableFile( + new File(rootDir, String.valueOf(CREATED_TIME_MILLIS)), + TestData.CONFIGURATION, + timeProvider); + } + + @Test + public void isValid_whenWriteAgeHasNotExpired() { + doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + + assertTrue(writableFile.isValid()); + } + + @Test + public void isNotValid_whenWriteAgeHasExpired() { + doReturn(2000L).when(timeProvider).getSystemCurrentTimeMillis(); + + assertFalse(writableFile.isValid()); + } + + @Test + public void isNotValid_whenSizeHasReachedTheMaxLimit() { + doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + + writableFile.append(new byte[MAX_FILE_SIZE]); + + assertFalse(writableFile.isValid()); + } +} From dc13e8669c774cf3c364c16efef74db7ed397ee1 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 7 Jun 2023 23:24:58 +0200 Subject: [PATCH 060/209] Renaming FileProvider to FolderManager --- .../{FileProvider.java => FolderManager.java} | 14 ++++----- ...oviderTest.java => FolderManagerTest.java} | 30 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/{FileProvider.java => FolderManager.java} (93%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/{FileProviderTest.java => FolderManagerTest.java} (90%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java similarity index 93% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index dc4cc2de7..cfc4b5009 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -9,15 +9,15 @@ import javax.annotation.Nullable; @SuppressWarnings("FieldCanBeLocal") // todo delete -public final class FileProvider { - private final File rootDir; +public final class FolderManager { + private final File folder; private final TimeProvider timeProvider; private final Configuration configuration; @Nullable private WritableFile currentWritableFile; // private ReadableFile currentReadableFile; - public FileProvider(File rootDir, TimeProvider timeProvider, Configuration configuration) { - this.rootDir = rootDir; + public FolderManager(File folder, TimeProvider timeProvider, Configuration configuration) { + this.folder = folder; this.timeProvider = timeProvider; this.configuration = configuration; } @@ -33,7 +33,7 @@ public synchronized ReadableFile getReadableFile() { public synchronized WritableFile getWritableFile() throws IOException { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); - File[] existingFiles = rootDir.listFiles(); + File[] existingFiles = folder.listFiles(); if (existingFiles != null) { File existingFile = findExistingWritableFile(existingFiles, systemCurrentTimeMillis); if (existingFile != null && hasNotReachedMaxSize(existingFile)) { @@ -43,7 +43,7 @@ public synchronized WritableFile getWritableFile() throws IOException { removeOldestFileIfSpaceIsNeeded(existingFiles); } } - File file = new File(rootDir, String.valueOf(systemCurrentTimeMillis)); + File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); return createWritableFile(file); } @@ -55,7 +55,7 @@ private WritableFile createWritableFile(File existingFile) { @Nullable private File findReadableFile() { long currentTime = timeProvider.getSystemCurrentTimeMillis(); - File[] existingFiles = rootDir.listFiles(); + File[] existingFiles = folder.listFiles(); File oldestFileAvailable = null; long oldestFileCreationTimeMillis = 0; if (existingFiles != null) { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java similarity index 90% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 824242b3a..4922c231c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FileProviderTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -22,23 +22,23 @@ import org.junit.jupiter.api.io.TempDir; @SuppressWarnings("SystemOut") -class FileProviderTest { +class FolderManagerTest { @TempDir File rootDir; - private FileProvider fileProvider; + private FolderManager folderManager; private TimeProvider timeProvider; @BeforeEach public void setUp() { timeProvider = mock(); - fileProvider = new FileProvider(rootDir, timeProvider, TestData.CONFIGURATION); + folderManager = new FolderManager(rootDir, timeProvider, TestData.CONFIGURATION); } @Test public void createWritableFile_withTimeMillisAsName() throws IOException { doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertEquals("1000", file.file.getName()); } @@ -49,7 +49,7 @@ public void reuseWritableFile_whenItHasNotExpired() throws IOException { createFiles(existingFile); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertEquals(existingFile, file.file); } @@ -60,7 +60,7 @@ public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException createFiles(existingFile); doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertNotEquals(existingFile, file.file); } @@ -72,7 +72,7 @@ public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOE fillWithBytes(existingFile, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertNotEquals(existingFile, file.file); } @@ -89,7 +89,7 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz fillWithBytes(existingFile3, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertNotEquals(existingFile1, file.file); assertNotEquals(existingFile2, file.file); @@ -112,7 +112,7 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz fillWithBytes(existingFile3, MAX_FILE_SIZE); doReturn(11_000L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertNotEquals(existingFile1, file.file); assertNotEquals(existingFile2, file.file); @@ -131,7 +131,7 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { createFiles(expiredReadableFile, expiredWritableFile); doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = fileProvider.getWritableFile(); + StorageFile file = folderManager.getWritableFile(); assertFalse(expiredReadableFile.exists()); assertTrue(expiredWritableFile.exists()); @@ -147,7 +147,7 @@ public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOEx File readableFile = new File(rootDir, String.valueOf(readableFileCreationTime)); createFiles(writableFile, readableFile); - StorageFile file = fileProvider.getReadableFile(); + StorageFile file = folderManager.getReadableFile(); assertEquals(readableFile, file.file); } @@ -163,14 +163,14 @@ public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() thr File readableFileNewer = new File(rootDir, String.valueOf(newerReadableFileCreationTime)); createFiles(writableFile, readableFileNewer, readableFileOlder); - StorageFile file = fileProvider.getReadableFile(); + StorageFile file = folderManager.getReadableFile(); assertEquals(readableFileOlder, file.file); } @Test public void provideNullFileForRead_whenNoFilesAreAvailable() { - assertNull(fileProvider.getReadableFile()); + assertNull(folderManager.getReadableFile()); } @Test @@ -179,7 +179,7 @@ public void provideNullFileForRead_whenOnlyReadableFilesAreAvailable() throws IO File writableFile = new File(rootDir, String.valueOf(currentTime)); createFiles(writableFile); - assertNull(fileProvider.getReadableFile()); + assertNull(folderManager.getReadableFile()); } @Test @@ -192,7 +192,7 @@ public void provideNullFileForRead_whenReadableFilesAreExpired() throws IOExcept .when(timeProvider) .getSystemCurrentTimeMillis(); - assertNull(fileProvider.getReadableFile()); + assertNull(folderManager.getReadableFile()); } private static void fillWithBytes(File file, int size) throws IOException { From 665a46415f8df2d79a5f7f5d89fa2179e23a7f4c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:12:17 +0200 Subject: [PATCH 061/209] Deleting reusing mechanism of writable files --- .../internal/storage/FolderManager.java | 26 +------------------ .../internal/storage/FolderManagerTest.java | 23 +++++----------- 2 files changed, 7 insertions(+), 42 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index cfc4b5009..0b1796476 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -31,14 +31,10 @@ public synchronized ReadableFile getReadableFile() { return null; } - public synchronized WritableFile getWritableFile() throws IOException { + public synchronized WritableFile createWritableFile() throws IOException { long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); File[] existingFiles = folder.listFiles(); if (existingFiles != null) { - File existingFile = findExistingWritableFile(existingFiles, systemCurrentTimeMillis); - if (existingFile != null && hasNotReachedMaxSize(existingFile)) { - return createWritableFile(existingFile); - } if (purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis) == 0) { removeOldestFileIfSpaceIsNeeded(existingFiles); } @@ -74,17 +70,6 @@ private File findReadableFile() { return oldestFileAvailable; } - @Nullable - private File findExistingWritableFile(File[] existingFiles, long systemCurrentTimeMillis) { - for (File existingFile : existingFiles) { - if (hasNotExpiredForWriting( - systemCurrentTimeMillis, Long.parseLong(existingFile.getName()))) { - return existingFile; - } - } - return null; - } - private int purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) { int filesDeleted = 0; for (File existingFile : existingFiles) { @@ -134,13 +119,4 @@ private boolean hasExpiredForReading(long systemCurrentTimeMillis, long createdT return systemCurrentTimeMillis > (createdTimeInMillis + configuration.maxFileAgeForReadInMillis); } - - private boolean hasNotExpiredForWriting(long systemCurrentTimeMillis, long createdTimeInMillis) { - return systemCurrentTimeMillis - < (createdTimeInMillis + configuration.maxFileAgeForWriteInMillis); - } - - private boolean hasNotReachedMaxSize(File file) { - return file.length() < configuration.maxFileSize; - } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 4922c231c..fe761335f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -38,29 +38,18 @@ public void setUp() { public void createWritableFile_withTimeMillisAsName() throws IOException { doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = folderManager.getWritableFile(); + StorageFile file = folderManager.createWritableFile(); assertEquals("1000", file.file.getName()); } - @Test - public void reuseWritableFile_whenItHasNotExpired() throws IOException { - File existingFile = new File(rootDir, "1000"); - createFiles(existingFile); - doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - - StorageFile file = folderManager.getWritableFile(); - - assertEquals(existingFile, file.file); - } - @Test public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException { File existingFile = new File(rootDir, "1000"); createFiles(existingFile); doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = folderManager.getWritableFile(); + StorageFile file = folderManager.createWritableFile(); assertNotEquals(existingFile, file.file); } @@ -72,7 +61,7 @@ public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOE fillWithBytes(existingFile, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = folderManager.getWritableFile(); + StorageFile file = folderManager.createWritableFile(); assertNotEquals(existingFile, file.file); } @@ -89,7 +78,7 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz fillWithBytes(existingFile3, MAX_FILE_SIZE); doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = folderManager.getWritableFile(); + StorageFile file = folderManager.createWritableFile(); assertNotEquals(existingFile1, file.file); assertNotEquals(existingFile2, file.file); @@ -112,7 +101,7 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz fillWithBytes(existingFile3, MAX_FILE_SIZE); doReturn(11_000L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = folderManager.getWritableFile(); + StorageFile file = folderManager.createWritableFile(); assertNotEquals(existingFile1, file.file); assertNotEquals(existingFile2, file.file); @@ -131,7 +120,7 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { createFiles(expiredReadableFile, expiredWritableFile); doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); - StorageFile file = folderManager.getWritableFile(); + StorageFile file = folderManager.createWritableFile(); assertFalse(expiredReadableFile.exists()); assertTrue(expiredWritableFile.exists()); From 9aa9f4656c0c6316f65680e0f36d131676fddac1 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:17:58 +0200 Subject: [PATCH 062/209] Clean up tests --- .../internal/storage/FolderManagerTest.java | 30 ++----------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index fe761335f..211d6525e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -44,30 +44,7 @@ public void createWritableFile_withTimeMillisAsName() throws IOException { } @Test - public void createWritableFile_ifExistingOnesAlreadyExpired() throws IOException { - File existingFile = new File(rootDir, "1000"); - createFiles(existingFile); - doReturn(2500L).when(timeProvider).getSystemCurrentTimeMillis(); - - StorageFile file = folderManager.createWritableFile(); - - assertNotEquals(existingFile, file.file); - } - - @Test - public void createWritableFile_whenNonExpiredOneReachedTheSizeLimit() throws IOException { - File existingFile = new File(rootDir, "1000"); - createFiles(existingFile); - fillWithBytes(existingFile, MAX_FILE_SIZE); - doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - - StorageFile file = folderManager.createWritableFile(); - - assertNotEquals(existingFile, file.file); - } - - @Test - public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSizeLimit() + public void createWritableFile_andRemoveOldestOne_whenTheAvailableFolderSpaceIsNotEnough() throws IOException { File existingFile1 = new File(rootDir, "1000"); File existingFile2 = new File(rootDir, "1400"); @@ -89,9 +66,8 @@ public void createWritableFile_andRemoveOldestOne_whenNonExpiredOneReachedTheSiz } @Test - public void - createWritableFile_andDoNotRemoveOldestOne_whenNonExpiredOneReachedTheSizeLimit_andExpiredFilesArePurged() - throws IOException { + public void createWritableFile_andDoNotRemoveOldestOne_ifAtLeastOneExpiredFileIsPurged() + throws IOException { File existingFile1 = new File(rootDir, "1100"); File existingFile2 = new File(rootDir, "1400"); File existingFile3 = new File(rootDir, "900"); From 90e2f8e77003acaa2583fbbd625d033e6300226d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:22:16 +0200 Subject: [PATCH 063/209] Clean up --- .../disk/buffering/internal/storage/FolderManager.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 0b1796476..87aae4b47 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -40,11 +40,7 @@ public synchronized WritableFile createWritableFile() throws IOException { } } File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); - return createWritableFile(file); - } - - private WritableFile createWritableFile(File existingFile) { - currentWritableFile = new WritableFile(existingFile, configuration, timeProvider); + currentWritableFile = new WritableFile(file, configuration, timeProvider); return currentWritableFile; } @@ -84,7 +80,7 @@ private int purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) private void removeOldestFileIfSpaceIsNeeded(File[] existingFiles) throws IOException { if (existingFiles.length > 0) { - if (neededToClearSpaceForNewFile(existingFiles)) { + if (isNeededToClearSpaceForNewFile(existingFiles)) { File oldest = getOldest(existingFiles); if (!oldest.delete()) { throw new IOException("Could not delete the file: " + oldest); @@ -103,7 +99,7 @@ private static File getOldest(File[] existingFiles) { return Objects.requireNonNull(oldest); } - private boolean neededToClearSpaceForNewFile(File[] existingFiles) { + private boolean isNeededToClearSpaceForNewFile(File[] existingFiles) { int currentFolderSize = 0; for (File existingFile : existingFiles) { currentFolderSize += (int) existingFile.length(); From 098d6a18b7e262f1e1493462079ac2007e180ee0 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:16:37 +0200 Subject: [PATCH 064/209] Appending lines into WritableFile --- disk-buffering/build.gradle.kts | 5 ++ .../internal/storage/FolderManager.java | 3 +- .../internal/storage/files/ReadableFile.java | 5 +- .../internal/storage/files/StorageFile.java | 5 +- .../internal/storage/files/WritableFile.java | 51 ++++++++++++++----- .../storage/files/WritableFileTest.java | 28 ++++++---- 6 files changed, 72 insertions(+), 25 deletions(-) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index e1d6a3951..35f978740 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -14,6 +14,11 @@ tasks { } } +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + val dslJsonVersion = "1.10.0" val mapStructVersion = "1.5.5.Final" val autovalueVersion = "1.10.1" diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 87aae4b47..73a8a73c9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -40,7 +40,8 @@ public synchronized WritableFile createWritableFile() throws IOException { } } File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); - currentWritableFile = new WritableFile(file, configuration, timeProvider); + currentWritableFile = + new WritableFile(file, systemCurrentTimeMillis, configuration, timeProvider); return currentWritableFile; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 5af1430e7..fefc3c48c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -13,10 +13,13 @@ public long getSize() { } @Override - public boolean isValid() { + public boolean hasExpired() { return true; } + @Override + public void open() {} + @Override public void close() {} } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java index c25cd2bb7..98fb1aa27 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java @@ -2,6 +2,7 @@ import java.io.Closeable; import java.io.File; +import java.io.IOException; public abstract class StorageFile implements Closeable { public final File file; @@ -12,5 +13,7 @@ public StorageFile(File file) { public abstract long getSize(); - public abstract boolean isValid(); + public abstract boolean hasExpired(); + + public abstract void open() throws IOException; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index f525b1bab..ea2cd61e5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -2,45 +2,70 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import java.io.BufferedOutputStream; import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import javax.annotation.Nullable; +@SuppressWarnings({"UnusedVariable", "FieldCanBeLocal"}) public final class WritableFile extends StorageFile { private final Configuration configuration; private final TimeProvider timeProvider; private final long expireTimeMillis; + private final byte[] newLineBytes; + @Nullable private BufferedOutputStream out; private int size; - public WritableFile(File file, Configuration configuration, TimeProvider timeProvider) { + public WritableFile( + File file, long createdTimeMillis, Configuration configuration, TimeProvider timeProvider) { super(file); this.configuration = configuration; this.timeProvider = timeProvider; - long createdTimeMillis = Long.parseLong(file.getName()); expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForWriteInMillis; size = (int) file.length(); + newLineBytes = System.lineSeparator().getBytes(StandardCharsets.UTF_8); } - public synchronized void append(byte[] data) { - size += data.length; + @SuppressWarnings("NullAway") // Null check is done in isOpen + public synchronized void append(byte[] data) throws IOException { + if (!isOpen()) { + throw new IllegalStateException(); + } + int futureSize = size + data.length + newLineBytes.length; + out.write(data); + out.write(newLineBytes); + size = futureSize; } @Override - public long getSize() { + public synchronized long getSize() { return size; } @Override - public synchronized boolean isValid() { - return writingTimeHasNotExpired() && hasNotReachedMaxSize(); + public synchronized boolean hasExpired() { + return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; } - private boolean hasNotReachedMaxSize() { - return size < configuration.maxFileSize; + @Override + public synchronized void open() throws IOException { + if (isOpen()) { + return; + } + out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); } - private boolean writingTimeHasNotExpired() { - return expireTimeMillis > timeProvider.getSystemCurrentTimeMillis(); + @SuppressWarnings("NullAway") // Null check is done in isOpen + @Override + public synchronized void close() throws IOException { + if (isOpen()) { + out.close(); + } } - @Override - public synchronized void close() {} + private boolean isOpen() { + return out != null; + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 14eb79a6d..3d7f8da58 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.doReturn; @@ -9,6 +9,10 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -26,30 +30,36 @@ public void setUp() { writableFile = new WritableFile( new File(rootDir, String.valueOf(CREATED_TIME_MILLIS)), + CREATED_TIME_MILLIS, TestData.CONFIGURATION, timeProvider); } @Test - public void isValid_whenWriteAgeHasNotExpired() { + public void hasNotExpired_whenWriteAgeHasNotExpired() { doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); - assertTrue(writableFile.isValid()); + assertFalse(writableFile.hasExpired()); } @Test - public void isNotValid_whenWriteAgeHasExpired() { + public void hasExpired_whenWriteAgeHasExpired() { doReturn(2000L).when(timeProvider).getSystemCurrentTimeMillis(); - assertFalse(writableFile.isValid()); + assertTrue(writableFile.hasExpired()); } @Test - public void isNotValid_whenSizeHasReachedTheMaxLimit() { - doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + public void appendDataInNewLines() throws IOException { + writableFile.open(); + writableFile.append("First line".getBytes(StandardCharsets.UTF_8)); + writableFile.append("Second line".getBytes(StandardCharsets.UTF_8)); + writableFile.close(); - writableFile.append(new byte[MAX_FILE_SIZE]); + List lines = Files.readAllLines(writableFile.file.toPath()); - assertFalse(writableFile.isValid()); + assertEquals(2, lines.size()); + assertEquals("First line", lines.get(0)); + assertEquals("Second line", lines.get(1)); } } From 2ff7afecb0cc6264d3b4d38a7853468c152c4a33 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:42:38 +0200 Subject: [PATCH 065/209] Throwing no space exception when no more data can fit into the file based on the configuration --- .../exceptions/NoSpaceAvailableException.java | 6 +++++ .../internal/storage/files/WritableFile.java | 6 ++++- .../storage/files/WritableFileTest.java | 23 ++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java new file mode 100644 index 000000000..44362ab31 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; + +import java.io.IOException; + +@SuppressWarnings("serial") +public class NoSpaceAvailableException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index ea2cd61e5..f58140177 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -1,6 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedOutputStream; import java.io.File; @@ -9,7 +10,6 @@ import java.nio.file.Files; import javax.annotation.Nullable; -@SuppressWarnings({"UnusedVariable", "FieldCanBeLocal"}) public final class WritableFile extends StorageFile { private final Configuration configuration; private final TimeProvider timeProvider; @@ -34,6 +34,10 @@ public synchronized void append(byte[] data) throws IOException { throw new IllegalStateException(); } int futureSize = size + data.length + newLineBytes.length; + if (futureSize > configuration.maxFileSize) { + close(); + throw new NoSpaceAvailableException(); + } out.write(data); out.write(newLineBytes); size = futureSize; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 3d7f8da58..ae8202f11 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -1,12 +1,15 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -56,10 +59,28 @@ public void appendDataInNewLines() throws IOException { writableFile.append("Second line".getBytes(StandardCharsets.UTF_8)); writableFile.close(); - List lines = Files.readAllLines(writableFile.file.toPath()); + List lines = getWrittenLines(); assertEquals(2, lines.size()); assertEquals("First line", lines.get(0)); assertEquals("Second line", lines.get(1)); } + + @Test + public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowException() + throws IOException { + writableFile.open(); + writableFile.append( + new byte[MAX_FILE_SIZE - System.lineSeparator().getBytes(StandardCharsets.UTF_8).length]); + try { + writableFile.append(new byte[1]); + fail(); + } catch (NoSpaceAvailableException e) { + assertEquals(1, getWrittenLines().size()); + } + } + + private List getWrittenLines() throws IOException { + return Files.readAllLines(writableFile.file.toPath()); + } } From e519ff69addb650f57efd814a358c4d8b9360c1f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:46:24 +0200 Subject: [PATCH 066/209] Cleaning up --- .../internal/storage/files/ReadableFile.java | 3 -- .../internal/storage/files/StorageFile.java | 3 -- .../internal/storage/files/WritableFile.java | 28 ++++--------------- .../storage/files/WritableFileTest.java | 4 +-- 4 files changed, 6 insertions(+), 32 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index fefc3c48c..45c4a66c5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -17,9 +17,6 @@ public boolean hasExpired() { return true; } - @Override - public void open() {} - @Override public void close() {} } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java index 98fb1aa27..04ea5fecb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java @@ -2,7 +2,6 @@ import java.io.Closeable; import java.io.File; -import java.io.IOException; public abstract class StorageFile implements Closeable { public final File file; @@ -14,6 +13,4 @@ public StorageFile(File file) { public abstract long getSize(); public abstract boolean hasExpired(); - - public abstract void open() throws IOException; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index f58140177..b8e66b703 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -8,31 +8,28 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import javax.annotation.Nullable; public final class WritableFile extends StorageFile { private final Configuration configuration; private final TimeProvider timeProvider; private final long expireTimeMillis; private final byte[] newLineBytes; - @Nullable private BufferedOutputStream out; + private final BufferedOutputStream out; private int size; public WritableFile( - File file, long createdTimeMillis, Configuration configuration, TimeProvider timeProvider) { + File file, long createdTimeMillis, Configuration configuration, TimeProvider timeProvider) + throws IOException { super(file); this.configuration = configuration; this.timeProvider = timeProvider; expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForWriteInMillis; size = (int) file.length(); newLineBytes = System.lineSeparator().getBytes(StandardCharsets.UTF_8); + out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); } - @SuppressWarnings("NullAway") // Null check is done in isOpen public synchronized void append(byte[] data) throws IOException { - if (!isOpen()) { - throw new IllegalStateException(); - } int futureSize = size + data.length + newLineBytes.length; if (futureSize > configuration.maxFileSize) { close(); @@ -53,23 +50,8 @@ public synchronized boolean hasExpired() { return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; } - @Override - public synchronized void open() throws IOException { - if (isOpen()) { - return; - } - out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); - } - - @SuppressWarnings("NullAway") // Null check is done in isOpen @Override public synchronized void close() throws IOException { - if (isOpen()) { - out.close(); - } - } - - private boolean isOpen() { - return out != null; + out.close(); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index ae8202f11..60f796041 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -28,7 +28,7 @@ class WritableFileTest { private static final long CREATED_TIME_MILLIS = 1000L; @BeforeEach - public void setUp() { + public void setUp() throws IOException { timeProvider = mock(); writableFile = new WritableFile( @@ -54,7 +54,6 @@ public void hasExpired_whenWriteAgeHasExpired() { @Test public void appendDataInNewLines() throws IOException { - writableFile.open(); writableFile.append("First line".getBytes(StandardCharsets.UTF_8)); writableFile.append("Second line".getBytes(StandardCharsets.UTF_8)); writableFile.close(); @@ -69,7 +68,6 @@ public void appendDataInNewLines() throws IOException { @Test public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowException() throws IOException { - writableFile.open(); writableFile.append( new byte[MAX_FILE_SIZE - System.lineSeparator().getBytes(StandardCharsets.UTF_8).length]); try { From 76395f7a0cfb17e2ac80b43d2e3b25653413fee8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:52:25 +0200 Subject: [PATCH 067/209] Verifying writable file size is updated correctly --- .../internal/storage/files/WritableFileTest.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 60f796041..3afbcde8f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -26,6 +26,8 @@ class WritableFileTest { private TimeProvider timeProvider; private WritableFile writableFile; private static final long CREATED_TIME_MILLIS = 1000L; + private static final int NEW_LINE_SIZE = + System.lineSeparator().getBytes(StandardCharsets.UTF_8).length; @BeforeEach public void setUp() throws IOException { @@ -53,9 +55,11 @@ public void hasExpired_whenWriteAgeHasExpired() { } @Test - public void appendDataInNewLines() throws IOException { - writableFile.append("First line".getBytes(StandardCharsets.UTF_8)); - writableFile.append("Second line".getBytes(StandardCharsets.UTF_8)); + public void appendDataInNewLines_andIncreaseSize() throws IOException { + byte[] line1 = "First line".getBytes(StandardCharsets.UTF_8); + byte[] line2 = "Second line".getBytes(StandardCharsets.UTF_8); + writableFile.append(line1); + writableFile.append(line2); writableFile.close(); List lines = getWrittenLines(); @@ -63,18 +67,19 @@ public void appendDataInNewLines() throws IOException { assertEquals(2, lines.size()); assertEquals("First line", lines.get(0)); assertEquals("Second line", lines.get(1)); + assertEquals(line1.length + line2.length + NEW_LINE_SIZE * 2L, writableFile.getSize()); } @Test public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowException() throws IOException { - writableFile.append( - new byte[MAX_FILE_SIZE - System.lineSeparator().getBytes(StandardCharsets.UTF_8).length]); + writableFile.append(new byte[MAX_FILE_SIZE - NEW_LINE_SIZE]); try { writableFile.append(new byte[1]); fail(); } catch (NoSpaceAvailableException e) { assertEquals(1, getWrittenLines().size()); + assertEquals(MAX_FILE_SIZE, writableFile.getSize()); } } From 18df096eccc746cb90e3f2a80e1950e2ee7498c4 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 10:22:49 +0200 Subject: [PATCH 068/209] Validating write file appending timeout exception and closed exception --- .../exceptions/WritingTimeoutException.java | 6 ++++ .../internal/storage/files/WritableFile.java | 14 +++++++++- .../storage/files/WritableFileTest.java | 28 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java new file mode 100644 index 000000000..90ea8db42 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; + +import java.io.IOException; + +@SuppressWarnings("serial") +public class WritingTimeoutException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index b8e66b703..cb8e6adea 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -2,12 +2,14 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.util.concurrent.atomic.AtomicBoolean; public final class WritableFile extends StorageFile { private final Configuration configuration; @@ -15,6 +17,7 @@ public final class WritableFile extends StorageFile { private final long expireTimeMillis; private final byte[] newLineBytes; private final BufferedOutputStream out; + private final AtomicBoolean isClosed = new AtomicBoolean(false); private int size; public WritableFile( @@ -30,6 +33,13 @@ public WritableFile( } public synchronized void append(byte[] data) throws IOException { + if (isClosed.get()) { + throw new IllegalStateException(); + } + if (hasExpired()) { + close(); + throw new WritingTimeoutException(); + } int futureSize = size + data.length + newLineBytes.length; if (futureSize > configuration.maxFileSize) { close(); @@ -52,6 +62,8 @@ public synchronized boolean hasExpired() { @Override public synchronized void close() throws IOException { - out.close(); + if (isClosed.compareAndSet(false, true)) { + out.close(); + } } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 3afbcde8f..c67d122f5 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -1,5 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_WRITE_MILLIS; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -10,6 +11,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -83,6 +85,32 @@ public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowExceptio } } + @Test + public void whenAppendingData_andHasExpired_closeAndThrowException() throws IOException { + writableFile.append(new byte[2]); + doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_WRITE_MILLIS) + .when(timeProvider) + .getSystemCurrentTimeMillis(); + try { + writableFile.append(new byte[1]); + fail(); + } catch (WritingTimeoutException e) { + assertEquals(1, getWrittenLines().size()); + } + } + + @Test + public void whenAppendingData_andIsAlreadyClosed_throwException() throws IOException { + writableFile.append(new byte[1]); + writableFile.close(); + + try { + writableFile.append(new byte[2]); + fail(); + } catch (IllegalStateException ignored) { + } + } + private List getWrittenLines() throws IOException { return Files.readAllLines(writableFile.file.toPath()); } From 99a60b0c5cc67aca0864874bb5d68cc2a6bb3f7c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 10:29:50 +0200 Subject: [PATCH 069/209] Adding docs to WritableFile append method --- .../buffering/internal/storage/files/WritableFile.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index cb8e6adea..058db1700 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -32,6 +32,16 @@ public WritableFile( out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); } + /** + * Adds a new line to the file. If {@link WritingTimeoutException} or {@link + * NoSpaceAvailableException} are thrown, the file stream is closed with the contents available in + * the buffer before attempting to append the new data. + * + * @param data - The new data line to add. + * @throws IllegalStateException If it's closed. + * @throws WritingTimeoutException If the configured writing time for the file has ended. + * @throws NoSpaceAvailableException If the configured max file size has been reached. + */ public synchronized void append(byte[] data) throws IOException { if (isClosed.get()) { throw new IllegalStateException(); From 6e26e86baffa6b1b8dae00ca16a0f7ec48a69298 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 12:48:48 +0200 Subject: [PATCH 070/209] Reading files --- .../internal/storage/FolderManager.java | 2 +- .../internal/storage/files/ReadableFile.java | 45 +++++++++++++++++-- .../internal/storage/FolderManagerTest.java | 2 +- .../storage/files/ReadableFileTest.java | 40 +++++++++++++++++ 4 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 73a8a73c9..60d7d70f0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -23,7 +23,7 @@ public FolderManager(File folder, TimeProvider timeProvider, Configuration confi } @Nullable - public synchronized ReadableFile getReadableFile() { + public synchronized ReadableFile getReadableFile() throws IOException { File readableFile = findReadableFile(); if (readableFile != null) { return new ReadableFile(readableFile); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 45c4a66c5..9a2ea5d6e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -1,22 +1,59 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import java.io.BufferedReader; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.channels.FileChannel; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.function.Function; public final class ReadableFile extends StorageFile { - public ReadableFile(File file) { + private final int originalFileSize; + private final BufferedReader bufferedInputStream; + private final FileChannel sourceOutChannel; + private final FileChannel tempInChannel; + private int readBytes = 0; + + @SuppressWarnings("resource") + public ReadableFile(File file) throws IOException { super(file); + originalFileSize = (int) file.length(); + Path readableFile = Files.createTempFile(file.getName() + "_", ".tmp"); + Files.copy(file.toPath(), readableFile, StandardCopyOption.REPLACE_EXISTING); + FileInputStream tempInputStream = new FileInputStream(readableFile.toFile()); + tempInChannel = tempInputStream.getChannel(); + bufferedInputStream = + new BufferedReader(new InputStreamReader(tempInputStream, StandardCharsets.UTF_8)); + sourceOutChannel = new FileOutputStream(file).getChannel(); + } + + public synchronized void readLine(Function consumer) throws IOException { + byte[] line = bufferedInputStream.readLine().getBytes(StandardCharsets.UTF_8); + if (consumer.apply(line)) { + readBytes += line.length; + sourceOutChannel.transferFrom(tempInChannel, readBytes, originalFileSize - readBytes); + } } @Override public long getSize() { - return file.length(); + return originalFileSize; } @Override public boolean hasExpired() { - return true; + return false; } @Override - public void close() {} + public synchronized void close() throws IOException { + bufferedInputStream.close(); + sourceOutChannel.close(); + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 211d6525e..6b32469ed 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -134,7 +134,7 @@ public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() thr } @Test - public void provideNullFileForRead_whenNoFilesAreAvailable() { + public void provideNullFileForRead_whenNoFilesAreAvailable() throws IOException { assertNull(folderManager.getReadableFile()); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java new file mode 100644 index 000000000..8be8832e0 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -0,0 +1,40 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class ReadableFileTest { + + @TempDir File dir; + private File source; + private ReadableFile readableFile; + + @BeforeEach + public void setUp() throws IOException { + source = new File(dir, "sourceFile"); + Files.write(source.toPath(), Arrays.asList("First line", "Second line")); + readableFile = new ReadableFile(source); + } + + @Test + public void readLineAndRemoveIt() throws IOException { + readableFile.readLine(bytes -> true); + readableFile.close(); + + List sourceLines = getSourceLines(); + assertEquals(1, sourceLines.size()); + assertEquals("Second line", sourceLines.get(0)); + } + + private List getSourceLines() throws IOException { + return Files.readAllLines(source.toPath()); + } +} From d1c1ba098a3ebb91041fd7db50626799718b928f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 14:19:09 +0200 Subject: [PATCH 071/209] Reading lines and updating the original file --- .../internal/storage/files/Constants.java | 12 +++++++ .../internal/storage/files/ReadableFile.java | 20 +++++------ .../internal/storage/files/WritableFile.java | 9 +++-- .../storage/files/ReadableFileTest.java | 36 ++++++++++++++++--- .../storage/files/WritableFileTest.java | 7 ++-- 5 files changed, 61 insertions(+), 23 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java new file mode 100644 index 000000000..687879921 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java @@ -0,0 +1,12 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files; + +import java.nio.charset.StandardCharsets; + +public class Constants { + + public static final byte[] NEW_LINE_BYTES = + System.lineSeparator().getBytes(StandardCharsets.UTF_8); + public static final int NEW_LINE_BYTES_SIZE = NEW_LINE_BYTES.length; + + private Constants() {} +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 9a2ea5d6e..ad5452aaf 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -1,5 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES_SIZE; + import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -15,12 +17,10 @@ public final class ReadableFile extends StorageFile { private final int originalFileSize; - private final BufferedReader bufferedInputStream; - private final FileChannel sourceOutChannel; + private final BufferedReader bufferedReader; private final FileChannel tempInChannel; private int readBytes = 0; - @SuppressWarnings("resource") public ReadableFile(File file) throws IOException { super(file); originalFileSize = (int) file.length(); @@ -28,16 +28,17 @@ public ReadableFile(File file) throws IOException { Files.copy(file.toPath(), readableFile, StandardCopyOption.REPLACE_EXISTING); FileInputStream tempInputStream = new FileInputStream(readableFile.toFile()); tempInChannel = tempInputStream.getChannel(); - bufferedInputStream = + bufferedReader = new BufferedReader(new InputStreamReader(tempInputStream, StandardCharsets.UTF_8)); - sourceOutChannel = new FileOutputStream(file).getChannel(); } public synchronized void readLine(Function consumer) throws IOException { - byte[] line = bufferedInputStream.readLine().getBytes(StandardCharsets.UTF_8); + byte[] line = bufferedReader.readLine().getBytes(StandardCharsets.UTF_8); if (consumer.apply(line)) { - readBytes += line.length; - sourceOutChannel.transferFrom(tempInChannel, readBytes, originalFileSize - readBytes); + readBytes += line.length + NEW_LINE_BYTES_SIZE; + try (FileOutputStream out = new FileOutputStream(file, false)) { + tempInChannel.transferTo(readBytes, originalFileSize - readBytes, out.getChannel()); + } } } @@ -53,7 +54,6 @@ public boolean hasExpired() { @Override public synchronized void close() throws IOException { - bufferedInputStream.close(); - sourceOutChannel.close(); + bufferedReader.close(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 058db1700..a2a85e961 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -1,5 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES; + import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; @@ -7,7 +9,6 @@ import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.concurrent.atomic.AtomicBoolean; @@ -15,7 +16,6 @@ public final class WritableFile extends StorageFile { private final Configuration configuration; private final TimeProvider timeProvider; private final long expireTimeMillis; - private final byte[] newLineBytes; private final BufferedOutputStream out; private final AtomicBoolean isClosed = new AtomicBoolean(false); private int size; @@ -28,7 +28,6 @@ public WritableFile( this.timeProvider = timeProvider; expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForWriteInMillis; size = (int) file.length(); - newLineBytes = System.lineSeparator().getBytes(StandardCharsets.UTF_8); out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); } @@ -50,13 +49,13 @@ public synchronized void append(byte[] data) throws IOException { close(); throw new WritingTimeoutException(); } - int futureSize = size + data.length + newLineBytes.length; + int futureSize = size + data.length + NEW_LINE_BYTES.length; if (futureSize > configuration.maxFileSize) { close(); throw new NoSpaceAvailableException(); } out.write(data); - out.write(newLineBytes); + out.write(NEW_LINE_BYTES); size = futureSize; } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 8be8832e0..0c1b6a2ed 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Arrays; import java.util.List; @@ -20,18 +21,45 @@ class ReadableFileTest { @BeforeEach public void setUp() throws IOException { source = new File(dir, "sourceFile"); - Files.write(source.toPath(), Arrays.asList("First line", "Second line")); + Files.write(source.toPath(), Arrays.asList("First line", "Second line", "Third line")); readableFile = new ReadableFile(source); } @Test - public void readLineAndRemoveIt() throws IOException { - readableFile.readLine(bytes -> true); + public void readSingleLineAndRemoveIt() throws IOException { + readableFile.readLine( + bytes -> { + String lineRead = new String(bytes, StandardCharsets.UTF_8); + assertEquals("First line", lineRead); + return true; + }); readableFile.close(); List sourceLines = getSourceLines(); - assertEquals(1, sourceLines.size()); + assertEquals(2, sourceLines.size()); assertEquals("Second line", sourceLines.get(0)); + assertEquals("Third line", sourceLines.get(1)); + } + + @Test + public void readMultipleLinesAndRemoveThem() throws IOException { + readableFile.readLine( + bytes -> { + String lineRead = new String(bytes, StandardCharsets.UTF_8); + assertEquals("First line", lineRead); + return true; + }); + readableFile.readLine( + bytes -> { + String lineRead = new String(bytes, StandardCharsets.UTF_8); + assertEquals("Second line", lineRead); + return true; + }); + readableFile.close(); + + List sourceLines = getSourceLines(); + assertEquals(1, sourceLines.size()); + assertEquals("Third line", sourceLines.get(0)); } private List getSourceLines() throws IOException { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index c67d122f5..6f6ea7aa4 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -2,6 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_WRITE_MILLIS; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -28,8 +29,6 @@ class WritableFileTest { private TimeProvider timeProvider; private WritableFile writableFile; private static final long CREATED_TIME_MILLIS = 1000L; - private static final int NEW_LINE_SIZE = - System.lineSeparator().getBytes(StandardCharsets.UTF_8).length; @BeforeEach public void setUp() throws IOException { @@ -69,13 +68,13 @@ public void appendDataInNewLines_andIncreaseSize() throws IOException { assertEquals(2, lines.size()); assertEquals("First line", lines.get(0)); assertEquals("Second line", lines.get(1)); - assertEquals(line1.length + line2.length + NEW_LINE_SIZE * 2L, writableFile.getSize()); + assertEquals(line1.length + line2.length + NEW_LINE_BYTES_SIZE * 2L, writableFile.getSize()); } @Test public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowException() throws IOException { - writableFile.append(new byte[MAX_FILE_SIZE - NEW_LINE_SIZE]); + writableFile.append(new byte[MAX_FILE_SIZE - NEW_LINE_BYTES_SIZE]); try { writableFile.append(new byte[1]); fail(); From 82d4feca2ce78f93085b3935e39ae6f16a93d4cb Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 14:46:27 +0200 Subject: [PATCH 072/209] Validating no more lines to read use case --- .../NoMoreLinesToReadException.java | 6 +++ .../internal/storage/files/ReadableFile.java | 7 +++- .../storage/files/ReadableFileTest.java | 39 ++++++++++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java new file mode 100644 index 000000000..14209a1c3 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; + +import java.io.IOException; + +@SuppressWarnings("serial") +public class NoMoreLinesToReadException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index ad5452aaf..ee219129d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -2,6 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES_SIZE; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -33,7 +34,11 @@ public ReadableFile(File file) throws IOException { } public synchronized void readLine(Function consumer) throws IOException { - byte[] line = bufferedReader.readLine().getBytes(StandardCharsets.UTF_8); + String lineString = bufferedReader.readLine(); + if (lineString == null) { + throw new NoMoreLinesToReadException(); + } + byte[] line = lineString.getBytes(StandardCharsets.UTF_8); if (consumer.apply(line)) { readBytes += line.length + NEW_LINE_BYTES_SIZE; try (FileOutputStream out = new FileOutputStream(file, false)) { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 0c1b6a2ed..a08720957 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -1,7 +1,9 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -17,11 +19,13 @@ class ReadableFileTest { @TempDir File dir; private File source; private ReadableFile readableFile; + private static final List LINES = + Arrays.asList("First line", "Second line", "Third line"); @BeforeEach public void setUp() throws IOException { source = new File(dir, "sourceFile"); - Files.write(source.toPath(), Arrays.asList("First line", "Second line", "Third line")); + Files.write(source.toPath(), LINES); readableFile = new ReadableFile(source); } @@ -62,6 +66,39 @@ public void readMultipleLinesAndRemoveThem() throws IOException { assertEquals("Third line", sourceLines.get(0)); } + @Test + public void whenConsumerReturnsFalse_doNotRemoveLineFromSource() throws IOException { + readableFile.readLine( + bytes -> { + String lineRead = new String(bytes, StandardCharsets.UTF_8); + assertEquals("First line", lineRead); + return false; + }); + readableFile.close(); + + List sourceLines = getSourceLines(); + assertEquals(3, sourceLines.size()); + assertEquals(LINES, sourceLines); + } + + @Test + public void whenNoMoreFilesAvailableToRead_throwException() throws IOException { + for (String line : LINES) { + readableFile.readLine( + bytes -> { + assertEquals(line, new String(bytes, StandardCharsets.UTF_8)); + return true; + }); + } + + try { + readableFile.readLine(bytes -> true); + fail(); + } catch (NoMoreLinesToReadException ignored) { + + } + } + private List getSourceLines() throws IOException { return Files.readAllLines(source.toPath()); } From 94d523de9fca89883d5714108f8ff59122d347e1 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:29:55 +0200 Subject: [PATCH 073/209] Removing temporary file after finishing reading --- .../internal/storage/files/ReadableFile.java | 16 ++++++++---- .../internal/storage/files/WritableFile.java | 2 +- .../storage/files/{ => utils}/Constants.java | 2 +- .../files/utils/TemporaryFileProvider.java | 14 ++++++++++ .../storage/files/ReadableFileTest.java | 26 ++++++++++++++++--- .../storage/files/WritableFileTest.java | 2 +- 6 files changed, 51 insertions(+), 11 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/{ => utils}/Constants.java (96%) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index ee219129d..5c43693d0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -1,8 +1,9 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES_SIZE; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -12,7 +13,6 @@ import java.nio.channels.FileChannel; import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.function.Function; @@ -20,14 +20,19 @@ public final class ReadableFile extends StorageFile { private final int originalFileSize; private final BufferedReader bufferedReader; private final FileChannel tempInChannel; + private final File temporaryFile; private int readBytes = 0; public ReadableFile(File file) throws IOException { + this(file, TemporaryFileProvider.INSTANCE); + } + + public ReadableFile(File file, TemporaryFileProvider temporaryFileProvider) throws IOException { super(file); originalFileSize = (int) file.length(); - Path readableFile = Files.createTempFile(file.getName() + "_", ".tmp"); - Files.copy(file.toPath(), readableFile, StandardCopyOption.REPLACE_EXISTING); - FileInputStream tempInputStream = new FileInputStream(readableFile.toFile()); + temporaryFile = temporaryFileProvider.createTemporaryFile(); + Files.copy(file.toPath(), temporaryFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + FileInputStream tempInputStream = new FileInputStream(temporaryFile); tempInChannel = tempInputStream.getChannel(); bufferedReader = new BufferedReader(new InputStreamReader(tempInputStream, StandardCharsets.UTF_8)); @@ -60,5 +65,6 @@ public boolean hasExpired() { @Override public synchronized void close() throws IOException { bufferedReader.close(); + temporaryFile.delete(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index a2a85e961..97d2eae9c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java similarity index 96% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java index 687879921..ae7444fa6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/Constants.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; import java.nio.charset.StandardCharsets; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java new file mode 100644 index 000000000..2e6ccc349 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java @@ -0,0 +1,14 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; + +import java.io.File; +import java.io.IOException; + +public class TemporaryFileProvider { + public static final TemporaryFileProvider INSTANCE = new TemporaryFileProvider(); + + private TemporaryFileProvider() {} + + public File createTemporaryFile() throws IOException { + return File.createTempFile("", ""); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index a08720957..2307f1d99 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -1,9 +1,13 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -18,6 +22,7 @@ class ReadableFileTest { @TempDir File dir; private File source; + private File temporaryFile; private ReadableFile readableFile; private static final List LINES = Arrays.asList("First line", "Second line", "Third line"); @@ -25,8 +30,11 @@ class ReadableFileTest { @BeforeEach public void setUp() throws IOException { source = new File(dir, "sourceFile"); + temporaryFile = new File(dir, "temporaryFile"); Files.write(source.toPath(), LINES); - readableFile = new ReadableFile(source); + TemporaryFileProvider temporaryFileProvider = mock(); + doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile(); + readableFile = new ReadableFile(source, temporaryFileProvider); } @Test @@ -45,6 +53,19 @@ public void readSingleLineAndRemoveIt() throws IOException { assertEquals("Third line", sourceLines.get(1)); } + @Test + public void deleteTemporaryFileWhenClosing() throws IOException { + readableFile.readLine( + bytes -> { + String lineRead = new String(bytes, StandardCharsets.UTF_8); + assertEquals("First line", lineRead); + return true; + }); + readableFile.close(); + + assertFalse(temporaryFile.exists()); + } + @Test public void readMultipleLinesAndRemoveThem() throws IOException { readableFile.readLine( @@ -82,7 +103,7 @@ public void whenConsumerReturnsFalse_doNotRemoveLineFromSource() throws IOExcept } @Test - public void whenNoMoreFilesAvailableToRead_throwException() throws IOException { + public void whenNoMoreLinesAvailableToRead_throwException() throws IOException { for (String line : LINES) { readableFile.readLine( bytes -> { @@ -95,7 +116,6 @@ public void whenNoMoreFilesAvailableToRead_throwException() throws IOException { readableFile.readLine(bytes -> true); fail(); } catch (NoMoreLinesToReadException ignored) { - } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 6f6ea7aa4..b33686a11 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -2,7 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_WRITE_MILLIS; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.Constants.NEW_LINE_BYTES_SIZE; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; From 780afbb26f6ab643688aac06fb0ccbe92aecc2c3 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:42:19 +0200 Subject: [PATCH 074/209] Validating exception thrown when reading timeout expired --- .../internal/storage/FolderManager.java | 3 ++- .../exceptions/ReadingTimeoutException.java | 6 +++++ .../internal/storage/files/ReadableFile.java | 26 ++++++++++++++++--- .../storage/files/ReadableFileTest.java | 25 +++++++++++++++++- 4 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 60d7d70f0..c43fbd347 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -26,7 +26,8 @@ public FolderManager(File folder, TimeProvider timeProvider, Configuration confi public synchronized ReadableFile getReadableFile() throws IOException { File readableFile = findReadableFile(); if (readableFile != null) { - return new ReadableFile(readableFile); + return new ReadableFile( + readableFile, Long.parseLong(readableFile.getName()), timeProvider, configuration); } return null; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java new file mode 100644 index 000000000..a8c21c771 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; + +import java.io.IOException; + +@SuppressWarnings("serial") +public class ReadingTimeoutException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 5c43693d0..19c80152c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -2,8 +2,11 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; +import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -21,14 +24,26 @@ public final class ReadableFile extends StorageFile { private final BufferedReader bufferedReader; private final FileChannel tempInChannel; private final File temporaryFile; + private final TimeProvider timeProvider; + private final long expireTimeMillis; private int readBytes = 0; - public ReadableFile(File file) throws IOException { - this(file, TemporaryFileProvider.INSTANCE); + public ReadableFile( + File file, long createdTimeMillis, TimeProvider timeProvider, Configuration configuration) + throws IOException { + this(file, createdTimeMillis, timeProvider, configuration, TemporaryFileProvider.INSTANCE); } - public ReadableFile(File file, TemporaryFileProvider temporaryFileProvider) throws IOException { + public ReadableFile( + File file, + long createdTimeMillis, + TimeProvider timeProvider, + Configuration configuration, + TemporaryFileProvider temporaryFileProvider) + throws IOException { super(file); + this.timeProvider = timeProvider; + expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForReadInMillis; originalFileSize = (int) file.length(); temporaryFile = temporaryFileProvider.createTemporaryFile(); Files.copy(file.toPath(), temporaryFile.toPath(), StandardCopyOption.REPLACE_EXISTING); @@ -39,6 +54,9 @@ public ReadableFile(File file, TemporaryFileProvider temporaryFileProvider) thro } public synchronized void readLine(Function consumer) throws IOException { + if (hasExpired()) { + throw new ReadingTimeoutException(); + } String lineString = bufferedReader.readLine(); if (lineString == null) { throw new NoMoreLinesToReadException(); @@ -59,7 +77,7 @@ public long getSize() { @Override public boolean hasExpired() { - return false; + return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; } @Override diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 2307f1d99..e478f2b4a 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -1,5 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.CONFIGURATION; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_READ_MILLIS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.fail; @@ -7,7 +9,9 @@ import static org.mockito.Mockito.mock; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -24,8 +28,10 @@ class ReadableFileTest { private File source; private File temporaryFile; private ReadableFile readableFile; + private TimeProvider timeProvider; private static final List LINES = Arrays.asList("First line", "Second line", "Third line"); + private static final long CREATED_TIME_MILLIS = 1000L; @BeforeEach public void setUp() throws IOException { @@ -34,7 +40,10 @@ public void setUp() throws IOException { Files.write(source.toPath(), LINES); TemporaryFileProvider temporaryFileProvider = mock(); doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile(); - readableFile = new ReadableFile(source, temporaryFileProvider); + timeProvider = mock(); + readableFile = + new ReadableFile( + source, CREATED_TIME_MILLIS, timeProvider, CONFIGURATION, temporaryFileProvider); } @Test @@ -119,6 +128,20 @@ public void whenNoMoreLinesAvailableToRead_throwException() throws IOException { } } + @Test + public void whenReadingAfterTheConfiguredReadingTimeExpired_throwException() throws IOException { + readableFile.readLine(bytes -> true); + doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) + .when(timeProvider) + .getSystemCurrentTimeMillis(); + + try { + readableFile.readLine(bytes -> true); + fail(); + } catch (ReadingTimeoutException ignored) { + } + } + private List getSourceLines() throws IOException { return Files.readAllLines(source.toPath()); } From 60f9b8d19dc84f2fbc018de797b1a7ff742648cf Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:50:15 +0200 Subject: [PATCH 075/209] Updated reader's doc --- .../buffering/internal/storage/files/ReadableFile.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 19c80152c..dcfb6199d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -53,6 +53,16 @@ public ReadableFile( new BufferedReader(new InputStreamReader(tempInputStream, StandardCharsets.UTF_8)); } + /** + * Reads the next line available in the file and provides it to a {@link Function consumer} which + * will determine whether to remove the provided line or not. + * + * @param consumer - A function that receives the line that has been read and returns a boolean. + * If the consumer function returns TRUE, then the provided line will be deleted from the + * source file. If the function returns FALSE, no changes will be applied to the source file. + * @throws ReadingTimeoutException If the configured reading time for the file has ended. + * @throws NoMoreLinesToReadException If there are no more lines to be read from the file. + */ public synchronized void readLine(Function consumer) throws IOException { if (hasExpired()) { throw new ReadingTimeoutException(); From b1c29d8900b739025c7f71a29254e267cd91cd0d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:53:05 +0200 Subject: [PATCH 076/209] Clean up --- .../disk/buffering/internal/storage/FolderManager.java | 6 +----- .../disk/buffering/internal/storage/files/ReadableFile.java | 2 +- .../internal/storage/files/utils/TemporaryFileProvider.java | 4 ++-- .../disk/buffering/internal/storage/FolderManagerTest.java | 1 - .../buffering/internal/storage/files/ReadableFileTest.java | 2 +- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index c43fbd347..190ec5855 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -8,12 +8,10 @@ import java.util.Objects; import javax.annotation.Nullable; -@SuppressWarnings("FieldCanBeLocal") // todo delete public final class FolderManager { private final File folder; private final TimeProvider timeProvider; private final Configuration configuration; - @Nullable private WritableFile currentWritableFile; // private ReadableFile currentReadableFile; public FolderManager(File folder, TimeProvider timeProvider, Configuration configuration) { @@ -41,9 +39,7 @@ public synchronized WritableFile createWritableFile() throws IOException { } } File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); - currentWritableFile = - new WritableFile(file, systemCurrentTimeMillis, configuration, timeProvider); - return currentWritableFile; + return new WritableFile(file, systemCurrentTimeMillis, configuration, timeProvider); } @Nullable diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index dcfb6199d..490aa2700 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -45,7 +45,7 @@ public ReadableFile( this.timeProvider = timeProvider; expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForReadInMillis; originalFileSize = (int) file.length(); - temporaryFile = temporaryFileProvider.createTemporaryFile(); + temporaryFile = temporaryFileProvider.createTemporaryFile(file.getName()); Files.copy(file.toPath(), temporaryFile.toPath(), StandardCopyOption.REPLACE_EXISTING); FileInputStream tempInputStream = new FileInputStream(temporaryFile); tempInChannel = tempInputStream.getChannel(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java index 2e6ccc349..258b50288 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java @@ -8,7 +8,7 @@ public class TemporaryFileProvider { private TemporaryFileProvider() {} - public File createTemporaryFile() throws IOException { - return File.createTempFile("", ""); + public File createTemporaryFile(String prefix) throws IOException { + return File.createTempFile(prefix + "_", ".tmp"); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 6b32469ed..c5931482b 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -21,7 +21,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -@SuppressWarnings("SystemOut") class FolderManagerTest { @TempDir File rootDir; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index e478f2b4a..83e74e8dc 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -39,7 +39,7 @@ public void setUp() throws IOException { temporaryFile = new File(dir, "temporaryFile"); Files.write(source.toPath(), LINES); TemporaryFileProvider temporaryFileProvider = mock(); - doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile(); + doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile("sourceFile"); timeProvider = mock(); readableFile = new ReadableFile( From 498564d141318621dfee34982cd9db7c9bcb929d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:16:19 +0200 Subject: [PATCH 077/209] Validating when readablefile is closed --- .../internal/storage/files/ReadableFile.java | 14 +++++++++++--- .../internal/storage/files/ReadableFileTest.java | 12 ++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 490aa2700..f6d3486d6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -17,6 +17,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; public final class ReadableFile extends StorageFile { @@ -26,6 +27,7 @@ public final class ReadableFile extends StorageFile { private final File temporaryFile; private final TimeProvider timeProvider; private final long expireTimeMillis; + private final AtomicBoolean isClosed = new AtomicBoolean(false); private int readBytes = 0; public ReadableFile( @@ -62,8 +64,12 @@ public ReadableFile( * source file. If the function returns FALSE, no changes will be applied to the source file. * @throws ReadingTimeoutException If the configured reading time for the file has ended. * @throws NoMoreLinesToReadException If there are no more lines to be read from the file. + * @throws IllegalStateException If it's closed. */ public synchronized void readLine(Function consumer) throws IOException { + if (isClosed.get()) { + throw new IllegalStateException(); + } if (hasExpired()) { throw new ReadingTimeoutException(); } @@ -86,13 +92,15 @@ public long getSize() { } @Override - public boolean hasExpired() { + public synchronized boolean hasExpired() { return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; } @Override public synchronized void close() throws IOException { - bufferedReader.close(); - temporaryFile.delete(); + if (isClosed.compareAndSet(false, true)) { + bufferedReader.close(); + temporaryFile.delete(); + } } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 83e74e8dc..d6c15d821 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -142,6 +142,18 @@ public void whenReadingAfterTheConfiguredReadingTimeExpired_throwException() thr } } + @Test + public void whenReadingAfterClosed_throwException() throws IOException { + readableFile.readLine(bytes -> true); + readableFile.close(); + + try { + readableFile.readLine(bytes -> true); + fail(); + } catch (IllegalStateException ignored) { + } + } + private List getSourceLines() throws IOException { return Files.readAllLines(source.toPath()); } From dd09e5f78c5616a9ebedc1cc8d9380cc16eff2c5 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:27:57 +0200 Subject: [PATCH 078/209] Closing readable expired file if needed when purging expired files --- .../internal/storage/FolderManager.java | 17 +++++++++---- .../internal/storage/files/ReadableFile.java | 5 ++++ .../internal/storage/files/StorageFile.java | 2 ++ .../internal/storage/files/WritableFile.java | 5 ++++ .../internal/storage/FolderManagerTest.java | 24 +++++++++++++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 190ec5855..3d329ca4b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -12,7 +12,7 @@ public final class FolderManager { private final File folder; private final TimeProvider timeProvider; private final Configuration configuration; - // private ReadableFile currentReadableFile; + @Nullable private ReadableFile currentReadableFile; public FolderManager(File folder, TimeProvider timeProvider, Configuration configuration) { this.folder = folder; @@ -22,10 +22,13 @@ public FolderManager(File folder, TimeProvider timeProvider, Configuration confi @Nullable public synchronized ReadableFile getReadableFile() throws IOException { + currentReadableFile = null; File readableFile = findReadableFile(); if (readableFile != null) { - return new ReadableFile( - readableFile, Long.parseLong(readableFile.getName()), timeProvider, configuration); + currentReadableFile = + new ReadableFile( + readableFile, Long.parseLong(readableFile.getName()), timeProvider, configuration); + return currentReadableFile; } return null; } @@ -64,10 +67,16 @@ private File findReadableFile() { return oldestFileAvailable; } - private int purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) { + private int purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) + throws IOException { int filesDeleted = 0; for (File existingFile : existingFiles) { if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { + if (currentReadableFile != null) { + if (existingFile.equals(currentReadableFile.file)) { + currentReadableFile.close(); + } + } if (existingFile.delete()) { filesDeleted++; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index f6d3486d6..a8d245a09 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -96,6 +96,11 @@ public synchronized boolean hasExpired() { return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; } + @Override + public synchronized boolean isClosed() { + return isClosed.get(); + } + @Override public synchronized void close() throws IOException { if (isClosed.compareAndSet(false, true)) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java index 04ea5fecb..05a9162ba 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java @@ -13,4 +13,6 @@ public StorageFile(File file) { public abstract long getSize(); public abstract boolean hasExpired(); + + public abstract boolean isClosed(); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 97d2eae9c..51dab93f4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -69,6 +69,11 @@ public synchronized boolean hasExpired() { return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; } + @Override + public synchronized boolean isClosed() { + return isClosed.get(); + } + @Override public synchronized void close() throws IOException { if (isClosed.compareAndSet(false, true)) { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index c5931482b..983f5e270 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -12,6 +12,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.StorageFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; @@ -102,6 +103,29 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { assertNotEquals(expiredWritableFile, file.file); } + @Test + public void closeExpiredReadableFileInUseIfAny_whenPurgingExpiredForReadFiles_whenCreatingNewOne() + throws IOException { + File expiredReadableFileBeingRead = new File(rootDir, "900"); + File expiredReadableFile = new File(rootDir, "1000"); + File expiredWritableFile = new File(rootDir, "10000"); + createFiles(expiredReadableFile, expiredWritableFile, expiredReadableFileBeingRead); + + doReturn(900 + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + ReadableFile readableFile = folderManager.getReadableFile(); + assertEquals(expiredReadableFileBeingRead, readableFile.file); + + doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); + + StorageFile file = folderManager.createWritableFile(); + + assertFalse(expiredReadableFile.exists()); + assertFalse(expiredReadableFileBeingRead.exists()); + assertTrue(expiredWritableFile.exists()); + assertNotEquals(expiredWritableFile, file.file); + assertTrue(readableFile.isClosed()); + } + @Test public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOException { long readableFileCreationTime = 1000; From 3f28b15dc064cbf1bd93d5181a1e0078cab04315 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:38:00 +0200 Subject: [PATCH 079/209] Closing readable oldest file is space is needed to create writable file --- .../internal/storage/FolderManager.java | 9 +++---- .../internal/storage/FolderManagerTest.java | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 3d329ca4b..b76c24893 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -72,10 +72,8 @@ private int purgeExpiredFilesIfAny(File[] existingFiles, long currentTimeMillis) int filesDeleted = 0; for (File existingFile : existingFiles) { if (hasExpiredForReading(currentTimeMillis, Long.parseLong(existingFile.getName()))) { - if (currentReadableFile != null) { - if (existingFile.equals(currentReadableFile.file)) { - currentReadableFile.close(); - } + if (currentReadableFile != null && existingFile.equals(currentReadableFile.file)) { + currentReadableFile.close(); } if (existingFile.delete()) { filesDeleted++; @@ -89,6 +87,9 @@ private void removeOldestFileIfSpaceIsNeeded(File[] existingFiles) throws IOExce if (existingFiles.length > 0) { if (isNeededToClearSpaceForNewFile(existingFiles)) { File oldest = getOldest(existingFiles); + if (currentReadableFile != null && oldest.equals(currentReadableFile.file)) { + currentReadableFile.close(); + } if (!oldest.delete()) { throw new IOException("Could not delete the file: " + oldest); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 983f5e270..ad904cdba 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -65,6 +65,30 @@ public void createWritableFile_andRemoveOldestOne_whenTheAvailableFolderSpaceIsN assertFalse(existingFile1.exists()); } + @Test + public void + closeCurrentlyReadableFileIfAny_whenItIsTheOldestOne_andRemoveIt_whenTheAvailableFolderSpaceIsNotEnough() + throws IOException { + File existingFile1 = new File(rootDir, "1000"); + File existingFile2 = new File(rootDir, "1400"); + File existingFile3 = new File(rootDir, "1100"); + createFiles(existingFile3, existingFile2, existingFile1); + fillWithBytes(existingFile1, MAX_FILE_SIZE); + fillWithBytes(existingFile2, MAX_FILE_SIZE); + fillWithBytes(existingFile3, MAX_FILE_SIZE); + doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + + ReadableFile readableFile = folderManager.getReadableFile(); + assertEquals(existingFile1, readableFile.file); + + folderManager.createWritableFile(); + + assertTrue(existingFile2.exists()); + assertTrue(existingFile3.exists()); + assertFalse(existingFile1.exists()); + assertTrue(readableFile.isClosed()); + } + @Test public void createWritableFile_andDoNotRemoveOldestOne_ifAtLeastOneExpiredFileIsPurged() throws IOException { From cadfc0e71ac15d2e9b2f3cd51f4b9266c11bc4dc Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 18:10:15 +0200 Subject: [PATCH 080/209] Making classes final --- .../contrib/disk/buffering/internal/storage/Configuration.java | 2 +- .../disk/buffering/internal/storage/files/utils/Constants.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index 9eb9a39ce..75b392713 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -1,6 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; -public class Configuration { +public final class Configuration { public final long maxFileAgeForWriteInMillis; public final long minFileAgeForReadInMillis; public final long maxFileAgeForReadInMillis; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java index ae7444fa6..5eed05e6b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java @@ -2,7 +2,7 @@ import java.nio.charset.StandardCharsets; -public class Constants { +public final class Constants { public static final byte[] NEW_LINE_BYTES = System.lineSeparator().getBytes(StandardCharsets.UTF_8); From 1c22ce400bcc8b9044e9d40987ed06ac5886554a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 21:39:57 +0200 Subject: [PATCH 081/209] Created Storage class and validating read method --- disk-buffering/build.gradle.kts | 1 + .../buffering/internal/storage/Storage.java | 68 ++++++++++++++ .../MaxAttemptsReachedException.java | 6 ++ .../exceptions/StorageClosedException.java | 6 ++ .../internal/storage/files/ReadableFile.java | 5 +- .../internal/storage/files/WritableFile.java | 5 +- .../internal/storage/StorageTest.java | 93 +++++++++++++++++++ .../storage/files/ReadableFileTest.java | 3 +- .../storage/files/WritableFileTest.java | 3 +- 9 files changed, 184 insertions(+), 6 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 35f978740..7160132c5 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -31,4 +31,5 @@ dependencies { annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") annotationProcessor("com.dslplatform:dsl-json-java8:$dslJsonVersion") annotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion") + testImplementation("org.mockito:mockito-inline:4.11.0") } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java new file mode 100644 index 000000000..05c8903ad --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -0,0 +1,68 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; +import java.io.IOException; +import java.util.function.Function; +import javax.annotation.Nullable; + +public final class Storage { + private final FolderManager folderManager; + @Nullable private WritableFile writableFile; + @Nullable private ReadableFile readableFile; + private static final int MAX_ATTEMPTS = 10; + + public Storage(FolderManager folderManager) { + this.folderManager = folderManager; + } + + public void write(byte[] line) throws IOException { + if (writableFile == null) { + writableFile = folderManager.createWritableFile(); + } + try { + writableFile.append(line); + } catch (WritingTimeoutException | NoSpaceAvailableException | StorageClosedException e) { + // Retry with new file + writableFile = null; + write(line); + } + } + + /** + * Attempts to read a line from a ready-to-read file. + * + * @param consumer Is passed over to {@link ReadableFile#readLine(Function)}. + * @return TRUE if data was found and read, FALSE if there is no data available to read. + * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. + */ + public boolean read(Function consumer) throws IOException { + return read(consumer, 1); + } + + private boolean read(Function consumer, int attemptNumber) throws IOException { + if (attemptNumber > MAX_ATTEMPTS) { + throw new MaxAttemptsReachedException(); + } + if (readableFile == null) { + readableFile = folderManager.getReadableFile(); + if (readableFile == null) { + return false; + } + } + try { + readableFile.readLine(consumer); + return true; + } catch (ReadingTimeoutException | NoMoreLinesToReadException | StorageClosedException e) { + // Retry with new file + readableFile = null; + return read(consumer, ++attemptNumber); + } + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java new file mode 100644 index 000000000..eacb89271 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; + +import java.io.IOException; + +@SuppressWarnings("serial") +public class MaxAttemptsReachedException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java new file mode 100644 index 000000000..e042df3f5 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java @@ -0,0 +1,6 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; + +import java.io.IOException; + +@SuppressWarnings("serial") +public class StorageClosedException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index a8d245a09..4bf5dc227 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -5,6 +5,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedReader; @@ -64,11 +65,11 @@ public ReadableFile( * source file. If the function returns FALSE, no changes will be applied to the source file. * @throws ReadingTimeoutException If the configured reading time for the file has ended. * @throws NoMoreLinesToReadException If there are no more lines to be read from the file. - * @throws IllegalStateException If it's closed. + * @throws StorageClosedException If it's closed. */ public synchronized void readLine(Function consumer) throws IOException { if (isClosed.get()) { - throw new IllegalStateException(); + throw new StorageClosedException(); } if (hasExpired()) { throw new ReadingTimeoutException(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 51dab93f4..6a75b718a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -4,6 +4,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedOutputStream; @@ -37,13 +38,13 @@ public WritableFile( * the buffer before attempting to append the new data. * * @param data - The new data line to add. - * @throws IllegalStateException If it's closed. + * @throws StorageClosedException If it's closed. * @throws WritingTimeoutException If the configured writing time for the file has ended. * @throws NoSpaceAvailableException If the configured max file size has been reached. */ public synchronized void append(byte[] data) throws IOException { if (isClosed.get()) { - throw new IllegalStateException(); + throw new StorageClosedException(); } if (hasExpired()) { close(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java new file mode 100644 index 000000000..62a5208ea --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -0,0 +1,93 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; +import java.io.IOException; +import java.util.function.Function; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class StorageTest { + private FolderManager folderManager; + private Storage storage; + private Function consumer; + private ReadableFile readableFile; + + @BeforeEach + public void setUp() { + folderManager = mock(); + consumer = mock(); + readableFile = mock(); + storage = new Storage(folderManager); + } + + @Test + public void whenReadingSuccessfully_returnTrue() throws IOException { + doReturn(readableFile).when(folderManager).getReadableFile(); + + assertTrue(storage.read(consumer)); + + verify(readableFile).readLine(consumer); + } + + @Test + public void whenNoFileAvailableForReading_returnFalse() throws IOException { + assertFalse(storage.read(consumer)); + } + + @Test + public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOException { + when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); + doThrow(ReadingTimeoutException.class).when(readableFile).readLine(consumer); + + assertFalse(storage.read(consumer)); + + verify(folderManager, times(2)).getReadableFile(); + } + + @Test + public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws IOException { + when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); + doThrow(NoMoreLinesToReadException.class).when(readableFile).readLine(consumer); + + assertFalse(storage.read(consumer)); + + verify(folderManager, times(2)).getReadableFile(); + } + + @Test + public void whenStorageClosedExceptionHappens_lookForNewFileToRead() throws IOException { + when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); + doThrow(StorageClosedException.class).when(readableFile).readLine(consumer); + + assertFalse(storage.read(consumer)); + + verify(folderManager, times(2)).getReadableFile(); + } + + @Test + public void whenEveryNewFileFoundCannotBeRead_stopAfterMaxAttempts() throws IOException { + when(folderManager.getReadableFile()).thenReturn(readableFile); + doThrow(StorageClosedException.class).when(readableFile).readLine(consumer); + + try { + assertFalse(storage.read(consumer)); + fail(); + } catch (MaxAttemptsReachedException e) { + verify(folderManager, times(10)).getReadableFile(); + } + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index d6c15d821..fec7c7711 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -10,6 +10,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; @@ -150,7 +151,7 @@ public void whenReadingAfterClosed_throwException() throws IOException { try { readableFile.readLine(bytes -> true); fail(); - } catch (IllegalStateException ignored) { + } catch (StorageClosedException ignored) { } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index b33686a11..25908d861 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -12,6 +12,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; @@ -106,7 +107,7 @@ public void whenAppendingData_andIsAlreadyClosed_throwException() throws IOExcep try { writableFile.append(new byte[2]); fail(); - } catch (IllegalStateException ignored) { + } catch (StorageClosedException ignored) { } } From b05e9462ce4e76d89044c9dae19d2cdee8d9e8c0 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 22:05:27 +0200 Subject: [PATCH 082/209] Validating storage writing --- .../buffering/internal/storage/Storage.java | 32 +++++++- .../internal/storage/StorageTest.java | 76 ++++++++++++++++++- 2 files changed, 103 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index 05c8903ad..7bf5a7888 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -8,21 +8,36 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; +import java.io.Closeable; import java.io.IOException; import java.util.function.Function; import javax.annotation.Nullable; -public final class Storage { +public final class Storage implements Closeable { private final FolderManager folderManager; @Nullable private WritableFile writableFile; @Nullable private ReadableFile readableFile; - private static final int MAX_ATTEMPTS = 10; + private static final int MAX_ATTEMPTS = 3; public Storage(FolderManager folderManager) { this.folderManager = folderManager; } + /** + * Attempts to write a line into a writable file. + * + * @param line - The data that would be appended to the file. + * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. + * @throws IOException If an unexpected error happens. + */ public void write(byte[] line) throws IOException { + write(line, 1); + } + + private void write(byte[] line, int attemptNumber) throws IOException { + if (attemptNumber > MAX_ATTEMPTS) { + throw new MaxAttemptsReachedException(); + } if (writableFile == null) { writableFile = folderManager.createWritableFile(); } @@ -31,7 +46,7 @@ public void write(byte[] line) throws IOException { } catch (WritingTimeoutException | NoSpaceAvailableException | StorageClosedException e) { // Retry with new file writableFile = null; - write(line); + write(line, ++attemptNumber); } } @@ -41,6 +56,7 @@ public void write(byte[] line) throws IOException { * @param consumer Is passed over to {@link ReadableFile#readLine(Function)}. * @return TRUE if data was found and read, FALSE if there is no data available to read. * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. + * @throws IOException If an unexpected error happens. */ public boolean read(Function consumer) throws IOException { return read(consumer, 1); @@ -65,4 +81,14 @@ private boolean read(Function consumer, int attemptNumber) thro return read(consumer, ++attemptNumber); } } + + @Override + public void close() throws IOException { + if (writableFile != null) { + writableFile.close(); + } + if (readableFile != null) { + readableFile.close(); + } + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 62a5208ea..eea1589f5 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -12,9 +12,12 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; import java.io.IOException; import java.util.function.Function; import org.junit.jupiter.api.BeforeEach; @@ -25,12 +28,14 @@ class StorageTest { private Storage storage; private Function consumer; private ReadableFile readableFile; + private WritableFile writableFile; @BeforeEach public void setUp() { folderManager = mock(); consumer = mock(); readableFile = mock(); + writableFile = mock(); storage = new Storage(folderManager); } @@ -79,7 +84,8 @@ public void whenStorageClosedExceptionHappens_lookForNewFileToRead() throws IOEx } @Test - public void whenEveryNewFileFoundCannotBeRead_stopAfterMaxAttempts() throws IOException { + public void whenEveryNewFileFoundCannotBeRead_throwExceptionAfterMaxAttempts() + throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile); doThrow(StorageClosedException.class).when(readableFile).readLine(consumer); @@ -87,7 +93,73 @@ public void whenEveryNewFileFoundCannotBeRead_stopAfterMaxAttempts() throws IOEx assertFalse(storage.read(consumer)); fail(); } catch (MaxAttemptsReachedException e) { - verify(folderManager, times(10)).getReadableFile(); + verify(folderManager, times(3)).getReadableFile(); + } + } + + @Test + public void appendLineToFile() throws IOException { + doReturn(writableFile).when(folderManager).createWritableFile(); + byte[] data = new byte[1]; + + storage.write(data); + + verify(writableFile).append(data); + } + + @Test + public void whenWritingTimeoutExceptionHappens_retryWithNewFile() throws IOException { + byte[] data = new byte[1]; + WritableFile workingWritableFile = mock(); + when(folderManager.createWritableFile()) + .thenReturn(writableFile) + .thenReturn(workingWritableFile); + doThrow(WritingTimeoutException.class).when(writableFile).append(data); + + storage.write(data); + + verify(folderManager, times(2)).createWritableFile(); + } + + @Test + public void whenNoSpaceAvailableExceptionHappens_retryWithNewFile() throws IOException { + byte[] data = new byte[1]; + WritableFile workingWritableFile = mock(); + when(folderManager.createWritableFile()) + .thenReturn(writableFile) + .thenReturn(workingWritableFile); + doThrow(NoSpaceAvailableException.class).when(writableFile).append(data); + + storage.write(data); + + verify(folderManager, times(2)).createWritableFile(); + } + + @Test + public void whenStorageClosedExceptionHappens_retryWithNewFile() throws IOException { + byte[] data = new byte[1]; + WritableFile workingWritableFile = mock(); + when(folderManager.createWritableFile()) + .thenReturn(writableFile) + .thenReturn(workingWritableFile); + doThrow(StorageClosedException.class).when(writableFile).append(data); + + storage.write(data); + + verify(folderManager, times(2)).createWritableFile(); + } + + @Test + public void whenEveryAttemptToWriteFails_throwExceptionAfterMaxAttempts() throws IOException { + byte[] data = new byte[1]; + when(folderManager.createWritableFile()).thenReturn(writableFile); + doThrow(StorageClosedException.class).when(writableFile).append(data); + + try { + storage.write(data); + fail(); + } catch (MaxAttemptsReachedException e) { + verify(folderManager, times(3)).createWritableFile(); } } } From d3e4942f5bd84845b20864fb70a08a648409d066 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 22:18:03 +0200 Subject: [PATCH 083/209] Validating Storage closing --- .../buffering/internal/storage/Storage.java | 28 ++++++++++----- ...tion.java => ResourceClosedException.java} | 2 +- .../internal/storage/files/ReadableFile.java | 6 ++-- .../internal/storage/files/WritableFile.java | 6 ++-- .../internal/storage/StorageTest.java | 34 +++++++++++++++---- .../storage/files/ReadableFileTest.java | 4 +-- .../storage/files/WritableFileTest.java | 4 +-- 7 files changed, 58 insertions(+), 26 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/{StorageClosedException.java => ResourceClosedException.java} (69%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index 7bf5a7888..526df138e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -4,12 +4,13 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; import java.io.Closeable; import java.io.IOException; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import javax.annotation.Nullable; @@ -18,6 +19,7 @@ public final class Storage implements Closeable { @Nullable private WritableFile writableFile; @Nullable private ReadableFile readableFile; private static final int MAX_ATTEMPTS = 3; + private final AtomicBoolean isClosed = new AtomicBoolean(false); public Storage(FolderManager folderManager) { this.folderManager = folderManager; @@ -28,6 +30,7 @@ public Storage(FolderManager folderManager) { * * @param line - The data that would be appended to the file. * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. + * @throws ResourceClosedException If it's closed. * @throws IOException If an unexpected error happens. */ public void write(byte[] line) throws IOException { @@ -35,6 +38,9 @@ public void write(byte[] line) throws IOException { } private void write(byte[] line, int attemptNumber) throws IOException { + if (isClosed.get()) { + throw new ResourceClosedException(); + } if (attemptNumber > MAX_ATTEMPTS) { throw new MaxAttemptsReachedException(); } @@ -43,7 +49,7 @@ private void write(byte[] line, int attemptNumber) throws IOException { } try { writableFile.append(line); - } catch (WritingTimeoutException | NoSpaceAvailableException | StorageClosedException e) { + } catch (WritingTimeoutException | NoSpaceAvailableException | ResourceClosedException e) { // Retry with new file writableFile = null; write(line, ++attemptNumber); @@ -56,6 +62,7 @@ private void write(byte[] line, int attemptNumber) throws IOException { * @param consumer Is passed over to {@link ReadableFile#readLine(Function)}. * @return TRUE if data was found and read, FALSE if there is no data available to read. * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. + * @throws ResourceClosedException If it's closed. * @throws IOException If an unexpected error happens. */ public boolean read(Function consumer) throws IOException { @@ -63,6 +70,9 @@ public boolean read(Function consumer) throws IOException { } private boolean read(Function consumer, int attemptNumber) throws IOException { + if (isClosed.get()) { + throw new ResourceClosedException(); + } if (attemptNumber > MAX_ATTEMPTS) { throw new MaxAttemptsReachedException(); } @@ -75,7 +85,7 @@ private boolean read(Function consumer, int attemptNumber) thro try { readableFile.readLine(consumer); return true; - } catch (ReadingTimeoutException | NoMoreLinesToReadException | StorageClosedException e) { + } catch (ReadingTimeoutException | NoMoreLinesToReadException | ResourceClosedException e) { // Retry with new file readableFile = null; return read(consumer, ++attemptNumber); @@ -84,11 +94,13 @@ private boolean read(Function consumer, int attemptNumber) thro @Override public void close() throws IOException { - if (writableFile != null) { - writableFile.close(); - } - if (readableFile != null) { - readableFile.close(); + if (isClosed.compareAndSet(false, true)) { + if (writableFile != null) { + writableFile.close(); + } + if (readableFile != null) { + readableFile.close(); + } } } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java similarity index 69% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java index e042df3f5..0088b1081 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/StorageClosedException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java @@ -3,4 +3,4 @@ import java.io.IOException; @SuppressWarnings("serial") -public class StorageClosedException extends IOException {} +public class ResourceClosedException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 4bf5dc227..230d7bd6d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -5,7 +5,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedReader; @@ -65,11 +65,11 @@ public ReadableFile( * source file. If the function returns FALSE, no changes will be applied to the source file. * @throws ReadingTimeoutException If the configured reading time for the file has ended. * @throws NoMoreLinesToReadException If there are no more lines to be read from the file. - * @throws StorageClosedException If it's closed. + * @throws ResourceClosedException If it's closed. */ public synchronized void readLine(Function consumer) throws IOException { if (isClosed.get()) { - throw new StorageClosedException(); + throw new ResourceClosedException(); } if (hasExpired()) { throw new ReadingTimeoutException(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 6a75b718a..596fe2632 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -4,7 +4,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.BufferedOutputStream; @@ -38,13 +38,13 @@ public WritableFile( * the buffer before attempting to append the new data. * * @param data - The new data line to add. - * @throws StorageClosedException If it's closed. + * @throws ResourceClosedException If it's closed. * @throws WritingTimeoutException If the configured writing time for the file has ended. * @throws NoSpaceAvailableException If the configured max file size has been reached. */ public synchronized void append(byte[] data) throws IOException { if (isClosed.get()) { - throw new StorageClosedException(); + throw new ResourceClosedException(); } if (hasExpired()) { close(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index eea1589f5..5da9ec702 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -14,7 +14,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; @@ -48,6 +48,26 @@ public void whenReadingSuccessfully_returnTrue() throws IOException { verify(readableFile).readLine(consumer); } + @Test + public void whenAttemptingToReadAfterClosed_throwException() throws IOException { + storage.close(); + try { + storage.read(consumer); + fail(); + } catch (ResourceClosedException ignored) { + } + } + + @Test + public void whenAttemptingToWriteAfterClosed_throwException() throws IOException { + storage.close(); + try { + storage.write(new byte[1]); + fail(); + } catch (ResourceClosedException ignored) { + } + } + @Test public void whenNoFileAvailableForReading_returnFalse() throws IOException { assertFalse(storage.read(consumer)); @@ -74,9 +94,9 @@ public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws } @Test - public void whenStorageClosedExceptionHappens_lookForNewFileToRead() throws IOException { + public void whenResourceClosedExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(StorageClosedException.class).when(readableFile).readLine(consumer); + doThrow(ResourceClosedException.class).when(readableFile).readLine(consumer); assertFalse(storage.read(consumer)); @@ -87,7 +107,7 @@ public void whenStorageClosedExceptionHappens_lookForNewFileToRead() throws IOEx public void whenEveryNewFileFoundCannotBeRead_throwExceptionAfterMaxAttempts() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile); - doThrow(StorageClosedException.class).when(readableFile).readLine(consumer); + doThrow(ResourceClosedException.class).when(readableFile).readLine(consumer); try { assertFalse(storage.read(consumer)); @@ -136,13 +156,13 @@ public void whenNoSpaceAvailableExceptionHappens_retryWithNewFile() throws IOExc } @Test - public void whenStorageClosedExceptionHappens_retryWithNewFile() throws IOException { + public void whenResourceClosedExceptionHappens_retryWithNewFile() throws IOException { byte[] data = new byte[1]; WritableFile workingWritableFile = mock(); when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doThrow(StorageClosedException.class).when(writableFile).append(data); + doThrow(ResourceClosedException.class).when(writableFile).append(data); storage.write(data); @@ -153,7 +173,7 @@ public void whenStorageClosedExceptionHappens_retryWithNewFile() throws IOExcept public void whenEveryAttemptToWriteFails_throwExceptionAfterMaxAttempts() throws IOException { byte[] data = new byte[1]; when(folderManager.createWritableFile()).thenReturn(writableFile); - doThrow(StorageClosedException.class).when(writableFile).append(data); + doThrow(ResourceClosedException.class).when(writableFile).append(data); try { storage.write(data); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index fec7c7711..b2849cb3e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -10,7 +10,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; @@ -151,7 +151,7 @@ public void whenReadingAfterClosed_throwException() throws IOException { try { readableFile.readLine(bytes -> true); fail(); - } catch (StorageClosedException ignored) { + } catch (ResourceClosedException ignored) { } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 25908d861..0bd16a8a9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -12,7 +12,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.StorageClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; @@ -107,7 +107,7 @@ public void whenAppendingData_andIsAlreadyClosed_throwException() throws IOExcep try { writableFile.append(new byte[2]); fail(); - } catch (StorageClosedException ignored) { + } catch (ResourceClosedException ignored) { } } From 2344dc8f78044c00597bd5613346b99040964638 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 22:27:40 +0200 Subject: [PATCH 084/209] Validating Storage files reusing --- .../internal/storage/StorageTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 5da9ec702..4d9b4a159 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -8,6 +8,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; @@ -48,6 +49,33 @@ public void whenReadingSuccessfully_returnTrue() throws IOException { verify(readableFile).readLine(consumer); } + @Test + public void whenReadingMultipleTimes_reuseReader() throws IOException { + ReadableFile anotherReadable = mock(); + when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(anotherReadable); + + assertTrue(storage.read(consumer)); + assertTrue(storage.read(consumer)); + + verify(readableFile, times(2)).readLine(consumer); + verify(folderManager, times(1)).getReadableFile(); + verifyNoInteractions(anotherReadable); + } + + @Test + public void whenWritingMultipleTimes_reuseWriter() throws IOException { + byte[] data = new byte[1]; + WritableFile anotherWriter = mock(); + when(folderManager.createWritableFile()).thenReturn(writableFile).thenReturn(anotherWriter); + + storage.write(data); + storage.write(data); + + verify(writableFile, times(2)).append(data); + verify(folderManager, times(1)).createWritableFile(); + verifyNoInteractions(anotherWriter); + } + @Test public void whenAttemptingToReadAfterClosed_throwException() throws IOException { storage.close(); @@ -182,4 +210,17 @@ public void whenEveryAttemptToWriteFails_throwExceptionAfterMaxAttempts() throws verify(folderManager, times(3)).createWritableFile(); } } + + @Test + public void whenClosing_closeWriterAndReaderIfNotNull() throws IOException { + doReturn(writableFile).when(folderManager).createWritableFile(); + doReturn(readableFile).when(folderManager).getReadableFile(); + storage.write(new byte[1]); + storage.read(consumer); + + storage.close(); + + verify(writableFile).close(); + verify(readableFile).close(); + } } From 9ab4f237e4d1a480301a5b2d89c64d32c98f5314 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 22:43:31 +0200 Subject: [PATCH 085/209] Handling Configuration with autovalue --- .../internal/storage/Configuration.java | 49 ++++++++++++------- .../internal/storage/FolderManager.java | 7 +-- .../internal/storage/files/ReadableFile.java | 2 +- .../internal/storage/files/WritableFile.java | 4 +- .../buffering/internal/storage/TestData.java | 13 ++--- 5 files changed, 45 insertions(+), 30 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index 75b392713..898b8c274 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -1,22 +1,35 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; -public final class Configuration { - public final long maxFileAgeForWriteInMillis; - public final long minFileAgeForReadInMillis; - public final long maxFileAgeForReadInMillis; - public final int maxFileSize; - public final int maxFolderSize; - - public Configuration( - long maxFileAgeForWriteInMillis, - long minFileAgeForReadInMillis, - long maxFileAgeForReadInMillis, - int maxFileSize, - int maxFolderSize) { - this.maxFileAgeForWriteInMillis = maxFileAgeForWriteInMillis; - this.minFileAgeForReadInMillis = minFileAgeForReadInMillis; - this.maxFileAgeForReadInMillis = maxFileAgeForReadInMillis; - this.maxFileSize = maxFileSize; - this.maxFolderSize = maxFolderSize; +import com.google.auto.value.AutoValue; + +@AutoValue +public abstract class Configuration { + public abstract long getMaxFileAgeForWriteMillis(); + + public abstract long getMinFileAgeForReadMillis(); + + public abstract long getMaxFileAgeForReadMillis(); + + public abstract int getMaxFileSize(); + + public abstract int getMaxFolderSize(); + + public static Builder builder() { + return new AutoValue_Configuration.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder setMaxFileAgeForWriteMillis(long value); + + public abstract Builder setMinFileAgeForReadMillis(long value); + + public abstract Builder setMaxFileAgeForReadMillis(long value); + + public abstract Builder setMaxFileSize(int value); + + public abstract Builder setMaxFolderSize(int value); + + public abstract Configuration build(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index b76c24893..15a6c6faa 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -112,15 +112,16 @@ private boolean isNeededToClearSpaceForNewFile(File[] existingFiles) { for (File existingFile : existingFiles) { currentFolderSize += (int) existingFile.length(); } - return (currentFolderSize + configuration.maxFileSize) > configuration.maxFolderSize; + return (currentFolderSize + configuration.getMaxFileSize()) > configuration.getMaxFolderSize(); } private boolean isReadyToBeRead(long currentTimeMillis, long createdTimeInMillis) { - return currentTimeMillis >= (createdTimeInMillis + configuration.minFileAgeForReadInMillis); + return currentTimeMillis + >= (createdTimeInMillis + configuration.getMinFileAgeForReadMillis()); } private boolean hasExpiredForReading(long systemCurrentTimeMillis, long createdTimeInMillis) { return systemCurrentTimeMillis - > (createdTimeInMillis + configuration.maxFileAgeForReadInMillis); + > (createdTimeInMillis + configuration.getMaxFileAgeForReadMillis()); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 230d7bd6d..82d2a93bd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -46,7 +46,7 @@ public ReadableFile( throws IOException { super(file); this.timeProvider = timeProvider; - expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForReadInMillis; + expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForReadMillis(); originalFileSize = (int) file.length(); temporaryFile = temporaryFileProvider.createTemporaryFile(file.getName()); Files.copy(file.toPath(), temporaryFile.toPath(), StandardCopyOption.REPLACE_EXISTING); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 596fe2632..0c2608b1f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -27,7 +27,7 @@ public WritableFile( super(file); this.configuration = configuration; this.timeProvider = timeProvider; - expireTimeMillis = createdTimeMillis + configuration.maxFileAgeForWriteInMillis; + expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForWriteMillis(); size = (int) file.length(); out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); } @@ -51,7 +51,7 @@ public synchronized void append(byte[] data) throws IOException { throw new WritingTimeoutException(); } int futureSize = size + data.length + NEW_LINE_BYTES.length; - if (futureSize > configuration.maxFileSize) { + if (futureSize > configuration.getMaxFileSize()) { close(); throw new NoSpaceAvailableException(); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index 95c5fd371..8cfb6729e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -8,12 +8,13 @@ public final class TestData { public static final int MAX_FILE_SIZE = 100; public static final int MAX_FOLDER_SIZE = 300; public static final Configuration CONFIGURATION = - new Configuration( - MAX_FILE_AGE_FOR_WRITE_MILLIS, - MIN_FILE_AGE_FOR_READ_MILLIS, - MAX_FILE_AGE_FOR_READ_MILLIS, - MAX_FILE_SIZE, - MAX_FOLDER_SIZE); + Configuration.builder() + .setMaxFileAgeForWriteMillis(MAX_FILE_AGE_FOR_WRITE_MILLIS) + .setMinFileAgeForReadMillis(MIN_FILE_AGE_FOR_READ_MILLIS) + .setMaxFileAgeForReadMillis(MAX_FILE_AGE_FOR_READ_MILLIS) + .setMaxFileSize(MAX_FILE_SIZE) + .setMaxFolderSize(MAX_FOLDER_SIZE) + .build(); private TestData() {} } From 8382fa8edf5528e13b106eeea4ca1ce55d082ce8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 22:57:07 +0200 Subject: [PATCH 086/209] Setting configuration defaults --- .../buffering/internal/storage/Configuration.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java index 898b8c274..dfc316205 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java @@ -1,6 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; import com.google.auto.value.AutoValue; +import java.util.concurrent.TimeUnit; @AutoValue public abstract class Configuration { @@ -14,8 +15,17 @@ public abstract class Configuration { public abstract int getMaxFolderSize(); + public static Configuration getDefault() { + return builder().build(); + } + public static Builder builder() { - return new AutoValue_Configuration.Builder(); + return new AutoValue_Configuration.Builder() + .setMaxFileSize(1024 * 1024) // 1MB + .setMaxFolderSize(20 * 1024 * 1024) // 20MB + .setMaxFileAgeForWriteMillis(TimeUnit.SECONDS.toMillis(5)) + .setMinFileAgeForReadMillis(TimeUnit.SECONDS.toMillis(6)) + .setMaxFileAgeForReadMillis(TimeUnit.HOURS.toMillis(18)); } @AutoValue.Builder From 5ab5e25c7405837fe82fb4830365edba879ee3ed Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 8 Jun 2023 23:00:04 +0200 Subject: [PATCH 087/209] Renaming Configuration to StorageConfiguration --- .../disk/buffering/internal/storage/FolderManager.java | 4 ++-- .../{Configuration.java => StorageConfiguration.java} | 8 ++++---- .../buffering/internal/storage/files/ReadableFile.java | 6 +++--- .../buffering/internal/storage/files/WritableFile.java | 6 +++--- .../contrib/disk/buffering/internal/storage/TestData.java | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/{Configuration.java => StorageConfiguration.java} (85%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 15a6c6faa..02f6dcb0c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -11,10 +11,10 @@ public final class FolderManager { private final File folder; private final TimeProvider timeProvider; - private final Configuration configuration; + private final StorageConfiguration configuration; @Nullable private ReadableFile currentReadableFile; - public FolderManager(File folder, TimeProvider timeProvider, Configuration configuration) { + public FolderManager(File folder, TimeProvider timeProvider, StorageConfiguration configuration) { this.folder = folder; this.timeProvider = timeProvider; this.configuration = configuration; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageConfiguration.java similarity index 85% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageConfiguration.java index dfc316205..1f73fab57 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Configuration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageConfiguration.java @@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit; @AutoValue -public abstract class Configuration { +public abstract class StorageConfiguration { public abstract long getMaxFileAgeForWriteMillis(); public abstract long getMinFileAgeForReadMillis(); @@ -15,12 +15,12 @@ public abstract class Configuration { public abstract int getMaxFolderSize(); - public static Configuration getDefault() { + public static StorageConfiguration getDefault() { return builder().build(); } public static Builder builder() { - return new AutoValue_Configuration.Builder() + return new AutoValue_StorageConfiguration.Builder() .setMaxFileSize(1024 * 1024) // 1MB .setMaxFolderSize(20 * 1024 * 1024) // 20MB .setMaxFileAgeForWriteMillis(TimeUnit.SECONDS.toMillis(5)) @@ -40,6 +40,6 @@ public abstract static class Builder { public abstract Builder setMaxFolderSize(int value); - public abstract Configuration build(); + public abstract StorageConfiguration build(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 82d2a93bd..2f2855a0e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -2,7 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; -import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; @@ -32,7 +32,7 @@ public final class ReadableFile extends StorageFile { private int readBytes = 0; public ReadableFile( - File file, long createdTimeMillis, TimeProvider timeProvider, Configuration configuration) + File file, long createdTimeMillis, TimeProvider timeProvider, StorageConfiguration configuration) throws IOException { this(file, createdTimeMillis, timeProvider, configuration, TemporaryFileProvider.INSTANCE); } @@ -41,7 +41,7 @@ public ReadableFile( File file, long createdTimeMillis, TimeProvider timeProvider, - Configuration configuration, + StorageConfiguration configuration, TemporaryFileProvider temporaryFileProvider) throws IOException { super(file); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 0c2608b1f..2f6d841ec 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -2,7 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; -import io.opentelemetry.contrib.disk.buffering.internal.storage.Configuration; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; @@ -14,7 +14,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public final class WritableFile extends StorageFile { - private final Configuration configuration; + private final StorageConfiguration configuration; private final TimeProvider timeProvider; private final long expireTimeMillis; private final BufferedOutputStream out; @@ -22,7 +22,7 @@ public final class WritableFile extends StorageFile { private int size; public WritableFile( - File file, long createdTimeMillis, Configuration configuration, TimeProvider timeProvider) + File file, long createdTimeMillis, StorageConfiguration configuration, TimeProvider timeProvider) throws IOException { super(file); this.configuration = configuration; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index 8cfb6729e..68c758fa9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -7,8 +7,8 @@ public final class TestData { public static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; public static final int MAX_FILE_SIZE = 100; public static final int MAX_FOLDER_SIZE = 300; - public static final Configuration CONFIGURATION = - Configuration.builder() + public static final StorageConfiguration CONFIGURATION = + StorageConfiguration.builder() .setMaxFileAgeForWriteMillis(MAX_FILE_AGE_FOR_WRITE_MILLIS) .setMinFileAgeForReadMillis(MIN_FILE_AGE_FOR_READ_MILLIS) .setMaxFileAgeForReadMillis(MAX_FILE_AGE_FOR_READ_MILLIS) From ab97bae28f6c707ddae40564cfe6c1060f602150 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 12:14:36 +0200 Subject: [PATCH 088/209] Created AbstractDiskExporter and each signal's implementation --- .../exporters/AbstractDiskExporter.java | 62 ++++++++ .../exporters/LogRecordDiskExporter.java | 58 +++++++ .../exporters/MetricDiskExporter.java | 65 ++++++++ .../buffering/exporters/SpanDiskExporter.java | 56 +++++++ .../common/BaseResourceSignalsDataMapper.java | 2 +- .../serializers/LogRecordDataSerializer.java | 3 +- .../serializers/MetricDataSerializer.java | 3 +- .../serializers/SignalSerializer.java | 3 +- .../serializers/SpanDataSerializer.java | 3 +- .../internal/storage/FolderManager.java | 11 +- .../internal/storage/utils/TimeProvider.java | 7 + .../exporters/AbstractDiskExporterTest.java | 141 ++++++++++++++++++ .../internal/storage/FolderManagerTest.java | 2 +- 13 files changed, 406 insertions(+), 10 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java new file mode 100644 index 000000000..c6befaa8b --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java @@ -0,0 +1,62 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; +import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; +import java.io.File; +import java.io.IOException; +import java.util.Collection; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +public abstract class AbstractDiskExporter { + private final Storage storage; + + public AbstractDiskExporter(File rootDir, StorageConfiguration configuration) { + this.storage = new Storage(new FolderManager(getSignalFolder(rootDir), configuration)); + } + + public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { + AtomicBoolean exportSucceeded = new AtomicBoolean(false); + boolean foundDataToExport = + storage.read( + bytes -> { + CompletableResultCode join = + doExport(getSerializer().deserialize(bytes)).join(timeout, unit); + exportSucceeded.set(join.isSuccess()); + return exportSucceeded.get(); + }); + return foundDataToExport && exportSucceeded.get(); + } + + protected abstract String getStorageFolderName(); + + protected abstract CompletableResultCode doExport(Collection data); + + protected abstract SignalSerializer getSerializer(); + + protected void onShutDown() throws IOException { + storage.close(); + } + + protected CompletableResultCode onExport(Collection spans) { + try { + storage.write(getSerializer().serialize(spans)); + return CompletableResultCode.ofSuccess(); + } catch (IOException e) { + return doExport(spans); + } + } + + private File getSignalFolder(File rootDir) { + File folder = new File(rootDir, getStorageFolderName()); + if (!folder.exists()) { + if (!folder.mkdirs()) { + throw new IllegalStateException("Could not create the signal folder"); + } + } + return folder; + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java new file mode 100644 index 000000000..6cbe0159d --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -0,0 +1,58 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.logs.export.LogRecordExporter; +import java.io.File; +import java.io.IOException; +import java.util.Collection; + +public final class LogRecordDiskExporter extends AbstractDiskExporter + implements LogRecordExporter { + private final LogRecordExporter wrapped; + + public LogRecordDiskExporter( + LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) { + super(rootDir, configuration); + this.wrapped = wrapped; + } + + @Override + protected String getStorageFolderName() { + return "logs"; + } + + @Override + protected CompletableResultCode doExport(Collection logRecordData) { + return wrapped.export(logRecordData); + } + + @Override + protected SignalSerializer getSerializer() { + return SignalSerializer.ofLogs(); + } + + @Override + public CompletableResultCode export(Collection logs) { + return onExport(logs); + } + + @Override + public CompletableResultCode flush() { + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode shutdown() { + try { + onShutDown(); + } catch (IOException e) { + return CompletableResultCode.ofFailure(); + } finally { + wrapped.shutdown(); + } + return CompletableResultCode.ofSuccess(); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java new file mode 100644 index 000000000..3bd555ee3 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -0,0 +1,65 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.metrics.InstrumentType; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.export.MetricExporter; +import java.io.File; +import java.io.IOException; +import java.util.Collection; + +public final class MetricDiskExporter extends AbstractDiskExporter + implements MetricExporter { + private final MetricExporter wrapped; + + public MetricDiskExporter( + MetricExporter wrapped, File rootDir, StorageConfiguration configuration) { + super(rootDir, configuration); + this.wrapped = wrapped; + } + + @Override + protected String getStorageFolderName() { + return "metrics"; + } + + @Override + protected CompletableResultCode doExport(Collection metricData) { + return wrapped.export(metricData); + } + + @Override + protected SignalSerializer getSerializer() { + return SignalSerializer.ofMetrics(); + } + + @Override + public CompletableResultCode export(Collection metrics) { + return onExport(metrics); + } + + @Override + public CompletableResultCode flush() { + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode shutdown() { + try { + onShutDown(); + } catch (IOException e) { + return CompletableResultCode.ofFailure(); + } finally { + wrapped.shutdown(); + } + return CompletableResultCode.ofSuccess(); + } + + @Override + public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) { + return wrapped.getAggregationTemporality(instrumentType); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java new file mode 100644 index 000000000..645db847c --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -0,0 +1,56 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.SpanExporter; +import java.io.File; +import java.io.IOException; +import java.util.Collection; + +public final class SpanDiskExporter extends AbstractDiskExporter implements SpanExporter { + private final SpanExporter wrapped; + + public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) { + super(rootDir, configuration); + this.wrapped = wrapped; + } + + @Override + public CompletableResultCode export(Collection spans) { + return onExport(spans); + } + + @Override + public CompletableResultCode shutdown() { + try { + onShutDown(); + } catch (IOException e) { + return CompletableResultCode.ofFailure(); + } finally { + wrapped.shutdown(); + } + return CompletableResultCode.ofSuccess(); + } + + @Override + protected String getStorageFolderName() { + return "spans"; + } + + @Override + protected CompletableResultCode doExport(Collection data) { + return wrapped.export(data); + } + + @Override + protected SignalSerializer getSerializer() { + return SignalSerializer.ofSpans(); + } + + @Override + public CompletableResultCode flush() { + return CompletableResultCode.ofSuccess(); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java index c4ff3a211..61198144b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java @@ -22,7 +22,7 @@ public abstract class BaseResourceSignalsDataMapper< JSON_RESOURCE extends ResourceSignals, JSON_RESOURCE_DATA extends ResourceSignalsData> { - public JSON_RESOURCE_DATA toJsonDto(List sourceItems) { + public JSON_RESOURCE_DATA toJsonDto(Collection sourceItems) { Map itemsByResourceAndScope = new HashMap<>(); Map scopeInfoToScopeSignals = new HashMap<>(); sourceItems.forEach( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index 8bae6737d..9197041fa 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -4,6 +4,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.IOException; +import java.util.Collection; import java.util.List; import javax.annotation.Nullable; @@ -20,7 +21,7 @@ static LogRecordDataSerializer get() { } @Override - public byte[] serialize(List logRecordData) { + public byte[] serialize(Collection logRecordData) { try { return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); } catch (IOException e) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 4e2a6cf44..4560ebc01 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -4,6 +4,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; import java.io.IOException; +import java.util.Collection; import java.util.List; import javax.annotation.Nullable; @@ -20,7 +21,7 @@ static MetricDataSerializer get() { } @Override - public byte[] serialize(List metricData) { + public byte[] serialize(Collection metricData) { try { return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); } catch (IOException e) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java index e90d36eff..ab871b2ea 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java @@ -1,5 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; +import java.util.Collection; import java.util.List; public interface SignalSerializer { @@ -16,7 +17,7 @@ static LogRecordDataSerializer ofLogs() { return LogRecordDataSerializer.get(); } - byte[] serialize(List items); + byte[] serialize(Collection items); List deserialize(byte[] source); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index f65dc19d7..aa01125d6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -4,6 +4,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpansData; import io.opentelemetry.sdk.trace.data.SpanData; import java.io.IOException; +import java.util.Collection; import java.util.List; import javax.annotation.Nullable; @@ -20,7 +21,7 @@ static SpanDataSerializer get() { } @Override - public byte[] serialize(List spanData) { + public byte[] serialize(Collection spanData) { try { return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); } catch (IOException e) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 02f6dcb0c..c0939ab80 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -14,10 +14,14 @@ public final class FolderManager { private final StorageConfiguration configuration; @Nullable private ReadableFile currentReadableFile; - public FolderManager(File folder, TimeProvider timeProvider, StorageConfiguration configuration) { + public FolderManager(File folder, StorageConfiguration configuration) { + this(folder, configuration, TimeProvider.get()); + } + + public FolderManager(File folder, StorageConfiguration configuration, TimeProvider timeProvider) { this.folder = folder; - this.timeProvider = timeProvider; this.configuration = configuration; + this.timeProvider = timeProvider; } @Nullable @@ -116,8 +120,7 @@ private boolean isNeededToClearSpaceForNewFile(File[] existingFiles) { } private boolean isReadyToBeRead(long currentTimeMillis, long createdTimeInMillis) { - return currentTimeMillis - >= (createdTimeInMillis + configuration.getMinFileAgeForReadMillis()); + return currentTimeMillis >= (createdTimeInMillis + configuration.getMinFileAgeForReadMillis()); } private boolean hasExpiredForReading(long systemCurrentTimeMillis, long createdTimeInMillis) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java index 54cd53c59..7d5727b06 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java @@ -1,6 +1,13 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; public class TimeProvider { + @SuppressWarnings({"FieldCanBeFinal", "FieldMayBeFinal"}) // Needed for tests + private static TimeProvider instance = new TimeProvider(); + + public static TimeProvider get() { + return instance; + } + public long getSystemCurrentTimeMillis() { return System.currentTimeMillis(); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java new file mode 100644 index 000000000..992436152 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java @@ -0,0 +1,141 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MIN_FILE_AGE_FOR_READ_MILLIS; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.SpanExporter; +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Field; +import java.nio.file.Files; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class AbstractDiskExporterTest { + private SpanExporter wrapped; + private SignalSerializer serializer; + private TimeProvider timeProvider; + private AbstractDiskExporter exporter; + private final List deserializedData = Collections.emptyList(); + @TempDir File rootDir; + private static final String STORAGE_FOLDER_NAME = "testName"; + + @BeforeEach + public void setUp() throws NoSuchFieldException, IllegalAccessException { + setUpTimeProvider(); + setUpSerializer(); + wrapped = mock(); + exporter = new TestDiskExporter(wrapped, rootDir, TestData.CONFIGURATION, serializer); + } + + @Test + public void whenExportingStoredBatch_withAvailableData_andSuccessfullyProcessed_returnTrue() + throws IOException { + doReturn(CompletableResultCode.ofSuccess()).when(wrapped).export(deserializedData); + + createDummyFile(1000L, "First line"); + doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + + assertTrue(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); + } + + @Test + public void whenExportingStoredBatch_withAvailableData_andUnsuccessfullyProcessed_returnFalse() + throws IOException { + doReturn(CompletableResultCode.ofFailure()).when(wrapped).export(deserializedData); + + createDummyFile(1000L, "First line"); + doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + + assertFalse(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); + } + + @Test + public void whenExportingStoredBatch_withNoAvailableData_returnFalse() throws IOException { + assertFalse(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); + } + + @Test + public void verifyStorageFolderIsCreated() { + assertTrue(new File(rootDir, STORAGE_FOLDER_NAME).exists()); + } + + @Test + public void closeStorageOnShutDown() throws IOException { + exporter.onShutDown(); + + try { + exporter.exportStoredBatch(1, TimeUnit.SECONDS); + fail(); + } catch (ResourceClosedException ignored) { + } + } + + private File createDummyFile(long createdTimeMillis, String... lines) throws IOException { + File file = new File(rootDir, exporter.getStorageFolderName() + "/" + createdTimeMillis); + Files.write(file.toPath(), Arrays.asList(lines)); + return file; + } + + private void setUpTimeProvider() throws NoSuchFieldException, IllegalAccessException { + timeProvider = mock(); + Field field = TimeProvider.class.getDeclaredField("instance"); + field.setAccessible(true); + + field.set(null, timeProvider); + doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); + } + + private void setUpSerializer() { + serializer = mock(); + doReturn(deserializedData).when(serializer).deserialize(any()); + } + + private static class TestDiskExporter extends AbstractDiskExporter { + private final SpanExporter wrapped; + private final SignalSerializer serializer; + + public TestDiskExporter( + SpanExporter wrapped, + File rootDir, + StorageConfiguration configuration, + SignalSerializer serializer) { + super(rootDir, configuration); + this.wrapped = wrapped; + this.serializer = serializer; + } + + @Override + protected String getStorageFolderName() { + return STORAGE_FOLDER_NAME; + } + + @Override + protected CompletableResultCode doExport(Collection spanData) { + return wrapped.export(spanData); + } + + @Override + protected SignalSerializer getSerializer() { + return serializer; + } + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index ad904cdba..a63dce6b8 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -31,7 +31,7 @@ class FolderManagerTest { @BeforeEach public void setUp() { timeProvider = mock(); - folderManager = new FolderManager(rootDir, timeProvider, TestData.CONFIGURATION); + folderManager = new FolderManager(rootDir, TestData.CONFIGURATION, timeProvider); } @Test From b7aa2ab1cc1f95bf49fae564dd31b1af8aec1ee1 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 12:47:54 +0200 Subject: [PATCH 089/209] Validating writing in AbstractDiskExporter --- .../exporters/AbstractDiskExporterTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java index 992436152..082165016 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java @@ -7,6 +7,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; @@ -89,6 +91,27 @@ public void closeStorageOnShutDown() throws IOException { } } + @Test + public void whenWritingSucceedsOnExport_returnSuccessfulResultCode() { + doReturn(new byte[2]).when(serializer).serialize(deserializedData); + + CompletableResultCode completableResultCode = exporter.onExport(deserializedData); + + assertTrue(completableResultCode.isSuccess()); + verifyNoInteractions(wrapped); + } + + @Test + public void whenWritingFailsOnExport_doExportRightAway() throws IOException { + doReturn(CompletableResultCode.ofSuccess()).when(wrapped).export(deserializedData); + exporter.onShutDown(); + + CompletableResultCode completableResultCode = exporter.onExport(deserializedData); + + assertTrue(completableResultCode.isSuccess()); + verify(wrapped).export(deserializedData); + } + private File createDummyFile(long createdTimeMillis, String... lines) throws IOException { File file = new File(rootDir, exporter.getStorageFolderName() + "/" + createdTimeMillis); Files.write(file.toPath(), Arrays.asList(lines)); From cc864cac95835794e657bea67990bb58ce3aa9c4 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:01:43 +0200 Subject: [PATCH 090/209] Adding verification for signal disk exporters --- .../exporters/LogRecordDiskExporter.java | 2 +- .../exporters/MetricDiskExporter.java | 2 +- .../buffering/exporters/SpanDiskExporter.java | 2 +- .../exporters/LogRecordDiskExporterTest.java | 58 +++++++++++++++ .../exporters/MetricDiskExporterTest.java | 72 +++++++++++++++++++ .../exporters/SpanDiskExporterTest.java | 58 +++++++++++++++ 6 files changed, 191 insertions(+), 3 deletions(-) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 6cbe0159d..d537f7632 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -41,7 +41,7 @@ public CompletableResultCode export(Collection logs) { @Override public CompletableResultCode flush() { - return CompletableResultCode.ofSuccess(); + return wrapped.flush(); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 3bd555ee3..3c27e628b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -43,7 +43,7 @@ public CompletableResultCode export(Collection metrics) { @Override public CompletableResultCode flush() { - return CompletableResultCode.ofSuccess(); + return wrapped.flush(); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 645db847c..320c609ff 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -51,6 +51,6 @@ protected SignalSerializer getSerializer() { @Override public CompletableResultCode flush() { - return CompletableResultCode.ofSuccess(); + return wrapped.flush(); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java new file mode 100644 index 000000000..d8020b944 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -0,0 +1,58 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.logs.export.LogRecordExporter; +import java.io.File; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class LogRecordDiskExporterTest { + private LogRecordExporter wrapped; + private LogRecordDiskExporter exporter; + @TempDir File rootDir; + + @BeforeEach + public void setUp() { + wrapped = mock(); + exporter = new LogRecordDiskExporter(wrapped, rootDir, TestData.CONFIGURATION); + } + + @Test + public void verifyStorageFolderName() { + assertEquals("logs", exporter.getStorageFolderName()); + } + + @Test + public void callWrappedWhenDoingExport() { + List data = Collections.emptyList(); + CompletableResultCode result = CompletableResultCode.ofSuccess(); + doReturn(result).when(wrapped).export(data); + + assertEquals(result, exporter.doExport(data)); + + verify(wrapped).export(data); + } + + @Test + public void verifySerializer() { + assertEquals(SignalSerializer.ofLogs(), exporter.getSerializer()); + } + + @Test + public void onFlush_flushWrappedExporter() { + exporter.flush(); + + verify(wrapped).flush(); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java new file mode 100644 index 000000000..f40dfa228 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -0,0 +1,72 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.metrics.InstrumentType; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.export.MetricExporter; +import java.io.File; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class MetricDiskExporterTest { + + private MetricExporter wrapped; + private MetricDiskExporter exporter; + @TempDir File rootDir; + + @BeforeEach + public void setUp() { + wrapped = mock(); + exporter = new MetricDiskExporter(wrapped, rootDir, TestData.CONFIGURATION); + } + + @Test + public void verifyStorageFolderName() { + assertEquals("metrics", exporter.getStorageFolderName()); + } + + @Test + public void callWrappedWhenDoingExport() { + List data = Collections.emptyList(); + CompletableResultCode result = CompletableResultCode.ofSuccess(); + doReturn(result).when(wrapped).export(data); + + assertEquals(result, exporter.doExport(data)); + + verify(wrapped).export(data); + } + + @Test + public void verifySerializer() { + assertEquals(SignalSerializer.ofMetrics(), exporter.getSerializer()); + } + + @Test + public void onFlush_flushWrappedExporter() { + exporter.flush(); + + verify(wrapped).flush(); + } + + @Test + public void provideWrappedAggregationTemporality() { + InstrumentType instrumentType = mock(); + AggregationTemporality aggregationTemporality = AggregationTemporality.DELTA; + doReturn(aggregationTemporality).when(wrapped).getAggregationTemporality(instrumentType); + + assertEquals(aggregationTemporality, exporter.getAggregationTemporality(instrumentType)); + + verify(wrapped).getAggregationTemporality(instrumentType); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java new file mode 100644 index 000000000..e2f32e8d5 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -0,0 +1,58 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.SpanExporter; +import java.io.File; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +class SpanDiskExporterTest { + private SpanExporter wrapped; + private SpanDiskExporter exporter; + @TempDir File rootDir; + + @BeforeEach + public void setUp() { + wrapped = mock(); + exporter = new SpanDiskExporter(wrapped, rootDir, TestData.CONFIGURATION); + } + + @Test + public void verifyStorageFolderName() { + assertEquals("spans", exporter.getStorageFolderName()); + } + + @Test + public void callWrappedWhenDoingExport() { + List data = Collections.emptyList(); + CompletableResultCode result = CompletableResultCode.ofSuccess(); + doReturn(result).when(wrapped).export(data); + + assertEquals(result, exporter.doExport(data)); + + verify(wrapped).export(data); + } + + @Test + public void verifySerializer() { + assertEquals(SignalSerializer.ofSpans(), exporter.getSerializer()); + } + + @Test + public void onFlush_flushWrappedExporter() { + exporter.flush(); + + verify(wrapped).flush(); + } +} From 4285c1f98aa98a9e96c0bd8005220517530e0f46 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:03:15 +0200 Subject: [PATCH 091/209] Moving StorageConfiguration out of internal --- .../contrib/disk/buffering/exporters/AbstractDiskExporter.java | 2 +- .../contrib/disk/buffering/exporters/LogRecordDiskExporter.java | 2 +- .../contrib/disk/buffering/exporters/MetricDiskExporter.java | 2 +- .../contrib/disk/buffering/exporters/SpanDiskExporter.java | 2 +- .../contrib/disk/buffering/internal/storage/FolderManager.java | 1 + .../disk/buffering/internal/storage/files/ReadableFile.java | 2 +- .../disk/buffering/internal/storage/files/WritableFile.java | 2 +- .../buffering/{internal => }/storage/StorageConfiguration.java | 2 +- .../disk/buffering/exporters/AbstractDiskExporterTest.java | 2 +- .../contrib/disk/buffering/internal/storage/TestData.java | 2 ++ 10 files changed, 11 insertions(+), 8 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{internal => }/storage/StorageConfiguration.java (95%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java index c6befaa8b..3461df5e5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java @@ -3,7 +3,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import java.io.File; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index d537f7632..0d56c701f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.exporters; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.logs.export.LogRecordExporter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 3c27e628b..baf3c4588 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.exporters; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 320c609ff..4bfc744f8 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -1,7 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.exporters; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index c0939ab80..b445ddff7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -3,6 +3,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; import java.io.IOException; import java.util.Objects; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 2f2855a0e..9f8fa141f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -2,7 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 2f6d841ec..92025c4c1 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -2,7 +2,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java similarity index 95% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageConfiguration.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index 1f73fab57..0bdd1ec78 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.storage; +package io.opentelemetry.contrib.disk.buffering.storage; import com.google.auto.value.AutoValue; import java.util.concurrent.TimeUnit; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java index 082165016..cd8aa49a6 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java @@ -11,7 +11,7 @@ import static org.mockito.Mockito.verifyNoInteractions; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index 68c758fa9..46feed9c6 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -1,5 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; + public final class TestData { public static final long MAX_FILE_AGE_FOR_WRITE_MILLIS = 1000; From 7ea45d337233cf1cec5ad190d58bbed7e689190f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:09:10 +0200 Subject: [PATCH 092/209] Moving AbstractDiskExporter to internal --- .../disk/buffering/exporters/LogRecordDiskExporter.java | 1 + .../contrib/disk/buffering/exporters/MetricDiskExporter.java | 1 + .../contrib/disk/buffering/exporters/SpanDiskExporter.java | 1 + .../{ => internal}/exporters/AbstractDiskExporter.java | 2 +- .../{ => internal}/exporters/AbstractDiskExporterTest.java | 4 ++-- 5 files changed, 6 insertions(+), 3 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{ => internal}/exporters/AbstractDiskExporter.java (96%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/{ => internal}/exporters/AbstractDiskExporterTest.java (98%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 0d56c701f..2df6efab9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -1,5 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.exporters; +import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index baf3c4588..f376f2122 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -1,5 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.exporters; +import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 4bfc744f8..3e8e6cb9d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -1,5 +1,6 @@ package io.opentelemetry.contrib.disk.buffering.exporters; +import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java similarity index 96% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index 3461df5e5..226dbe668 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering.internal.exporters; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java similarity index 98% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java index cd8aa49a6..278ac0064 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering.internal.exporters; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MIN_FILE_AGE_FOR_READ_MILLIS; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -11,10 +11,10 @@ import static org.mockito.Mockito.verifyNoInteractions; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; From ee54d77816d5252fa30b95ff88d140e6a939e399 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:19:57 +0200 Subject: [PATCH 093/209] Adding docs to StorageConfiguration --- .../storage/StorageConfiguration.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index 0bdd1ec78..5ac4561c6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -3,16 +3,38 @@ import com.google.auto.value.AutoValue; import java.util.concurrent.TimeUnit; +/** Defines how the storage should be managed. */ @AutoValue public abstract class StorageConfiguration { + /** + * @return The max amount of time a file can receive new data. + */ public abstract long getMaxFileAgeForWriteMillis(); + /** + * @return The min amount of time needed to pass before reading from a file. This value MUST be + * greater than getMaxFileAgeForWriteMillis() to make sure the selected file to read is not + * being written to. + */ public abstract long getMinFileAgeForReadMillis(); + /** + * @return The max amount of time a file can be read from, which is also the amount of time a file + * is not considered to be deleted as stale. + */ public abstract long getMaxFileAgeForReadMillis(); + /** + * @return The max file size, If the getMaxFileAgeForWriteMillis() time value hasn't passed but + * the file has reached this size, it stops receiving data. + */ public abstract int getMaxFileSize(); + /** + * @return All the files are stored in a signal-specific folder. This number represents each + * folder's size, therefore the max amount of cache size for the overall telemetry data would + * be the sum of the folder sizes of all the signals being stored in disk. + */ public abstract int getMaxFolderSize(); public static StorageConfiguration getDefault() { From 11504637afe299c47fa41cce9fb5dbf9b0480e6e Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:30:18 +0200 Subject: [PATCH 094/209] Adding docs to signal disk exporters --- .../buffering/exporters/LogRecordDiskExporter.java | 14 ++++++++++++++ .../buffering/exporters/MetricDiskExporter.java | 14 ++++++++++++++ .../disk/buffering/exporters/SpanDiskExporter.java | 14 ++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 2df6efab9..cac3676ff 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -4,16 +4,30 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.logs.LogRecordProcessor; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import java.io.File; import java.io.IOException; import java.util.Collection; +/** + * This is a {@link LogRecordExporter} wrapper that takes care of intercepting all the signals sent + * out to be exported, tries to store them in the disk in order to export them later. + * + *

In order to use it, you need to wrap your own {@link LogRecordExporter} with a new instance of + * this one, which will be the one you need to register in your {@link LogRecordProcessor}. + */ public final class LogRecordDiskExporter extends AbstractDiskExporter implements LogRecordExporter { private final LogRecordExporter wrapped; + /** + * @param wrapped - Your own exporter. + * @param rootDir - The directory to create this signal's cache dir where all the data will be + * written into. + * @param configuration - How you want to manage the storage process. + */ public LogRecordDiskExporter( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) { super(rootDir, configuration); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index f376f2122..b32b1eb4b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -8,14 +8,28 @@ import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.export.MetricExporter; +import io.opentelemetry.sdk.metrics.export.MetricReader; import java.io.File; import java.io.IOException; import java.util.Collection; +/** + * This is a {@link MetricExporter} wrapper that takes care of intercepting all the signals sent out + * to be exported, tries to store them in the disk in order to export them later. + * + *

In order to use it, you need to wrap your own {@link MetricExporter} with a new instance of + * this one, which will be the one you need to register in your {@link MetricReader}. + */ public final class MetricDiskExporter extends AbstractDiskExporter implements MetricExporter { private final MetricExporter wrapped; + /** + * @param wrapped - Your own exporter. + * @param rootDir - The directory to create this signal's cache dir where all the data will be + * written into. + * @param configuration - How you want to manage the storage process. + */ public MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration) { super(rootDir, configuration); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 3e8e6cb9d..872ba48ba 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -4,15 +4,29 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.io.File; import java.io.IOException; import java.util.Collection; +/** + * This is a {@link SpanExporter} wrapper that takes care of intercepting all the signals sent out + * to be exported, tries to store them in the disk in order to export them later. + * + *

In order to use it, you need to wrap your own {@link SpanExporter} with a new instance of this + * one, which will be the one you need to register in your {@link SpanProcessor}. + */ public final class SpanDiskExporter extends AbstractDiskExporter implements SpanExporter { private final SpanExporter wrapped; + /** + * @param wrapped - Your own exporter. + * @param rootDir - The directory to create this signal's cache dir where all the data will be + * written into. + * @param configuration - How you want to manage the storage process. + */ public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) { super(rootDir, configuration); this.wrapped = wrapped; From 039fea57eae93fb24004673cb6e05d6675760085 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 9 Jun 2023 14:05:04 +0200 Subject: [PATCH 095/209] Created README --- disk-buffering/README.md | 63 +++++++++++++++++++ .../exporters/AbstractDiskExporter.java | 9 +++ 2 files changed, 72 insertions(+) create mode 100644 disk-buffering/README.md diff --git a/disk-buffering/README.md b/disk-buffering/README.md new file mode 100644 index 000000000..52bcfa18e --- /dev/null +++ b/disk-buffering/README.md @@ -0,0 +1,63 @@ +# Disk buffering + +This module provides signal exporter wrappers that intercept and store signals in files which can be +sent later on demand. + +## Configuration + +The configurable parameters are provided **per exporter**, the available ones are: + +* Max file size, defaults to 1MB. +* Max folder size, defaults to 20MB. All files are stored in a single folder per-signal, therefore + if all 3 types of signals are stored, the total amount of space from disk to be taken by default + would be of 60MB. +* Max age for file writing, defaults to 5 seconds. +* Min age for file reading, defaults to 6 seconds. It must be greater that the max age for file + writing. +* Max age for file reading, defaults to 18 hours. After 18 passed, the file would be considered + stale and will be removed when new files are created. No more data will be read from a file past + this time. + +## Usage + +### Storing data + +In order to use it, you need to wrap your own exporter with a new instance of +the ones provided in here: + +* For a LogRecordExporter, it must be wrapped within + a [LogRecordDiskExporter](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fexporters%2FLogRecordDiskExporter.java). +* For a MetricExporter, it must be wrapped within + a [MetricDiskExporter](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fexporters%2FMetricDiskExporter.java). +* For a SpanExporter, it must be wrapped within + a [SpanDiskExporter](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fexporters%2FSpanDiskExporter.java). + +Each wrapper will need the following when instantiating them: + +* The exporter to be wrapped. +* A File instance of the root directory where all the data is going to be written. The same root dir + can be used for all the wrappers, since each will create their own folder inside it. +* An instance + of [StorageConfiguration](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fstorage%2FStorageConfiguration.java) + with the desired parameters. You can create one with default values by + calling `StorageConfiguration.getDefault()`. + +After wrapping your exporters, you must register the wrapper as the exporter you'll use. It will +take care of always storing the data it receives. + +### Reading data + +Each of the exporter wrappers can read from the disk and send the retrieved data over to their +wrapped exporter by calling this method from them: + +```java +try { + if(exporter.exportStoredBatch(1, TimeUnit.SECONDS)) { + // A batch was successfully exported. You can call this method for as long as it keeps returning true. + } else { + // Either there was no data in the disk or the wrapped exporter returned CompletableResultCode.ofFailure(). + } +} catch (IOException e) { + // Something unexpected happened. +} +``` diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index 226dbe668..5756d653e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -18,6 +18,15 @@ public AbstractDiskExporter(File rootDir, StorageConfiguration configuration) { this.storage = new Storage(new FolderManager(getSignalFolder(rootDir), configuration)); } + /** + * Reads data from the disk and attempts to export it. + * + * @param timeout The amount of time to wait for the wrapped exporter to finish. + * @param unit The unit of the time provided. + * @return TRUE if there was data available and it was successfully exported within the timeout + * provided. FALSE if either of those conditions didn't meet. + * @throws IOException If an unexpected error happens. + */ public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { AtomicBoolean exportSucceeded = new AtomicBoolean(false); boolean foundDataToExport = From 67816d0628940dd42f1f8e70a75867f4fca0b619 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 14:46:48 +0200 Subject: [PATCH 096/209] Deleting ReadableFile after it gets empty --- .../internal/storage/files/ReadableFile.java | 15 ++++++++++++--- .../storage/files/ReadableFileTest.java | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 9f8fa141f..40a0b0faf 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -2,12 +2,12 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -32,7 +32,10 @@ public final class ReadableFile extends StorageFile { private int readBytes = 0; public ReadableFile( - File file, long createdTimeMillis, TimeProvider timeProvider, StorageConfiguration configuration) + File file, + long createdTimeMillis, + TimeProvider timeProvider, + StorageConfiguration configuration) throws IOException { this(file, createdTimeMillis, timeProvider, configuration, TemporaryFileProvider.INSTANCE); } @@ -82,7 +85,13 @@ public synchronized void readLine(Function consumer) throws IOE if (consumer.apply(line)) { readBytes += line.length + NEW_LINE_BYTES_SIZE; try (FileOutputStream out = new FileOutputStream(file, false)) { - tempInChannel.transferTo(readBytes, originalFileSize - readBytes, out.getChannel()); + int amountOfBytesToTransfer = originalFileSize - readBytes; + if (amountOfBytesToTransfer > 0) { + tempInChannel.transferTo(readBytes, amountOfBytesToTransfer, out.getChannel()); + } else { + file.delete(); + close(); + } } } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index b2849cb3e..1a857e03b 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -4,11 +4,11 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_READ_MILLIS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; @@ -112,6 +112,20 @@ public void whenConsumerReturnsFalse_doNotRemoveLineFromSource() throws IOExcept assertEquals(LINES, sourceLines); } + @Test + public void whenReadingLastLine_deleteOriginalFile_and_close() throws IOException { + for (String line : LINES) { + readableFile.readLine( + bytes -> { + assertEquals(line, new String(bytes, StandardCharsets.UTF_8)); + return true; + }); + } + + assertFalse(source.exists()); + assertTrue(readableFile.isClosed()); + } + @Test public void whenNoMoreLinesAvailableToRead_throwException() throws IOException { for (String line : LINES) { @@ -125,7 +139,7 @@ public void whenNoMoreLinesAvailableToRead_throwException() throws IOException { try { readableFile.readLine(bytes -> true); fail(); - } catch (NoMoreLinesToReadException ignored) { + } catch (ResourceClosedException ignored) { } } From b9b08735a7ed62f50ea500ad0d7c4a376249fb8b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 14:46:57 +0200 Subject: [PATCH 097/209] Updating docs --- .../storage/StorageConfiguration.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index 5ac4561c6..8d43db845 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -6,34 +6,32 @@ /** Defines how the storage should be managed. */ @AutoValue public abstract class StorageConfiguration { - /** - * @return The max amount of time a file can receive new data. - */ + /** The max amount of time a file can receive new data. */ public abstract long getMaxFileAgeForWriteMillis(); /** - * @return The min amount of time needed to pass before reading from a file. This value MUST be - * greater than getMaxFileAgeForWriteMillis() to make sure the selected file to read is not - * being written to. + * The min amount of time needed to pass before reading from a file. This value MUST be greater + * than getMaxFileAgeForWriteMillis() to make sure the selected file to read is not being written + * to. */ public abstract long getMinFileAgeForReadMillis(); /** - * @return The max amount of time a file can be read from, which is also the amount of time a file - * is not considered to be deleted as stale. + * The max amount of time a file can be read from, which is also the amount of time a file is not + * considered to be deleted as stale. */ public abstract long getMaxFileAgeForReadMillis(); /** - * @return The max file size, If the getMaxFileAgeForWriteMillis() time value hasn't passed but - * the file has reached this size, it stops receiving data. + * The max file size, If the getMaxFileAgeForWriteMillis() time value hasn't passed but the file + * has reached this size, it stops receiving data. */ public abstract int getMaxFileSize(); /** - * @return All the files are stored in a signal-specific folder. This number represents each - * folder's size, therefore the max amount of cache size for the overall telemetry data would - * be the sum of the folder sizes of all the signals being stored in disk. + * All the files are stored in a signal-specific folder. This number represents each folder's + * size, therefore the max amount of cache size for the overall telemetry data would be the sum of + * the folder sizes of all the signals being stored in disk. */ public abstract int getMaxFolderSize(); From e5759c842cb5129d96033337ca04a89839216743 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 15:05:57 +0200 Subject: [PATCH 098/209] Using FileOutputStream directly in WritableFile --- .../internal/storage/files/WritableFile.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 92025c4c1..77dfd3fa6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -2,14 +2,14 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; -import java.io.BufferedOutputStream; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; import java.io.IOException; +import java.io.OutputStream; import java.nio.file.Files; import java.util.concurrent.atomic.AtomicBoolean; @@ -17,19 +17,22 @@ public final class WritableFile extends StorageFile { private final StorageConfiguration configuration; private final TimeProvider timeProvider; private final long expireTimeMillis; - private final BufferedOutputStream out; + private final OutputStream out; private final AtomicBoolean isClosed = new AtomicBoolean(false); private int size; public WritableFile( - File file, long createdTimeMillis, StorageConfiguration configuration, TimeProvider timeProvider) + File file, + long createdTimeMillis, + StorageConfiguration configuration, + TimeProvider timeProvider) throws IOException { super(file); this.configuration = configuration; this.timeProvider = timeProvider; expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForWriteMillis(); size = (int) file.length(); - out = new BufferedOutputStream(Files.newOutputStream(file.toPath())); + out = Files.newOutputStream(file.toPath()); } /** From fc2b8c49ac553810827fd4c949cbb17c998375b4 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 15:23:36 +0200 Subject: [PATCH 099/209] Cleaning up the readable file in case it's empty --- .../internal/storage/files/ReadableFile.java | 9 ++++-- .../storage/files/ReadableFileTest.java | 29 +++++++++++-------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 40a0b0faf..60fb02977 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -79,6 +79,7 @@ public synchronized void readLine(Function consumer) throws IOE } String lineString = bufferedReader.readLine(); if (lineString == null) { + cleanUp(); throw new NoMoreLinesToReadException(); } byte[] line = lineString.getBytes(StandardCharsets.UTF_8); @@ -89,13 +90,17 @@ public synchronized void readLine(Function consumer) throws IOE if (amountOfBytesToTransfer > 0) { tempInChannel.transferTo(readBytes, amountOfBytesToTransfer, out.getChannel()); } else { - file.delete(); - close(); + cleanUp(); } } } } + private void cleanUp() throws IOException { + file.delete(); + close(); + } + @Override public long getSize() { return originalFileSize; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 1a857e03b..cbbc063c0 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -6,14 +6,17 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -30,6 +33,7 @@ class ReadableFileTest { private File temporaryFile; private ReadableFile readableFile; private TimeProvider timeProvider; + private TemporaryFileProvider temporaryFileProvider; private static final List LINES = Arrays.asList("First line", "Second line", "Third line"); private static final long CREATED_TIME_MILLIS = 1000L; @@ -39,8 +43,8 @@ public void setUp() throws IOException { source = new File(dir, "sourceFile"); temporaryFile = new File(dir, "temporaryFile"); Files.write(source.toPath(), LINES); - TemporaryFileProvider temporaryFileProvider = mock(); - doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile("sourceFile"); + temporaryFileProvider = mock(); + doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile(anyString()); timeProvider = mock(); readableFile = new ReadableFile( @@ -127,19 +131,20 @@ public void whenReadingLastLine_deleteOriginalFile_and_close() throws IOExceptio } @Test - public void whenNoMoreLinesAvailableToRead_throwException() throws IOException { - for (String line : LINES) { - readableFile.readLine( - bytes -> { - assertEquals(line, new String(bytes, StandardCharsets.UTF_8)); - return true; - }); - } + public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwException() + throws IOException { + File emptyFile = new File(dir, "emptyFile"); + try (FileOutputStream ignored = new FileOutputStream(emptyFile)) {} + ReadableFile emptyReadableFile = + new ReadableFile( + emptyFile, CREATED_TIME_MILLIS, timeProvider, CONFIGURATION, temporaryFileProvider); try { - readableFile.readLine(bytes -> true); + emptyReadableFile.readLine(bytes -> true); fail(); - } catch (ResourceClosedException ignored) { + } catch (NoMoreLinesToReadException ignored) { + assertTrue(emptyReadableFile.isClosed()); + assertFalse(emptyFile.exists()); } } From 994ea5f02dec82f468465a48337b05ac72e50efd Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 15:39:35 +0200 Subject: [PATCH 100/209] Improving tests --- .../buffering/internal/storage/files/ReadableFileTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index cbbc063c0..05d8efcf2 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -16,7 +16,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -134,7 +133,9 @@ public void whenReadingLastLine_deleteOriginalFile_and_close() throws IOExceptio public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwException() throws IOException { File emptyFile = new File(dir, "emptyFile"); - try (FileOutputStream ignored = new FileOutputStream(emptyFile)) {} + if (!emptyFile.createNewFile()) { + fail("Could not create file for tests"); + } ReadableFile emptyReadableFile = new ReadableFile( From b296f9a87bee00f5b2d81d1b3043c62a816fadc4 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 15:44:31 +0200 Subject: [PATCH 101/209] Updated StorageConfiguration defaults --- disk-buffering/README.md | 8 ++++---- .../disk/buffering/storage/StorageConfiguration.java | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 52bcfa18e..6a2b615f4 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -8,11 +8,11 @@ sent later on demand. The configurable parameters are provided **per exporter**, the available ones are: * Max file size, defaults to 1MB. -* Max folder size, defaults to 20MB. All files are stored in a single folder per-signal, therefore +* Max folder size, defaults to 10MB. All files are stored in a single folder per-signal, therefore if all 3 types of signals are stored, the total amount of space from disk to be taken by default - would be of 60MB. -* Max age for file writing, defaults to 5 seconds. -* Min age for file reading, defaults to 6 seconds. It must be greater that the max age for file + would be of 30MB. +* Max age for file writing, defaults to 30 seconds. +* Min age for file reading, defaults to 33 seconds. It must be greater that the max age for file writing. * Max age for file reading, defaults to 18 hours. After 18 passed, the file would be considered stale and will be removed when new files are created. No more data will be read from a file past diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index 8d43db845..ec31aa907 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -42,9 +42,9 @@ public static StorageConfiguration getDefault() { public static Builder builder() { return new AutoValue_StorageConfiguration.Builder() .setMaxFileSize(1024 * 1024) // 1MB - .setMaxFolderSize(20 * 1024 * 1024) // 20MB - .setMaxFileAgeForWriteMillis(TimeUnit.SECONDS.toMillis(5)) - .setMinFileAgeForReadMillis(TimeUnit.SECONDS.toMillis(6)) + .setMaxFolderSize(10 * 1024 * 1024) // 10MB + .setMaxFileAgeForWriteMillis(TimeUnit.SECONDS.toMillis(30)) + .setMinFileAgeForReadMillis(TimeUnit.SECONDS.toMillis(33)) .setMaxFileAgeForReadMillis(TimeUnit.HOURS.toMillis(18)); } From 98b385d8ff71b9114528c6c67703d0cf05794b98 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 15:58:43 +0200 Subject: [PATCH 102/209] Validating closing a writable file if it has expired and a readable file is needed --- .../internal/storage/FolderManager.java | 13 ++++++++++-- .../internal/storage/FolderManagerTest.java | 20 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index b445ddff7..90ad64d67 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -14,6 +14,7 @@ public final class FolderManager { private final TimeProvider timeProvider; private final StorageConfiguration configuration; @Nullable private ReadableFile currentReadableFile; + @Nullable private WritableFile currentWritableFile; public FolderManager(File folder, StorageConfiguration configuration) { this(folder, configuration, TimeProvider.get()); @@ -47,11 +48,13 @@ public synchronized WritableFile createWritableFile() throws IOException { } } File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); - return new WritableFile(file, systemCurrentTimeMillis, configuration, timeProvider); + currentWritableFile = + new WritableFile(file, systemCurrentTimeMillis, configuration, timeProvider); + return currentWritableFile; } @Nullable - private File findReadableFile() { + private File findReadableFile() throws IOException { long currentTime = timeProvider.getSystemCurrentTimeMillis(); File[] existingFiles = folder.listFiles(); File oldestFileAvailable = null; @@ -69,6 +72,12 @@ private File findReadableFile() { } } } + // Checking if the oldest available file is currently the writable file. + if (oldestFileAvailable != null + && currentWritableFile != null + && oldestFileAvailable.equals(currentWritableFile.file)) { + currentWritableFile.close(); + } return oldestFileAvailable; } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index a63dce6b8..039299333 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -14,6 +14,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.StorageFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -65,6 +66,25 @@ public void createWritableFile_andRemoveOldestOne_whenTheAvailableFolderSpaceIsN assertFalse(existingFile1.exists()); } + @Test + public void closeCurrentlyWritableFile_whenItIsReadyToBeRead_anNoOtherReadableFilesAreAvailable() + throws IOException { + long createdFileTime = 1000L; + doReturn(createdFileTime).when(timeProvider).getSystemCurrentTimeMillis(); + + WritableFile writableFile = folderManager.createWritableFile(); + writableFile.append(new byte[3]); + + doReturn(createdFileTime + MIN_FILE_AGE_FOR_READ_MILLIS) + .when(timeProvider) + .getSystemCurrentTimeMillis(); + + ReadableFile readableFile = folderManager.getReadableFile(); + + assertEquals(writableFile.file, readableFile.file); + assertTrue(writableFile.isClosed()); + } + @Test public void closeCurrentlyReadableFileIfAny_whenItIsTheOldestOne_andRemoveIt_whenTheAvailableFolderSpaceIsNotEnough() From 91ec9f012a7beee16524f17aadda36e68c6e3132 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 16:49:16 +0200 Subject: [PATCH 103/209] Adding logs to AbstractDiskExporter --- .../internal/exporters/AbstractDiskExporter.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index 5756d653e..eede76580 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -10,9 +10,12 @@ import java.util.Collection; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Level; +import java.util.logging.Logger; public abstract class AbstractDiskExporter { private final Storage storage; + private static final Logger logger = Logger.getLogger(AbstractDiskExporter.class.getName()); public AbstractDiskExporter(File rootDir, StorageConfiguration configuration) { this.storage = new Storage(new FolderManager(getSignalFolder(rootDir), configuration)); @@ -28,10 +31,12 @@ public AbstractDiskExporter(File rootDir, StorageConfiguration configuration) { * @throws IOException If an unexpected error happens. */ public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { + logger.log(Level.INFO, "Attempting to export batch from disk."); AtomicBoolean exportSucceeded = new AtomicBoolean(false); boolean foundDataToExport = storage.read( bytes -> { + logger.log(Level.INFO, "About to export stored batch."); CompletableResultCode join = doExport(getSerializer().deserialize(bytes)).join(timeout, unit); exportSucceeded.set(join.isSuccess()); @@ -50,12 +55,14 @@ protected void onShutDown() throws IOException { storage.close(); } - protected CompletableResultCode onExport(Collection spans) { + protected CompletableResultCode onExport(Collection data) { + logger.log(Level.INFO, "Intercepting exporter batch."); try { - storage.write(getSerializer().serialize(spans)); + storage.write(getSerializer().serialize(data)); return CompletableResultCode.ofSuccess(); } catch (IOException e) { - return doExport(spans); + logger.log(Level.INFO, "Could not store batch in disk. Exporting it right away."); + return doExport(data); } } From 4c73be749d56ffcc73c1875af6d5da78c97f3ae3 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:00:41 +0200 Subject: [PATCH 104/209] Validating configuration parameters --- .../exporters/AbstractDiskExporter.java | 8 ++++++++ .../exporters/AbstractDiskExporterTest.java | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index eede76580..8790506d6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -18,6 +18,7 @@ public abstract class AbstractDiskExporter { private static final Logger logger = Logger.getLogger(AbstractDiskExporter.class.getName()); public AbstractDiskExporter(File rootDir, StorageConfiguration configuration) { + validateConfiguration(configuration); this.storage = new Storage(new FolderManager(getSignalFolder(rootDir), configuration)); } @@ -75,4 +76,11 @@ private File getSignalFolder(File rootDir) { } return folder; } + + private static void validateConfiguration(StorageConfiguration configuration) { + if (configuration.getMinFileAgeForReadMillis() <= configuration.getMaxFileAgeForWriteMillis()) { + throw new IllegalArgumentException( + "The configured max file age for writing must be lower than the configured min file age for reading"); + } + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java index 278ac0064..2d7bddd28 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java @@ -1,6 +1,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.exporters; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MIN_FILE_AGE_FOR_READ_MILLIS; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; @@ -59,6 +60,25 @@ public void whenExportingStoredBatch_withAvailableData_andSuccessfullyProcessed_ assertTrue(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); } + @Test + public void whenMinFileReadIsNotGraterThanMaxFileWrite_throwException() { + try { + new TestDiskExporter( + wrapped, + rootDir, + StorageConfiguration.builder() + .setMaxFileAgeForWriteMillis(2) + .setMinFileAgeForReadMillis(1) + .build(), + serializer); + fail(); + } catch (IllegalArgumentException e) { + assertEquals( + "The configured max file age for writing must be lower than the configured min file age for reading", + e.getMessage()); + } + } + @Test public void whenExportingStoredBatch_withAvailableData_andUnsuccessfullyProcessed_returnFalse() throws IOException { From f18ddb77f4dada5b7371cb80fc791ba93230692f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:21:23 +0200 Subject: [PATCH 105/209] Removing java.nio.file.Files usage to make it Android-friendly --- .../internal/storage/files/ReadableFile.java | 19 ++++++++++++++++--- .../internal/storage/files/WritableFile.java | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 60fb02977..f69cfc572 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -8,16 +8,17 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import java.nio.channels.FileChannel; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; @@ -52,7 +53,7 @@ public ReadableFile( expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForReadMillis(); originalFileSize = (int) file.length(); temporaryFile = temporaryFileProvider.createTemporaryFile(file.getName()); - Files.copy(file.toPath(), temporaryFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + copyFile(file, temporaryFile); FileInputStream tempInputStream = new FileInputStream(temporaryFile); tempInChannel = tempInputStream.getChannel(); bufferedReader = @@ -123,4 +124,16 @@ public synchronized void close() throws IOException { temporaryFile.delete(); } } + + private static void copyFile(File from, File to) throws IOException { + try (InputStream in = new BufferedInputStream(new FileInputStream(from)); + OutputStream out = new FileOutputStream(to, false)) { + + byte[] buffer = new byte[1024]; + int lengthRead; + while ((lengthRead = in.read(buffer)) > 0) { + out.write(buffer, 0, lengthRead); + } + } + } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 77dfd3fa6..11e48320c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -8,9 +8,9 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.nio.file.Files; import java.util.concurrent.atomic.AtomicBoolean; public final class WritableFile extends StorageFile { @@ -32,7 +32,7 @@ public WritableFile( this.timeProvider = timeProvider; expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForWriteMillis(); size = (int) file.length(); - out = Files.newOutputStream(file.toPath()); + out = new FileOutputStream(file); } /** From 4a6f40377fc7dca6bc9b24b21698481dd69bbe2b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:37:25 +0200 Subject: [PATCH 106/209] Updating readme links --- disk-buffering/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 6a2b615f4..bc25550e1 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -26,11 +26,11 @@ In order to use it, you need to wrap your own exporter with a new instance of the ones provided in here: * For a LogRecordExporter, it must be wrapped within - a [LogRecordDiskExporter](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fexporters%2FLogRecordDiskExporter.java). + a [LogRecordDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java). * For a MetricExporter, it must be wrapped within - a [MetricDiskExporter](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fexporters%2FMetricDiskExporter.java). + a [MetricDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java). * For a SpanExporter, it must be wrapped within - a [SpanDiskExporter](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fexporters%2FSpanDiskExporter.java). + a [SpanDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java). Each wrapper will need the following when instantiating them: @@ -38,7 +38,7 @@ Each wrapper will need the following when instantiating them: * A File instance of the root directory where all the data is going to be written. The same root dir can be used for all the wrappers, since each will create their own folder inside it. * An instance - of [StorageConfiguration](src%2Fmain%2Fjava%2Fio%2Fopentelemetry%2Fcontrib%2Fdisk%2Fbuffering%2Fstorage%2FStorageConfiguration.java) + of [StorageConfiguration](src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java) with the desired parameters. You can create one with default values by calling `StorageConfiguration.getDefault()`. From d22da489aec5a4fb56503331c3d83f320329f60c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:43:36 +0200 Subject: [PATCH 107/209] Applying spotlessApply --- .../disk/buffering/exporters/LogRecordDiskExporter.java | 5 +++++ .../disk/buffering/exporters/MetricDiskExporter.java | 5 +++++ .../contrib/disk/buffering/exporters/SpanDiskExporter.java | 5 +++++ .../buffering/internal/exporters/AbstractDiskExporter.java | 5 +++++ .../serialization/converters/AttributesJsonConverter.java | 5 +++++ .../serialization/converters/MetricDataJsonConverter.java | 7 ++++++- .../mapping/common/BaseResourceSignalsDataMapper.java | 5 +++++ .../serialization/mapping/common/ResourceMapper.java | 5 +++++ .../serialization/mapping/common/ResourceMapping.java | 5 +++++ .../serialization/mapping/common/ScopeMapping.java | 5 +++++ .../serialization/mapping/common/SpanContextMapping.java | 5 +++++ .../serialization/mapping/logs/LogRecordMapper.java | 5 +++++ .../serialization/mapping/logs/ResourceLogsDataMapper.java | 7 ++++++- .../serialization/mapping/logs/ResourceLogsMapper.java | 5 +++++ .../serialization/mapping/logs/ScopeLogsMapper.java | 5 +++++ .../mapping/logs/models/LogRecordDataImpl.java | 5 +++++ .../serialization/mapping/metrics/DataPointMapper.java | 5 +++++ .../serialization/mapping/metrics/MetricDataMapper.java | 5 +++++ .../serialization/mapping/metrics/MetricMapper.java | 5 +++++ .../mapping/metrics/ResourceMetricsDataMapper.java | 7 ++++++- .../mapping/metrics/ResourceMetricsMapper.java | 5 +++++ .../serialization/mapping/metrics/ScopeMetricsMapper.java | 5 +++++ .../serialization/mapping/metrics/models/Constants.java | 5 +++++ .../mapping/metrics/models/MetricDataImpl.java | 5 +++++ .../metrics/models/data/ExponentialHistogramDataImpl.java | 5 +++++ .../mapping/metrics/models/data/GaugeDataImpl.java | 5 +++++ .../mapping/metrics/models/data/HistogramDataImpl.java | 5 +++++ .../mapping/metrics/models/data/SumDataImpl.java | 5 +++++ .../mapping/metrics/models/data/SummaryDataImpl.java | 5 +++++ .../models/data/base/AggregationTemporalityBuilder.java | 5 +++++ .../mapping/metrics/models/data/base/DataBuilder.java | 5 +++++ .../mapping/metrics/models/data/base/MonotonicBuilder.java | 5 +++++ .../metrics/models/datapoints/DoublePointDataImpl.java | 5 +++++ .../datapoints/ExponentialHistogramPointDataImpl.java | 5 +++++ .../metrics/models/datapoints/HistogramPointDataImpl.java | 5 +++++ .../metrics/models/datapoints/LongPointDataImpl.java | 5 +++++ .../metrics/models/datapoints/PointDataBuilder.java | 5 +++++ .../metrics/models/datapoints/SummaryPointDataImpl.java | 5 +++++ .../models/datapoints/data/DoubleExemplarDataImpl.java | 5 +++++ .../models/datapoints/data/ExemplarDataBuilder.java | 5 +++++ .../datapoints/data/ExponentialHistogramBucketsImpl.java | 5 +++++ .../models/datapoints/data/LongExemplarDataImpl.java | 5 +++++ .../models/datapoints/data/ValueAtQuantileImpl.java | 5 +++++ .../mapping/spans/ResourceSpansDataMapper.java | 7 ++++++- .../serialization/mapping/spans/ResourceSpansMapper.java | 5 +++++ .../serialization/mapping/spans/ScopeSpansMapper.java | 5 +++++ .../serialization/mapping/spans/SpanDataMapper.java | 5 +++++ .../serialization/mapping/spans/models/SpanDataImpl.java | 5 +++++ .../mapping/spans/models/data/EventDataImpl.java | 5 +++++ .../mapping/spans/models/data/LinkDataImpl.java | 5 +++++ .../internal/serialization/models/common/ResourceJson.java | 5 +++++ .../serialization/models/common/ResourceSignals.java | 5 +++++ .../serialization/models/common/ResourceSignalsData.java | 7 ++++++- .../internal/serialization/models/common/ScopeJson.java | 5 +++++ .../internal/serialization/models/common/ScopeSignals.java | 5 +++++ .../internal/serialization/models/logs/BodyJson.java | 5 +++++ .../serialization/models/logs/LogRecordDataJson.java | 5 +++++ .../internal/serialization/models/logs/ResourceLogs.java | 5 +++++ .../serialization/models/logs/ResourceLogsData.java | 5 +++++ .../internal/serialization/models/logs/ScopeLogs.java | 5 +++++ .../serialization/models/metrics/MetricDataJson.java | 5 +++++ .../serialization/models/metrics/ResourceMetrics.java | 5 +++++ .../serialization/models/metrics/ResourceMetricsData.java | 5 +++++ .../serialization/models/metrics/ScopeMetrics.java | 5 +++++ .../serialization/models/metrics/data/DataJson.java | 5 +++++ .../models/metrics/data/ExponentialHistogram.java | 5 +++++ .../internal/serialization/models/metrics/data/Gauge.java | 5 +++++ .../serialization/models/metrics/data/Histogram.java | 5 +++++ .../internal/serialization/models/metrics/data/Sum.java | 5 +++++ .../serialization/models/metrics/data/Summary.java | 5 +++++ .../serialization/models/metrics/datapoints/DataPoint.java | 5 +++++ .../metrics/datapoints/ExponentialHistogramDataPoint.java | 5 +++++ .../models/metrics/datapoints/HistogramDataPoint.java | 5 +++++ .../models/metrics/datapoints/NumberDataPoint.java | 5 +++++ .../models/metrics/datapoints/SummaryDataPoint.java | 5 +++++ .../models/metrics/datapoints/data/Buckets.java | 5 +++++ .../models/metrics/datapoints/data/Exemplar.java | 5 +++++ .../models/metrics/datapoints/data/QuantileValue.java | 5 +++++ .../models/metrics/impl/ExponentialHistogramMetric.java | 7 ++++++- .../serialization/models/metrics/impl/GaugeMetric.java | 7 ++++++- .../serialization/models/metrics/impl/HistogramMetric.java | 7 ++++++- .../serialization/models/metrics/impl/SumMetric.java | 7 ++++++- .../serialization/models/metrics/impl/SummaryMetric.java | 7 ++++++- .../internal/serialization/models/spans/EventDataJson.java | 5 +++++ .../internal/serialization/models/spans/LinkDataJson.java | 5 +++++ .../internal/serialization/models/spans/ResourceSpans.java | 5 +++++ .../serialization/models/spans/ResourceSpansData.java | 5 +++++ .../internal/serialization/models/spans/ScopeSpan.java | 5 +++++ .../internal/serialization/models/spans/SpanDataJson.java | 5 +++++ .../serialization/models/spans/StatusDataJson.java | 5 +++++ .../internal/serialization/serializers/JsonSerializer.java | 5 +++++ .../serialization/serializers/LogRecordDataSerializer.java | 5 +++++ .../serialization/serializers/MetricDataSerializer.java | 5 +++++ .../serialization/serializers/SignalSerializer.java | 5 +++++ .../serialization/serializers/SpanDataSerializer.java | 5 +++++ .../disk/buffering/internal/storage/FolderManager.java | 5 +++++ .../contrib/disk/buffering/internal/storage/Storage.java | 5 +++++ .../storage/exceptions/MaxAttemptsReachedException.java | 5 +++++ .../storage/exceptions/NoMoreLinesToReadException.java | 5 +++++ .../storage/exceptions/NoSpaceAvailableException.java | 5 +++++ .../storage/exceptions/ReadingTimeoutException.java | 5 +++++ .../storage/exceptions/ResourceClosedException.java | 5 +++++ .../storage/exceptions/WritingTimeoutException.java | 5 +++++ .../buffering/internal/storage/files/ReadableFile.java | 5 +++++ .../disk/buffering/internal/storage/files/StorageFile.java | 5 +++++ .../buffering/internal/storage/files/WritableFile.java | 5 +++++ .../buffering/internal/storage/files/utils/Constants.java | 5 +++++ .../storage/files/utils/TemporaryFileProvider.java | 5 +++++ .../buffering/internal/storage/utils/TimeProvider.java | 5 +++++ .../disk/buffering/storage/StorageConfiguration.java | 5 +++++ .../buffering/exporters/LogRecordDiskExporterTest.java | 5 +++++ .../disk/buffering/exporters/MetricDiskExporterTest.java | 5 +++++ .../disk/buffering/exporters/SpanDiskExporterTest.java | 5 +++++ .../internal/exporters/AbstractDiskExporterTest.java | 5 +++++ .../converters/AttributesJsonConverterTest.java | 5 +++++ .../converters/MetricDataJsonConverterTest.java | 5 +++++ .../serializers/LogRecordDataSerializerTest.java | 5 +++++ .../serializers/MetricDataSerializerTest.java | 5 +++++ .../serialization/serializers/SpanDataSerializerTest.java | 5 +++++ .../disk/buffering/internal/storage/FolderManagerTest.java | 5 +++++ .../disk/buffering/internal/storage/StorageTest.java | 5 +++++ .../contrib/disk/buffering/internal/storage/TestData.java | 5 +++++ .../buffering/internal/storage/files/ReadableFileTest.java | 5 +++++ .../buffering/internal/storage/files/WritableFileTest.java | 5 +++++ .../buffering/testutils/BaseJsonSerializationTest.java | 5 +++++ .../disk/buffering/testutils/BaseSignalSerializerTest.java | 5 +++++ .../contrib/disk/buffering/testutils/TestData.java | 5 +++++ 127 files changed, 645 insertions(+), 10 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index cac3676ff..ab7ce996a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index b32b1eb4b..1beee26a2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 872ba48ba..17403ff8a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index 8790506d6..38cd493ab 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.exporters; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java index 5134063c0..e8793c2ed 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import com.dslplatform.json.BoolConverter; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java index aa5505ffe..2c077f7b9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java @@ -1,9 +1,13 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import com.dslplatform.json.JsonConverter; import com.dslplatform.json.JsonReader; import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; @@ -15,6 +19,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java index 61198144b..3821c77f0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index e444b6e41..53ed32780 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java index 477043cac..6be5b0f5e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import java.lang.annotation.ElementType; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java index f12ba28e6..ffc215e4e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import java.lang.annotation.ElementType; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java index fffc938df..87bde46d3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import java.lang.annotation.ElementType; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java index 71277a509..700d10c17 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.api.logs.Severity; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java index 104d7603a..75af29a32 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; @@ -12,7 +17,7 @@ public final class ResourceLogsDataMapper extends BaseResourceSignalsDataMapper< - LogRecordData, LogRecordDataJson, ScopeLogs, ResourceLogs, ResourceLogsData> { + LogRecordData, LogRecordDataJson, ScopeLogs, ResourceLogs, ResourceLogsData> { public static final ResourceLogsDataMapper INSTANCE = new ResourceLogsDataMapper(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java index 3998bd3bb..bcdd1dd30 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java index 741c024f4..a63a00d2d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java index 916660133..de130e3d1 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/models/LogRecordDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java index 7504d54d8..c63e4ecd3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.api.trace.SpanContext; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index f5ab2789a..e34a5b628 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java index 1330d0e05..5a7955eeb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java index ce8c9f9d0..8b269b935 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; @@ -12,7 +17,7 @@ public final class ResourceMetricsDataMapper extends BaseResourceSignalsDataMapper< - MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { + MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { public static final ResourceMetricsDataMapper INSTANCE = new ResourceMetricsDataMapper(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java index 3d5c79fc9..748d4e6e2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java index 6a7d5d686..c7f683c61 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java index 8fc58447f..1ab61af93 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java index f5c72d6e0..ed0339f19 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index af5948e0d..368710242 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java index 16fd25327..ce63c57e2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index 0cde5fb08..daa377245 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index 65dfc3a74..5c21a8af7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java index 258823f06..c24e256ac 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java index bb3f8820b..0225dc755 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java index eb99cf94d..55ac3d12b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java index d60b86d1d..89898b213 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; import com.google.errorprone.annotations.CanIgnoreReturnValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java index 1be181e18..94066e5dd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java index b886f5839..256d97f6c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java index 1aa2b58a3..81a697d65 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java index 5af65fcf4..77d9ecf0f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java index 2fbf5caac..29b0d63ee 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.errorprone.annotations.CanIgnoreReturnValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java index 85e3bd49c..6ba02e48d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java index a6100318d..608839710 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java index 8c5cb56a9..d2ca28fd5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.errorprone.annotations.CanIgnoreReturnValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java index f88fd4501..d8109cd38 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java index cc79d9efb..2cc5c1ebd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java index a663474b4..d34ac9ad5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java index c7bfb275b..8fee0be71 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; @@ -12,7 +17,7 @@ public final class ResourceSpansDataMapper extends BaseResourceSignalsDataMapper< - SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { + SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { public static final ResourceSpansDataMapper INSTANCE = new ResourceSpansDataMapper(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java index 48ea387f0..a2934e2d4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java index 30062258f..95b1ccfc4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index afdcbff33..906d21174 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.api.trace.SpanContext; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java index 74a59533e..dd7cfa49e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/SpanDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java index f719c9f81..522d3483e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java index 71b2a797a..234e55368 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java index 59ec1f70a..704245187 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java index 502333419..107f3b547 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java index c73f03fee..c731b38cf 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java @@ -1,8 +1,13 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import java.util.Collection; public interface ResourceSignalsData> { - Collection getResourceSignals(); + Collection getResourceSignals(); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java index 0ac148950..170cb0342 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java index 6d4059e86..4d2b2122b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java index 4bc2bdfce..d84f38ca1 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java index 6117adc4d..2132ae589 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java index db55c8214..63d5d0758 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java index ddbd5bad5..1c172a3b0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java index d9e59851b..d9e5978a7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java index 4ff5514d2..228ef4cc5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java index 62dedaafc..2b92f3f16 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java index 07a206b0b..a28e92564 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java index fa428ac1e..d901611a0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java index 37295a5b9..923027211 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java index f3b5af7db..ce8773076 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java index 0b37e7348..87d6ea023 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java index 4f614cf12..f1a7ff00f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java index 9a1167b57..b377bc2c7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java index c5ca0cbe1..73dd4974a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java index 0a5e7c387..f16ae01bf 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java index 77df7d3b9..314e7051e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java index 0297eb5c3..4b7496602 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java index 54bb9eddd..eafdd6aa5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java index 77757ecc6..f7fa73d3f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java index 8581c5d36..ab542c142 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java index 90ecf397c..453c0d81a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java index bb311fc71..a002af4f3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java index eb426934a..ee9635a66 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java @@ -1,10 +1,15 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java index 298fb7f94..284532dac 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java @@ -1,9 +1,14 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java index c799aa3e6..2cace295d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java @@ -1,10 +1,15 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java index f9c0cdf86..caeb7de99 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java @@ -1,9 +1,14 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; import javax.annotation.Nullable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java index 0ab732028..ae25cb735 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java @@ -1,10 +1,15 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; import com.dslplatform.json.CompiledJson; import com.dslplatform.json.JsonAttribute; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; import javax.annotation.Nullable; @CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java index 927b1ee58..1d59d6b5c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java index ae5d8b8df..8f650a637 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java index 036ad7935..50b98c575 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java index a4fb0463a..b747a3304 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.CompiledJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java index dc8781602..ffbeaf05d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java index 2b93b93d5..251a9da4a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java index c6ecd2f15..b1196115b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; import com.dslplatform.json.JsonAttribute; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java index 9a0cc35c4..b3500753b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import com.dslplatform.json.DslJson; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index 9197041fa..9ade24893 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.ResourceLogsDataMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 4560ebc01..05b13ec78 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java index ab871b2ea..a049f1730 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import java.util.Collection; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index aa01125d6..b11ddc20f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.ResourceSpansDataMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 90ad64d67..150ddc969 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index 526df138e..c6befd97d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java index eacb89271..366d0feff 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java index 14209a1c3..7f5d9b3c5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java index 44362ab31..422da1131 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java index a8c21c771..92b0e391d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java index 0088b1081..a79ef23c9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java index 90ea8db42..0d233fdee 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index f69cfc572..f924d6425 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java index 05a9162ba..ea87ace9b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/StorageFile.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import java.io.Closeable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 11e48320c..a6f084f03 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java index 5eed05e6b..9c97e76e1 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; import java.nio.charset.StandardCharsets; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java index 258b50288..12d87e504 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; import java.io.File; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java index 7d5727b06..7345d0ba2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; public class TimeProvider { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index ec31aa907..83b7051f3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.storage; import com.google.auto.value.AutoValue; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java index d8020b944..28dd8b13e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java index f40dfa228..40eeaae78 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java index e2f32e8d5..bd1290da3 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java index 2d7bddd28..a90b5bdb0 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.exporters; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MIN_FILE_AGE_FOR_READ_MILLIS; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java index 342168ac2..346c70ac0 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java index 8806fc1b9..f8a57d2a4 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java index 2d1b1c807..168fb5afb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 6af2c5b4e..f5b48e0d9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java index 2bb7e6087..f3ff043aa 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.api.trace.SpanKind; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 039299333..970f3c7c3 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_READ_MILLIS; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 4d9b4a159..0ad1ec9f1 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index 46feed9c6..fd6dc74da 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 05d8efcf2..8a2af46f9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.CONFIGURATION; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 0bd16a8a9..04ee4cfa1 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_WRITE_MILLIS; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java index 1627d0def..8ce035130 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.testutils; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java index 655ecbd72..92268121b 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.testutils; import static org.assertj.core.api.Assertions.assertThat; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java index a593bfb84..f13025b03 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.testutils; import io.opentelemetry.api.common.Attributes; From 3b42ced7113fa1acfd2f8a0aa6e7bf17d3807b4f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:48:31 +0200 Subject: [PATCH 108/209] Updating README --- disk-buffering/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index bc25550e1..077b5a6a1 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -14,9 +14,9 @@ The configurable parameters are provided **per exporter**, the available ones ar * Max age for file writing, defaults to 30 seconds. * Min age for file reading, defaults to 33 seconds. It must be greater that the max age for file writing. -* Max age for file reading, defaults to 18 hours. After 18 passed, the file would be considered - stale and will be removed when new files are created. No more data will be read from a file past - this time. +* Max age for file reading, defaults to 18 hours. After that time passes, the file will be + considered stale and will be removed when new files are created. No more data will be read from a + file past this time. ## Usage From 52ce4ec33f12a43c94b4dfbfb510e84f0504563f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:58:18 +0200 Subject: [PATCH 109/209] Removing unnecessary runtime dependencies --- disk-buffering/build.gradle.kts | 4 ++-- .../internal/serialization/mapping/common/ResourceMapper.java | 3 +-- .../internal/serialization/mapping/logs/LogRecordMapper.java | 3 +-- .../serialization/mapping/logs/ResourceLogsMapper.java | 3 +-- .../internal/serialization/mapping/logs/ScopeLogsMapper.java | 3 +-- .../serialization/mapping/metrics/DataPointMapper.java | 3 +-- .../serialization/mapping/metrics/MetricDataMapper.java | 3 +-- .../internal/serialization/mapping/metrics/MetricMapper.java | 3 +-- .../serialization/mapping/metrics/ResourceMetricsMapper.java | 3 +-- .../serialization/mapping/metrics/ScopeMetricsMapper.java | 3 +-- .../serialization/mapping/spans/ResourceSpansMapper.java | 3 +-- .../serialization/mapping/spans/ScopeSpansMapper.java | 3 +-- .../internal/serialization/mapping/spans/SpanDataMapper.java | 3 +-- 13 files changed, 14 insertions(+), 26 deletions(-) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 7160132c5..f58de2525 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -26,8 +26,8 @@ dependencies { api("io.opentelemetry:opentelemetry-sdk") api("io.opentelemetry:opentelemetry-sdk-logs") implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") - implementation("org.mapstruct:mapstruct:$mapStructVersion") - implementation("com.google.auto.value:auto-value-annotations:$autovalueVersion") + compileOnly("org.mapstruct:mapstruct:$mapStructVersion") + compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") annotationProcessor("com.dslplatform:dsl-json-java8:$dslJsonVersion") annotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion") diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index 53ed32780..975d78b03 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -9,12 +9,11 @@ import javax.annotation.Nullable; import org.mapstruct.Context; import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; @Mapper public abstract class ResourceMapper { - public static final ResourceMapper INSTANCE = Mappers.getMapper(ResourceMapper.class); + public static final ResourceMapper INSTANCE = new ResourceMapperImpl(); public abstract ResourceJson resourceToJson(io.opentelemetry.sdk.resources.Resource source); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java index 700d10c17..7f1f95307 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java @@ -23,12 +23,11 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; -import org.mapstruct.factory.Mappers; @Mapper public abstract class LogRecordMapper { - public static final LogRecordMapper INSTANCE = Mappers.getMapper(LogRecordMapper.class); + public static final LogRecordMapper INSTANCE = new LogRecordMapperImpl(); @SpanContextMapping @Mapping( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java index bcdd1dd30..993bd5498 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java @@ -11,12 +11,11 @@ import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; @Mapper(uses = {ResourceMapper.class}) public interface ResourceLogsMapper { - ResourceLogsMapper INSTANCE = Mappers.getMapper(ResourceLogsMapper.class); + ResourceLogsMapper INSTANCE = new ResourceLogsMapperImpl(); @ResourceMapping @Mapping(target = "scopeLogs", ignore = true) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java index a63a00d2d..48b6a8e0c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java @@ -10,12 +10,11 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; @Mapper public interface ScopeLogsMapper { - ScopeLogsMapper INSTANCE = Mappers.getMapper(ScopeLogsMapper.class); + ScopeLogsMapper INSTANCE = new ScopeLogsMapperImpl(); @ScopeMapping @Mapping(target = "logRecords", ignore = true) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java index c63e4ecd3..9682e0825 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java @@ -45,14 +45,13 @@ import org.mapstruct.ReportingPolicy; import org.mapstruct.SubclassExhaustiveStrategy; import org.mapstruct.SubclassMapping; -import org.mapstruct.factory.Mappers; @Mapper( subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION, unmappedTargetPolicy = ReportingPolicy.IGNORE) public abstract class DataPointMapper { - public static final DataPointMapper INSTANCE = Mappers.getMapper(DataPointMapper.class); + public static final DataPointMapper INSTANCE = new DataPointMapperImpl(); @SubclassMapping(source = LongPointData.class, target = NumberDataPoint.class) @SubclassMapping(source = DoublePointData.class, target = NumberDataPoint.class) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index e34a5b628..0f1161432 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -30,14 +30,13 @@ import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.SubclassExhaustiveStrategy; -import org.mapstruct.factory.Mappers; @Mapper( uses = DataPointMapper.class, subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION) public abstract class MetricDataMapper { - public static final MetricDataMapper INSTANCE = Mappers.getMapper(MetricDataMapper.class); + public static final MetricDataMapper INSTANCE = new MetricDataMapperImpl(); @SuppressWarnings("unchecked") public DataJson metricDataToJson(Data data, @Context MetricDataType type) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java index 5a7955eeb..9e20707ba 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java @@ -30,12 +30,11 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; -import org.mapstruct.factory.Mappers; @Mapper(uses = MetricDataMapper.class) public abstract class MetricMapper { - public static final MetricMapper INSTANCE = Mappers.getMapper(MetricMapper.class); + public static final MetricMapper INSTANCE = new MetricMapperImpl(); public MetricDataJson metricToJson(MetricData source) { MetricDataType type = source.getType(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java index 748d4e6e2..b99da798c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java @@ -11,12 +11,11 @@ import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; @Mapper(uses = {ResourceMapper.class}) public interface ResourceMetricsMapper { - ResourceMetricsMapper INSTANCE = Mappers.getMapper(ResourceMetricsMapper.class); + ResourceMetricsMapper INSTANCE = new ResourceMetricsMapperImpl(); @ResourceMapping @Mapping(target = "scopeMetrics", ignore = true) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java index c7f683c61..1f8dd250a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java @@ -10,12 +10,11 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; @Mapper public interface ScopeMetricsMapper { - ScopeMetricsMapper INSTANCE = Mappers.getMapper(ScopeMetricsMapper.class); + ScopeMetricsMapper INSTANCE = new ScopeMetricsMapperImpl(); @ScopeMapping @Mapping(target = "metrics", ignore = true) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java index a2934e2d4..60a9ee3a0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java @@ -11,12 +11,11 @@ import io.opentelemetry.sdk.resources.Resource; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; @Mapper(uses = {ResourceMapper.class}) public interface ResourceSpansMapper { - ResourceSpansMapper INSTANCE = Mappers.getMapper(ResourceSpansMapper.class); + ResourceSpansMapper INSTANCE = new ResourceSpansMapperImpl(); @ResourceMapping @Mapping(target = "scopeSpans", ignore = true) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java index 95b1ccfc4..db4883de3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java @@ -10,12 +10,11 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; @Mapper public interface ScopeSpansMapper { - ScopeSpansMapper INSTANCE = Mappers.getMapper(ScopeSpansMapper.class); + ScopeSpansMapper INSTANCE = new ScopeSpansMapperImpl(); @ScopeMapping @Mapping(target = "spans", ignore = true) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index 906d21174..4f4f5766c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -33,12 +33,11 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; -import org.mapstruct.factory.Mappers; @Mapper public abstract class SpanDataMapper { - public static final SpanDataMapper INSTANCE = Mappers.getMapper(SpanDataMapper.class); + public static final SpanDataMapper INSTANCE = new SpanDataMapperImpl(); @SpanContextMapping @Mapping(target = "droppedAttributesCount", ignore = true) From 9ab9aa91e7a92e0e4e208c794da16bc9e4cdf1e5 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 13 Jun 2023 13:55:10 +0200 Subject: [PATCH 110/209] Making TemporaryFileProvider configurable --- disk-buffering/README.md | 6 +++++ .../internal/storage/files/ReadableFile.java | 13 +--------- .../files/utils/TemporaryFileProvider.java | 19 -------------- .../storage/StorageConfiguration.java | 10 +++++++- .../files/DefaultTemporaryFileProvider.java | 15 +++++++++++ .../storage/files/TemporaryFileProvider.java | 15 +++++++++++ .../exporters/LogRecordDiskExporterTest.java | 2 +- .../exporters/MetricDiskExporterTest.java | 2 +- .../exporters/SpanDiskExporterTest.java | 2 +- .../exporters/AbstractDiskExporterTest.java | 3 ++- .../internal/storage/FolderManagerTest.java | 2 +- .../buffering/internal/storage/TestData.java | 25 +++++++++++++------ .../storage/files/ReadableFileTest.java | 8 +++--- .../storage/files/WritableFileTest.java | 2 +- 14 files changed, 74 insertions(+), 50 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 077b5a6a1..3d1a08d38 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -17,6 +17,12 @@ The configurable parameters are provided **per exporter**, the available ones ar * Max age for file reading, defaults to 18 hours. After that time passes, the file will be considered stale and will be removed when new files are created. No more data will be read from a file past this time. +* An instance + of [TemporaryFileProvider](src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java), + defaults to calling `File.createTempFile`. This provider will be used when reading from the disk + in order create a temporary file from which each line (batch of signals) will be read and + sequentially get removed from the original cache file right after the data has been successfully + exported. ## Usage diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index f924d6425..c0a831bb9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -10,7 +10,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedInputStream; @@ -43,21 +42,11 @@ public ReadableFile( TimeProvider timeProvider, StorageConfiguration configuration) throws IOException { - this(file, createdTimeMillis, timeProvider, configuration, TemporaryFileProvider.INSTANCE); - } - - public ReadableFile( - File file, - long createdTimeMillis, - TimeProvider timeProvider, - StorageConfiguration configuration, - TemporaryFileProvider temporaryFileProvider) - throws IOException { super(file); this.timeProvider = timeProvider; expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForReadMillis(); originalFileSize = (int) file.length(); - temporaryFile = temporaryFileProvider.createTemporaryFile(file.getName()); + temporaryFile = configuration.getTemporaryFileProvider().createTemporaryFile(file.getName()); copyFile(file, temporaryFile); FileInputStream tempInputStream = new FileInputStream(temporaryFile); tempInChannel = tempInputStream.getChannel(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java deleted file mode 100644 index 12d87e504..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/TemporaryFileProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; - -import java.io.File; -import java.io.IOException; - -public class TemporaryFileProvider { - public static final TemporaryFileProvider INSTANCE = new TemporaryFileProvider(); - - private TemporaryFileProvider() {} - - public File createTemporaryFile(String prefix) throws IOException { - return File.createTempFile(prefix + "_", ".tmp"); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index 83b7051f3..ab6196248 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -6,6 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.storage; import com.google.auto.value.AutoValue; +import io.opentelemetry.contrib.disk.buffering.storage.files.DefaultTemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import java.util.concurrent.TimeUnit; /** Defines how the storage should be managed. */ @@ -40,6 +42,9 @@ public abstract class StorageConfiguration { */ public abstract int getMaxFolderSize(); + /** A creator of temporary files needed to do the disk reading process. */ + public abstract TemporaryFileProvider getTemporaryFileProvider(); + public static StorageConfiguration getDefault() { return builder().build(); } @@ -50,7 +55,8 @@ public static Builder builder() { .setMaxFolderSize(10 * 1024 * 1024) // 10MB .setMaxFileAgeForWriteMillis(TimeUnit.SECONDS.toMillis(30)) .setMinFileAgeForReadMillis(TimeUnit.SECONDS.toMillis(33)) - .setMaxFileAgeForReadMillis(TimeUnit.HOURS.toMillis(18)); + .setMaxFileAgeForReadMillis(TimeUnit.HOURS.toMillis(18)) + .setTemporaryFileProvider(DefaultTemporaryFileProvider.INSTANCE); } @AutoValue.Builder @@ -65,6 +71,8 @@ public abstract static class Builder { public abstract Builder setMaxFolderSize(int value); + public abstract Builder setTemporaryFileProvider(TemporaryFileProvider value); + public abstract StorageConfiguration build(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java new file mode 100644 index 000000000..b3f851d51 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java @@ -0,0 +1,15 @@ +package io.opentelemetry.contrib.disk.buffering.storage.files; + +import java.io.File; +import java.io.IOException; + +public class DefaultTemporaryFileProvider implements TemporaryFileProvider { + public static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); + + private DefaultTemporaryFileProvider() {} + + @Override + public File createTemporaryFile(String prefix) throws IOException { + return File.createTempFile(prefix + "_", ".tmp"); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java new file mode 100644 index 000000000..88ac628e7 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java @@ -0,0 +1,15 @@ +package io.opentelemetry.contrib.disk.buffering.storage.files; + +import java.io.File; +import java.io.IOException; + +/** Provides a temporary file needed to do the disk reading process. */ +public interface TemporaryFileProvider { + + /** + * Creates a temporary file. + * + * @param prefix The prefix for the provided file name. + */ + File createTemporaryFile(String prefix) throws IOException; +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java index 28dd8b13e..61a7e7b56 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -30,7 +30,7 @@ class LogRecordDiskExporterTest { @BeforeEach public void setUp() { wrapped = mock(); - exporter = new LogRecordDiskExporter(wrapped, rootDir, TestData.CONFIGURATION); + exporter = new LogRecordDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java index 40eeaae78..078811b93 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -33,7 +33,7 @@ class MetricDiskExporterTest { @BeforeEach public void setUp() { wrapped = mock(); - exporter = new MetricDiskExporter(wrapped, rootDir, TestData.CONFIGURATION); + exporter = new MetricDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java index bd1290da3..57645afd1 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -30,7 +30,7 @@ class SpanDiskExporterTest { @BeforeEach public void setUp() { wrapped = mock(); - exporter = new SpanDiskExporter(wrapped, rootDir, TestData.CONFIGURATION); + exporter = new SpanDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java index a90b5bdb0..5053b2b2d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java @@ -51,7 +51,8 @@ public void setUp() throws NoSuchFieldException, IllegalAccessException { setUpTimeProvider(); setUpSerializer(); wrapped = mock(); - exporter = new TestDiskExporter(wrapped, rootDir, TestData.CONFIGURATION, serializer); + exporter = + new TestDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration(), serializer); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 970f3c7c3..f58093b98 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -37,7 +37,7 @@ class FolderManagerTest { @BeforeEach public void setUp() { timeProvider = mock(); - folderManager = new FolderManager(rootDir, TestData.CONFIGURATION, timeProvider); + folderManager = new FolderManager(rootDir, TestData.getDefaultConfiguration(), timeProvider); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index fd6dc74da..27a5c2b06 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -6,6 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.storage.files.DefaultTemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; public final class TestData { @@ -14,14 +16,21 @@ public final class TestData { public static final long MAX_FILE_AGE_FOR_READ_MILLIS = 10_000; public static final int MAX_FILE_SIZE = 100; public static final int MAX_FOLDER_SIZE = 300; - public static final StorageConfiguration CONFIGURATION = - StorageConfiguration.builder() - .setMaxFileAgeForWriteMillis(MAX_FILE_AGE_FOR_WRITE_MILLIS) - .setMinFileAgeForReadMillis(MIN_FILE_AGE_FOR_READ_MILLIS) - .setMaxFileAgeForReadMillis(MAX_FILE_AGE_FOR_READ_MILLIS) - .setMaxFileSize(MAX_FILE_SIZE) - .setMaxFolderSize(MAX_FOLDER_SIZE) - .build(); + + public static StorageConfiguration getDefaultConfiguration() { + return getConfiguration(DefaultTemporaryFileProvider.INSTANCE); + } + + public static StorageConfiguration getConfiguration(TemporaryFileProvider fileProvider) { + return StorageConfiguration.builder() + .setMaxFileAgeForWriteMillis(MAX_FILE_AGE_FOR_WRITE_MILLIS) + .setMinFileAgeForReadMillis(MIN_FILE_AGE_FOR_READ_MILLIS) + .setMaxFileAgeForReadMillis(MAX_FILE_AGE_FOR_READ_MILLIS) + .setMaxFileSize(MAX_FILE_SIZE) + .setMaxFolderSize(MAX_FOLDER_SIZE) + .setTemporaryFileProvider(fileProvider) + .build(); + } private TestData() {} } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 8a2af46f9..39c981d56 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -5,8 +5,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.CONFIGURATION; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_READ_MILLIS; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.getConfiguration; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -18,8 +18,8 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -52,7 +52,7 @@ public void setUp() throws IOException { timeProvider = mock(); readableFile = new ReadableFile( - source, CREATED_TIME_MILLIS, timeProvider, CONFIGURATION, temporaryFileProvider); + source, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); } @Test @@ -144,7 +144,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc ReadableFile emptyReadableFile = new ReadableFile( - emptyFile, CREATED_TIME_MILLIS, timeProvider, CONFIGURATION, temporaryFileProvider); + emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); try { emptyReadableFile.readLine(bytes -> true); fail(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 04ee4cfa1..09c04d787 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -43,7 +43,7 @@ public void setUp() throws IOException { new WritableFile( new File(rootDir, String.valueOf(CREATED_TIME_MILLIS)), CREATED_TIME_MILLIS, - TestData.CONFIGURATION, + TestData.getDefaultConfiguration(), timeProvider); } From 962d136843eb904c4dcda7299c3fb334e85d2029 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:04:58 +0200 Subject: [PATCH 111/209] Updating README to include a code example --- disk-buffering/README.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 3d1a08d38..03733e46f 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -51,6 +51,25 @@ Each wrapper will need the following when instantiating them: After wrapping your exporters, you must register the wrapper as the exporter you'll use. It will take care of always storing the data it receives. +#### Set up example for spans + +```java +// Creating the SpanExporter of our choice. +SpanExporter mySpanExporter = OtlpGrpcSpanExporter.getDefault(); + +// Wrapping our exporter with its disk exporter. +SpanDiskExporter diskExporter = new SpanDiskExporter(mySpanExporter, new File("/my/signals/cache/dir"), StorageConfiguration.getDefault()); + + // Registering the disk exporter within our OpenTelemetry instance. +SdkTracerProvider myTraceProvider = SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.create(diskExporter)) + .build(); +OpenTelemetrySdk.builder() + .setTracerProvider(myTraceProvider) + .buildAndRegisterGlobal(); + +``` + ### Reading data Each of the exporter wrappers can read from the disk and send the retrieved data over to their @@ -58,8 +77,8 @@ wrapped exporter by calling this method from them: ```java try { - if(exporter.exportStoredBatch(1, TimeUnit.SECONDS)) { - // A batch was successfully exported. You can call this method for as long as it keeps returning true. + if(diskExporter.exportStoredBatch(1, TimeUnit.SECONDS)) { + // A batch was successfully exported and removed from disk. You can call this method for as long as it keeps returning true. } else { // Either there was no data in the disk or the wrapped exporter returned CompletableResultCode.ofFailure(). } From 702bdeb2e8c55bd015cba5391d1b3e1c2b2364de Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:29:25 +0200 Subject: [PATCH 112/209] Removing json params not present in the protos --- .../mapping/metrics/DataPointMapper.java | 33 +++++++++++++++++-- .../ExponentialHistogramDataPoint.java | 3 +- .../metrics/datapoints/data/Buckets.java | 13 +------- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java index 9682e0825..9c5f6cbb4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java @@ -37,6 +37,8 @@ import io.opentelemetry.sdk.metrics.data.PointData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import java.util.ArrayList; +import java.util.List; import org.mapstruct.AfterMapping; import org.mapstruct.BeanMapping; import org.mapstruct.Mapper; @@ -88,6 +90,8 @@ protected void spanContextToJson(ExemplarData source, @MappingTarget Exemplar ta public abstract SummaryPointData jsonSummaryToPointData(SummaryDataPoint source); @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) + @Mapping(target = "positiveBuckets", ignore = true) + @Mapping(target = "negativeBuckets", ignore = true) public abstract ExponentialHistogramPointData jsonExponentialHistogramToPointData( ExponentialHistogramDataPoint source); @@ -99,8 +103,33 @@ public abstract ExponentialHistogramPointData jsonExponentialHistogramToPointDat @Mapping(target = "value", source = "doubleValue") protected abstract DoubleExemplarData jsonToDoubleExemplar(Exemplar source); - @BeanMapping(resultType = ExponentialHistogramBucketsImpl.class) - protected abstract ExponentialHistogramBuckets jsonToExponentialBuckets(Buckets source); + @AfterMapping + protected void addBuckets( + ExponentialHistogramDataPoint source, + @MappingTarget ExponentialHistogramPointDataImpl.Builder target) { + if (source.positiveBuckets != null) { + target.setPositiveBuckets(jsonToExponentialBuckets(source.positiveBuckets, source.scale)); + } + if (source.negativeBuckets != null) { + target.setNegativeBuckets(jsonToExponentialBuckets(source.negativeBuckets, source.scale)); + } + } + + protected ExponentialHistogramBuckets jsonToExponentialBuckets(Buckets source, Integer scale) { + List bucketCounts = new ArrayList<>(); + long totalCount = 0; + for (String bucketCount : source.bucketCounts) { + long countValue = Long.parseLong(bucketCount); + bucketCounts.add(countValue); + totalCount += countValue; + } + return ExponentialHistogramBucketsImpl.builder() + .setOffset(source.offset) + .setBucketCounts(bucketCounts) + .setTotalCount(totalCount) + .setScale(scale) + .build(); + } @BeanMapping(resultType = ValueAtQuantileImpl.class) protected abstract ValueAtQuantile jsonToQuantile(QuantileValue source); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java index 314e7051e..2b17a3542 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java @@ -32,9 +32,8 @@ public final class ExponentialHistogramDataPoint extends DataPoint { @JsonAttribute(name = "max") public Double max; - @Nullable @JsonAttribute(name = "scale") - public Integer scale; + public Integer scale = 0; @Nullable @JsonAttribute(name = "zeroCount") diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java index ab542c142..9ff044b5c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java @@ -8,23 +8,12 @@ import com.dslplatform.json.JsonAttribute; import java.util.ArrayList; import java.util.List; -import javax.annotation.Nullable; public final class Buckets { - @Nullable @JsonAttribute(name = "offset") - public Integer offset; + public Integer offset = 0; @JsonAttribute(name = "bucketCounts") public List bucketCounts = new ArrayList<>(); - - // Not present in the proto - @Nullable - @JsonAttribute(name = "scale") - public Integer scale; - - @Nullable - @JsonAttribute(name = "totalCount") - public String totalCount; } From de3b9ec1aaeaacdf4d55595c692657eaa9f11fc6 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:38:25 +0200 Subject: [PATCH 113/209] Adding classes javadoc headers --- .../storage/files/DefaultTemporaryFileProvider.java | 5 +++++ .../disk/buffering/storage/files/TemporaryFileProvider.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java index b3f851d51..e2f855a4c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.storage.files; import java.io.File; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java index 88ac628e7..e2aab18a9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.storage.files; import java.io.File; From aefd46edc1f266cec839d6457b18224e84377fae Mon Sep 17 00:00:00 2001 From: LikeTheSalad <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 13:05:14 +0200 Subject: [PATCH 114/209] Update disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java Co-authored-by: Gregor Zeitlinger --- .../disk/buffering/internal/exporters/AbstractDiskExporter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index 38cd493ab..4376cb6c1 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -62,7 +62,7 @@ protected void onShutDown() throws IOException { } protected CompletableResultCode onExport(Collection data) { - logger.log(Level.INFO, "Intercepting exporter batch."); + logger.log(Level.DEBUG, "Intercepting exporter batch."); try { storage.write(getSerializer().serialize(data)); return CompletableResultCode.ofSuccess(); From 549ea97609ea7ee71ae2e069fd1e8cfb4ea2c9da Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 13:38:42 +0200 Subject: [PATCH 115/209] Adding component owners --- .github/component_owners.yml | 3 +++ disk-buffering/README.md | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/.github/component_owners.yml b/.github/component_owners.yml index 1c50cb156..9c7e26c0e 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -22,6 +22,9 @@ components: consistent-sampling: - oertl - PeterF778 + disk-buffering: + - LikeTheSalad + - zeitlinger samplers: - iNikem - trask diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 03733e46f..fb78f295d 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -86,3 +86,10 @@ try { // Something unexpected happened. } ``` + +## Component owners + +- [Cesar Munoz](https://github.com/LikeTheSalad), Elastic +- [Gregor Zeitlinger](https://github.com/zeitlinger), Grafana + +Learn more about component owners in [component_owners.yml](../.github/component_owners.yml). From aa48d91e464d4a0fc44fced41326d6736b1a5b47 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 14:51:10 +0200 Subject: [PATCH 116/209] Using Logging Level FINER as replacement for INFO given that INFO is not available. --- .../disk/buffering/internal/exporters/AbstractDiskExporter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java index 4376cb6c1..7c9c0c8dc 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java @@ -62,7 +62,7 @@ protected void onShutDown() throws IOException { } protected CompletableResultCode onExport(Collection data) { - logger.log(Level.DEBUG, "Intercepting exporter batch."); + logger.log(Level.FINER, "Intercepting exporter batch."); try { storage.write(getSerializer().serialize(data)); return CompletableResultCode.ofSuccess(); From c488aa456b33a201dfd33824400420dfda0a8c16 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 14:53:34 +0200 Subject: [PATCH 117/209] Cleaning up logs dependency --- disk-buffering/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index f58de2525..83d2e2403 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -24,7 +24,6 @@ val mapStructVersion = "1.5.5.Final" val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") - api("io.opentelemetry:opentelemetry-sdk-logs") implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") compileOnly("org.mapstruct:mapstruct:$mapStructVersion") compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") From 319442250570418a11c33b4ccd9c2569f5f1efa4 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 15:07:35 +0200 Subject: [PATCH 118/209] Adding OTel java proto dependency --- disk-buffering/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 83d2e2403..b075debfc 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -25,6 +25,7 @@ val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") + implementation("io.opentelemetry.proto:opentelemetry-proto:0.20.0-alpha") compileOnly("org.mapstruct:mapstruct:$mapStructVersion") compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") From 159ffac35c3ba3a5c641f9ec65bdc9ad88f8337c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 17:51:50 +0200 Subject: [PATCH 119/209] Mapping attributes to and from proto classes --- disk-buffering/build.gradle.kts | 3 +- .../proto/common/AttributesMapper.java | 148 ++++++++++++++++++ .../proto/common/AttributesMapperTest.java | 53 +++++++ 3 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index b075debfc..daa53f19f 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -24,9 +24,10 @@ val mapStructVersion = "1.5.5.Final" val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") + implementation("io.opentelemetry:opentelemetry-exporter-otlp-common") implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") implementation("io.opentelemetry.proto:opentelemetry-proto:0.20.0-alpha") - compileOnly("org.mapstruct:mapstruct:$mapStructVersion") + implementation("org.mapstruct:mapstruct:$mapStructVersion") compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") annotationProcessor("com.dslplatform:dsl-json-java8:$dslJsonVersion") diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java new file mode 100644 index 000000000..65799315e --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java @@ -0,0 +1,148 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.AttributeType; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.AttributesBuilder; +import io.opentelemetry.proto.common.v1.AnyValue; +import io.opentelemetry.proto.common.v1.ArrayValue; +import io.opentelemetry.proto.common.v1.KeyValue; +import java.util.ArrayList; +import java.util.List; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.ReportingPolicy; + +@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class AttributesMapper { + + public static final AttributesMapper INSTANCE = new AttributesMapperImpl(); + + public List attributesToProto(Attributes attributes) { + List keyValues = new ArrayList<>(); + attributes.forEach((attributeKey, o) -> keyValues.add(attributeEntryToProto(attributeKey, o))); + return keyValues; + } + + protected KeyValue attributeEntryToProto(AttributeKey key, Object value) { + KeyValue.Builder builder = KeyValue.newBuilder(); + builder.setKey(key.getKey()); + builder.setValue(attributeValueToProto(key.getType(), value)); + return builder.build(); + } + + @SuppressWarnings("unchecked") + private AnyValue attributeValueToProto(AttributeType type, Object value) { + switch (type) { + case STRING: + return stringToAnyValue((String) value); + case BOOLEAN: + return booleanToAnyValue((Boolean) value); + case LONG: + return longToAnyValue((Long) value); + case DOUBLE: + return doubleToAnyValue((Double) value); + case STRING_ARRAY: + return arrayToAnyValue(stringListToAnyValue((List) value)); + case BOOLEAN_ARRAY: + return arrayToAnyValue(booleanListToAnyValue((List) value)); + case LONG_ARRAY: + return arrayToAnyValue(longListToAnyValue((List) value)); + case DOUBLE_ARRAY: + return arrayToAnyValue(doubleListToAnyValue((List) value)); + } + throw new UnsupportedOperationException(); + } + + @Mapping(target = "stringValue", source = ".") + protected abstract AnyValue stringToAnyValue(String value); + + @Mapping(target = "boolValue", source = ".") + protected abstract AnyValue booleanToAnyValue(Boolean value); + + @Mapping(target = "intValue", source = ".") + protected abstract AnyValue longToAnyValue(Long value); + + @Mapping(target = "doubleValue", source = ".") + protected abstract AnyValue doubleToAnyValue(Double value); + + protected abstract List stringListToAnyValue(List value); + + protected abstract List booleanListToAnyValue(List value); + + protected abstract List longListToAnyValue(List value); + + protected abstract List doubleListToAnyValue(List value); + + private static AnyValue arrayToAnyValue(List value) { + return AnyValue.newBuilder() + .setArrayValue(ArrayValue.newBuilder().addAllValues(value).build()) + .build(); + } + + // FROM PROTO + + public Attributes protoToAttributes(List values) { + AttributesBuilder builder = Attributes.builder(); + for (KeyValue keyValue : values) { + addValue(builder, keyValue.getKey(), keyValue.getValue()); + } + return builder.build(); + } + + private void addValue(AttributesBuilder builder, String key, AnyValue value) { + if (value.hasStringValue()) { + builder.put(AttributeKey.stringKey(key), value.getStringValue()); + } else if (value.hasBoolValue()) { + builder.put(AttributeKey.booleanKey(key), value.getBoolValue()); + } else if (value.hasIntValue()) { + builder.put(AttributeKey.longKey(key), value.getIntValue()); + } else if (value.hasDoubleValue()) { + builder.put(AttributeKey.doubleKey(key), value.getDoubleValue()); + } else if (value.hasArrayValue()) { + addArray(builder, key, value.getArrayValue()); + } else { + throw new UnsupportedOperationException(); + } + } + + private void addArray(AttributesBuilder builder, String key, ArrayValue arrayValue) { + List values = arrayValue.getValuesList(); + AnyValue anyValue = values.get(0); + if (anyValue.hasStringValue()) { + builder.put(AttributeKey.stringArrayKey(key), anyValuesToStrings(values)); + } else if (anyValue.hasBoolValue()) { + builder.put(AttributeKey.booleanArrayKey(key), anyValuesToBooleans(values)); + } else if (anyValue.hasIntValue()) { + builder.put(AttributeKey.longArrayKey(key), anyValuesToLongs(values)); + } else if (anyValue.hasDoubleValue()) { + builder.put(AttributeKey.doubleArrayKey(key), anyValuesToDoubles(values)); + } else { + throw new UnsupportedOperationException(); + } + } + + protected abstract List anyValuesToStrings(List values); + + protected abstract List anyValuesToBooleans(List values); + + protected abstract List anyValuesToLongs(List values); + + protected abstract List anyValuesToDoubles(List values); + + protected String anyValueToString(AnyValue value) { + return value.getStringValue(); + } + + protected Boolean anyValueToBoolean(AnyValue value) { + return value.getBoolValue(); + } + + protected Long anyValueToLong(AnyValue value) { + return value.getIntValue(); + } + + protected Double anyValueToDouble(AnyValue value) { + return value.getDoubleValue(); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java new file mode 100644 index 000000000..1f7eec162 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java @@ -0,0 +1,53 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.proto.common.v1.KeyValue; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Test; + +class AttributesMapperTest { + + @Test + public void verifyMapping() { + Attributes attributes = + Attributes.builder() + .put(AttributeKey.stringKey("someString"), "someValue") + .put(AttributeKey.booleanKey("someBool"), true) + .put(AttributeKey.longKey("someLong"), 10L) + .put(AttributeKey.doubleKey("someDouble"), 10.0) + .build(); + + List proto = mapToProto(attributes); + + assertEquals(attributes, mapFromProto(proto)); + } + + @Test + public void verifyArraySerialization() { + Attributes attributes = + Attributes.builder() + .put( + AttributeKey.stringArrayKey("someString"), + Arrays.asList("firstString", "secondString")) + .put(AttributeKey.booleanArrayKey("someBool"), Arrays.asList(true, false)) + .put(AttributeKey.longArrayKey("someLong"), Arrays.asList(10L, 50L)) + .put(AttributeKey.doubleArrayKey("someDouble"), Arrays.asList(10.0, 50.5)) + .build(); + + List serialized = mapToProto(attributes); + + assertEquals(attributes, mapFromProto(serialized)); + } + + private static List mapToProto(Attributes attributes) { + return AttributesMapper.INSTANCE.attributesToProto(attributes); + } + + private static Attributes mapFromProto(List keyValues) { + return AttributesMapper.INSTANCE.protoToAttributes(keyValues); + } +} From a188b9e5853f1761a7fb149a8a434596eea5ecfd Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 19 Jun 2023 18:55:47 +0200 Subject: [PATCH 120/209] Updating test naming for attributes mapping --- .../mapping/proto/common/AttributesMapperTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java index 1f7eec162..287f8e77c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java @@ -27,7 +27,7 @@ public void verifyMapping() { } @Test - public void verifyArraySerialization() { + public void verifyArrayMapping() { Attributes attributes = Attributes.builder() .put( From c33b4d47751eeeb989603460fd3678af9f93a78f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 20 Jun 2023 15:29:06 +0200 Subject: [PATCH 121/209] Mapping resources --- .../mapping/proto/common/ResourceMapper.java | 29 +++++++++++++++++++ .../proto/common/ResourceMapperTest.java | 26 +++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java new file mode 100644 index 000000000..699b1d068 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java @@ -0,0 +1,29 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; + +import io.opentelemetry.proto.resource.v1.Resource; +import io.opentelemetry.sdk.resources.ResourceBuilder; +import org.mapstruct.AfterMapping; +import org.mapstruct.Mapper; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; + +@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class ResourceMapper { + + public static final ResourceMapper INSTANCE = new ResourceMapperImpl(); + + public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { + return Resource.newBuilder() + .addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(sdkResource.getAttributes())) + .build(); + } + + public abstract io.opentelemetry.sdk.resources.Resource mapToSdk( + Resource protoResource, String schemaUrl); + + @AfterMapping + protected static void addAttributes( + Resource protoResource, @MappingTarget ResourceBuilder builder) { + builder.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java new file mode 100644 index 000000000..ccf08ac1e --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java @@ -0,0 +1,26 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.resource.v1.Resource; +import org.junit.jupiter.api.Test; + +class ResourceMapperTest { + + @Test + public void verifyMapping() { + Resource proto = mapToProto(TestData.RESOURCE_FULL); + + assertEquals(TestData.RESOURCE_FULL, mapToSdk(proto, TestData.RESOURCE_FULL.getSchemaUrl())); + } + + private static Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { + return ResourceMapper.INSTANCE.mapToProto(sdkResource); + } + + private static io.opentelemetry.sdk.resources.Resource mapToSdk( + Resource protoResource, String schemaUrl) { + return ResourceMapper.INSTANCE.mapToSdk(protoResource, schemaUrl); + } +} From 40716c019548c20a1931810048a0370c54313115 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 20 Jun 2023 18:11:25 +0200 Subject: [PATCH 122/209] Mapping logs --- .../proto/logs/LogRecordDataMapper.java | 108 ++++++++++++++++++ .../proto/logs/LogRecordDataMapperTest.java | 48 ++++++++ 2 files changed, 156 insertions(+) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java new file mode 100644 index 000000000..d2ece9974 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java @@ -0,0 +1,108 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; + +import com.google.protobuf.ByteString; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; +import io.opentelemetry.proto.common.v1.AnyValue; +import io.opentelemetry.proto.logs.v1.LogRecord; +import io.opentelemetry.proto.logs.v1.SeverityNumber; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.resources.Resource; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.Context; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; + +@Mapper(uses = AttributesMapper.class, unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class LogRecordDataMapper { + + public static final LogRecordDataMapper INSTANCE = new LogRecordDataMapperImpl(); + + @Mapping(target = "droppedAttributesCount", ignore = true) + @Mapping(target = "timeUnixNano", source = "timestampEpochNanos") + @Mapping(target = "observedTimeUnixNano", source = "observedTimestampEpochNanos") + @Mapping(target = "severityNumber", source = "severity") + @Mapping( + target = "flags", + expression = "java((int) source.getSpanContext().getTraceFlags().asByte())") + public abstract LogRecord mapToProto(LogRecordData source); + + @InheritInverseConfiguration + @BeanMapping(resultType = LogRecordDataImpl.class) + public abstract LogRecordData mapToSdk( + LogRecord source, @Context Resource resource, @Context InstrumentationScopeInfo scopeInfo); + + @AfterMapping + protected void addExtrasToProtoBuilder( + LogRecordData source, @MappingTarget LogRecord.Builder target) { + target.addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(source.getAttributes())); + SpanContext spanContext = source.getSpanContext(); + target.setSpanId(stringToProto(spanContext.getSpanId())); + target.setTraceId(stringToProto(spanContext.getTraceId())); + target.setDroppedAttributesCount( + source.getTotalAttributeCount() - source.getAttributes().size()); + } + + @AfterMapping + protected void addExtrasToSdkItemBuilder( + LogRecord source, + @MappingTarget LogRecordDataImpl.Builder target, + @Context Resource resource, + @Context InstrumentationScopeInfo scopeInfo) { + Attributes attributes = AttributesMapper.INSTANCE.protoToAttributes(source.getAttributesList()); + target.setAttributes(attributes); + target.setSpanContext( + SpanContext.create( + protoToString(source.getTraceId()), + protoToString(source.getSpanId()), + TraceFlags.getSampled(), + TraceState.getDefault())); + target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); + target.setResource(resource); + target.setInstrumentationScopeInfo(scopeInfo); + } + + protected AnyValue bodyToAnyValue(Body body) { + return AnyValue.newBuilder().setStringValue(body.asString()).build(); + } + + protected SeverityNumber severityToProto(Severity severity) { + return SeverityNumber.forNumber(severity.getSeverityNumber()); + } + + private static ByteString stringToProto(String source) { + return ByteString.copyFromUtf8(source); + } + + protected Body anyValueToBody(AnyValue source) { + if (source.hasStringValue()) { + return Body.string(source.getStringValue()); + } else { + return Body.empty(); + } + } + + protected Severity severityNumberToSdk(SeverityNumber source) { + for (Severity value : Severity.values()) { + if (value.getSeverityNumber() == source.getNumber()) { + return value; + } + } + throw new IllegalArgumentException(); + } + + private static String protoToString(ByteString source) { + return source.toStringUtf8(); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java new file mode 100644 index 000000000..34b9d3e2d --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java @@ -0,0 +1,48 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.logs.v1.LogRecord; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.resources.Resource; +import org.junit.jupiter.api.Test; + +class LogRecordDataMapperTest { + + private static final LogRecordData LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + @Test + public void verifyMapping() { + LogRecord proto = mapToProto(LOG_RECORD); + + assertEquals( + LOG_RECORD, + mapToSdk(proto, LOG_RECORD.getResource(), LOG_RECORD.getInstrumentationScopeInfo())); + } + + private static LogRecord mapToProto(LogRecordData data) { + return LogRecordDataMapper.INSTANCE.mapToProto(data); + } + + private static LogRecordData mapToSdk( + LogRecord data, Resource resource, InstrumentationScopeInfo scopeInfo) { + return LogRecordDataMapper.INSTANCE.mapToSdk(data, resource, scopeInfo); + } +} From 17b6267d021f924c53f71b5ea0f4d64cf618511c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 21 Jun 2023 16:59:22 +0200 Subject: [PATCH 123/209] Creating MetricDataMapper for protos --- .../proto/common/ByteStringMapper.java | 16 + .../proto/logs/LogRecordDataMapper.java | 18 +- .../proto/metrics/MetricDataMapper.java | 344 ++++++++++++++++++ 3 files changed, 365 insertions(+), 13 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java new file mode 100644 index 000000000..fe2fe9655 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java @@ -0,0 +1,16 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; + +import com.google.protobuf.ByteString; + +public final class ByteStringMapper { + + public static final ByteStringMapper INSTANCE = new ByteStringMapper(); + + public ByteString stringToProto(String source) { + return ByteString.copyFromUtf8(source); + } + + public String protoToString(ByteString source) { + return source.toStringUtf8(); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java index d2ece9974..03ca075c9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java @@ -1,6 +1,5 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; -import com.google.protobuf.ByteString; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; @@ -8,6 +7,7 @@ import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; import io.opentelemetry.proto.common.v1.AnyValue; import io.opentelemetry.proto.logs.v1.LogRecord; import io.opentelemetry.proto.logs.v1.SeverityNumber; @@ -48,8 +48,8 @@ protected void addExtrasToProtoBuilder( LogRecordData source, @MappingTarget LogRecord.Builder target) { target.addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(source.getAttributes())); SpanContext spanContext = source.getSpanContext(); - target.setSpanId(stringToProto(spanContext.getSpanId())); - target.setTraceId(stringToProto(spanContext.getTraceId())); + target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); target.setDroppedAttributesCount( source.getTotalAttributeCount() - source.getAttributes().size()); } @@ -64,8 +64,8 @@ protected void addExtrasToSdkItemBuilder( target.setAttributes(attributes); target.setSpanContext( SpanContext.create( - protoToString(source.getTraceId()), - protoToString(source.getSpanId()), + ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), TraceFlags.getSampled(), TraceState.getDefault())); target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); @@ -81,10 +81,6 @@ protected SeverityNumber severityToProto(Severity severity) { return SeverityNumber.forNumber(severity.getSeverityNumber()); } - private static ByteString stringToProto(String source) { - return ByteString.copyFromUtf8(source); - } - protected Body anyValueToBody(AnyValue source) { if (source.hasStringValue()) { return Body.string(source.getStringValue()); @@ -101,8 +97,4 @@ protected Severity severityNumberToSdk(SeverityNumber source) { } throw new IllegalArgumentException(); } - - private static String protoToString(ByteString source) { - return source.toStringUtf8(); - } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java new file mode 100644 index 000000000..b877970b8 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java @@ -0,0 +1,344 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.PointDataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; +import io.opentelemetry.proto.common.v1.KeyValue; +import io.opentelemetry.proto.metrics.v1.AggregationTemporality; +import io.opentelemetry.proto.metrics.v1.Exemplar; +import io.opentelemetry.proto.metrics.v1.ExponentialHistogram; +import io.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint; +import io.opentelemetry.proto.metrics.v1.Gauge; +import io.opentelemetry.proto.metrics.v1.Histogram; +import io.opentelemetry.proto.metrics.v1.HistogramDataPoint; +import io.opentelemetry.proto.metrics.v1.Metric; +import io.opentelemetry.proto.metrics.v1.NumberDataPoint; +import io.opentelemetry.proto.metrics.v1.Sum; +import io.opentelemetry.proto.metrics.v1.Summary; +import io.opentelemetry.proto.metrics.v1.SummaryDataPoint; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.ExemplarData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.data.GaugeData; +import io.opentelemetry.sdk.metrics.data.HistogramData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.PointData; +import io.opentelemetry.sdk.metrics.data.SumData; +import io.opentelemetry.sdk.metrics.data.SummaryData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import io.opentelemetry.sdk.resources.Resource; +import java.util.List; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.CollectionMappingStrategy; +import org.mapstruct.Context; +import org.mapstruct.EnumMapping; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.ValueMapping; + +@Mapper( + collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class MetricDataMapper { + + public abstract Metric mapToProto(MetricData source); + + @BeanMapping(resultType = MetricDataImpl.class) + public abstract MetricData mapToSdk( + Metric source, @Context Resource resource, @Context InstrumentationScopeInfo scope); + + @SuppressWarnings("unchecked") + @AfterMapping + protected void addDataToProto(MetricData source, @MappingTarget Metric.Builder target) { + switch (source.getType()) { + case LONG_GAUGE: + target.setGauge(mapLongGaugeToProto((GaugeData) source.getData())); + break; + case DOUBLE_GAUGE: + target.setGauge(mapDoubleGaugeToProto((GaugeData) source.getData())); + break; + case LONG_SUM: + target.setSum(mapLongSumToProto((SumData) source.getData())); + break; + case DOUBLE_SUM: + target.setSum(mapDoubleSumToProto((SumData) source.getData())); + break; + case SUMMARY: + target.setSummary(mapSummaryToProto((SummaryData) source.getData())); + break; + case HISTOGRAM: + target.setHistogram(mapHistogramToProto((HistogramData) source.getData())); + break; + case EXPONENTIAL_HISTOGRAM: + target.setExponentialHistogram( + mapExponentialHistogramToProto((ExponentialHistogramData) source.getData())); + break; + } + throw new UnsupportedOperationException(); + } + + @AfterMapping + protected void addDataToSdk(Metric source, @MappingTarget MetricDataImpl.Builder target) { + switch (source.getDataCase()) { + case GAUGE: + target.setData(mapGaugeToSdk(source.getGauge())); + break; + case SUM: + target.setData(mapSumToSdk(source.getSum())); + break; + case SUMMARY: + target.setData(mapSummaryToSdk(source.getSummary())); + break; + case HISTOGRAM: + target.setData(mapHistogramToSdk(source.getHistogram())); + break; + case EXPONENTIAL_HISTOGRAM: + target.setData(mapExponentialHistogramToSdk(source.getExponentialHistogram())); + break; + default: + throw new UnsupportedOperationException(); + } + } + + @Mapping(target = "dataPointsList", source = "points") + protected abstract Gauge mapLongGaugeToProto(GaugeData data); + + @Mapping(target = "dataPointsList", source = "points") + protected abstract Gauge mapDoubleGaugeToProto(GaugeData data); + + @Mapping(target = "dataPointsList", source = "points") + @Mapping(target = "isMonotonic", source = "monotonic") + protected abstract Sum mapLongSumToProto(SumData data); + + @Mapping(target = "dataPointsList", source = "points") + @Mapping(target = "isMonotonic", source = "monotonic") + protected abstract Sum mapDoubleSumToProto(SumData data); + + @Mapping(target = "dataPointsList", source = "points") + protected abstract Summary mapSummaryToProto(SummaryData data); + + @Mapping(target = "dataPointsList", source = "points") + protected abstract Histogram mapHistogramToProto(HistogramData data); + + @Mapping(target = "dataPointsList", source = "points") + protected abstract ExponentialHistogram mapExponentialHistogramToProto( + ExponentialHistogramData data); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asInt", source = "value") + protected abstract NumberDataPoint longPointDataToNumberDataPoint(LongPointData source); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asDouble", source = "value") + protected abstract NumberDataPoint doublePointDataToNumberDataPoint(DoublePointData source); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "quantileValuesList", source = "values") + protected abstract SummaryDataPoint summaryPointDataToSummaryDataPoint( + SummaryPointData summaryPointData); + + @Mapping(target = "bucketCountsList", source = "counts") + @Mapping(target = "explicitBoundsList", source = "boundaries") + @Mapping(target = "exemplarsList", source = "exemplars") + protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( + HistogramPointData histogramPointData); + + @Mapping(target = "positive", source = "negativeBuckets") + @Mapping(target = "negative", source = "positiveBuckets") + @Mapping(target = "exemplarsList", source = "exemplars") + protected abstract ExponentialHistogramDataPoint + exponentialHistogramPointDataToExponentialHistogramDataPoint( + ExponentialHistogramPointData exponentialHistogramPointData); + + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asDouble", source = "value") + protected abstract Exemplar doubleExemplarDataToExemplar(DoubleExemplarData doubleExemplarData); + + @AfterMapping + protected void addAttributesToNumberDataPoint( + PointData source, @MappingTarget NumberDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @AfterMapping + protected void addAttributesToSummaryDataPoint( + PointData source, @MappingTarget SummaryDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @AfterMapping + protected void addExtrasToExemplar(ExemplarData source, @MappingTarget Exemplar.Builder target) { + target.addAllFilteredAttributes(attributesToProto(source.getFilteredAttributes())); + SpanContext spanContext = source.getSpanContext(); + target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + } + + @EnumMapping( + nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, + configuration = "AGGREGATION_TEMPORALITY_") + protected abstract AggregationTemporality mapAggregationTemporalityToProto( + io.opentelemetry.sdk.metrics.data.AggregationTemporality source); + + // FROM PROTO + private GaugeData mapGaugeToSdk(Gauge gauge) { + if (gauge.getDataPointsCount() > 0) { + NumberDataPoint dataPoint = gauge.getDataPoints(0); + if (dataPoint.hasAsInt()) { + return mapLongGaugeToSdk(gauge); + } else if (dataPoint.hasAsDouble()) { + return mapDoubleGaugeToSdk(gauge); + } + } + return mapDoubleGaugeToSdk(gauge); + } + + private SumData mapSumToSdk(Sum sum) { + if (sum.getDataPointsCount() > 0) { + NumberDataPoint dataPoint = sum.getDataPoints(0); + if (dataPoint.hasAsInt()) { + return mapLongSumToSdk(sum); + } else if (dataPoint.hasAsDouble()) { + return mapDoubleSumToSdk(sum); + } + } + return mapDoubleSumToSdk(sum); + } + + @InheritInverseConfiguration + @BeanMapping(resultType = SummaryDataImpl.class) + protected abstract SummaryData mapSummaryToSdk(Summary summary); + + @InheritInverseConfiguration + @BeanMapping(resultType = HistogramDataImpl.class) + protected abstract HistogramData mapHistogramToSdk(Histogram histogram); + + @InheritInverseConfiguration + @BeanMapping(resultType = ExponentialHistogramDataImpl.class) + protected abstract ExponentialHistogramData mapExponentialHistogramToSdk( + ExponentialHistogram source); + + @InheritInverseConfiguration + @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) + protected abstract ExponentialHistogramPointData + exponentialHistogramDataPointToExponentialHistogramPointData( + ExponentialHistogramDataPoint source); + + @BeanMapping(resultType = ExponentialHistogramBucketsImpl.class) + protected abstract ExponentialHistogramBuckets mapProtoBucketsToSdk( + ExponentialHistogramDataPoint.Buckets value); + + @InheritInverseConfiguration + @BeanMapping(resultType = HistogramPointDataImpl.class) + protected abstract HistogramPointData histogramDataPointToHistogramPointData( + HistogramDataPoint source); + + @InheritInverseConfiguration + @BeanMapping(resultType = DoubleExemplarDataImpl.class) + protected abstract DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source); + + @InheritInverseConfiguration + @BeanMapping(resultType = SummaryPointDataImpl.class) + protected abstract SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source); + + @BeanMapping(resultType = ValueAtQuantileImpl.class) + protected abstract ValueAtQuantile mapFromSummaryValueAtQuantileProto( + SummaryDataPoint.ValueAtQuantile source); + + @EnumMapping( + nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, + configuration = "AGGREGATION_TEMPORALITY_") + @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) + protected abstract io.opentelemetry.sdk.metrics.data.AggregationTemporality + mapAggregationTemporalityToSdk(AggregationTemporality source); + + @InheritInverseConfiguration + @BeanMapping(resultType = GaugeDataImpl.LongData.class) + protected abstract GaugeData mapLongGaugeToSdk(Gauge gauge); + + @InheritInverseConfiguration + @BeanMapping(resultType = GaugeDataImpl.DoubleData.class) + protected abstract GaugeData mapDoubleGaugeToSdk(Gauge gauge); + + @InheritInverseConfiguration + @BeanMapping(resultType = SumDataImpl.LongData.class) + protected abstract SumData mapLongSumToSdk(Sum sum); + + @InheritInverseConfiguration + @BeanMapping(resultType = SumDataImpl.DoubleData.class) + protected abstract SumData mapDoubleSumToSdk(Sum sum); + + @InheritInverseConfiguration + @BeanMapping(resultType = DoublePointDataImpl.class) + protected abstract DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source); + + @InheritInverseConfiguration + @BeanMapping(resultType = LongPointDataImpl.class) + protected abstract LongPointData mapLongNumberDataPointToSdk(NumberDataPoint source); + + @AfterMapping + protected void addAttributesFromNumberDataPoint( + NumberDataPoint source, @MappingTarget PointDataBuilder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } + + @AfterMapping + protected void addAttributesFromSummaryDataPoint( + SummaryDataPoint source, @MappingTarget SummaryPointDataImpl.Builder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } + + @AfterMapping + protected void addExtrasFromExemplar( + Exemplar source, @MappingTarget ExemplarDataBuilder target) { + target.setFilteredAttributes(protoToAttributes(source.getFilteredAttributesList())); + target.setSpanContext( + SpanContext.create( + ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + TraceState.getDefault())); + } + + private static List attributesToProto(Attributes source) { + return AttributesMapper.INSTANCE.attributesToProto(source); + } + + private static Attributes protoToAttributes(List source) { + return AttributesMapper.INSTANCE.protoToAttributes(source); + } +} From d8b47577772bd74cea951c068b77981176d9a7f9 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 21 Jun 2023 17:58:34 +0200 Subject: [PATCH 124/209] Adding validations for metric mapping --- .../proto/metrics/MetricDataMapper.java | 127 ++++++- .../proto/metrics/MetricDataMapperTest.java | 339 ++++++++++++++++++ 2 files changed, 449 insertions(+), 17 deletions(-) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java index b877970b8..54a48fcb4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java @@ -19,6 +19,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; @@ -36,6 +37,7 @@ import io.opentelemetry.proto.metrics.v1.Summary; import io.opentelemetry.proto.metrics.v1.SummaryDataPoint; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.Data; import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.ExemplarData; @@ -45,14 +47,17 @@ import io.opentelemetry.sdk.metrics.data.GaugeData; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; import io.opentelemetry.sdk.metrics.data.PointData; import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; +import java.util.ArrayList; import java.util.List; import org.mapstruct.AfterMapping; import org.mapstruct.BeanMapping; @@ -72,6 +77,8 @@ unmappedTargetPolicy = ReportingPolicy.IGNORE) public abstract class MetricDataMapper { + public static final MetricDataMapper INSTANCE = new MetricDataMapperImpl(); + public abstract Metric mapToProto(MetricData source); @BeanMapping(resultType = MetricDataImpl.class) @@ -105,26 +112,38 @@ protected void addDataToProto(MetricData source, @MappingTarget Metric.Builder t mapExponentialHistogramToProto((ExponentialHistogramData) source.getData())); break; } - throw new UnsupportedOperationException(); } @AfterMapping - protected void addDataToSdk(Metric source, @MappingTarget MetricDataImpl.Builder target) { + protected void addDataToSdk( + Metric source, + @MappingTarget MetricDataImpl.Builder target, + @Context Resource resource, + @Context InstrumentationScopeInfo scope) { + target.setResource(resource); + target.setInstrumentationScopeInfo(scope); switch (source.getDataCase()) { case GAUGE: - target.setData(mapGaugeToSdk(source.getGauge())); + DataWithType gaugeDataWithType = mapGaugeToSdk(source.getGauge()); + target.setData(gaugeDataWithType.data); + target.setType(gaugeDataWithType.type); break; case SUM: - target.setData(mapSumToSdk(source.getSum())); + DataWithType sumDataWithType = mapSumToSdk(source.getSum()); + target.setData(sumDataWithType.data); + target.setType(sumDataWithType.type); break; case SUMMARY: target.setData(mapSummaryToSdk(source.getSummary())); + target.setType(MetricDataType.SUMMARY); break; case HISTOGRAM: target.setData(mapHistogramToSdk(source.getHistogram())); + target.setType(MetricDataType.HISTOGRAM); break; case EXPONENTIAL_HISTOGRAM: target.setData(mapExponentialHistogramToSdk(source.getExponentialHistogram())); + target.setType(MetricDataType.EXPONENTIAL_HISTOGRAM); break; default: throw new UnsupportedOperationException(); @@ -158,11 +177,13 @@ protected abstract ExponentialHistogram mapExponentialHistogramToProto( @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") @Mapping(target = "timeUnixNano", source = "epochNanos") @Mapping(target = "asInt", source = "value") + @Mapping(target = "exemplarsList", source = "exemplars") protected abstract NumberDataPoint longPointDataToNumberDataPoint(LongPointData source); @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") @Mapping(target = "timeUnixNano", source = "epochNanos") @Mapping(target = "asDouble", source = "value") + @Mapping(target = "exemplarsList", source = "exemplars") protected abstract NumberDataPoint doublePointDataToNumberDataPoint(DoublePointData source); @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") @@ -171,12 +192,16 @@ protected abstract ExponentialHistogram mapExponentialHistogramToProto( protected abstract SummaryDataPoint summaryPointDataToSummaryDataPoint( SummaryPointData summaryPointData); + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") @Mapping(target = "bucketCountsList", source = "counts") @Mapping(target = "explicitBoundsList", source = "boundaries") @Mapping(target = "exemplarsList", source = "exemplars") protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( HistogramPointData histogramPointData); + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") @Mapping(target = "positive", source = "negativeBuckets") @Mapping(target = "negative", source = "positiveBuckets") @Mapping(target = "exemplarsList", source = "exemplars") @@ -184,10 +209,18 @@ protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( exponentialHistogramPointDataToExponentialHistogramDataPoint( ExponentialHistogramPointData exponentialHistogramPointData); + @Mapping(target = "bucketCountsList", source = "bucketCounts") + protected abstract ExponentialHistogramDataPoint.Buckets exponentialHistogramBucketsToBuckets( + ExponentialHistogramBuckets source); + @Mapping(target = "timeUnixNano", source = "epochNanos") @Mapping(target = "asDouble", source = "value") protected abstract Exemplar doubleExemplarDataToExemplar(DoubleExemplarData doubleExemplarData); + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asInt", source = "value") + protected abstract Exemplar longExemplarDataToExemplar(LongExemplarData doubleExemplarData); + @AfterMapping protected void addAttributesToNumberDataPoint( PointData source, @MappingTarget NumberDataPoint.Builder target) { @@ -208,6 +241,19 @@ protected void addExtrasToExemplar(ExemplarData source, @MappingTarget Exemplar. target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); } + @AfterMapping + protected void addAttributesToExponentialHistogramDataPoint( + ExponentialHistogramPointData source, + @MappingTarget ExponentialHistogramDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @AfterMapping + protected void addAttributesToHistogramDataPoint( + HistogramPointData source, @MappingTarget HistogramDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + @EnumMapping( nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, configuration = "AGGREGATION_TEMPORALITY_") @@ -215,28 +261,28 @@ protected abstract AggregationTemporality mapAggregationTemporalityToProto( io.opentelemetry.sdk.metrics.data.AggregationTemporality source); // FROM PROTO - private GaugeData mapGaugeToSdk(Gauge gauge) { + private DataWithType mapGaugeToSdk(Gauge gauge) { if (gauge.getDataPointsCount() > 0) { NumberDataPoint dataPoint = gauge.getDataPoints(0); if (dataPoint.hasAsInt()) { - return mapLongGaugeToSdk(gauge); + return new DataWithType(mapLongGaugeToSdk(gauge), MetricDataType.LONG_GAUGE); } else if (dataPoint.hasAsDouble()) { - return mapDoubleGaugeToSdk(gauge); + return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); } } - return mapDoubleGaugeToSdk(gauge); + return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); } - private SumData mapSumToSdk(Sum sum) { + private DataWithType mapSumToSdk(Sum sum) { if (sum.getDataPointsCount() > 0) { NumberDataPoint dataPoint = sum.getDataPoints(0); if (dataPoint.hasAsInt()) { - return mapLongSumToSdk(sum); + return new DataWithType(mapLongSumToSdk(sum), MetricDataType.LONG_SUM); } else if (dataPoint.hasAsDouble()) { - return mapDoubleSumToSdk(sum); + return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); } } - return mapDoubleSumToSdk(sum); + return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); } @InheritInverseConfiguration @@ -252,16 +298,12 @@ private SumData mapSumToSdk(Sum sum) { protected abstract ExponentialHistogramData mapExponentialHistogramToSdk( ExponentialHistogram source); - @InheritInverseConfiguration + @Mapping(target = "exemplars", source = "exemplarsList") @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) protected abstract ExponentialHistogramPointData exponentialHistogramDataPointToExponentialHistogramPointData( ExponentialHistogramDataPoint source); - @BeanMapping(resultType = ExponentialHistogramBucketsImpl.class) - protected abstract ExponentialHistogramBuckets mapProtoBucketsToSdk( - ExponentialHistogramDataPoint.Buckets value); - @InheritInverseConfiguration @BeanMapping(resultType = HistogramPointDataImpl.class) protected abstract HistogramPointData histogramDataPointToHistogramPointData( @@ -271,6 +313,10 @@ protected abstract HistogramPointData histogramDataPointToHistogramPointData( @BeanMapping(resultType = DoubleExemplarDataImpl.class) protected abstract DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source); + @InheritInverseConfiguration + @BeanMapping(resultType = LongExemplarDataImpl.class) + protected abstract LongExemplarData exemplarToLongExemplarData(Exemplar source); + @InheritInverseConfiguration @BeanMapping(resultType = SummaryPointDataImpl.class) protected abstract SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source); @@ -322,6 +368,12 @@ protected void addAttributesFromSummaryDataPoint( target.setAttributes(protoToAttributes(source.getAttributesList())); } + @AfterMapping + protected void addAttributesFromHistogramDataPoint( + HistogramDataPoint source, @MappingTarget HistogramPointDataImpl.Builder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } + @AfterMapping protected void addExtrasFromExemplar( Exemplar source, @MappingTarget ExemplarDataBuilder target) { @@ -334,6 +386,37 @@ protected void addExtrasFromExemplar( TraceState.getDefault())); } + @AfterMapping + protected void addBucketsExtrasFromProto( + ExponentialHistogramDataPoint source, + @MappingTarget ExponentialHistogramPointDataImpl.Builder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + target.setStartEpochNanos(source.getStartTimeUnixNano()); + target.setEpochNanos(source.getTimeUnixNano()); + if (source.hasPositive()) { + target.setPositiveBuckets(mapBucketsFromProto(source.getPositive(), source.getScale())); + } + if (source.hasNegative()) { + target.setNegativeBuckets(mapBucketsFromProto(source.getNegative(), source.getScale())); + } + } + + protected ExponentialHistogramBuckets mapBucketsFromProto( + ExponentialHistogramDataPoint.Buckets source, Integer scale) { + List bucketCounts = new ArrayList<>(); + long totalCount = 0; + for (Long bucketCount : source.getBucketCountsList()) { + bucketCounts.add(bucketCount); + totalCount += bucketCount; + } + return ExponentialHistogramBucketsImpl.builder() + .setOffset(source.getOffset()) + .setBucketCounts(bucketCounts) + .setTotalCount(totalCount) + .setScale(scale) + .build(); + } + private static List attributesToProto(Attributes source) { return AttributesMapper.INSTANCE.attributesToProto(source); } @@ -341,4 +424,14 @@ private static List attributesToProto(Attributes source) { private static Attributes protoToAttributes(List source) { return AttributesMapper.INSTANCE.protoToAttributes(source); } + + private static final class DataWithType { + public final Data data; + public final MetricDataType type; + + private DataWithType(Data data, MetricDataType type) { + this.data = data; + this.type = type; + } + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java new file mode 100644 index 000000000..4ef6ea7cb --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java @@ -0,0 +1,339 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.metrics.v1.Metric; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; +import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.data.GaugeData; +import io.opentelemetry.sdk.metrics.data.HistogramData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.metrics.data.SumData; +import io.opentelemetry.sdk.metrics.data.SummaryData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.resources.Resource; +import java.util.Arrays; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +@SuppressWarnings("UnusedVariable") +class MetricDataMapperTest { + + private static final LongExemplarData LONG_EXEMPLAR_DATA = + LongExemplarDataImpl.builder() + .setValue(1L) + .setEpochNanos(100L) + .setFilteredAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT) + .build(); + + private static final DoubleExemplarData DOUBLE_EXEMPLAR_DATA = + DoubleExemplarDataImpl.builder() + .setValue(1.0) + .setEpochNanos(100L) + .setFilteredAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT) + .build(); + private static final LongPointData LONG_POINT_DATA = + LongPointDataImpl.builder() + .setValue(1L) + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(2L) + .setStartEpochNanos(1L) + .setExemplars(Collections.singletonList(LONG_EXEMPLAR_DATA)) + .build(); + + private static final DoublePointData DOUBLE_POINT_DATA = + DoublePointDataImpl.builder() + .setValue(1.0) + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(2L) + .setStartEpochNanos(1L) + .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) + .build(); + + private static final GaugeData LONG_GAUGE_DATA = + GaugeDataImpl.LongData.builder() + .setPoints(Collections.singletonList(LONG_POINT_DATA)) + .build(); + + private static final GaugeData DOUBLE_GAUGE_DATA = + GaugeDataImpl.DoubleData.builder() + .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) + .build(); + + private static final SumData LONG_SUM_DATA = + SumDataImpl.LongData.builder() + .setMonotonic(true) + .setAggregationTemporality(AggregationTemporality.DELTA) + .setPoints(Collections.singletonList(LONG_POINT_DATA)) + .build(); + + private static final SumData DOUBLE_SUM_DATA = + SumDataImpl.DoubleData.builder() + .setMonotonic(true) + .setAggregationTemporality(AggregationTemporality.DELTA) + .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) + .build(); + + private static final ValueAtQuantileImpl VALUE_AT_QUANTILE = + ValueAtQuantileImpl.builder().setValue(1.0).setQuantile(2.0).build(); + private static final SummaryPointData SUMMARY_POINT_DATA = + SummaryPointDataImpl.builder() + .setCount(1L) + .setSum(2.0) + .setStartEpochNanos(1L) + .setEpochNanos(2L) + .setAttributes(TestData.ATTRIBUTES) + .setValues(Collections.singletonList(VALUE_AT_QUANTILE)) + .build(); + + private static final SummaryData SUMMARY_DATA = + SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); + + private static final HistogramPointData HISTOGRAM_POINT_DATA = + HistogramPointDataImpl.builder() + .setCount(3L) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEpochNanos(2L) + .setSum(15.0) + .setMin(4.0) + .setMax(7.0) + .setBoundaries(Collections.singletonList(10.0)) + .setCounts(Arrays.asList(1L, 2L)) + .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) + .build(); + + private static final ExponentialHistogramBuckets POSITIVE_BUCKET = + ExponentialHistogramBucketsImpl.builder() + .setBucketCounts(Arrays.asList(1L, 10L)) + .setTotalCount(11L) + .setOffset(10) + .setScale(1) + .build(); + + private static final ExponentialHistogramBuckets NEGATIVE_BUCKET = + ExponentialHistogramBucketsImpl.builder() + .setBucketCounts(Collections.emptyList()) + .setTotalCount(0L) + .setOffset(0) + .setScale(1) + .build(); + + private static final ExponentialHistogramPointData EXPONENTIAL_HISTOGRAM_POINT_DATA = + ExponentialHistogramPointDataImpl.builder() + .setCount(1L) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEpochNanos(2L) + .setSum(10.0) + .setMin(2.0) + .setMax(4.0) + .setZeroCount(1L) + .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) + .setPositiveBuckets(POSITIVE_BUCKET) + .setNegativeBuckets(NEGATIVE_BUCKET) + .setScale(1) + .build(); + private static final HistogramData HISTOGRAM_DATA = + HistogramDataImpl.builder() + .setAggregationTemporality(AggregationTemporality.CUMULATIVE) + .setPoints(Collections.singletonList(HISTOGRAM_POINT_DATA)) + .build(); + + private static final ExponentialHistogramData EXPONENTIAL_HISTOGRAM_DATA = + ExponentialHistogramDataImpl.builder() + .setAggregationTemporality(AggregationTemporality.CUMULATIVE) + .setPoints(Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)) + .build(); + + private static final MetricData LONG_GAUGE_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Long gauge name") + .setDescription("Long gauge description") + .setUnit("ms") + .setType(MetricDataType.LONG_GAUGE) + .setData(LONG_GAUGE_DATA) + .build(); + + private static final MetricData DOUBLE_GAUGE_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Double gauge name") + .setDescription("Double gauge description") + .setUnit("ms") + .setType(MetricDataType.DOUBLE_GAUGE) + .setData(DOUBLE_GAUGE_DATA) + .build(); + + private static final MetricData LONG_SUM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Long sum name") + .setDescription("Long sum description") + .setUnit("ms") + .setType(MetricDataType.LONG_SUM) + .setData(LONG_SUM_DATA) + .build(); + + private static final MetricData DOUBLE_SUM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Double sum name") + .setDescription("Double sum description") + .setUnit("ms") + .setType(MetricDataType.DOUBLE_SUM) + .setData(DOUBLE_SUM_DATA) + .build(); + + private static final MetricData SUMMARY_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Summary name") + .setDescription("Summary description") + .setUnit("ms") + .setType(MetricDataType.SUMMARY) + .setData(SUMMARY_DATA) + .build(); + + private static final MetricData HISTOGRAM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Histogram name") + .setDescription("Histogram description") + .setUnit("ms") + .setType(MetricDataType.HISTOGRAM) + .setData(HISTOGRAM_DATA) + .build(); + + private static final MetricData EXPONENTIAL_HISTOGRAM_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Exponential histogram name") + .setDescription("Exponential histogram description") + .setUnit("ms") + .setType(MetricDataType.EXPONENTIAL_HISTOGRAM) + .setData(EXPONENTIAL_HISTOGRAM_DATA) + .build(); + + @Test + public void verifyLongGaugeMapping() { + Metric proto = mapToProto(LONG_GAUGE_METRIC); + + assertEquals( + LONG_GAUGE_METRIC, + mapToSdk( + proto, + LONG_GAUGE_METRIC.getResource(), + LONG_GAUGE_METRIC.getInstrumentationScopeInfo())); + } + + @Test + public void verifyDoubleGaugeMapping() { + Metric proto = mapToProto(DOUBLE_GAUGE_METRIC); + + assertEquals( + DOUBLE_GAUGE_METRIC, + mapToSdk( + proto, + DOUBLE_GAUGE_METRIC.getResource(), + DOUBLE_GAUGE_METRIC.getInstrumentationScopeInfo())); + } + + @Test + public void verifyLongSumMapping() { + Metric proto = mapToProto(LONG_SUM_METRIC); + + assertEquals( + LONG_SUM_METRIC, + mapToSdk( + proto, LONG_SUM_METRIC.getResource(), LONG_SUM_METRIC.getInstrumentationScopeInfo())); + } + + @Test + public void verifyDoubleSumMapping() { + Metric proto = mapToProto(DOUBLE_SUM_METRIC); + + assertEquals( + DOUBLE_SUM_METRIC, + mapToSdk( + proto, + DOUBLE_SUM_METRIC.getResource(), + DOUBLE_SUM_METRIC.getInstrumentationScopeInfo())); + } + + @Test + public void verifySummaryMapping() { + Metric proto = mapToProto(SUMMARY_METRIC); + + assertEquals( + SUMMARY_METRIC, + mapToSdk( + proto, SUMMARY_METRIC.getResource(), SUMMARY_METRIC.getInstrumentationScopeInfo())); + } + + @Test + public void verifyHistogramMapping() { + Metric proto = mapToProto(HISTOGRAM_METRIC); + + assertEquals( + HISTOGRAM_METRIC, + mapToSdk( + proto, HISTOGRAM_METRIC.getResource(), HISTOGRAM_METRIC.getInstrumentationScopeInfo())); + } + + @Test + public void verifyExponentialHistogramMapping() { + Metric proto = mapToProto(EXPONENTIAL_HISTOGRAM_METRIC); + + assertEquals( + EXPONENTIAL_HISTOGRAM_METRIC, + mapToSdk( + proto, + EXPONENTIAL_HISTOGRAM_METRIC.getResource(), + EXPONENTIAL_HISTOGRAM_METRIC.getInstrumentationScopeInfo())); + } + + private static Metric mapToProto(MetricData source) { + return MetricDataMapper.INSTANCE.mapToProto(source); + } + + private static MetricData mapToSdk( + Metric source, Resource resource, InstrumentationScopeInfo scope) { + return MetricDataMapper.INSTANCE.mapToSdk(source, resource, scope); + } +} From b915182e4478f9a381cff053c717c66c4ccd9b95 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 21 Jun 2023 18:06:58 +0200 Subject: [PATCH 125/209] Adding validations for metric mapping --- .../mapping/proto/metrics/MetricDataMapper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java index 54a48fcb4..d79f6146b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java @@ -202,14 +202,15 @@ protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "positive", source = "negativeBuckets") - @Mapping(target = "negative", source = "positiveBuckets") + @Mapping(target = "positive", source = "positiveBuckets") + @Mapping(target = "negative", source = "negativeBuckets") @Mapping(target = "exemplarsList", source = "exemplars") protected abstract ExponentialHistogramDataPoint exponentialHistogramPointDataToExponentialHistogramDataPoint( ExponentialHistogramPointData exponentialHistogramPointData); @Mapping(target = "bucketCountsList", source = "bucketCounts") + @Mapping(target = "offset") protected abstract ExponentialHistogramDataPoint.Buckets exponentialHistogramBucketsToBuckets( ExponentialHistogramBuckets source); From dc314084ca156a3b618473d22eb7b7370e10a373 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 22 Jun 2023 11:23:22 +0200 Subject: [PATCH 126/209] Clean up --- .../mapping/proto/metrics/MetricDataMapperTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java index 4ef6ea7cb..e5701ef2c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java @@ -41,7 +41,6 @@ import java.util.Collections; import org.junit.jupiter.api.Test; -@SuppressWarnings("UnusedVariable") class MetricDataMapperTest { private static final LongExemplarData LONG_EXEMPLAR_DATA = From 914d4e5983b5dca29fa3c03fce5713a009a53943 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 22 Jun 2023 13:42:57 +0200 Subject: [PATCH 127/209] Mapping proto SpanData --- .../mapping/proto/spans/SpanDataMapper.java | 208 ++++++++++++++++++ .../proto/spans/SpanDataMapperTest.java | 103 +++++++++ 2 files changed, 311 insertions(+) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java new file mode 100644 index 000000000..135a2ff20 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java @@ -0,0 +1,208 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.api.trace.propagation.internal.W3CTraceContextEncoding; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.proto.common.v1.KeyValue; +import io.opentelemetry.proto.trace.v1.Span; +import io.opentelemetry.proto.trace.v1.Status; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.LinkData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.List; +import javax.annotation.Nullable; +import org.mapstruct.AfterMapping; +import org.mapstruct.BeanMapping; +import org.mapstruct.CollectionMappingStrategy; +import org.mapstruct.Context; +import org.mapstruct.EnumMapping; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.ValueMapping; + +@Mapper( + uses = ByteStringMapper.class, + collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class SpanDataMapper { + + public static final SpanDataMapper INSTANCE = new SpanDataMapperImpl(); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "endTimeUnixNano", source = "endEpochNanos") + @Mapping(target = "eventsList", source = "events") + @Mapping(target = "linksList", source = "links") + public abstract Span mapToProto(SpanData source); + + @InheritInverseConfiguration + @BeanMapping(resultType = SpanDataImpl.class) + public abstract SpanData mapToSdk( + Span source, + @Context Resource resource, + @Context InstrumentationScopeInfo instrumentationScopeInfo); + + @Mapping(target = "timeUnixNano", source = "epochNanos") + protected abstract Span.Event eventDataToProto(EventData source); + + protected Span.Link linkDataToProto(LinkData source) { + Span.Link.Builder builder = Span.Link.newBuilder(); + SpanContext spanContext = source.getSpanContext(); + builder.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + builder.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + builder.addAllAttributes(attributesToProto(source.getAttributes())); + builder.setDroppedAttributesCount( + source.getTotalAttributeCount() - source.getAttributes().size()); + builder.setTraceState(encodeTraceState(spanContext.getTraceState())); + + return builder.build(); + } + + @Mapping(target = "message", source = "description") + @Mapping(target = "code", source = "statusCode") + protected abstract Status statusDataToProto(StatusData source); + + @AfterMapping + protected void addSpanProtoExtras(SpanData source, @MappingTarget Span.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + target.setDroppedAttributesCount( + source.getTotalAttributeCount() - source.getAttributes().size()); + target.setDroppedEventsCount(source.getTotalRecordedEvents() - getListSize(source.getEvents())); + target.setDroppedLinksCount(source.getTotalRecordedLinks() - getListSize(source.getLinks())); + target.setTraceState(encodeTraceState(source.getSpanContext().getTraceState())); + } + + @AfterMapping + protected void addEventProtoExtras(EventData source, @MappingTarget Span.Event.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @EnumMapping( + nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, + configuration = "SPAN_KIND_") + protected abstract Span.SpanKind mapSpanKindToProto(SpanKind source); + + @EnumMapping( + nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, + configuration = "STATUS_CODE_") + protected abstract Status.StatusCode mapStatusCodeToProto(StatusCode source); + + // FROM PROTO + protected StatusData mapStatusDataToSdk(Status source) { + return StatusData.create(getStatusCode(source.getCodeValue()), source.getMessage()); + } + + @InheritInverseConfiguration + @BeanMapping(resultType = EventDataImpl.class) + protected abstract EventData eventDataToSdk(Span.Event source); + + protected LinkData linkDataToSdk(Span.Link source) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + int totalAttrCount = source.getDroppedAttributesCount() + attributes.size(); + SpanContext spanContext = + SpanContext.create( + ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + decodeTraceState(source.getTraceState())); + return LinkData.create(spanContext, attributes, totalAttrCount); + } + + @AfterMapping + protected void addEventSdkExtras(Span.Event source, @MappingTarget EventDataImpl.Builder target) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + target.setAttributes(attributes); + target.setTotalAttributeCount(attributes.size() + source.getDroppedAttributesCount()); + } + + @AfterMapping + protected void addSpanDataExtras( + Span source, + @MappingTarget SpanDataImpl.Builder target, + @Context Resource resource, + @Context InstrumentationScopeInfo instrumentationScopeInfo) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + target.setAttributes(attributes); + target.setResource(resource); + target.setInstrumentationScopeInfo(instrumentationScopeInfo); + String traceId = ByteStringMapper.INSTANCE.protoToString(source.getTraceId()); + target.setSpanContext( + SpanContext.create( + traceId, + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + decodeTraceState(source.getTraceState()))); + target.setParentSpanContext( + SpanContext.create( + traceId, + ByteStringMapper.INSTANCE.protoToString(source.getParentSpanId()), + TraceFlags.getSampled(), + TraceState.getDefault())); + target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); + target.setTotalRecordedEvents( + calculateRecordedItems(source.getDroppedEventsCount(), source.getEventsCount())); + target.setTotalRecordedLinks( + calculateRecordedItems(source.getDroppedLinksCount(), source.getLinksCount())); + } + + @EnumMapping( + nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, + configuration = "SPAN_KIND_") + @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) + protected abstract SpanKind mapSpanKindToSdk(Span.SpanKind source); + + private static int calculateRecordedItems(int droppedCount, int itemsCount) { + return droppedCount + itemsCount; + } + + private static StatusCode getStatusCode(int ordinal) { + for (StatusCode statusCode : StatusCode.values()) { + if (statusCode.ordinal() == ordinal) { + return statusCode; + } + } + throw new IllegalArgumentException(); + } + + private static List attributesToProto(Attributes source) { + return AttributesMapper.INSTANCE.attributesToProto(source); + } + + private static Attributes protoToAttributes(List source) { + return AttributesMapper.INSTANCE.protoToAttributes(source); + } + + private static int getListSize(List list) { + if (list == null) { + return 0; + } + return list.size(); + } + + private static String encodeTraceState(TraceState traceState) { + if (!traceState.isEmpty()) { + return W3CTraceContextEncoding.encodeTraceState(traceState); + } + return ""; + } + + private static TraceState decodeTraceState(@Nullable String source) { + return (source == null || source.isEmpty()) + ? TraceState.getDefault() + : W3CTraceContextEncoding.decodeTraceState(source); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java new file mode 100644 index 000000000..d5b2ea551 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java @@ -0,0 +1,103 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.trace.v1.Span; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.LinkData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.Arrays; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +class SpanDataMapperTest { + + private static final EventData EVENT_DATA = + EventDataImpl.builder() + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(1L) + .setName("Event name") + .setTotalAttributeCount(10) + .build(); + + private static final LinkData LINK_DATA = + LinkData.create(TestData.SPAN_CONTEXT, TestData.ATTRIBUTES, 20); + + private static final LinkData LINK_DATA_WITH_TRACE_STATE = + LinkData.create(TestData.SPAN_CONTEXT_WITH_TRACE_STATE, TestData.ATTRIBUTES, 20); + + private static final SpanData SPAN_DATA = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Span name") + .setSpanContext(TestData.SPAN_CONTEXT) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Arrays.asList(LINK_DATA, LINK_DATA_WITH_TRACE_STATE)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + private static final SpanData SPAN_DATA_WITH_TRACE_STATE = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Span name2") + .setSpanContext(TestData.SPAN_CONTEXT_WITH_TRACE_STATE) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Collections.singletonList(LINK_DATA)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + @Test + public void verifyMapping() { + Span proto = mapToProto(SPAN_DATA); + + assertEquals( + SPAN_DATA, + mapToSdk(proto, SPAN_DATA.getResource(), SPAN_DATA.getInstrumentationScopeInfo())); + } + + @Test + public void verifyMappingWithTraceState() { + Span proto = mapToProto(SPAN_DATA_WITH_TRACE_STATE); + + assertEquals( + SPAN_DATA_WITH_TRACE_STATE, + mapToSdk( + proto, + SPAN_DATA_WITH_TRACE_STATE.getResource(), + SPAN_DATA_WITH_TRACE_STATE.getInstrumentationScopeInfo())); + } + + private static Span mapToProto(SpanData source) { + return SpanDataMapper.INSTANCE.mapToProto(source); + } + + private static SpanData mapToSdk( + Span source, Resource resource, InstrumentationScopeInfo instrumentationScopeInfo) { + return SpanDataMapper.INSTANCE.mapToSdk(source, resource, instrumentationScopeInfo); + } +} From 7d02197e89df7df873598ef49f5435729d20e39c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 22 Jun 2023 16:15:05 +0200 Subject: [PATCH 128/209] Replacing JSON with DTO words --- .../common/BaseResourceSignalsDataMapper.java | 50 +++++++++---------- .../mapping/logs/ResourceLogsDataMapper.java | 8 +-- .../metrics/ResourceMetricsDataMapper.java | 8 +-- .../spans/ResourceSpansDataMapper.java | 8 +-- .../serializers/LogRecordDataSerializer.java | 4 +- .../serializers/MetricDataSerializer.java | 4 +- .../serializers/SpanDataSerializer.java | 4 +- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java index 3821c77f0..d9f39a644 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java @@ -22,52 +22,52 @@ public abstract class BaseResourceSignalsDataMapper< SDK_ITEM, - JSON_ITEM, - JSON_SCOPE extends ScopeSignals, - JSON_RESOURCE extends ResourceSignals, - JSON_RESOURCE_DATA extends ResourceSignalsData> { - - public JSON_RESOURCE_DATA toJsonDto(Collection sourceItems) { - Map itemsByResourceAndScope = new HashMap<>(); - Map scopeInfoToScopeSignals = new HashMap<>(); + DTO_ITEM, + DTO_SCOPE extends ScopeSignals, + DTO_RESOURCE extends ResourceSignals, + DTO_RESOURCE_DATA extends ResourceSignalsData> { + + public DTO_RESOURCE_DATA toDtoItems(Collection sourceItems) { + Map itemsByResourceAndScope = new HashMap<>(); + Map scopeInfoToScopeSignals = new HashMap<>(); sourceItems.forEach( sourceData -> { Resource resource = getResource(sourceData); InstrumentationScopeInfo instrumentationScopeInfo = getInstrumentationScopeInfo(sourceData); - JSON_RESOURCE itemsByResource = itemsByResourceAndScope.get(resource); + DTO_RESOURCE itemsByResource = itemsByResourceAndScope.get(resource); if (itemsByResource == null) { - itemsByResource = resourceSignalToJson(resource); + itemsByResource = resourceSignalToDto(resource); itemsByResourceAndScope.put(resource, itemsByResource); } - JSON_SCOPE scopeSignals = scopeInfoToScopeSignals.get(instrumentationScopeInfo); + DTO_SCOPE scopeSignals = scopeInfoToScopeSignals.get(instrumentationScopeInfo); if (scopeSignals == null) { - scopeSignals = instrumentationScopeToJson(instrumentationScopeInfo); + scopeSignals = instrumentationScopeToDto(instrumentationScopeInfo); scopeInfoToScopeSignals.put(instrumentationScopeInfo, scopeSignals); itemsByResource.addScopeSignalsItem(scopeSignals); } - scopeSignals.addSignalItem(signalItemToJson(sourceData)); + scopeSignals.addSignalItem(signalItemToDto(sourceData)); }); return createResourceData(itemsByResourceAndScope.values()); } - public List fromJsonDto(JSON_RESOURCE_DATA json) { + public List fromDtoItems(DTO_RESOURCE_DATA dtoResourceData) { List result = new ArrayList<>(); - for (ResourceSignals> resourceSignal : - json.getResourceSignals()) { + for (ResourceSignals> resourceSignal : + dtoResourceData.getResourceSignals()) { Resource resource = ResourceMapper.INSTANCE.jsonToResource( Objects.requireNonNull(resourceSignal.resource), resourceSignal.schemaUrl); - for (ScopeSignals scopeSignals : resourceSignal.getScopeSignals()) { + for (ScopeSignals scopeSignals : resourceSignal.getScopeSignals()) { InstrumentationScopeInfo scopeInfo = jsonToInstrumentationScopeInfo( Objects.requireNonNull(scopeSignals.scope), scopeSignals.schemaUrl); - for (JSON_ITEM item : scopeSignals.getSignalItems()) { - result.add(jsonToSignalItem(item, resource, scopeInfo)); + for (DTO_ITEM item : scopeSignals.getSignalItems()) { + result.add(dtoToSignalItem(item, resource, scopeInfo)); } } } @@ -89,17 +89,17 @@ private static InstrumentationScopeInfo jsonToInstrumentationScopeInfo( return builder.build(); } - protected abstract JSON_ITEM signalItemToJson(SDK_ITEM sourceData); + protected abstract DTO_ITEM signalItemToDto(SDK_ITEM sourceData); - protected abstract JSON_RESOURCE resourceSignalToJson(Resource resource); + protected abstract DTO_RESOURCE resourceSignalToDto(Resource resource); - protected abstract JSON_SCOPE instrumentationScopeToJson( + protected abstract DTO_SCOPE instrumentationScopeToDto( InstrumentationScopeInfo instrumentationScopeInfo); - protected abstract SDK_ITEM jsonToSignalItem( - JSON_ITEM jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo); + protected abstract SDK_ITEM dtoToSignalItem( + DTO_ITEM dtoItem, Resource resource, InstrumentationScopeInfo scopeInfo); - protected abstract JSON_RESOURCE_DATA createResourceData(Collection items); + protected abstract DTO_RESOURCE_DATA createResourceData(Collection items); protected abstract Resource getResource(SDK_ITEM source); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java index 75af29a32..9b7b7456b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java @@ -24,23 +24,23 @@ public final class ResourceLogsDataMapper private ResourceLogsDataMapper() {} @Override - protected LogRecordDataJson signalItemToJson(LogRecordData sourceData) { + protected LogRecordDataJson signalItemToDto(LogRecordData sourceData) { return LogRecordMapper.INSTANCE.logToJson(sourceData); } @Override - protected ResourceLogs resourceSignalToJson(Resource resource) { + protected ResourceLogs resourceSignalToDto(Resource resource) { return ResourceLogsMapper.INSTANCE.resourceLogsToJson(resource); } @Override - protected ScopeLogs instrumentationScopeToJson( + protected ScopeLogs instrumentationScopeToDto( InstrumentationScopeInfo instrumentationScopeInfo) { return ScopeLogsMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); } @Override - protected LogRecordData jsonToSignalItem( + protected LogRecordData dtoToSignalItem( LogRecordDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { return LogRecordMapper.INSTANCE.jsonToLog(jsonItem, resource, scopeInfo); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java index 8b269b935..1844920f5 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java @@ -24,23 +24,23 @@ public final class ResourceMetricsDataMapper private ResourceMetricsDataMapper() {} @Override - protected MetricDataJson signalItemToJson(MetricData sourceData) { + protected MetricDataJson signalItemToDto(MetricData sourceData) { return MetricMapper.INSTANCE.metricToJson(sourceData); } @Override - protected ResourceMetrics resourceSignalToJson(Resource resource) { + protected ResourceMetrics resourceSignalToDto(Resource resource) { return ResourceMetricsMapper.INSTANCE.resourceMetricsToJson(resource); } @Override - protected ScopeMetrics instrumentationScopeToJson( + protected ScopeMetrics instrumentationScopeToDto( InstrumentationScopeInfo instrumentationScopeInfo) { return ScopeMetricsMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); } @Override - protected MetricData jsonToSignalItem( + protected MetricData dtoToSignalItem( MetricDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { return MetricMapper.INSTANCE.jsonMetricToMetric(jsonItem, resource, scopeInfo); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java index 8fee0be71..f284ad2e3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java @@ -24,23 +24,23 @@ public final class ResourceSpansDataMapper private ResourceSpansDataMapper() {} @Override - protected SpanDataJson signalItemToJson(SpanData sourceData) { + protected SpanDataJson signalItemToDto(SpanData sourceData) { return SpanDataMapper.INSTANCE.spanDataToJson(sourceData); } @Override - protected ResourceSpans resourceSignalToJson(Resource resource) { + protected ResourceSpans resourceSignalToDto(Resource resource) { return ResourceSpansMapper.INSTANCE.resourceSpansToJson(resource); } @Override - protected ScopeSpan instrumentationScopeToJson( + protected ScopeSpan instrumentationScopeToDto( InstrumentationScopeInfo instrumentationScopeInfo) { return ScopeSpansMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); } @Override - protected SpanData jsonToSignalItem( + protected SpanData dtoToSignalItem( SpanDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { return SpanDataMapper.INSTANCE.jsonToSpanData(jsonItem, resource, scopeInfo); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index 9ade24893..cb93b3ec0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -28,7 +28,7 @@ static LogRecordDataSerializer get() { @Override public byte[] serialize(Collection logRecordData) { try { - return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toJsonDto(logRecordData)); + return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toDtoItems(logRecordData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -37,7 +37,7 @@ public byte[] serialize(Collection logRecordData) { @Override public List deserialize(byte[] source) { try { - return ResourceLogsDataMapper.INSTANCE.fromJsonDto( + return ResourceLogsDataMapper.INSTANCE.fromDtoItems( JsonSerializer.deserialize(ResourceLogsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 05b13ec78..3e3161f65 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -28,7 +28,7 @@ static MetricDataSerializer get() { @Override public byte[] serialize(Collection metricData) { try { - return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toJsonDto(metricData)); + return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toDtoItems(metricData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -37,7 +37,7 @@ public byte[] serialize(Collection metricData) { @Override public List deserialize(byte[] source) { try { - return ResourceMetricsDataMapper.INSTANCE.fromJsonDto( + return ResourceMetricsDataMapper.INSTANCE.fromDtoItems( JsonSerializer.deserialize(ResourceMetricsData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index b11ddc20f..36fff3bf1 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -28,7 +28,7 @@ static SpanDataSerializer get() { @Override public byte[] serialize(Collection spanData) { try { - return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toJsonDto(spanData)); + return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toDtoItems(spanData)); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -37,7 +37,7 @@ public byte[] serialize(Collection spanData) { @Override public List deserialize(byte[] source) { try { - return ResourceSpansDataMapper.INSTANCE.fromJsonDto( + return ResourceSpansDataMapper.INSTANCE.fromDtoItems( JsonSerializer.deserialize(ResourceSpansData.class, source)); } catch (IOException e) { throw new IllegalArgumentException(e); From 525fd52d06b107b265cd2bcb094132709b30b0bf Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:06:53 +0200 Subject: [PATCH 129/209] Creating proto data mappers --- .../common/BaseProtoSignalsDataMapper.java | 127 ++++++++++++++++++ .../proto/logs/ProtoLogsDataMapper.java | 92 +++++++++++++ .../proto/metrics/ProtoMetricsDataMapper.java | 92 +++++++++++++ .../proto/spans/ProtoSpansDataMapper.java | 92 +++++++++++++ 4 files changed, 403 insertions(+) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java new file mode 100644 index 000000000..416f0dae5 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java @@ -0,0 +1,127 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.proto.common.v1.InstrumentationScope; +import io.opentelemetry.proto.common.v1.KeyValue; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.common.InstrumentationScopeInfoBuilder; +import io.opentelemetry.sdk.resources.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Nullable; + +public abstract class BaseProtoSignalsDataMapper< + SIGNAL_ITEM, PROTO_SIGNAL_ITEM, PROTO_DATA, PROTO_RESOURCE_ITEM, PROTO_SCOPE_ITEM> { + + public PROTO_DATA toProto(Collection sourceItems) { + Map>> itemsByResourceAndScope = + new HashMap<>(); + sourceItems.forEach( + sourceData -> { + Resource resource = getResourceFromSignal(sourceData); + InstrumentationScopeInfo instrumentationScopeInfo = + getInstrumentationScopeInfo(sourceData); + + Map> itemsByResource = + itemsByResourceAndScope.get(resource); + if (itemsByResource == null) { + itemsByResource = new HashMap<>(); + itemsByResourceAndScope.put(resource, itemsByResource); + } + + List scopeSignals = itemsByResource.get(instrumentationScopeInfo); + if (scopeSignals == null) { + scopeSignals = new ArrayList<>(); + itemsByResource.put(instrumentationScopeInfo, scopeSignals); + } + + scopeSignals.add(signalItemToProto(sourceData)); + }); + + return createProtoData(itemsByResourceAndScope); + } + + public List fromProto(PROTO_DATA protoData) { + List result = new ArrayList<>(); + for (PROTO_RESOURCE_ITEM resourceSignal : getProtoResources(protoData)) { + Resource resource = getResourceFromProto(resourceSignal); + for (PROTO_SCOPE_ITEM scopeSignals : getScopes(resourceSignal)) { + InstrumentationScopeInfo scopeInfo = getInstrumentationScopeFromProto(scopeSignals); + for (PROTO_SIGNAL_ITEM item : getSignalsFromProto(scopeSignals)) { + result.add(protoToSignalItem(item, resource, scopeInfo)); + } + } + } + + return result; + } + + protected io.opentelemetry.proto.resource.v1.Resource resourceToProto(Resource resource) { + return ResourceMapper.INSTANCE.mapToProto(resource); + } + + protected Resource protoToResource( + io.opentelemetry.proto.resource.v1.Resource protoResource, String schemaUrl) { + return ResourceMapper.INSTANCE.mapToSdk(protoResource, schemaUrl); + } + + protected InstrumentationScopeInfo protoToInstrumentationScopeInfo( + InstrumentationScope scope, @Nullable String schemaUrl) { + InstrumentationScopeInfoBuilder builder = InstrumentationScopeInfo.builder(scope.getName()); + builder.setVersion(scope.getVersion()); + builder.setAttributes(protoToAttributes(scope.getAttributesList())); + if (schemaUrl != null) { + builder.setSchemaUrl(schemaUrl); + } + return builder.build(); + } + + protected InstrumentationScope instrumentationScopeToProto(InstrumentationScopeInfo source) { + InstrumentationScope.Builder builder = + InstrumentationScope.newBuilder().setName(source.getName()); + if (source.getVersion() != null) { + builder.setVersion(source.getVersion()); + } + builder.addAllAttributes(attributesToProto(source.getAttributes())); + return builder.build(); + } + + protected abstract PROTO_SIGNAL_ITEM signalItemToProto(SIGNAL_ITEM sourceData); + + protected abstract SIGNAL_ITEM protoToSignalItem( + PROTO_SIGNAL_ITEM protoSignalItem, Resource resource, InstrumentationScopeInfo scopeInfo); + + protected abstract List getProtoResources(PROTO_DATA protoData); + + protected abstract PROTO_DATA createProtoData( + Map>> itemsByResource); + + protected abstract List getSignalsFromProto(PROTO_SCOPE_ITEM scopeSignals); + + protected abstract InstrumentationScopeInfo getInstrumentationScopeFromProto( + PROTO_SCOPE_ITEM scopeSignals); + + protected abstract List getScopes(PROTO_RESOURCE_ITEM resourceSignal); + + protected abstract Resource getResourceFromProto(PROTO_RESOURCE_ITEM resourceSignal); + + protected abstract Resource getResourceFromSignal(SIGNAL_ITEM source); + + protected abstract InstrumentationScopeInfo getInstrumentationScopeInfo(SIGNAL_ITEM source); + + private static List attributesToProto(Attributes source) { + return AttributesMapper.INSTANCE.attributesToProto(source); + } + + private static Attributes protoToAttributes(List source) { + return AttributesMapper.INSTANCE.protoToAttributes(source); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java new file mode 100644 index 000000000..bab829e4d --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java @@ -0,0 +1,92 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.BaseProtoSignalsDataMapper; +import io.opentelemetry.proto.logs.v1.LogRecord; +import io.opentelemetry.proto.logs.v1.LogsData; +import io.opentelemetry.proto.logs.v1.ResourceLogs; +import io.opentelemetry.proto.logs.v1.ScopeLogs; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.sdk.resources.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ProtoLogsDataMapper + extends BaseProtoSignalsDataMapper< + LogRecordData, LogRecord, LogsData, ResourceLogs, ScopeLogs> { + + public static final ProtoLogsDataMapper INSTANCE = new ProtoLogsDataMapper(); + + @Override + protected LogRecord signalItemToProto(LogRecordData sourceData) { + return LogRecordDataMapper.INSTANCE.mapToProto(sourceData); + } + + @Override + protected LogRecordData protoToSignalItem( + LogRecord logRecord, Resource resource, InstrumentationScopeInfo scopeInfo) { + return LogRecordDataMapper.INSTANCE.mapToSdk(logRecord, resource, scopeInfo); + } + + @Override + protected List getProtoResources(LogsData logsData) { + return logsData.getResourceLogsList(); + } + + @Override + protected LogsData createProtoData( + Map>> itemsByResource) { + List items = new ArrayList<>(); + itemsByResource.forEach( + (resource, instrumentationScopeInfoScopedLogsMap) -> { + ResourceLogs.Builder resourceLogsBuilder = createProtoResourceBuilder(resource); + for (Map.Entry> logsByScope : + instrumentationScopeInfoScopedLogsMap.entrySet()) { + ScopeLogs.Builder scopeBuilder = createProtoScopeBuilder(logsByScope.getKey()); + scopeBuilder.addAllLogRecords(logsByScope.getValue()); + resourceLogsBuilder.addScopeLogs(scopeBuilder.build()); + } + items.add(resourceLogsBuilder.build()); + }); + return LogsData.newBuilder().addAllResourceLogs(items).build(); + } + + private ScopeLogs.Builder createProtoScopeBuilder(InstrumentationScopeInfo scopeInfo) { + return ScopeLogs.newBuilder().setScope(instrumentationScopeToProto(scopeInfo)); + } + + private ResourceLogs.Builder createProtoResourceBuilder(Resource resource) { + return ResourceLogs.newBuilder().setResource(resourceToProto(resource)); + } + + @Override + protected List getSignalsFromProto(ScopeLogs scopeSignals) { + return scopeSignals.getLogRecordsList(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeFromProto(ScopeLogs scopeSignals) { + return protoToInstrumentationScopeInfo(scopeSignals.getScope(), scopeSignals.getSchemaUrl()); + } + + @Override + protected List getScopes(ResourceLogs resourceSignal) { + return resourceSignal.getScopeLogsList(); + } + + @Override + protected Resource getResourceFromProto(ResourceLogs resourceSignal) { + return protoToResource(resourceSignal.getResource(), resourceSignal.getSchemaUrl()); + } + + @Override + protected Resource getResourceFromSignal(LogRecordData source) { + return source.getResource(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeInfo(LogRecordData source) { + return source.getInstrumentationScopeInfo(); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java new file mode 100644 index 000000000..ad033d8d2 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java @@ -0,0 +1,92 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.BaseProtoSignalsDataMapper; +import io.opentelemetry.proto.metrics.v1.Metric; +import io.opentelemetry.proto.metrics.v1.MetricsData; +import io.opentelemetry.proto.metrics.v1.ResourceMetrics; +import io.opentelemetry.proto.metrics.v1.ScopeMetrics; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.resources.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ProtoMetricsDataMapper + extends BaseProtoSignalsDataMapper< + MetricData, Metric, MetricsData, ResourceMetrics, ScopeMetrics> { + + public static final ProtoMetricsDataMapper INSTANCE = new ProtoMetricsDataMapper(); + + @Override + protected Metric signalItemToProto(MetricData sourceData) { + return MetricDataMapper.INSTANCE.mapToProto(sourceData); + } + + @Override + protected MetricData protoToSignalItem( + Metric protoSignalItem, Resource resource, InstrumentationScopeInfo scopeInfo) { + return MetricDataMapper.INSTANCE.mapToSdk(protoSignalItem, resource, scopeInfo); + } + + @Override + protected List getProtoResources(MetricsData protoData) { + return protoData.getResourceMetricsList(); + } + + @Override + protected MetricsData createProtoData( + Map>> itemsByResource) { + List items = new ArrayList<>(); + itemsByResource.forEach( + (resource, instrumentationScopeInfoScopedMetricsMap) -> { + ResourceMetrics.Builder resourceMetricsBuilder = createProtoResourceBuilder(resource); + for (Map.Entry> metricsByScope : + instrumentationScopeInfoScopedMetricsMap.entrySet()) { + ScopeMetrics.Builder scopeBuilder = createProtoScopeBuilder(metricsByScope.getKey()); + scopeBuilder.addAllMetrics(metricsByScope.getValue()); + resourceMetricsBuilder.addScopeMetrics(scopeBuilder.build()); + } + items.add(resourceMetricsBuilder.build()); + }); + return MetricsData.newBuilder().addAllResourceMetrics(items).build(); + } + + private ScopeMetrics.Builder createProtoScopeBuilder(InstrumentationScopeInfo scopeInfo) { + return ScopeMetrics.newBuilder().setScope(instrumentationScopeToProto(scopeInfo)); + } + + private ResourceMetrics.Builder createProtoResourceBuilder(Resource resource) { + return ResourceMetrics.newBuilder().setResource(resourceToProto(resource)); + } + + @Override + protected List getSignalsFromProto(ScopeMetrics scopeSignals) { + return scopeSignals.getMetricsList(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeFromProto(ScopeMetrics scopeSignals) { + return protoToInstrumentationScopeInfo(scopeSignals.getScope(), scopeSignals.getSchemaUrl()); + } + + @Override + protected List getScopes(ResourceMetrics resourceSignal) { + return resourceSignal.getScopeMetricsList(); + } + + @Override + protected Resource getResourceFromProto(ResourceMetrics resourceSignal) { + return protoToResource(resourceSignal.getResource(), resourceSignal.getSchemaUrl()); + } + + @Override + protected Resource getResourceFromSignal(MetricData source) { + return source.getResource(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeInfo(MetricData source) { + return source.getInstrumentationScopeInfo(); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java new file mode 100644 index 000000000..7712fb34b --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java @@ -0,0 +1,92 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.BaseProtoSignalsDataMapper; +import io.opentelemetry.proto.trace.v1.ResourceSpans; +import io.opentelemetry.proto.trace.v1.ScopeSpans; +import io.opentelemetry.proto.trace.v1.Span; +import io.opentelemetry.proto.trace.v1.TracesData; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.data.SpanData; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ProtoSpansDataMapper + extends BaseProtoSignalsDataMapper { + + public static final ProtoSpansDataMapper INSTANCE = new ProtoSpansDataMapper(); + + @Override + protected Span signalItemToProto(SpanData sourceData) { + return SpanDataMapper.INSTANCE.mapToProto(sourceData); + } + + @Override + protected List getProtoResources(TracesData protoData) { + return protoData.getResourceSpansList(); + } + + @Override + protected SpanData protoToSignalItem( + Span protoSignalItem, Resource resource, InstrumentationScopeInfo scopeInfo) { + return SpanDataMapper.INSTANCE.mapToSdk(protoSignalItem, resource, scopeInfo); + } + + @Override + protected TracesData createProtoData( + Map>> itemsByResource) { + List items = new ArrayList<>(); + itemsByResource.forEach( + (resource, instrumentationScopeInfoScopedSpansMap) -> { + ResourceSpans.Builder resourceSpansBuilder = createProtoResourceBuilder(resource); + for (Map.Entry> spansByScope : + instrumentationScopeInfoScopedSpansMap.entrySet()) { + ScopeSpans.Builder scopeBuilder = createProtoScopeBuilder(spansByScope.getKey()); + scopeBuilder.addAllSpans(spansByScope.getValue()); + resourceSpansBuilder.addScopeSpans(scopeBuilder.build()); + } + items.add(resourceSpansBuilder.build()); + }); + return TracesData.newBuilder().addAllResourceSpans(items).build(); + } + + @Override + protected List getSignalsFromProto(ScopeSpans scopeSignals) { + return scopeSignals.getSpansList(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeFromProto(ScopeSpans scopeSignals) { + return protoToInstrumentationScopeInfo(scopeSignals.getScope(), scopeSignals.getSchemaUrl()); + } + + @Override + protected List getScopes(ResourceSpans resourceSignal) { + return resourceSignal.getScopeSpansList(); + } + + @Override + protected Resource getResourceFromProto(ResourceSpans resourceSignal) { + return protoToResource(resourceSignal.getResource(), resourceSignal.getSchemaUrl()); + } + + @Override + protected Resource getResourceFromSignal(SpanData source) { + return source.getResource(); + } + + @Override + protected InstrumentationScopeInfo getInstrumentationScopeInfo(SpanData source) { + return source.getInstrumentationScopeInfo(); + } + + private ResourceSpans.Builder createProtoResourceBuilder(Resource resource) { + return ResourceSpans.newBuilder().setResource(resourceToProto(resource)); + } + + private ScopeSpans.Builder createProtoScopeBuilder( + InstrumentationScopeInfo instrumentationScopeInfo) { + return ScopeSpans.newBuilder().setScope(instrumentationScopeToProto(instrumentationScopeInfo)); + } +} From 702513f20dec9206abc79d5f5e3243135c479169 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:17:42 +0200 Subject: [PATCH 130/209] Adding proto logs validations --- .../common/BaseProtoSignalsDataMapper.java | 6 +- .../mapping/proto/common/ResourceMapper.java | 6 +- .../proto/logs/ProtoLogsDataMapper.java | 13 +- .../proto/metrics/ProtoMetricsDataMapper.java | 14 +- .../proto/spans/ProtoSpansDataMapper.java | 14 +- .../proto/logs/ProtoLogsDataMapperTest.java | 165 ++++++++++++++++++ .../disk/buffering/testutils/TestData.java | 12 ++ 7 files changed, 219 insertions(+), 11 deletions(-) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java index 416f0dae5..d93602d76 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java @@ -70,14 +70,16 @@ protected io.opentelemetry.proto.resource.v1.Resource resourceToProto(Resource r protected Resource protoToResource( io.opentelemetry.proto.resource.v1.Resource protoResource, String schemaUrl) { - return ResourceMapper.INSTANCE.mapToSdk(protoResource, schemaUrl); + return ResourceMapper.INSTANCE.mapToSdk(protoResource, schemaUrl.isEmpty() ? null : schemaUrl); } protected InstrumentationScopeInfo protoToInstrumentationScopeInfo( InstrumentationScope scope, @Nullable String schemaUrl) { InstrumentationScopeInfoBuilder builder = InstrumentationScopeInfo.builder(scope.getName()); - builder.setVersion(scope.getVersion()); builder.setAttributes(protoToAttributes(scope.getAttributesList())); + if (!scope.getVersion().isEmpty()) { + builder.setVersion(scope.getVersion()); + } if (schemaUrl != null) { builder.setSchemaUrl(schemaUrl); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java index 699b1d068..d5367a57a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java @@ -2,6 +2,7 @@ import io.opentelemetry.proto.resource.v1.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; +import javax.annotation.Nullable; import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; import org.mapstruct.MappingTarget; @@ -19,11 +20,10 @@ public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) } public abstract io.opentelemetry.sdk.resources.Resource mapToSdk( - Resource protoResource, String schemaUrl); + Resource protoResource, @Nullable String schemaUrl); @AfterMapping - protected static void addAttributes( - Resource protoResource, @MappingTarget ResourceBuilder builder) { + protected void addAttributes(Resource protoResource, @MappingTarget ResourceBuilder builder) { builder.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java index bab829e4d..be7f728e9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java @@ -53,11 +53,20 @@ protected LogsData createProtoData( } private ScopeLogs.Builder createProtoScopeBuilder(InstrumentationScopeInfo scopeInfo) { - return ScopeLogs.newBuilder().setScope(instrumentationScopeToProto(scopeInfo)); + ScopeLogs.Builder builder = + ScopeLogs.newBuilder().setScope(instrumentationScopeToProto(scopeInfo)); + if (scopeInfo.getSchemaUrl() != null) { + builder.setSchemaUrl(scopeInfo.getSchemaUrl()); + } + return builder; } private ResourceLogs.Builder createProtoResourceBuilder(Resource resource) { - return ResourceLogs.newBuilder().setResource(resourceToProto(resource)); + ResourceLogs.Builder builder = ResourceLogs.newBuilder().setResource(resourceToProto(resource)); + if (resource.getSchemaUrl() != null) { + builder.setSchemaUrl(resource.getSchemaUrl()); + } + return builder; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java index ad033d8d2..ac3ea26fa 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java @@ -53,11 +53,21 @@ protected MetricsData createProtoData( } private ScopeMetrics.Builder createProtoScopeBuilder(InstrumentationScopeInfo scopeInfo) { - return ScopeMetrics.newBuilder().setScope(instrumentationScopeToProto(scopeInfo)); + ScopeMetrics.Builder builder = + ScopeMetrics.newBuilder().setScope(instrumentationScopeToProto(scopeInfo)); + if (scopeInfo.getSchemaUrl() != null) { + builder.setSchemaUrl(scopeInfo.getSchemaUrl()); + } + return builder; } private ResourceMetrics.Builder createProtoResourceBuilder(Resource resource) { - return ResourceMetrics.newBuilder().setResource(resourceToProto(resource)); + ResourceMetrics.Builder builder = + ResourceMetrics.newBuilder().setResource(resourceToProto(resource)); + if (resource.getSchemaUrl() != null) { + builder.setSchemaUrl(resource.getSchemaUrl()); + } + return builder; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java index 7712fb34b..56e1d674d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java @@ -82,11 +82,21 @@ protected InstrumentationScopeInfo getInstrumentationScopeInfo(SpanData source) } private ResourceSpans.Builder createProtoResourceBuilder(Resource resource) { - return ResourceSpans.newBuilder().setResource(resourceToProto(resource)); + ResourceSpans.Builder builder = + ResourceSpans.newBuilder().setResource(resourceToProto(resource)); + if (resource.getSchemaUrl() != null) { + builder.setSchemaUrl(resource.getSchemaUrl()); + } + return builder; } private ScopeSpans.Builder createProtoScopeBuilder( InstrumentationScopeInfo instrumentationScopeInfo) { - return ScopeSpans.newBuilder().setScope(instrumentationScopeToProto(instrumentationScopeInfo)); + ScopeSpans.Builder builder = + ScopeSpans.newBuilder().setScope(instrumentationScopeToProto(instrumentationScopeInfo)); + if (instrumentationScopeInfo.getSchemaUrl() != null) { + builder.setSchemaUrl(instrumentationScopeInfo.getSchemaUrl()); + } + return builder; } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java new file mode 100644 index 000000000..8942c10b8 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java @@ -0,0 +1,165 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.logs.v1.LogRecord; +import io.opentelemetry.proto.logs.v1.LogsData; +import io.opentelemetry.proto.logs.v1.ResourceLogs; +import io.opentelemetry.proto.logs.v1.ScopeLogs; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.Test; + +class ProtoLogsDataMapperTest { + + private static final LogRecordData LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData OTHER_LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Other log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData LOG_RECORD_WITH_DIFFERENT_SCOPE_SAME_RESOURCE = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Same resource other scope log")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData LOG_RECORD_WITH_DIFFERENT_RESOURCE = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_WITHOUT_SCHEMA_URL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Different resource log")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + @Test + public void verifyConversionDataStructure() { + List signals = Collections.singletonList(LOG_RECORD); + + LogsData result = mapToProto(signals); + + List resourceLogsList = result.getResourceLogsList(); + assertEquals(1, resourceLogsList.size()); + assertEquals(1, resourceLogsList.get(0).getScopeLogsList().size()); + assertEquals(1, resourceLogsList.get(0).getScopeLogsList().get(0).getLogRecordsList().size()); + + assertThat(mapFromProto(result)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleLogsWithSameResourceAndScope() { + List signals = Arrays.asList(LOG_RECORD, OTHER_LOG_RECORD); + + LogsData proto = mapToProto(signals); + + List resourceLogsList = proto.getResourceLogsList(); + assertEquals(1, resourceLogsList.size()); + List scopeLogsList = resourceLogsList.get(0).getScopeLogsList(); + assertEquals(1, scopeLogsList.size()); + List logRecords = scopeLogsList.get(0).getLogRecordsList(); + assertEquals(2, logRecords.size()); + assertEquals("Log body", logRecords.get(0).getBody().getStringValue()); + assertEquals("Other log body", logRecords.get(1).getBody().getStringValue()); + + assertEquals(2, mapFromProto(proto).size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleLogsWithSameResourceDifferentScope() { + List signals = + Arrays.asList(LOG_RECORD, LOG_RECORD_WITH_DIFFERENT_SCOPE_SAME_RESOURCE); + + LogsData proto = mapToProto(signals); + + List resourceLogsList = proto.getResourceLogsList(); + assertEquals(1, resourceLogsList.size()); + List scopeLogsList = resourceLogsList.get(0).getScopeLogsList(); + assertEquals(2, scopeLogsList.size()); + ScopeLogs firstScope = scopeLogsList.get(0); + ScopeLogs secondScope = scopeLogsList.get(1); + List firstScopeLogs = firstScope.getLogRecordsList(); + List secondScopeLogs = secondScope.getLogRecordsList(); + assertEquals(1, firstScopeLogs.size()); + assertEquals(1, secondScopeLogs.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleLogsWithDifferentResource() { + List signals = Arrays.asList(LOG_RECORD, LOG_RECORD_WITH_DIFFERENT_RESOURCE); + + LogsData proto = mapToProto(signals); + + List resourceLogsList = proto.getResourceLogsList(); + assertEquals(2, resourceLogsList.size()); + ResourceLogs firstResourceLogs = resourceLogsList.get(0); + ResourceLogs secondResourceLogs = resourceLogsList.get(1); + List firstScopeLogsList = firstResourceLogs.getScopeLogsList(); + List secondScopeLogsList = secondResourceLogs.getScopeLogsList(); + assertEquals(1, firstScopeLogsList.size()); + assertEquals(1, secondScopeLogsList.size()); + ScopeLogs firstScope = firstScopeLogsList.get(0); + ScopeLogs secondScope = secondScopeLogsList.get(0); + List firstScopeLogs = firstScope.getLogRecordsList(); + List secondScopeLogs = secondScope.getLogRecordsList(); + assertEquals(1, firstScopeLogs.size()); + assertEquals(1, secondScopeLogs.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + private static LogsData mapToProto(Collection signals) { + return ProtoLogsDataMapper.INSTANCE.toProto(signals); + } + + private static List mapFromProto(LogsData protoData) { + return ProtoLogsDataMapper.INSTANCE.fromProto(protoData); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java index f13025b03..dc049229e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/TestData.java @@ -34,6 +34,9 @@ public final class TestData { Attributes.builder().put("resourceAttr", "resourceAttrValue").build(), "resourceSchemaUrl"); + public static final Resource RESOURCE_WITHOUT_SCHEMA_URL = + Resource.create(Attributes.builder().put("resourceAttr", "resourceAttrValue").build()); + public static final SpanContext SPAN_CONTEXT = SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()); public static final SpanContext SPAN_CONTEXT_WITH_TRACE_STATE = @@ -55,5 +58,14 @@ public final class TestData { .build()) .build(); + public static final InstrumentationScopeInfo INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION = + InstrumentationScopeInfo.builder("Instrumentation scope name") + .setSchemaUrl("instrumentationScopeInfoSchemaUrl") + .setAttributes( + Attributes.builder() + .put("instrumentationScopeInfoAttr", "instrumentationScopeInfoAttrValue") + .build()) + .build(); + private TestData() {} } From 02bc6b46ed2c6dd3a73bfdcc0d7c6cae7d0d0e69 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:35:24 +0200 Subject: [PATCH 131/209] Adding proto metrics and spans validations --- .../metrics/ProtoMetricsDataMapperTest.java | 175 ++++++++++++++++ .../proto/spans/ProtoSpansDataMapperTest.java | 197 ++++++++++++++++++ 2 files changed, 372 insertions(+) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java new file mode 100644 index 000000000..5652afdc6 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java @@ -0,0 +1,175 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.metrics.v1.Metric; +import io.opentelemetry.proto.metrics.v1.MetricsData; +import io.opentelemetry.proto.metrics.v1.ResourceMetrics; +import io.opentelemetry.proto.metrics.v1.ScopeMetrics; +import io.opentelemetry.sdk.metrics.data.GaugeData; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; +import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.data.MetricDataType; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.Test; + +class ProtoMetricsDataMapperTest { + + private static final LongExemplarData LONG_EXEMPLAR_DATA = + LongExemplarDataImpl.builder() + .setValue(1L) + .setEpochNanos(100L) + .setFilteredAttributes(TestData.ATTRIBUTES) + .setSpanContext(TestData.SPAN_CONTEXT) + .build(); + + private static final LongPointData LONG_POINT_DATA = + LongPointDataImpl.builder() + .setValue(1L) + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(2L) + .setStartEpochNanos(1L) + .setExemplars(Collections.singletonList(LONG_EXEMPLAR_DATA)) + .build(); + private static final GaugeData LONG_GAUGE_DATA = + GaugeDataImpl.LongData.builder() + .setPoints(Collections.singletonList(LONG_POINT_DATA)) + .build(); + private static final MetricData LONG_GAUGE_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Long gauge name") + .setDescription("Long gauge description") + .setUnit("ms") + .setType(MetricDataType.LONG_GAUGE) + .setData(LONG_GAUGE_DATA) + .build(); + + private static final MetricData OTHER_LONG_GAUGE_METRIC = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Long gauge name") + .setDescription("Long gauge description") + .setUnit("ms") + .setType(MetricDataType.LONG_GAUGE) + .setData(LONG_GAUGE_DATA) + .build(); + + private static final MetricData LONG_GAUGE_METRIC_WITH_DIFFERENT_SCOPE_SAME_RESOURCE = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) + .setName("Long gauge name") + .setDescription("Long gauge description") + .setUnit("ms") + .setType(MetricDataType.LONG_GAUGE) + .setData(LONG_GAUGE_DATA) + .build(); + + private static final MetricData LONG_GAUGE_METRIC_WITH_DIFFERENT_RESOURCE = + MetricDataImpl.builder() + .setResource(TestData.RESOURCE_WITHOUT_SCHEMA_URL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) + .setName("Long gauge name") + .setDescription("Long gauge description") + .setUnit("ms") + .setType(MetricDataType.LONG_GAUGE) + .setData(LONG_GAUGE_DATA) + .build(); + + @Test + public void verifyConversionDataStructure() { + List signals = Collections.singletonList(LONG_GAUGE_METRIC); + + MetricsData proto = mapToProto(signals); + + List resourceMetrics = proto.getResourceMetricsList(); + assertEquals(1, resourceMetrics.size()); + assertEquals(1, resourceMetrics.get(0).getScopeMetricsList().size()); + assertEquals(1, resourceMetrics.get(0).getScopeMetricsList().get(0).getMetricsList().size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleMetricsWithSameResourceAndScope() { + List signals = Arrays.asList(LONG_GAUGE_METRIC, OTHER_LONG_GAUGE_METRIC); + + MetricsData proto = mapToProto(signals); + + List resourceMetrics = proto.getResourceMetricsList(); + assertEquals(1, resourceMetrics.size()); + List scopeMetrics = resourceMetrics.get(0).getScopeMetricsList(); + assertEquals(1, scopeMetrics.size()); + List metrics = scopeMetrics.get(0).getMetricsList(); + assertEquals(2, metrics.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleMetricsWithSameResourceDifferentScope() { + List signals = + Arrays.asList(LONG_GAUGE_METRIC, LONG_GAUGE_METRIC_WITH_DIFFERENT_SCOPE_SAME_RESOURCE); + + MetricsData proto = mapToProto(signals); + + List resourceMetrics = proto.getResourceMetricsList(); + assertEquals(1, resourceMetrics.size()); + List scopeMetrics = resourceMetrics.get(0).getScopeMetricsList(); + assertEquals(2, scopeMetrics.size()); + ScopeMetrics firstScope = scopeMetrics.get(0); + ScopeMetrics secondScope = scopeMetrics.get(1); + List firstScopeMetrics = firstScope.getMetricsList(); + List secondScopeMetrics = secondScope.getMetricsList(); + assertEquals(1, firstScopeMetrics.size()); + assertEquals(1, secondScopeMetrics.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleMetricsWithDifferentResource() { + List signals = + Arrays.asList(LONG_GAUGE_METRIC, LONG_GAUGE_METRIC_WITH_DIFFERENT_RESOURCE); + + MetricsData proto = mapToProto(signals); + + List resourceMetrics = proto.getResourceMetricsList(); + assertEquals(2, resourceMetrics.size()); + ResourceMetrics firstResourceMetrics = resourceMetrics.get(0); + ResourceMetrics secondResourceMetrics = resourceMetrics.get(1); + List firstScopeMetrics = firstResourceMetrics.getScopeMetricsList(); + List secondScopeMetrics = secondResourceMetrics.getScopeMetricsList(); + assertEquals(1, firstScopeMetrics.size()); + assertEquals(1, secondScopeMetrics.size()); + ScopeMetrics firstScope = firstScopeMetrics.get(0); + ScopeMetrics secondScope = secondScopeMetrics.get(0); + List firstMetrics = firstScope.getMetricsList(); + List secondMetrics = secondScope.getMetricsList(); + assertEquals(1, firstMetrics.size()); + assertEquals(1, secondMetrics.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + private static MetricsData mapToProto(Collection signals) { + return ProtoMetricsDataMapper.INSTANCE.toProto(signals); + } + + private static List mapFromProto(MetricsData protoData) { + return ProtoMetricsDataMapper.INSTANCE.fromProto(protoData); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java new file mode 100644 index 000000000..2cbdf786b --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java @@ -0,0 +1,197 @@ +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.proto.trace.v1.ResourceSpans; +import io.opentelemetry.proto.trace.v1.ScopeSpans; +import io.opentelemetry.proto.trace.v1.Span; +import io.opentelemetry.proto.trace.v1.TracesData; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.LinkData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.Test; + +class ProtoSpansDataMapperTest { + + private static final EventData EVENT_DATA = + EventDataImpl.builder() + .setAttributes(TestData.ATTRIBUTES) + .setEpochNanos(1L) + .setName("Event name") + .setTotalAttributeCount(10) + .build(); + + private static final LinkData LINK_DATA = + LinkData.create(TestData.SPAN_CONTEXT, TestData.ATTRIBUTES, 20); + + private static final LinkData LINK_DATA_WITH_TRACE_STATE = + LinkData.create(TestData.SPAN_CONTEXT_WITH_TRACE_STATE, TestData.ATTRIBUTES, 20); + + private static final SpanData SPAN_DATA = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Span name") + .setSpanContext(TestData.SPAN_CONTEXT) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Arrays.asList(LINK_DATA, LINK_DATA_WITH_TRACE_STATE)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + private static final SpanData OTHER_SPAN_DATA = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setName("Span name") + .setSpanContext(TestData.SPAN_CONTEXT) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Arrays.asList(LINK_DATA, LINK_DATA_WITH_TRACE_STATE)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + private static final SpanData SPAN_DATA_WITH_DIFFERENT_SCOPE_SAME_RESOURCE = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) + .setName("Span name") + .setSpanContext(TestData.SPAN_CONTEXT) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Arrays.asList(LINK_DATA, LINK_DATA_WITH_TRACE_STATE)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + private static final SpanData SPAN_DATA_WITH_DIFFERENT_RESOURCE = + SpanDataImpl.builder() + .setResource(TestData.RESOURCE_WITHOUT_SCHEMA_URL) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) + .setName("Span name") + .setSpanContext(TestData.SPAN_CONTEXT) + .setParentSpanContext(TestData.PARENT_SPAN_CONTEXT) + .setAttributes(TestData.ATTRIBUTES) + .setStartEpochNanos(1L) + .setEndEpochNanos(2L) + .setKind(SpanKind.CLIENT) + .setStatus(StatusData.error()) + .setEvents(Collections.singletonList(EVENT_DATA)) + .setLinks(Arrays.asList(LINK_DATA, LINK_DATA_WITH_TRACE_STATE)) + .setTotalAttributeCount(10) + .setTotalRecordedEvents(2) + .setTotalRecordedLinks(2) + .build(); + + @Test + public void verifyConversionDataStructure() { + List signals = Collections.singletonList(SPAN_DATA); + + TracesData proto = mapToProto(signals); + + List resourceSpans = proto.getResourceSpansList(); + assertEquals(1, resourceSpans.size()); + assertEquals(1, resourceSpans.get(0).getScopeSpansList().size()); + assertEquals(1, resourceSpans.get(0).getScopeSpansList().get(0).getSpansList().size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleSpansWithSameResourceAndScope() { + List signals = Arrays.asList(SPAN_DATA, OTHER_SPAN_DATA); + + TracesData proto = mapToProto(signals); + + List resourceSpans = proto.getResourceSpansList(); + assertEquals(1, resourceSpans.size()); + List scopeSpans = resourceSpans.get(0).getScopeSpansList(); + assertEquals(1, scopeSpans.size()); + List spans = scopeSpans.get(0).getSpansList(); + assertEquals(2, spans.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleSpansWithSameResourceDifferentScope() { + List signals = Arrays.asList(SPAN_DATA, SPAN_DATA_WITH_DIFFERENT_SCOPE_SAME_RESOURCE); + + TracesData proto = mapToProto(signals); + + List resourceSpans = proto.getResourceSpansList(); + assertEquals(1, resourceSpans.size()); + List scopeSpans = resourceSpans.get(0).getScopeSpansList(); + assertEquals(2, scopeSpans.size()); + ScopeSpans firstScope = scopeSpans.get(0); + ScopeSpans secondScope = scopeSpans.get(1); + List firstScopeSpans = firstScope.getSpansList(); + List secondScopeSpans = secondScope.getSpansList(); + assertEquals(1, firstScopeSpans.size()); + assertEquals(1, secondScopeSpans.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + @Test + public void verifyMultipleSpansWithDifferentResource() { + List signals = Arrays.asList(SPAN_DATA, SPAN_DATA_WITH_DIFFERENT_RESOURCE); + + TracesData proto = mapToProto(signals); + + List resourceSpans = proto.getResourceSpansList(); + assertEquals(2, resourceSpans.size()); + ResourceSpans firstResourceSpans = resourceSpans.get(0); + ResourceSpans secondResourceSpans = resourceSpans.get(1); + List firstScopeSpans = firstResourceSpans.getScopeSpansList(); + List secondScopeSpans = secondResourceSpans.getScopeSpansList(); + assertEquals(1, firstScopeSpans.size()); + assertEquals(1, secondScopeSpans.size()); + ScopeSpans firstScope = firstScopeSpans.get(0); + ScopeSpans secondScope = secondScopeSpans.get(0); + List firstSpans = firstScope.getSpansList(); + List secondSpans = secondScope.getSpansList(); + assertEquals(1, firstSpans.size()); + assertEquals(1, secondSpans.size()); + + assertThat(mapFromProto(proto)).containsExactlyInAnyOrderElementsOf(signals); + } + + private static TracesData mapToProto(Collection signals) { + return ProtoSpansDataMapper.INSTANCE.toProto(signals); + } + + private static List mapFromProto(TracesData protoData) { + return ProtoSpansDataMapper.INSTANCE.fromProto(protoData); + } +} From 3947cea2f71adabff2ad3b3f5838201d3291e2b6 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:34:35 +0200 Subject: [PATCH 132/209] Extracting file inputstream read process --- .../internal/storage/FolderManager.java | 7 +++- .../buffering/internal/storage/Storage.java | 4 +- ....java => NoContentAvailableException.java} | 2 +- .../internal/storage/files/ReadableFile.java | 32 +++++++------- .../files/reader/LineStreamReader.java | 42 +++++++++++++++++++ .../storage/files/reader/ReadResult.java | 11 +++++ .../storage/files/reader/StreamReader.java | 30 +++++++++++++ .../internal/storage/StorageTest.java | 4 +- .../storage/files/ReadableFileTest.java | 17 ++++++-- 9 files changed, 121 insertions(+), 28 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/{NoMoreLinesToReadException.java => NoContentAvailableException.java} (77%) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 150ddc969..59d8da991 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -7,6 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; @@ -38,7 +39,11 @@ public synchronized ReadableFile getReadableFile() throws IOException { if (readableFile != null) { currentReadableFile = new ReadableFile( - readableFile, Long.parseLong(readableFile.getName()), timeProvider, configuration); + readableFile, + Long.parseLong(readableFile.getName()), + timeProvider, + configuration, + StreamReader.defaultFactory()); return currentReadableFile; } return null; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index c6befd97d..ff28cd277 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -6,7 +6,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; @@ -90,7 +90,7 @@ private boolean read(Function consumer, int attemptNumber) thro try { readableFile.readLine(consumer); return true; - } catch (ReadingTimeoutException | NoMoreLinesToReadException | ResourceClosedException e) { + } catch (ReadingTimeoutException | NoContentAvailableException | ResourceClosedException e) { // Retry with new file readableFile = null; return read(consumer, ++attemptNumber); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java similarity index 77% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java index 7f5d9b3c5..7a5e55915 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoMoreLinesToReadException.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java @@ -8,4 +8,4 @@ import java.io.IOException; @SuppressWarnings("serial") -public class NoMoreLinesToReadException extends IOException {} +public class NoContentAvailableException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index c0a831bb9..cbcac4c1f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -5,30 +5,27 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; - -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ReadResult; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedInputStream; -import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.OutputStream; import java.nio.channels.FileChannel; -import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; public final class ReadableFile extends StorageFile { private final int originalFileSize; - private final BufferedReader bufferedReader; + private final StreamReader reader; private final FileChannel tempInChannel; private final File temporaryFile; private final TimeProvider timeProvider; @@ -40,7 +37,8 @@ public ReadableFile( File file, long createdTimeMillis, TimeProvider timeProvider, - StorageConfiguration configuration) + StorageConfiguration configuration, + StreamReader.Factory readerFactory) throws IOException { super(file); this.timeProvider = timeProvider; @@ -50,8 +48,7 @@ public ReadableFile( copyFile(file, temporaryFile); FileInputStream tempInputStream = new FileInputStream(temporaryFile); tempInChannel = tempInputStream.getChannel(); - bufferedReader = - new BufferedReader(new InputStreamReader(tempInputStream, StandardCharsets.UTF_8)); + reader = readerFactory.create(tempInputStream); } /** @@ -62,7 +59,7 @@ public ReadableFile( * If the consumer function returns TRUE, then the provided line will be deleted from the * source file. If the function returns FALSE, no changes will be applied to the source file. * @throws ReadingTimeoutException If the configured reading time for the file has ended. - * @throws NoMoreLinesToReadException If there are no more lines to be read from the file. + * @throws NoContentAvailableException If there is no content to be read from the file. * @throws ResourceClosedException If it's closed. */ public synchronized void readLine(Function consumer) throws IOException { @@ -72,14 +69,13 @@ public synchronized void readLine(Function consumer) throws IOE if (hasExpired()) { throw new ReadingTimeoutException(); } - String lineString = bufferedReader.readLine(); - if (lineString == null) { + ReadResult read = reader.read(); + if (read == null) { cleanUp(); - throw new NoMoreLinesToReadException(); + throw new NoContentAvailableException(); } - byte[] line = lineString.getBytes(StandardCharsets.UTF_8); - if (consumer.apply(line)) { - readBytes += line.length + NEW_LINE_BYTES_SIZE; + if (consumer.apply(read.content)) { + readBytes += read.length; try (FileOutputStream out = new FileOutputStream(file, false)) { int amountOfBytesToTransfer = originalFileSize - readBytes; if (amountOfBytesToTransfer > 0) { @@ -114,7 +110,7 @@ public synchronized boolean isClosed() { @Override public synchronized void close() throws IOException { if (isClosed.compareAndSet(false, true)) { - bufferedReader.close(); + reader.close(); temporaryFile.delete(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java new file mode 100644 index 000000000..e32686e3b --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java @@ -0,0 +1,42 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; + +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import javax.annotation.Nullable; + +public final class LineStreamReader extends StreamReader { + private final BufferedReader bufferedReader; + + public LineStreamReader(InputStream inputStream) { + super(inputStream); + bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + } + + @Override + @Nullable + public ReadResult read() throws IOException { + String line = bufferedReader.readLine(); + if (line == null) { + return null; + } + byte[] bytes = line.getBytes(StandardCharsets.UTF_8); + return new ReadResult(bytes, bytes.length + NEW_LINE_BYTES_SIZE); + } + + public static class Factory implements StreamReader.Factory { + + public static final Factory INSTANCE = new LineStreamReader.Factory(); + + private Factory() {} + + @Override + public StreamReader create(InputStream stream) { + return new LineStreamReader(stream); + } + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java new file mode 100644 index 000000000..143cc10c9 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java @@ -0,0 +1,11 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; + +public final class ReadResult { + public final byte[] content; + public final int length; + + public ReadResult(byte[] content, int length) { + this.content = content; + this.length = length; + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java new file mode 100644 index 000000000..c6a528342 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java @@ -0,0 +1,30 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; + +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import javax.annotation.Nullable; + +public abstract class StreamReader implements Closeable { + protected final InputStream inputStream; + + protected StreamReader(InputStream inputStream) { + this.inputStream = inputStream; + } + + public static Factory defaultFactory() { + return LineStreamReader.Factory.INSTANCE; + } + + @Nullable + public abstract ReadResult read() throws IOException; + + @Override + public void close() throws IOException { + inputStream.close(); + } + + public interface Factory { + StreamReader create(InputStream stream); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 0ad1ec9f1..f45a41344 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -17,7 +17,7 @@ import static org.mockito.Mockito.when; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; @@ -119,7 +119,7 @@ public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOExceptio @Test public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(NoMoreLinesToReadException.class).when(readableFile).readLine(consumer); + doThrow(NoContentAvailableException.class).when(readableFile).readLine(consumer); assertFalse(storage.read(consumer)); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 39c981d56..9e581989e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -15,9 +15,10 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoMoreLinesToReadException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import java.io.File; @@ -52,7 +53,11 @@ public void setUp() throws IOException { timeProvider = mock(); readableFile = new ReadableFile( - source, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); + source, + CREATED_TIME_MILLIS, + timeProvider, + getConfiguration(temporaryFileProvider), + StreamReader.defaultFactory()); } @Test @@ -144,11 +149,15 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc ReadableFile emptyReadableFile = new ReadableFile( - emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); + emptyFile, + CREATED_TIME_MILLIS, + timeProvider, + getConfiguration(temporaryFileProvider), + StreamReader.defaultFactory()); try { emptyReadableFile.readLine(bytes -> true); fail(); - } catch (NoMoreLinesToReadException ignored) { + } catch (NoContentAvailableException ignored) { assertTrue(emptyReadableFile.isClosed()); assertFalse(emptyFile.exists()); } From ba8f2456206d0e527a03f1c0450e2baa53ef3c71 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:45:19 +0200 Subject: [PATCH 133/209] Using line reader factory as default for ReadableFile --- .../buffering/internal/storage/FolderManager.java | 7 +------ .../internal/storage/files/ReadableFile.java | 10 ++++++++++ .../internal/storage/files/reader/StreamReader.java | 4 ---- .../internal/storage/files/ReadableFileTest.java | 13 ++----------- 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 59d8da991..150ddc969 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -7,7 +7,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; @@ -39,11 +38,7 @@ public synchronized ReadableFile getReadableFile() throws IOException { if (readableFile != null) { currentReadableFile = new ReadableFile( - readableFile, - Long.parseLong(readableFile.getName()), - timeProvider, - configuration, - StreamReader.defaultFactory()); + readableFile, Long.parseLong(readableFile.getName()), timeProvider, configuration); return currentReadableFile; } return null; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index cbcac4c1f..794519dcf 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -8,6 +8,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.LineStreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ReadResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; @@ -33,6 +34,15 @@ public final class ReadableFile extends StorageFile { private final AtomicBoolean isClosed = new AtomicBoolean(false); private int readBytes = 0; + public ReadableFile( + File file, + long createdTimeMillis, + TimeProvider timeProvider, + StorageConfiguration configuration) + throws IOException { + this(file, createdTimeMillis, timeProvider, configuration, LineStreamReader.Factory.INSTANCE); + } + public ReadableFile( File file, long createdTimeMillis, diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java index c6a528342..b61726c72 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java @@ -12,10 +12,6 @@ protected StreamReader(InputStream inputStream) { this.inputStream = inputStream; } - public static Factory defaultFactory() { - return LineStreamReader.Factory.INSTANCE; - } - @Nullable public abstract ReadResult read() throws IOException; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 9e581989e..c4c52291f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -18,7 +18,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import java.io.File; @@ -53,11 +52,7 @@ public void setUp() throws IOException { timeProvider = mock(); readableFile = new ReadableFile( - source, - CREATED_TIME_MILLIS, - timeProvider, - getConfiguration(temporaryFileProvider), - StreamReader.defaultFactory()); + source, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); } @Test @@ -149,11 +144,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc ReadableFile emptyReadableFile = new ReadableFile( - emptyFile, - CREATED_TIME_MILLIS, - timeProvider, - getConfiguration(temporaryFileProvider), - StreamReader.defaultFactory()); + emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); try { emptyReadableFile.readLine(bytes -> true); fail(); From 2b629c279ce638f38b27035fc2deb165646255fc Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 15:12:47 +0200 Subject: [PATCH 134/209] Adding javadoc --- .../internal/storage/files/ReadableFile.java | 2 +- .../internal/storage/files/reader/ReadResult.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 794519dcf..e07393ffd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -85,7 +85,7 @@ public synchronized void readLine(Function consumer) throws IOE throw new NoContentAvailableException(); } if (consumer.apply(read.content)) { - readBytes += read.length; + readBytes += read.totalReadLength; try (FileOutputStream out = new FileOutputStream(file, false)) { int amountOfBytesToTransfer = originalFileSize - readBytes; if (amountOfBytesToTransfer > 0) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java index 143cc10c9..929efb4ec 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java @@ -1,11 +1,16 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; public final class ReadResult { + /** The consumable data. */ public final byte[] content; - public final int length; + /** + * The total amount of data read from the stream. This number can be greater than the content + * length as it also takes into account any delimiters size. + */ + public final int totalReadLength; - public ReadResult(byte[] content, int length) { + public ReadResult(byte[] content, int totalReadLength) { this.content = content; - this.length = length; + this.totalReadLength = totalReadLength; } } From a93c1d9cc5a90960d63c89b2be1ee9e77f3c4682 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 26 Jun 2023 17:02:42 +0200 Subject: [PATCH 135/209] Improving ReadableFile tests --- .../internal/storage/files/ReadableFile.java | 17 +- .../storage/files/ReadableFileTest.java | 167 ++++++++++++------ 2 files changed, 128 insertions(+), 56 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index e07393ffd..083625882 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -23,6 +23,7 @@ import java.nio.channels.FileChannel; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; +import javax.annotation.Nullable; public final class ReadableFile extends StorageFile { private final int originalFileSize; @@ -33,6 +34,7 @@ public final class ReadableFile extends StorageFile { private final long expireTimeMillis; private final AtomicBoolean isClosed = new AtomicBoolean(false); private int readBytes = 0; + @Nullable private ReadResult unconsumedResult; public ReadableFile( File file, @@ -77,14 +79,16 @@ public synchronized void readLine(Function consumer) throws IOE throw new ResourceClosedException(); } if (hasExpired()) { + close(); throw new ReadingTimeoutException(); } - ReadResult read = reader.read(); + ReadResult read = readNextItem(); if (read == null) { cleanUp(); throw new NoContentAvailableException(); } if (consumer.apply(read.content)) { + unconsumedResult = null; readBytes += read.totalReadLength; try (FileOutputStream out = new FileOutputStream(file, false)) { int amountOfBytesToTransfer = originalFileSize - readBytes; @@ -94,9 +98,19 @@ public synchronized void readLine(Function consumer) throws IOE cleanUp(); } } + } else { + unconsumedResult = read; } } + @Nullable + private ReadResult readNextItem() throws IOException { + if (unconsumedResult != null) { + return unconsumedResult; + } + return reader.read(); + } + private void cleanUp() throws IOException { file.delete(); close(); @@ -120,6 +134,7 @@ public synchronized boolean isClosed() { @Override public synchronized void close() throws IOException { if (isClosed.compareAndSet(false, true)) { + unconsumedResult = null; reader.close(); temporaryFile.delete(); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index c4c52291f..ef253e8a5 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -15,16 +15,24 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.LogRecordDataSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.testutils.TestData; +import io.opentelemetry.sdk.logs.data.Body; +import io.opentelemetry.sdk.logs.data.LogRecordData; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -38,15 +46,55 @@ class ReadableFileTest { private ReadableFile readableFile; private TimeProvider timeProvider; private TemporaryFileProvider temporaryFileProvider; - private static final List LINES = - Arrays.asList("First line", "Second line", "Third line"); private static final long CREATED_TIME_MILLIS = 1000L; + private static final LogRecordDataSerializer SERIALIZER = SignalSerializer.ofLogs(); + private static final LogRecordData FIRST_LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("First log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData SECOND_LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Second log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); + + private static final LogRecordData THIRD_LOG_RECORD = + LogRecordDataImpl.builder() + .setResource(TestData.RESOURCE_FULL) + .setSpanContext(TestData.SPAN_CONTEXT) + .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) + .setAttributes(TestData.ATTRIBUTES) + .setBody(Body.string("Third log body")) + .setSeverity(Severity.DEBUG) + .setSeverityText("Log severity text") + .setTimestampEpochNanos(100L) + .setObservedTimestampEpochNanos(200L) + .setTotalAttributeCount(3) + .build(); @BeforeEach public void setUp() throws IOException { source = new File(dir, "sourceFile"); temporaryFile = new File(dir, "temporaryFile"); - Files.write(source.toPath(), LINES); + addFileContents(source); temporaryFileProvider = mock(); doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile(anyString()); timeProvider = mock(); @@ -55,30 +103,38 @@ public void setUp() throws IOException { source, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); } + private static void addFileContents(File source) throws IOException { + List lines = new ArrayList<>(); + lines.add(SERIALIZER.serialize(Collections.singleton(FIRST_LOG_RECORD))); + lines.add(SERIALIZER.serialize(Collections.singleton(SECOND_LOG_RECORD))); + lines.add(SERIALIZER.serialize(Collections.singleton(THIRD_LOG_RECORD))); + + try (FileOutputStream out = new FileOutputStream(source)) { + for (byte[] line : lines) { + out.write(line); + out.write(Constants.NEW_LINE_BYTES); + } + } + } + @Test public void readSingleLineAndRemoveIt() throws IOException { readableFile.readLine( bytes -> { - String lineRead = new String(bytes, StandardCharsets.UTF_8); - assertEquals("First line", lineRead); + assertEquals(FIRST_LOG_RECORD, deserialize(bytes)); return true; }); - readableFile.close(); - List sourceLines = getSourceLines(); - assertEquals(2, sourceLines.size()); - assertEquals("Second line", sourceLines.get(0)); - assertEquals("Third line", sourceLines.get(1)); + List logs = getRemainingDataAndClose(readableFile); + + assertEquals(2, logs.size()); + assertEquals(SECOND_LOG_RECORD, logs.get(0)); + assertEquals(THIRD_LOG_RECORD, logs.get(1)); } @Test public void deleteTemporaryFileWhenClosing() throws IOException { - readableFile.readLine( - bytes -> { - String lineRead = new String(bytes, StandardCharsets.UTF_8); - assertEquals("First line", lineRead); - return true; - }); + readableFile.readLine(bytes -> true); readableFile.close(); assertFalse(temporaryFile.exists()); @@ -86,49 +142,27 @@ public void deleteTemporaryFileWhenClosing() throws IOException { @Test public void readMultipleLinesAndRemoveThem() throws IOException { - readableFile.readLine( - bytes -> { - String lineRead = new String(bytes, StandardCharsets.UTF_8); - assertEquals("First line", lineRead); - return true; - }); - readableFile.readLine( - bytes -> { - String lineRead = new String(bytes, StandardCharsets.UTF_8); - assertEquals("Second line", lineRead); - return true; - }); - readableFile.close(); + readableFile.readLine(bytes -> true); + readableFile.readLine(bytes -> true); - List sourceLines = getSourceLines(); - assertEquals(1, sourceLines.size()); - assertEquals("Third line", sourceLines.get(0)); + List logs = getRemainingDataAndClose(readableFile); + + assertEquals(1, logs.size()); + assertEquals(THIRD_LOG_RECORD, logs.get(0)); } @Test public void whenConsumerReturnsFalse_doNotRemoveLineFromSource() throws IOException { - readableFile.readLine( - bytes -> { - String lineRead = new String(bytes, StandardCharsets.UTF_8); - assertEquals("First line", lineRead); - return false; - }); - readableFile.close(); + readableFile.readLine(bytes -> false); + + List logs = getRemainingDataAndClose(readableFile); - List sourceLines = getSourceLines(); - assertEquals(3, sourceLines.size()); - assertEquals(LINES, sourceLines); + assertEquals(3, logs.size()); } @Test public void whenReadingLastLine_deleteOriginalFile_and_close() throws IOException { - for (String line : LINES) { - readableFile.readLine( - bytes -> { - assertEquals(line, new String(bytes, StandardCharsets.UTF_8)); - return true; - }); - } + getRemainingDataAndClose(readableFile); assertFalse(source.exists()); assertTrue(readableFile.isClosed()); @@ -155,7 +189,9 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc } @Test - public void whenReadingAfterTheConfiguredReadingTimeExpired_throwException() throws IOException { + public void + whenReadingAfterTheConfiguredReadingTimeExpired_deleteOriginalFile_close_and_throwException() + throws IOException { readableFile.readLine(bytes -> true); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) .when(timeProvider) @@ -165,6 +201,7 @@ public void whenReadingAfterTheConfiguredReadingTimeExpired_throwException() thr readableFile.readLine(bytes -> true); fail(); } catch (ReadingTimeoutException ignored) { + assertTrue(readableFile.isClosed()); } } @@ -180,7 +217,27 @@ public void whenReadingAfterClosed_throwException() throws IOException { } } - private List getSourceLines() throws IOException { - return Files.readAllLines(source.toPath()); + private static List getRemainingDataAndClose(ReadableFile readableFile) + throws IOException { + List result = new ArrayList<>(); + while (true) { + try { + readableFile.readLine( + bytes -> { + result.add(deserialize(bytes)); + return true; + }); + } catch (IOException ignored) { + break; + } + } + + readableFile.close(); + + return result; + } + + private static LogRecordData deserialize(byte[] data) { + return SERIALIZER.deserialize(data).get(0); } } From 6dd53fd85a9215cdb1261a51572a8a459db8af48 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 09:36:26 +0200 Subject: [PATCH 136/209] Cleaning up json related code --- disk-buffering/build.gradle.kts | 11 - .../converters/AttributesJsonConverter.java | 220 --------- .../converters/MetricDataJsonConverter.java | 125 ----- .../{proto => }/common/AttributesMapper.java | 2 +- .../common/BaseProtoSignalsDataMapper.java | 2 +- .../common/BaseResourceSignalsDataMapper.java | 107 ----- .../{proto => }/common/ByteStringMapper.java | 2 +- .../mapping/common/ResourceMapper.java | 29 +- .../mapping/common/ResourceMapping.java | 19 - .../mapping/common/ScopeMapping.java | 19 - .../mapping/common/SpanContextMapping.java | 18 - .../{proto => }/logs/LogRecordDataMapper.java | 6 +- .../mapping/logs/LogRecordMapper.java | 98 ---- .../{proto => }/logs/ProtoLogsDataMapper.java | 4 +- .../mapping/logs/ResourceLogsDataMapper.java | 62 --- .../mapping/logs/ResourceLogsMapper.java | 23 - .../mapping/logs/ScopeLogsMapper.java | 22 - .../mapping/metrics/DataPointMapper.java | 145 ------ .../mapping/metrics/MetricDataMapper.java | 453 +++++++++++++++--- .../mapping/metrics/MetricMapper.java | 134 ------ .../metrics/ProtoMetricsDataMapper.java | 4 +- .../metrics/ResourceMetricsDataMapper.java | 62 --- .../metrics/ResourceMetricsMapper.java | 23 - .../mapping/metrics/ScopeMetricsMapper.java | 22 - .../data/ExponentialHistogramDataImpl.java | 2 +- .../models/data/HistogramDataImpl.java | 2 +- .../metrics/models/data/SumDataImpl.java | 2 +- .../mapping/proto/common/ResourceMapper.java | 29 -- .../proto/metrics/MetricDataMapper.java | 438 ----------------- .../mapping/proto/spans/SpanDataMapper.java | 208 -------- .../spans/ProtoSpansDataMapper.java | 4 +- .../spans/ResourceSpansDataMapper.java | 62 --- .../mapping/spans/ResourceSpansMapper.java | 23 - .../mapping/spans/ScopeSpansMapper.java | 22 - .../mapping/spans/SpanDataMapper.java | 274 ++++++----- .../models/common/ResourceJson.java | 15 - .../models/common/ResourceSignals.java | 27 -- .../models/common/ResourceSignalsData.java | 13 - .../models/common/ScopeJson.java | 24 - .../models/common/ScopeSignals.java | 25 - .../serialization/models/logs/BodyJson.java | 16 - .../models/logs/LogRecordDataJson.java | 51 -- .../models/logs/ResourceLogs.java | 29 -- .../models/logs/ResourceLogsData.java | 27 -- .../serialization/models/logs/ScopeLogs.java | 27 -- .../models/metrics/MetricDataJson.java | 33 -- .../models/metrics/ResourceMetrics.java | 29 -- .../models/metrics/ResourceMetricsData.java | 27 -- .../models/metrics/ScopeMetrics.java | 27 -- .../models/metrics/data/DataJson.java | 29 -- .../metrics/data/ExponentialHistogram.java | 19 - .../models/metrics/data/Gauge.java | 12 - .../models/metrics/data/Histogram.java | 19 - .../models/metrics/data/Sum.java | 23 - .../models/metrics/data/Summary.java | 12 - .../models/metrics/datapoints/DataPoint.java | 24 - .../ExponentialHistogramDataPoint.java | 52 -- .../datapoints/HistogramDataPoint.java | 42 -- .../metrics/datapoints/NumberDataPoint.java | 49 -- .../metrics/datapoints/SummaryDataPoint.java | 28 -- .../metrics/datapoints/data/Buckets.java | 19 - .../metrics/datapoints/data/Exemplar.java | 44 -- .../datapoints/data/QuantileValue.java | 20 - .../impl/ExponentialHistogramMetric.java | 33 -- .../models/metrics/impl/GaugeMetric.java | 33 -- .../models/metrics/impl/HistogramMetric.java | 33 -- .../models/metrics/impl/SumMetric.java | 33 -- .../models/metrics/impl/SummaryMetric.java | 33 -- .../models/spans/EventDataJson.java | 27 -- .../models/spans/LinkDataJson.java | 31 -- .../models/spans/ResourceSpans.java | 29 -- .../models/spans/ResourceSpansData.java | 27 -- .../serialization/models/spans/ScopeSpan.java | 27 -- .../models/spans/SpanDataJson.java | 69 --- .../models/spans/StatusDataJson.java | 20 - .../serializers/JsonSerializer.java | 121 ----- .../exporters/AbstractDiskExporterTest.java | 1 + .../AttributesJsonConverterTest.java | 54 --- .../MetricDataJsonConverterTest.java | 106 ---- .../common/AttributesMapperTest.java | 2 +- .../common/ResourceMapperTest.java | 2 +- .../logs/LogRecordDataMapperTest.java | 2 +- .../logs/ProtoLogsDataMapperTest.java | 2 +- .../metrics/MetricDataMapperTest.java | 2 +- .../metrics/ProtoMetricsDataMapperTest.java | 2 +- .../spans/ProtoSpansDataMapperTest.java | 2 +- .../{proto => }/spans/SpanDataMapperTest.java | 2 +- .../internal/storage/StorageTest.java | 1 + .../testutils/BaseJsonSerializationTest.java | 29 -- .../testutils/BaseSignalSerializerTest.java | 1 + 90 files changed, 560 insertions(+), 3604 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/common/AttributesMapper.java (99%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/common/BaseProtoSignalsDataMapper.java (99%) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/common/ByteStringMapper.java (93%) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/logs/LogRecordDataMapper.java (97%) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/logs/ProtoLogsDataMapper.java (97%) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/metrics/ProtoMetricsDataMapper.java (97%) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/spans/ProtoSpansDataMapper.java (97%) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java delete mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java delete mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/common/AttributesMapperTest.java (98%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/common/ResourceMapperTest.java (96%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/logs/LogRecordDataMapperTest.java (98%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/logs/ProtoLogsDataMapperTest.java (99%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/metrics/MetricDataMapperTest.java (99%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/metrics/ProtoMetricsDataMapperTest.java (99%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/spans/ProtoSpansDataMapperTest.java (99%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/{proto => }/spans/SpanDataMapperTest.java (99%) delete mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index daa53f19f..1ceeebe38 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -6,31 +6,20 @@ plugins { description = "Exporter implementations that store signals in disk" otelJava.moduleName.set("io.opentelemetry.contrib.disk.buffering") -tasks { - withType().configureEach { - with(options) { - compilerArgs.addAll(listOf("-Xlint:-unchecked", "-Xlint:-rawtypes")) - } - } -} - java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } -val dslJsonVersion = "1.10.0" val mapStructVersion = "1.5.5.Final" val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") implementation("io.opentelemetry:opentelemetry-exporter-otlp-common") - implementation("com.dslplatform:dsl-json-java8:$dslJsonVersion") implementation("io.opentelemetry.proto:opentelemetry-proto:0.20.0-alpha") implementation("org.mapstruct:mapstruct:$mapStructVersion") compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") - annotationProcessor("com.dslplatform:dsl-json-java8:$dslJsonVersion") annotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion") testImplementation("org.mockito:mockito-inline:4.11.0") } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java deleted file mode 100644 index e8793c2ed..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverter.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; - -import com.dslplatform.json.BoolConverter; -import com.dslplatform.json.JsonConverter; -import com.dslplatform.json.JsonReader; -import com.dslplatform.json.JsonWriter; -import com.dslplatform.json.NumberConverter; -import com.dslplatform.json.ObjectConverter; -import com.dslplatform.json.StringConverter; -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.AttributeType; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.common.AttributesBuilder; -import java.io.IOException; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; - -@SuppressWarnings({"rawtypes", "unchecked"}) -@JsonConverter(target = Attributes.class) -public final class AttributesJsonConverter { - private static final Map simpleTypesInJson = new HashMap<>(); - private static final Map jsonToSimpleTypes = new HashMap<>(); - private static final Map arrayToSimpleTypes = new HashMap<>(); - - private AttributesJsonConverter() {} - - static { - simpleTypesInJson.put(AttributeType.BOOLEAN, "boolValue"); - simpleTypesInJson.put(AttributeType.DOUBLE, "doubleValue"); - simpleTypesInJson.put(AttributeType.LONG, "intValue"); - simpleTypesInJson.put(AttributeType.STRING, "stringValue"); - arrayToSimpleTypes.put(AttributeType.BOOLEAN_ARRAY, AttributeType.BOOLEAN); - arrayToSimpleTypes.put(AttributeType.DOUBLE_ARRAY, AttributeType.DOUBLE); - arrayToSimpleTypes.put(AttributeType.LONG_ARRAY, AttributeType.LONG); - arrayToSimpleTypes.put(AttributeType.STRING_ARRAY, AttributeType.STRING); - for (Map.Entry entry : simpleTypesInJson.entrySet()) { - jsonToSimpleTypes.put(entry.getValue(), entry.getKey()); - } - } - - public static void write(JsonWriter writer, Attributes value) { - Iterator, Object>> entryIterator = - value.asMap().entrySet().iterator(); - writer.writeAscii("["); - while (entryIterator.hasNext()) { - Map.Entry, Object> entry = entryIterator.next(); - writeItem(writer, entry.getKey(), entry.getValue(), entryIterator.hasNext()); - } - writer.writeAscii("]"); - } - - public static Attributes read(JsonReader reader) throws IOException { - AttributesBuilder builder = Attributes.builder(); - - if (listIsEmpty(reader)) { - return builder.build(); - } - - readObject(reader, builder); - - while (reader.getNextToken() != ']') { - reader.startObject(); - readObject(reader, builder); - } - - return builder.build(); - } - - private static void readObject(JsonReader reader, AttributesBuilder builder) throws IOException { - Map map = ObjectConverter.deserializeMap(reader); - String key = (String) map.get("key"); - Map value = (Map) map.get("value"); - putItem( - builder, - Objects.requireNonNull(key), - Objects.requireNonNull(value).entrySet().iterator().next()); - } - - private static void putItem( - AttributesBuilder builder, String key, Map.Entry entry) { - Object value = entry.getValue(); - if (value instanceof Map) { - List> list = - (List>) ((Map) value).get("values"); - Objects.requireNonNull(list); - AttributeType type = jsonToSimpleTypes.get(list.get(0).keySet().iterator().next()); - switch (Objects.requireNonNull(type)) { - case BOOLEAN: - builder.put(AttributeKey.booleanArrayKey(key), collectItems(list)); - break; - case DOUBLE: - builder.put( - AttributeKey.doubleArrayKey(key), - collectItems(list, item -> ((BigDecimal) item).doubleValue())); - break; - case LONG: - builder.put( - AttributeKey.longArrayKey(key), - collectItems(list, item -> Long.parseLong((String) item))); - break; - case STRING: - builder.put(AttributeKey.stringArrayKey(key), collectItems(list)); - break; - default: - throw new UnsupportedOperationException(); - } - } else { - switch (Objects.requireNonNull(jsonToSimpleTypes.get(entry.getKey()))) { - case BOOLEAN: - builder.put(AttributeKey.booleanKey(key), (Boolean) value); - break; - case DOUBLE: - builder.put(AttributeKey.doubleKey(key), ((BigDecimal) value).doubleValue()); - break; - case LONG: - builder.put(AttributeKey.longKey(key), Long.parseLong((String) value)); - break; - case STRING: - builder.put(AttributeKey.stringKey(key), (String) value); - break; - default: - throw new UnsupportedOperationException(); - } - } - } - - private static List collectItems(List> list) { - return collectItems(list, (item) -> (T) item); - } - - private static List collectItems( - List> list, Function converter) { - List result = new ArrayList<>(); - for (Map map : list) { - for (Object value : map.values()) { - result.add(converter.apply(value)); - } - } - return result; - } - - private static boolean listIsEmpty(JsonReader reader) throws IOException { - if (reader.last() != '[') { - throw reader.newParseError("Expecting '[' for list start"); - } - byte nextToken = reader.getNextToken(); - return nextToken == ']'; - } - - private static void writeItem( - JsonWriter writer, AttributeKey attributeKey, Object object, boolean hasNext) { - writer.writeAscii("{\"key\":"); - StringConverter.serialize(attributeKey.getKey(), writer); - writer.writeAscii(",\"value\":{"); - writeValue(writer, attributeKey.getType(), object); - writer.writeAscii("}"); - writer.writeAscii("}"); - if (hasNext) { - writer.writeAscii(","); - } - } - - private static void writeValue(JsonWriter writer, AttributeType type, Object object) { - if (arrayToSimpleTypes.containsKey(type)) { - writeArrayValue(writer, type, object); - } else { - writeSimpleValue(writer, type, object); - } - } - - private static void writeSimpleValue(JsonWriter writer, AttributeType type, Object object) { - writer.writeString(Objects.requireNonNull(simpleTypesInJson.get(type))); - writer.writeAscii(":"); - switch (type) { - case BOOLEAN: - BoolConverter.serialize((Boolean) object, writer); - break; - case STRING: - StringConverter.serialize((String) object, writer); - break; - case DOUBLE: - NumberConverter.serialize((Double) object, writer); - break; - case LONG: - StringConverter.serialize(String.valueOf(object), writer); - break; - default: - throw new UnsupportedOperationException("Not supported type: " + type); - } - } - - private static void writeArrayValue(JsonWriter writer, AttributeType type, Object object) { - Iterator iterator = ((Collection) object).iterator(); - AttributeType simpleType = Objects.requireNonNull(arrayToSimpleTypes.get(type)); - writer.writeAscii("\"arrayValue\":{"); - writer.writeAscii("\"values\":["); - while (iterator.hasNext()) { - writer.writeAscii("{"); - writeSimpleValue(writer, simpleType, iterator.next()); - writer.writeAscii("}"); - if (iterator.hasNext()) { - writer.writeAscii(","); - } - } - writer.writeAscii("]"); - writer.writeAscii("}"); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java deleted file mode 100644 index 2c077f7b9..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverter.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; - -import com.dslplatform.json.JsonConverter; -import com.dslplatform.json.JsonReader; -import com.dslplatform.json.JsonWriter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -@SuppressWarnings("unchecked") -@JsonConverter(target = MetricDataJson.class) -public final class MetricDataJsonConverter { - private static final int METRIC_DATA_NUM_OF_KEYS = 4; - private static final Map, JsonReader.ReadObject> READERS = new HashMap<>(); - private static final Map, JsonWriter.WriteObject> WRITERS = new HashMap<>(); - - private MetricDataJsonConverter() {} - - public static MetricDataJson read(JsonReader reader) throws IOException { - String name = null; - String description = null; - String unit = null; - MetricDataJson metricDataJson = null; - for (int i = 0; i < METRIC_DATA_NUM_OF_KEYS; i++) { - reader.getNextToken(); - String key = reader.readKey(); - switch (key) { - case SumMetric.DATA_NAME: - metricDataJson = new SumMetric(); - metricDataJson.setData(getReader(Sum.class).read(reader)); - break; - case GaugeMetric.DATA_NAME: - metricDataJson = new GaugeMetric(); - metricDataJson.setData(getReader(Gauge.class).read(reader)); - break; - case HistogramMetric.DATA_NAME: - metricDataJson = new HistogramMetric(); - metricDataJson.setData(getReader(Histogram.class).read(reader)); - break; - case SummaryMetric.DATA_NAME: - metricDataJson = new SummaryMetric(); - metricDataJson.setData(getReader(Summary.class).read(reader)); - break; - case ExponentialHistogramMetric.DATA_NAME: - metricDataJson = new ExponentialHistogramMetric(); - metricDataJson.setData(getReader(ExponentialHistogram.class).read(reader)); - break; - case MetricDataJson.NAME: - name = reader.readString(); - break; - case MetricDataJson.DESCRIPTION: - description = reader.readString(); - break; - case MetricDataJson.UNIT: - unit = reader.readString(); - break; - default: - throw new IllegalArgumentException(); - } - reader.getNextToken(); - } - Objects.requireNonNull(metricDataJson); - Objects.requireNonNull(name); - Objects.requireNonNull(description); - Objects.requireNonNull(unit); - metricDataJson.name = name; - metricDataJson.description = description; - metricDataJson.unit = unit; - return metricDataJson; - } - - public static void write(JsonWriter writer, MetricDataJson value) { - if (value instanceof ExponentialHistogramMetric) { - getWriter(ExponentialHistogramMetric.class).write(writer, (ExponentialHistogramMetric) value); - } else if (value instanceof GaugeMetric) { - getWriter(GaugeMetric.class).write(writer, (GaugeMetric) value); - } else if (value instanceof HistogramMetric) { - getWriter(HistogramMetric.class).write(writer, (HistogramMetric) value); - } else if (value instanceof SummaryMetric) { - getWriter(SummaryMetric.class).write(writer, (SummaryMetric) value); - } else if (value instanceof SumMetric) { - getWriter(SumMetric.class).write(writer, (SumMetric) value); - } else { - throw new UnsupportedOperationException(); - } - } - - private static JsonReader.ReadObject getReader(Class type) { - JsonReader.ReadObject reader = READERS.get(type); - if (reader == null) { - reader = JsonSerializer.tryFindReader(type); - READERS.put(type, reader); - } - - return (JsonReader.ReadObject) reader; - } - - private static JsonWriter.WriteObject getWriter(Class type) { - JsonWriter.WriteObject writer = WRITERS.get(type); - if (writer == null) { - writer = JsonSerializer.tryFindWriter(type); - WRITERS.put(type, writer); - } - - return (JsonWriter.WriteObject) writer; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java similarity index 99% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java index 65799315e..5760db911 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributeType; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java similarity index 99% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java index d93602d76..0d9a944a4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/BaseProtoSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.proto.common.v1.InstrumentationScope; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java deleted file mode 100644 index d9f39a644..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseResourceSignalsDataMapper.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.common.InstrumentationScopeInfoBuilder; -import io.opentelemetry.sdk.resources.Resource; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import javax.annotation.Nullable; - -public abstract class BaseResourceSignalsDataMapper< - SDK_ITEM, - DTO_ITEM, - DTO_SCOPE extends ScopeSignals, - DTO_RESOURCE extends ResourceSignals, - DTO_RESOURCE_DATA extends ResourceSignalsData> { - - public DTO_RESOURCE_DATA toDtoItems(Collection sourceItems) { - Map itemsByResourceAndScope = new HashMap<>(); - Map scopeInfoToScopeSignals = new HashMap<>(); - sourceItems.forEach( - sourceData -> { - Resource resource = getResource(sourceData); - InstrumentationScopeInfo instrumentationScopeInfo = - getInstrumentationScopeInfo(sourceData); - - DTO_RESOURCE itemsByResource = itemsByResourceAndScope.get(resource); - if (itemsByResource == null) { - itemsByResource = resourceSignalToDto(resource); - itemsByResourceAndScope.put(resource, itemsByResource); - } - - DTO_SCOPE scopeSignals = scopeInfoToScopeSignals.get(instrumentationScopeInfo); - if (scopeSignals == null) { - scopeSignals = instrumentationScopeToDto(instrumentationScopeInfo); - scopeInfoToScopeSignals.put(instrumentationScopeInfo, scopeSignals); - itemsByResource.addScopeSignalsItem(scopeSignals); - } - - scopeSignals.addSignalItem(signalItemToDto(sourceData)); - }); - - return createResourceData(itemsByResourceAndScope.values()); - } - - public List fromDtoItems(DTO_RESOURCE_DATA dtoResourceData) { - List result = new ArrayList<>(); - for (ResourceSignals> resourceSignal : - dtoResourceData.getResourceSignals()) { - Resource resource = - ResourceMapper.INSTANCE.jsonToResource( - Objects.requireNonNull(resourceSignal.resource), resourceSignal.schemaUrl); - for (ScopeSignals scopeSignals : resourceSignal.getScopeSignals()) { - InstrumentationScopeInfo scopeInfo = - jsonToInstrumentationScopeInfo( - Objects.requireNonNull(scopeSignals.scope), scopeSignals.schemaUrl); - for (DTO_ITEM item : scopeSignals.getSignalItems()) { - result.add(dtoToSignalItem(item, resource, scopeInfo)); - } - } - } - - return result; - } - - private static InstrumentationScopeInfo jsonToInstrumentationScopeInfo( - ScopeJson scope, @Nullable String schemaUrl) { - InstrumentationScopeInfoBuilder builder = - InstrumentationScopeInfo.builder(Objects.requireNonNull(scope.name)); - if (scope.version != null) { - builder.setVersion(scope.version); - } - if (schemaUrl != null) { - builder.setSchemaUrl(schemaUrl); - } - builder.setAttributes(scope.attributes); - return builder.build(); - } - - protected abstract DTO_ITEM signalItemToDto(SDK_ITEM sourceData); - - protected abstract DTO_RESOURCE resourceSignalToDto(Resource resource); - - protected abstract DTO_SCOPE instrumentationScopeToDto( - InstrumentationScopeInfo instrumentationScopeInfo); - - protected abstract SDK_ITEM dtoToSignalItem( - DTO_ITEM dtoItem, Resource resource, InstrumentationScopeInfo scopeInfo); - - protected abstract DTO_RESOURCE_DATA createResourceData(Collection items); - - protected abstract Resource getResource(SDK_ITEM source); - - protected abstract InstrumentationScopeInfo getInstrumentationScopeInfo(SDK_ITEM source); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java similarity index 93% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java index fe2fe9655..9e8995acc 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ByteStringMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import com.google.protobuf.ByteString; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index 975d78b03..844c37c56 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -1,24 +1,29 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceJson; +import io.opentelemetry.proto.resource.v1.Resource; +import io.opentelemetry.sdk.resources.ResourceBuilder; import javax.annotation.Nullable; -import org.mapstruct.Context; +import org.mapstruct.AfterMapping; import org.mapstruct.Mapper; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; -@Mapper +@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) public abstract class ResourceMapper { public static final ResourceMapper INSTANCE = new ResourceMapperImpl(); - public abstract ResourceJson resourceToJson(io.opentelemetry.sdk.resources.Resource source); + public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { + return Resource.newBuilder() + .addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(sdkResource.getAttributes())) + .build(); + } + + public abstract io.opentelemetry.sdk.resources.Resource mapToSdk( + Resource protoResource, @Nullable String schemaUrl); - public io.opentelemetry.sdk.resources.Resource jsonToResource( - ResourceJson source, @Context @Nullable String schemaUrl) { - return io.opentelemetry.sdk.resources.Resource.create(source.attributes, schemaUrl); + @AfterMapping + protected void addAttributes(Resource protoResource, @MappingTarget ResourceBuilder builder) { + builder.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java deleted file mode 100644 index 6be5b0f5e..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapping.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import org.mapstruct.Mapping; - -@Retention(RetentionPolicy.CLASS) -@Target(ElementType.METHOD) -@Mapping(target = "resource", source = "resource") -@Mapping(target = "schemaUrl", source = "resource.schemaUrl") -@Mapping(target = "scopeSignals", ignore = true) -public @interface ResourceMapping {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java deleted file mode 100644 index ffc215e4e..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ScopeMapping.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import org.mapstruct.Mapping; - -@Retention(RetentionPolicy.CLASS) -@Target(ElementType.METHOD) -@Mapping(target = "schemaUrl", source = "source.schemaUrl") -@Mapping(target = "scope", source = "source") -@Mapping(target = "signalItems", ignore = true) -public @interface ScopeMapping {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java deleted file mode 100644 index 87bde46d3..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/SpanContextMapping.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import org.mapstruct.Mapping; - -@Retention(RetentionPolicy.CLASS) -@Target(ElementType.METHOD) -@Mapping(target = "spanId", expression = "java(source.getSpanContext().getSpanId())") -@Mapping(target = "traceId", expression = "java(source.getSpanContext().getTraceId())") -public @interface SpanContextMapping {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java similarity index 97% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java index 03ca075c9..f6ab3616b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java @@ -1,13 +1,13 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; import io.opentelemetry.proto.common.v1.AnyValue; import io.opentelemetry.proto.logs.v1.LogRecord; import io.opentelemetry.proto.logs.v1.SeverityNumber; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java deleted file mode 100644 index 7f1f95307..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordMapper.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; - -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.api.trace.TraceFlags; -import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.SpanContextMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.BodyJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.LogRecordDataJson; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.logs.data.Body; -import io.opentelemetry.sdk.logs.data.LogRecordData; -import io.opentelemetry.sdk.resources.Resource; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.Context; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingTarget; - -@Mapper -public abstract class LogRecordMapper { - - public static final LogRecordMapper INSTANCE = new LogRecordMapperImpl(); - - @SpanContextMapping - @Mapping( - target = "flags", - expression = "java((int) source.getSpanContext().getTraceFlags().asByte())") - @Mapping(target = "droppedAttributesCount", ignore = true) - public abstract LogRecordDataJson logToJson(LogRecordData source); - - protected BodyJson bodyToJson(Body source) { - BodyJson bodyJson = new BodyJson(); - bodyJson.stringValue = source.asString(); - return bodyJson; - } - - protected Integer severityToNumber(Severity severity) { - return severity.getSeverityNumber(); - } - - @AfterMapping - protected void addDroppedAttributesCount( - LogRecordData source, @MappingTarget LogRecordDataJson target) { - target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); - } - - // FROM JSON - @BeanMapping(resultType = LogRecordDataImpl.class) - @Mapping(target = "resource", ignore = true) - @Mapping(target = "instrumentationScopeInfo", ignore = true) - @Mapping(target = "spanContext", ignore = true) - @Mapping(target = "totalAttributeCount", ignore = true) - public abstract LogRecordData jsonToLog( - LogRecordDataJson source, - @Context Resource resource, - @Context InstrumentationScopeInfo scopeInfo); - - @AfterMapping - protected void addExtras( - LogRecordDataJson source, - @Context Resource resource, - @Context InstrumentationScopeInfo scopeInfo, - @MappingTarget LogRecordDataImpl.Builder target) { - target.setResource(resource); - target.setInstrumentationScopeInfo(scopeInfo); - if (source.traceId != null && source.spanId != null) { - target.setSpanContext( - SpanContext.create( - source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); - } - target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); - } - - protected Body jsonToBody(BodyJson source) { - if (source.stringValue != null) { - return Body.string(source.stringValue); - } else { - return Body.empty(); - } - } - - protected Severity jsonToSeverity(Integer source) { - for (Severity severity : Severity.values()) { - if (severity.getSeverityNumber() == source) { - return severity; - } - } - throw new IllegalArgumentException(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java similarity index 97% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java index be7f728e9..a570ef851 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.BaseProtoSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper; import io.opentelemetry.proto.logs.v1.LogRecord; import io.opentelemetry.proto.logs.v1.LogsData; import io.opentelemetry.proto.logs.v1.ResourceLogs; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java deleted file mode 100644 index 9b7b7456b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsDataMapper.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.LogRecordDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogs; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogsData; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ScopeLogs; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.logs.data.LogRecordData; -import io.opentelemetry.sdk.resources.Resource; -import java.util.Collection; - -public final class ResourceLogsDataMapper - extends BaseResourceSignalsDataMapper< - LogRecordData, LogRecordDataJson, ScopeLogs, ResourceLogs, ResourceLogsData> { - - public static final ResourceLogsDataMapper INSTANCE = new ResourceLogsDataMapper(); - - private ResourceLogsDataMapper() {} - - @Override - protected LogRecordDataJson signalItemToDto(LogRecordData sourceData) { - return LogRecordMapper.INSTANCE.logToJson(sourceData); - } - - @Override - protected ResourceLogs resourceSignalToDto(Resource resource) { - return ResourceLogsMapper.INSTANCE.resourceLogsToJson(resource); - } - - @Override - protected ScopeLogs instrumentationScopeToDto( - InstrumentationScopeInfo instrumentationScopeInfo) { - return ScopeLogsMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); - } - - @Override - protected LogRecordData dtoToSignalItem( - LogRecordDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { - return LogRecordMapper.INSTANCE.jsonToLog(jsonItem, resource, scopeInfo); - } - - @Override - protected ResourceLogsData createResourceData(Collection items) { - return new ResourceLogsData(items); - } - - @Override - protected Resource getResource(LogRecordData logRecordData) { - return logRecordData.getResource(); - } - - @Override - protected InstrumentationScopeInfo getInstrumentationScopeInfo(LogRecordData logRecordData) { - return logRecordData.getInstrumentationScopeInfo(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java deleted file mode 100644 index 993bd5498..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ResourceLogsMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogs; -import io.opentelemetry.sdk.resources.Resource; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -@Mapper(uses = {ResourceMapper.class}) -public interface ResourceLogsMapper { - - ResourceLogsMapper INSTANCE = new ResourceLogsMapperImpl(); - - @ResourceMapping - @Mapping(target = "scopeLogs", ignore = true) - ResourceLogs resourceLogsToJson(Resource resource); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java deleted file mode 100644 index 48b6a8e0c..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ScopeLogsMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ScopeLogs; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -@Mapper -public interface ScopeLogsMapper { - - ScopeLogsMapper INSTANCE = new ScopeLogsMapperImpl(); - - @ScopeMapping - @Mapping(target = "logRecords", ignore = true) - ScopeLogs scopeInfoToJson(InstrumentationScopeInfo source); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java deleted file mode 100644 index 9c5f6cbb4..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/DataPointMapper.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; - -import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.api.trace.TraceFlags; -import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.DataPoint; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.HistogramDataPoint; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.SummaryDataPoint; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.QuantileValue; -import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; -import io.opentelemetry.sdk.metrics.data.DoublePointData; -import io.opentelemetry.sdk.metrics.data.ExemplarData; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; -import io.opentelemetry.sdk.metrics.data.HistogramPointData; -import io.opentelemetry.sdk.metrics.data.LongExemplarData; -import io.opentelemetry.sdk.metrics.data.LongPointData; -import io.opentelemetry.sdk.metrics.data.PointData; -import io.opentelemetry.sdk.metrics.data.SummaryPointData; -import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; -import java.util.ArrayList; -import java.util.List; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; -import org.mapstruct.SubclassExhaustiveStrategy; -import org.mapstruct.SubclassMapping; - -@Mapper( - subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION, - unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class DataPointMapper { - - public static final DataPointMapper INSTANCE = new DataPointMapperImpl(); - - @SubclassMapping(source = LongPointData.class, target = NumberDataPoint.class) - @SubclassMapping(source = DoublePointData.class, target = NumberDataPoint.class) - @SubclassMapping(source = HistogramPointData.class, target = HistogramDataPoint.class) - @SubclassMapping(source = SummaryPointData.class, target = SummaryDataPoint.class) - @SubclassMapping( - source = ExponentialHistogramPointData.class, - target = ExponentialHistogramDataPoint.class) - public abstract DataPoint pointDataToJson(PointData source); - - protected abstract Buckets exponentialBucketsToJson(ExponentialHistogramBuckets source); - - protected abstract QuantileValue quantileToJson(ValueAtQuantile source); - - @AfterMapping - protected void spanContextToJson(ExemplarData source, @MappingTarget Exemplar target) { - target.spanId = source.getSpanContext().getSpanId(); - target.traceId = source.getSpanContext().getTraceId(); - } - - // FROM JSON - @BeanMapping(resultType = LongPointDataImpl.class) - @Mapping(target = "value", source = "longValue") - public abstract LongPointData jsonToLongPointData(NumberDataPoint source); - - @BeanMapping(resultType = DoublePointDataImpl.class) - @Mapping(target = "value", source = "doubleValue") - public abstract DoublePointData jsonToDoublePointData(NumberDataPoint source); - - @BeanMapping(resultType = HistogramPointDataImpl.class) - public abstract HistogramPointData jsonHistogramToPointData(HistogramDataPoint source); - - @BeanMapping(resultType = SummaryPointDataImpl.class) - public abstract SummaryPointData jsonSummaryToPointData(SummaryDataPoint source); - - @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) - @Mapping(target = "positiveBuckets", ignore = true) - @Mapping(target = "negativeBuckets", ignore = true) - public abstract ExponentialHistogramPointData jsonExponentialHistogramToPointData( - ExponentialHistogramDataPoint source); - - @BeanMapping(resultType = LongExemplarDataImpl.class) - @Mapping(target = "value", source = "longValue") - protected abstract LongExemplarData jsonToLongExemplar(Exemplar source); - - @BeanMapping(resultType = DoubleExemplarDataImpl.class) - @Mapping(target = "value", source = "doubleValue") - protected abstract DoubleExemplarData jsonToDoubleExemplar(Exemplar source); - - @AfterMapping - protected void addBuckets( - ExponentialHistogramDataPoint source, - @MappingTarget ExponentialHistogramPointDataImpl.Builder target) { - if (source.positiveBuckets != null) { - target.setPositiveBuckets(jsonToExponentialBuckets(source.positiveBuckets, source.scale)); - } - if (source.negativeBuckets != null) { - target.setNegativeBuckets(jsonToExponentialBuckets(source.negativeBuckets, source.scale)); - } - } - - protected ExponentialHistogramBuckets jsonToExponentialBuckets(Buckets source, Integer scale) { - List bucketCounts = new ArrayList<>(); - long totalCount = 0; - for (String bucketCount : source.bucketCounts) { - long countValue = Long.parseLong(bucketCount); - bucketCounts.add(countValue); - totalCount += countValue; - } - return ExponentialHistogramBucketsImpl.builder() - .setOffset(source.offset) - .setBucketCounts(bucketCounts) - .setTotalCount(totalCount) - .setScale(scale) - .build(); - } - - @BeanMapping(resultType = ValueAtQuantileImpl.class) - protected abstract ValueAtQuantile jsonToQuantile(QuantileValue source); - - @AfterMapping - protected void jsonToSpanContext(Exemplar source, @MappingTarget ExemplarDataBuilder target) { - if (source.traceId != null && source.spanId != null) { - target.setSpanContext( - SpanContext.create( - source.traceId, source.spanId, TraceFlags.getSampled(), TraceState.getDefault())); - } - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 0f1161432..8b5262073 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -1,139 +1,438 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.sdk.metrics.data.AggregationTemporality; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.PointDataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; +import io.opentelemetry.proto.common.v1.KeyValue; +import io.opentelemetry.proto.metrics.v1.AggregationTemporality; +import io.opentelemetry.proto.metrics.v1.Exemplar; +import io.opentelemetry.proto.metrics.v1.ExponentialHistogram; +import io.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint; +import io.opentelemetry.proto.metrics.v1.Gauge; +import io.opentelemetry.proto.metrics.v1.Histogram; +import io.opentelemetry.proto.metrics.v1.HistogramDataPoint; +import io.opentelemetry.proto.metrics.v1.Metric; +import io.opentelemetry.proto.metrics.v1.NumberDataPoint; +import io.opentelemetry.proto.metrics.v1.Sum; +import io.opentelemetry.proto.metrics.v1.Summary; +import io.opentelemetry.proto.metrics.v1.SummaryDataPoint; +import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.metrics.data.Data; +import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; import io.opentelemetry.sdk.metrics.data.DoublePointData; +import io.opentelemetry.sdk.metrics.data.ExemplarData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.data.GaugeData; import io.opentelemetry.sdk.metrics.data.HistogramData; +import io.opentelemetry.sdk.metrics.data.HistogramPointData; +import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; +import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.metrics.data.PointData; import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SummaryData; +import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import io.opentelemetry.sdk.resources.Resource; +import java.util.ArrayList; +import java.util.List; +import org.mapstruct.AfterMapping; import org.mapstruct.BeanMapping; +import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Context; +import org.mapstruct.EnumMapping; +import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; -import org.mapstruct.SubclassExhaustiveStrategy; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.ValueMapping; @Mapper( - uses = DataPointMapper.class, - subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION) + collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, + unmappedTargetPolicy = ReportingPolicy.IGNORE) public abstract class MetricDataMapper { public static final MetricDataMapper INSTANCE = new MetricDataMapperImpl(); + public abstract Metric mapToProto(MetricData source); + + @BeanMapping(resultType = MetricDataImpl.class) + public abstract MetricData mapToSdk( + Metric source, @Context Resource resource, @Context InstrumentationScopeInfo scope); + @SuppressWarnings("unchecked") - public DataJson metricDataToJson(Data data, @Context MetricDataType type) { - switch (type) { + @AfterMapping + protected void addDataToProto(MetricData source, @MappingTarget Metric.Builder target) { + switch (source.getType()) { case LONG_GAUGE: - return longGaugeToJson((GaugeData) data); + target.setGauge(mapLongGaugeToProto((GaugeData) source.getData())); + break; case DOUBLE_GAUGE: - return doubleGaugeToJson((GaugeData) data); + target.setGauge(mapDoubleGaugeToProto((GaugeData) source.getData())); + break; case LONG_SUM: - return longSumToJson((SumData) data); + target.setSum(mapLongSumToProto((SumData) source.getData())); + break; case DOUBLE_SUM: - return doubleSumToJson((SumData) data); + target.setSum(mapDoubleSumToProto((SumData) source.getData())); + break; + case SUMMARY: + target.setSummary(mapSummaryToProto((SummaryData) source.getData())); + break; + case HISTOGRAM: + target.setHistogram(mapHistogramToProto((HistogramData) source.getData())); + break; + case EXPONENTIAL_HISTOGRAM: + target.setExponentialHistogram( + mapExponentialHistogramToProto((ExponentialHistogramData) source.getData())); + break; + } + } + + @AfterMapping + protected void addDataToSdk( + Metric source, + @MappingTarget MetricDataImpl.Builder target, + @Context Resource resource, + @Context InstrumentationScopeInfo scope) { + target.setResource(resource); + target.setInstrumentationScopeInfo(scope); + switch (source.getDataCase()) { + case GAUGE: + DataWithType gaugeDataWithType = mapGaugeToSdk(source.getGauge()); + target.setData(gaugeDataWithType.data); + target.setType(gaugeDataWithType.type); + break; + case SUM: + DataWithType sumDataWithType = mapSumToSdk(source.getSum()); + target.setData(sumDataWithType.data); + target.setType(sumDataWithType.type); + break; case SUMMARY: - return summaryToJson((SummaryData) data); + target.setData(mapSummaryToSdk(source.getSummary())); + target.setType(MetricDataType.SUMMARY); + break; case HISTOGRAM: - return histogramToJson((HistogramData) data); + target.setData(mapHistogramToSdk(source.getHistogram())); + target.setType(MetricDataType.HISTOGRAM); + break; case EXPONENTIAL_HISTOGRAM: - return exponentialHistogramToJson((ExponentialHistogramData) data); + target.setData(mapExponentialHistogramToSdk(source.getExponentialHistogram())); + target.setType(MetricDataType.EXPONENTIAL_HISTOGRAM); + break; + default: + throw new UnsupportedOperationException(); } - throw new UnsupportedOperationException(); } - @BeanMapping(resultType = Summary.class) - protected abstract DataJson summaryToJson(SummaryData source); + @Mapping(target = "dataPointsList", source = "points") + protected abstract Gauge mapLongGaugeToProto(GaugeData data); + + @Mapping(target = "dataPointsList", source = "points") + protected abstract Gauge mapDoubleGaugeToProto(GaugeData data); - @BeanMapping(resultType = Histogram.class) - protected abstract DataJson histogramToJson(HistogramData source); + @Mapping(target = "dataPointsList", source = "points") + @Mapping(target = "isMonotonic", source = "monotonic") + protected abstract Sum mapLongSumToProto(SumData data); - @BeanMapping(resultType = Sum.class) - protected abstract DataJson longSumToJson(SumData source); + @Mapping(target = "dataPointsList", source = "points") + @Mapping(target = "isMonotonic", source = "monotonic") + protected abstract Sum mapDoubleSumToProto(SumData data); - @BeanMapping(resultType = Gauge.class) - protected abstract DataJson longGaugeToJson(GaugeData source); + @Mapping(target = "dataPointsList", source = "points") + protected abstract Summary mapSummaryToProto(SummaryData data); - @BeanMapping(resultType = Gauge.class) - protected abstract DataJson doubleGaugeToJson(GaugeData source); + @Mapping(target = "dataPointsList", source = "points") + protected abstract Histogram mapHistogramToProto(HistogramData data); - @BeanMapping(resultType = Sum.class) - protected abstract DataJson doubleSumToJson(SumData source); + @Mapping(target = "dataPointsList", source = "points") + protected abstract ExponentialHistogram mapExponentialHistogramToProto( + ExponentialHistogramData data); - @BeanMapping(resultType = ExponentialHistogram.class) - protected abstract DataJson exponentialHistogramToJson(ExponentialHistogramData source); + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asInt", source = "value") + @Mapping(target = "exemplarsList", source = "exemplars") + protected abstract NumberDataPoint longPointDataToNumberDataPoint(LongPointData source); - protected Integer aggregationTemporalityToNumber(AggregationTemporality aggregationTemporality) { - return aggregationTemporality.ordinal() + 1; + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asDouble", source = "value") + @Mapping(target = "exemplarsList", source = "exemplars") + protected abstract NumberDataPoint doublePointDataToNumberDataPoint(DoublePointData source); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "quantileValuesList", source = "values") + protected abstract SummaryDataPoint summaryPointDataToSummaryDataPoint( + SummaryPointData summaryPointData); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "bucketCountsList", source = "counts") + @Mapping(target = "explicitBoundsList", source = "boundaries") + @Mapping(target = "exemplarsList", source = "exemplars") + protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( + HistogramPointData histogramPointData); + + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "positive", source = "positiveBuckets") + @Mapping(target = "negative", source = "negativeBuckets") + @Mapping(target = "exemplarsList", source = "exemplars") + protected abstract ExponentialHistogramDataPoint + exponentialHistogramPointDataToExponentialHistogramDataPoint( + ExponentialHistogramPointData exponentialHistogramPointData); + + @Mapping(target = "bucketCountsList", source = "bucketCounts") + @Mapping(target = "offset") + protected abstract ExponentialHistogramDataPoint.Buckets exponentialHistogramBucketsToBuckets( + ExponentialHistogramBuckets source); + + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asDouble", source = "value") + protected abstract Exemplar doubleExemplarDataToExemplar(DoubleExemplarData doubleExemplarData); + + @Mapping(target = "timeUnixNano", source = "epochNanos") + @Mapping(target = "asInt", source = "value") + protected abstract Exemplar longExemplarDataToExemplar(LongExemplarData doubleExemplarData); + + @AfterMapping + protected void addAttributesToNumberDataPoint( + PointData source, @MappingTarget NumberDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); } - // FROM JSON - public Data jsonToMetricData(DataJson source, @Context MetricDataType type) { - switch (type) { - case LONG_GAUGE: - return jsonToLongGauge((Gauge) source); - case DOUBLE_GAUGE: - return jsonToDoubleGauge((Gauge) source); - case LONG_SUM: - return jsonToLongSum((Sum) source); - case DOUBLE_SUM: - return jsonToDoubleSum((Sum) source); - case SUMMARY: - return jsonToSummary((Summary) source); - case HISTOGRAM: - return jsonToHistogram((Histogram) source); - case EXPONENTIAL_HISTOGRAM: - return jsonToExponentialHistogram((ExponentialHistogram) source); + @AfterMapping + protected void addAttributesToSummaryDataPoint( + PointData source, @MappingTarget SummaryDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @AfterMapping + protected void addExtrasToExemplar(ExemplarData source, @MappingTarget Exemplar.Builder target) { + target.addAllFilteredAttributes(attributesToProto(source.getFilteredAttributes())); + SpanContext spanContext = source.getSpanContext(); + target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + } + + @AfterMapping + protected void addAttributesToExponentialHistogramDataPoint( + ExponentialHistogramPointData source, + @MappingTarget ExponentialHistogramDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @AfterMapping + protected void addAttributesToHistogramDataPoint( + HistogramPointData source, @MappingTarget HistogramDataPoint.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + @EnumMapping( + nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, + configuration = "AGGREGATION_TEMPORALITY_") + protected abstract AggregationTemporality mapAggregationTemporalityToProto( + io.opentelemetry.sdk.metrics.data.AggregationTemporality source); + + // FROM PROTO + private DataWithType mapGaugeToSdk(Gauge gauge) { + if (gauge.getDataPointsCount() > 0) { + NumberDataPoint dataPoint = gauge.getDataPoints(0); + if (dataPoint.hasAsInt()) { + return new DataWithType(mapLongGaugeToSdk(gauge), MetricDataType.LONG_GAUGE); + } else if (dataPoint.hasAsDouble()) { + return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); + } + } + return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); + } + + private DataWithType mapSumToSdk(Sum sum) { + if (sum.getDataPointsCount() > 0) { + NumberDataPoint dataPoint = sum.getDataPoints(0); + if (dataPoint.hasAsInt()) { + return new DataWithType(mapLongSumToSdk(sum), MetricDataType.LONG_SUM); + } else if (dataPoint.hasAsDouble()) { + return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); + } } - throw new UnsupportedOperationException(); + return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); } + @InheritInverseConfiguration + @BeanMapping(resultType = SummaryDataImpl.class) + protected abstract SummaryData mapSummaryToSdk(Summary summary); + + @InheritInverseConfiguration + @BeanMapping(resultType = HistogramDataImpl.class) + protected abstract HistogramData mapHistogramToSdk(Histogram histogram); + + @InheritInverseConfiguration + @BeanMapping(resultType = ExponentialHistogramDataImpl.class) + protected abstract ExponentialHistogramData mapExponentialHistogramToSdk( + ExponentialHistogram source); + + @Mapping(target = "exemplars", source = "exemplarsList") + @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) + protected abstract ExponentialHistogramPointData + exponentialHistogramDataPointToExponentialHistogramPointData( + ExponentialHistogramDataPoint source); + + @InheritInverseConfiguration + @BeanMapping(resultType = HistogramPointDataImpl.class) + protected abstract HistogramPointData histogramDataPointToHistogramPointData( + HistogramDataPoint source); + + @InheritInverseConfiguration + @BeanMapping(resultType = DoubleExemplarDataImpl.class) + protected abstract DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source); + + @InheritInverseConfiguration + @BeanMapping(resultType = LongExemplarDataImpl.class) + protected abstract LongExemplarData exemplarToLongExemplarData(Exemplar source); + + @InheritInverseConfiguration + @BeanMapping(resultType = SummaryPointDataImpl.class) + protected abstract SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source); + + @BeanMapping(resultType = ValueAtQuantileImpl.class) + protected abstract ValueAtQuantile mapFromSummaryValueAtQuantileProto( + SummaryDataPoint.ValueAtQuantile source); + + @EnumMapping( + nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, + configuration = "AGGREGATION_TEMPORALITY_") + @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) + protected abstract io.opentelemetry.sdk.metrics.data.AggregationTemporality + mapAggregationTemporalityToSdk(AggregationTemporality source); + + @InheritInverseConfiguration @BeanMapping(resultType = GaugeDataImpl.LongData.class) - protected abstract GaugeData jsonToLongGauge(Gauge source); + protected abstract GaugeData mapLongGaugeToSdk(Gauge gauge); + @InheritInverseConfiguration @BeanMapping(resultType = GaugeDataImpl.DoubleData.class) - protected abstract GaugeData jsonToDoubleGauge(Gauge source); + protected abstract GaugeData mapDoubleGaugeToSdk(Gauge gauge); + @InheritInverseConfiguration @BeanMapping(resultType = SumDataImpl.LongData.class) - protected abstract SumData jsonToLongSum(Sum source); + protected abstract SumData mapLongSumToSdk(Sum sum); + @InheritInverseConfiguration @BeanMapping(resultType = SumDataImpl.DoubleData.class) - protected abstract SumData jsonToDoubleSum(Sum source); + protected abstract SumData mapDoubleSumToSdk(Sum sum); - @BeanMapping(resultType = SummaryDataImpl.class) - protected abstract SummaryData jsonToSummary(Summary source); + @InheritInverseConfiguration + @BeanMapping(resultType = DoublePointDataImpl.class) + protected abstract DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source); - @BeanMapping(resultType = HistogramDataImpl.class) - protected abstract HistogramData jsonToHistogram(Histogram source); + @InheritInverseConfiguration + @BeanMapping(resultType = LongPointDataImpl.class) + protected abstract LongPointData mapLongNumberDataPointToSdk(NumberDataPoint source); - @BeanMapping(resultType = ExponentialHistogramDataImpl.class) - protected abstract ExponentialHistogramData jsonToExponentialHistogram( - ExponentialHistogram source); + @AfterMapping + protected void addAttributesFromNumberDataPoint( + NumberDataPoint source, @MappingTarget PointDataBuilder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } - protected AggregationTemporality jsonToAggregationTemporality(Integer source) { - int ordinal = source - 1; - for (AggregationTemporality value : AggregationTemporality.values()) { - if (value.ordinal() == ordinal) { - return value; - } + @AfterMapping + protected void addAttributesFromSummaryDataPoint( + SummaryDataPoint source, @MappingTarget SummaryPointDataImpl.Builder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } + + @AfterMapping + protected void addAttributesFromHistogramDataPoint( + HistogramDataPoint source, @MappingTarget HistogramPointDataImpl.Builder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } + + @AfterMapping + protected void addExtrasFromExemplar( + Exemplar source, @MappingTarget ExemplarDataBuilder target) { + target.setFilteredAttributes(protoToAttributes(source.getFilteredAttributesList())); + target.setSpanContext( + SpanContext.create( + ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + TraceState.getDefault())); + } + + @AfterMapping + protected void addBucketsExtrasFromProto( + ExponentialHistogramDataPoint source, + @MappingTarget ExponentialHistogramPointDataImpl.Builder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + target.setStartEpochNanos(source.getStartTimeUnixNano()); + target.setEpochNanos(source.getTimeUnixNano()); + if (source.hasPositive()) { + target.setPositiveBuckets(mapBucketsFromProto(source.getPositive(), source.getScale())); + } + if (source.hasNegative()) { + target.setNegativeBuckets(mapBucketsFromProto(source.getNegative(), source.getScale())); + } + } + + protected ExponentialHistogramBuckets mapBucketsFromProto( + ExponentialHistogramDataPoint.Buckets source, Integer scale) { + List bucketCounts = new ArrayList<>(); + long totalCount = 0; + for (Long bucketCount : source.getBucketCountsList()) { + bucketCounts.add(bucketCount); + totalCount += bucketCount; + } + return ExponentialHistogramBucketsImpl.builder() + .setOffset(source.getOffset()) + .setBucketCounts(bucketCounts) + .setTotalCount(totalCount) + .setScale(scale) + .build(); + } + + private static List attributesToProto(Attributes source) { + return AttributesMapper.INSTANCE.attributesToProto(source); + } + + private static Attributes protoToAttributes(List source) { + return AttributesMapper.INSTANCE.protoToAttributes(source); + } + + private static final class DataWithType { + public final Data data; + public final MetricDataType type; + + private DataWithType(Data data, MetricDataType type) { + this.data = data; + this.type = type; } - throw new IllegalArgumentException(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java deleted file mode 100644 index 9e20707ba..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricMapper.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.metrics.data.MetricDataType; -import io.opentelemetry.sdk.resources.Resource; -import java.util.List; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.Context; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingTarget; - -@Mapper(uses = MetricDataMapper.class) -public abstract class MetricMapper { - - public static final MetricMapper INSTANCE = new MetricMapperImpl(); - - public MetricDataJson metricToJson(MetricData source) { - MetricDataType type = source.getType(); - switch (type) { - case LONG_GAUGE: - case DOUBLE_GAUGE: - return gaugeMetricToJson(source, type); - case LONG_SUM: - case DOUBLE_SUM: - return sumMetricToJson(source, type); - case SUMMARY: - return summaryMetricToJson(source, type); - case HISTOGRAM: - return histogramMetricToJson(source, type); - case EXPONENTIAL_HISTOGRAM: - return exponentialHistogramMetricToJson(source, type); - } - throw new UnsupportedOperationException(); - } - - @Mapping(target = "gauge", ignore = true) - protected abstract GaugeMetric gaugeMetricToJson(MetricData source, @Context MetricDataType type); - - @Mapping(target = "histogram", ignore = true) - protected abstract HistogramMetric histogramMetricToJson( - MetricData source, @Context MetricDataType type); - - @Mapping(target = "sum", ignore = true) - protected abstract SumMetric sumMetricToJson(MetricData source, @Context MetricDataType type); - - @Mapping(target = "summary", ignore = true) - protected abstract SummaryMetric summaryMetricToJson( - MetricData source, @Context MetricDataType type); - - @Mapping(target = "exponentialHistogram", ignore = true) - protected abstract ExponentialHistogramMetric exponentialHistogramMetricToJson( - MetricData source, @Context MetricDataType type); - - // FROM JSON - public MetricData jsonMetricToMetric( - MetricDataJson source, @Context Resource resource, @Context InstrumentationScopeInfo scope) { - DataJson data = source.getData(); - if (data instanceof ExponentialHistogram) { - return jsonMetricToMetric(source, resource, scope, MetricDataType.EXPONENTIAL_HISTOGRAM); - } else if (data instanceof Histogram) { - return jsonMetricToMetric(source, resource, scope, MetricDataType.HISTOGRAM); - } else if (data instanceof Summary) { - return jsonMetricToMetric(source, resource, scope, MetricDataType.SUMMARY); - } else if (data instanceof Gauge) { - List points = ((Gauge) data).getPoints(); - switch (getNumberDataPointType(points)) { - case LONG: - return jsonMetricToMetric(source, resource, scope, MetricDataType.LONG_GAUGE); - case DOUBLE: - return jsonMetricToMetric(source, resource, scope, MetricDataType.DOUBLE_GAUGE); - } - } else if (data instanceof Sum) { - List points = ((Sum) data).getPoints(); - switch (getNumberDataPointType(points)) { - case LONG: - return jsonMetricToMetric(source, resource, scope, MetricDataType.LONG_SUM); - case DOUBLE: - return jsonMetricToMetric(source, resource, scope, MetricDataType.DOUBLE_SUM); - } - } - - throw new IllegalArgumentException(); - } - - @BeanMapping(resultType = MetricDataImpl.class) - @Mapping(target = "resource", ignore = true) - @Mapping(target = "instrumentationScopeInfo", ignore = true) - @Mapping(target = "type", ignore = true) - protected abstract MetricData jsonMetricToMetric( - MetricDataJson source, - @Context Resource resource, - @Context InstrumentationScopeInfo scope, - @Context MetricDataType type); - - private static NumberDataPoint.Type getNumberDataPointType(List points) { - if (points == null || points.isEmpty()) { - return NumberDataPoint.Type.LONG; - } - return points.get(0).getType(); - } - - @AfterMapping - protected void addContextItems( - @Context Resource resource, - @Context InstrumentationScopeInfo scope, - @Context MetricDataType type, - @MappingTarget MetricDataImpl.Builder target) { - target.setResource(resource); - target.setInstrumentationScopeInfo(scope); - target.setType(type); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java similarity index 97% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java index ac3ea26fa..00e39c61b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.BaseProtoSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.proto.metrics.v1.MetricsData; import io.opentelemetry.proto.metrics.v1.ResourceMetrics; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java deleted file mode 100644 index 1844920f5..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsDataMapper.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetrics; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetricsData; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ScopeMetrics; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.resources.Resource; -import java.util.Collection; - -public final class ResourceMetricsDataMapper - extends BaseResourceSignalsDataMapper< - MetricData, MetricDataJson, ScopeMetrics, ResourceMetrics, ResourceMetricsData> { - - public static final ResourceMetricsDataMapper INSTANCE = new ResourceMetricsDataMapper(); - - private ResourceMetricsDataMapper() {} - - @Override - protected MetricDataJson signalItemToDto(MetricData sourceData) { - return MetricMapper.INSTANCE.metricToJson(sourceData); - } - - @Override - protected ResourceMetrics resourceSignalToDto(Resource resource) { - return ResourceMetricsMapper.INSTANCE.resourceMetricsToJson(resource); - } - - @Override - protected ScopeMetrics instrumentationScopeToDto( - InstrumentationScopeInfo instrumentationScopeInfo) { - return ScopeMetricsMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); - } - - @Override - protected MetricData dtoToSignalItem( - MetricDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { - return MetricMapper.INSTANCE.jsonMetricToMetric(jsonItem, resource, scopeInfo); - } - - @Override - protected ResourceMetricsData createResourceData(Collection items) { - return new ResourceMetricsData(items); - } - - @Override - protected Resource getResource(MetricData metricData) { - return metricData.getResource(); - } - - @Override - protected InstrumentationScopeInfo getInstrumentationScopeInfo(MetricData metricData) { - return metricData.getInstrumentationScopeInfo(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java deleted file mode 100644 index b99da798c..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ResourceMetricsMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetrics; -import io.opentelemetry.sdk.resources.Resource; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -@Mapper(uses = {ResourceMapper.class}) -public interface ResourceMetricsMapper { - - ResourceMetricsMapper INSTANCE = new ResourceMetricsMapperImpl(); - - @ResourceMapping - @Mapping(target = "scopeMetrics", ignore = true) - ResourceMetrics resourceMetricsToJson(Resource resource); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java deleted file mode 100644 index 1f8dd250a..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ScopeMetricsMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ScopeMetrics; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -@Mapper -public interface ScopeMetricsMapper { - - ScopeMetricsMapper INSTANCE = new ScopeMetricsMapperImpl(); - - @ScopeMapping - @Mapping(target = "metrics", ignore = true) - ScopeMetrics scopeInfoToJson(InstrumentationScopeInfo source); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index 368710242..01815d29f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index daa377245..e9e2cc195 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index 5c21a8af7..224255b72 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.MonotonicBuilder; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.LongPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java deleted file mode 100644 index d5367a57a..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; - -import io.opentelemetry.proto.resource.v1.Resource; -import io.opentelemetry.sdk.resources.ResourceBuilder; -import javax.annotation.Nullable; -import org.mapstruct.AfterMapping; -import org.mapstruct.Mapper; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; - -@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class ResourceMapper { - - public static final ResourceMapper INSTANCE = new ResourceMapperImpl(); - - public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { - return Resource.newBuilder() - .addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(sdkResource.getAttributes())) - .build(); - } - - public abstract io.opentelemetry.sdk.resources.Resource mapToSdk( - Resource protoResource, @Nullable String schemaUrl); - - @AfterMapping - protected void addAttributes(Resource protoResource, @MappingTarget ResourceBuilder builder) { - builder.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java deleted file mode 100644 index d79f6146b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapper.java +++ /dev/null @@ -1,438 +0,0 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.api.trace.TraceFlags; -import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.PointDataBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; -import io.opentelemetry.proto.common.v1.KeyValue; -import io.opentelemetry.proto.metrics.v1.AggregationTemporality; -import io.opentelemetry.proto.metrics.v1.Exemplar; -import io.opentelemetry.proto.metrics.v1.ExponentialHistogram; -import io.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint; -import io.opentelemetry.proto.metrics.v1.Gauge; -import io.opentelemetry.proto.metrics.v1.Histogram; -import io.opentelemetry.proto.metrics.v1.HistogramDataPoint; -import io.opentelemetry.proto.metrics.v1.Metric; -import io.opentelemetry.proto.metrics.v1.NumberDataPoint; -import io.opentelemetry.proto.metrics.v1.Sum; -import io.opentelemetry.proto.metrics.v1.Summary; -import io.opentelemetry.proto.metrics.v1.SummaryDataPoint; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.metrics.data.Data; -import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; -import io.opentelemetry.sdk.metrics.data.DoublePointData; -import io.opentelemetry.sdk.metrics.data.ExemplarData; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; -import io.opentelemetry.sdk.metrics.data.GaugeData; -import io.opentelemetry.sdk.metrics.data.HistogramData; -import io.opentelemetry.sdk.metrics.data.HistogramPointData; -import io.opentelemetry.sdk.metrics.data.LongExemplarData; -import io.opentelemetry.sdk.metrics.data.LongPointData; -import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.metrics.data.MetricDataType; -import io.opentelemetry.sdk.metrics.data.PointData; -import io.opentelemetry.sdk.metrics.data.SumData; -import io.opentelemetry.sdk.metrics.data.SummaryData; -import io.opentelemetry.sdk.metrics.data.SummaryPointData; -import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; -import io.opentelemetry.sdk.resources.Resource; -import java.util.ArrayList; -import java.util.List; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Context; -import org.mapstruct.EnumMapping; -import org.mapstruct.InheritInverseConfiguration; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingConstants; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; -import org.mapstruct.ValueMapping; - -@Mapper( - collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, - unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class MetricDataMapper { - - public static final MetricDataMapper INSTANCE = new MetricDataMapperImpl(); - - public abstract Metric mapToProto(MetricData source); - - @BeanMapping(resultType = MetricDataImpl.class) - public abstract MetricData mapToSdk( - Metric source, @Context Resource resource, @Context InstrumentationScopeInfo scope); - - @SuppressWarnings("unchecked") - @AfterMapping - protected void addDataToProto(MetricData source, @MappingTarget Metric.Builder target) { - switch (source.getType()) { - case LONG_GAUGE: - target.setGauge(mapLongGaugeToProto((GaugeData) source.getData())); - break; - case DOUBLE_GAUGE: - target.setGauge(mapDoubleGaugeToProto((GaugeData) source.getData())); - break; - case LONG_SUM: - target.setSum(mapLongSumToProto((SumData) source.getData())); - break; - case DOUBLE_SUM: - target.setSum(mapDoubleSumToProto((SumData) source.getData())); - break; - case SUMMARY: - target.setSummary(mapSummaryToProto((SummaryData) source.getData())); - break; - case HISTOGRAM: - target.setHistogram(mapHistogramToProto((HistogramData) source.getData())); - break; - case EXPONENTIAL_HISTOGRAM: - target.setExponentialHistogram( - mapExponentialHistogramToProto((ExponentialHistogramData) source.getData())); - break; - } - } - - @AfterMapping - protected void addDataToSdk( - Metric source, - @MappingTarget MetricDataImpl.Builder target, - @Context Resource resource, - @Context InstrumentationScopeInfo scope) { - target.setResource(resource); - target.setInstrumentationScopeInfo(scope); - switch (source.getDataCase()) { - case GAUGE: - DataWithType gaugeDataWithType = mapGaugeToSdk(source.getGauge()); - target.setData(gaugeDataWithType.data); - target.setType(gaugeDataWithType.type); - break; - case SUM: - DataWithType sumDataWithType = mapSumToSdk(source.getSum()); - target.setData(sumDataWithType.data); - target.setType(sumDataWithType.type); - break; - case SUMMARY: - target.setData(mapSummaryToSdk(source.getSummary())); - target.setType(MetricDataType.SUMMARY); - break; - case HISTOGRAM: - target.setData(mapHistogramToSdk(source.getHistogram())); - target.setType(MetricDataType.HISTOGRAM); - break; - case EXPONENTIAL_HISTOGRAM: - target.setData(mapExponentialHistogramToSdk(source.getExponentialHistogram())); - target.setType(MetricDataType.EXPONENTIAL_HISTOGRAM); - break; - default: - throw new UnsupportedOperationException(); - } - } - - @Mapping(target = "dataPointsList", source = "points") - protected abstract Gauge mapLongGaugeToProto(GaugeData data); - - @Mapping(target = "dataPointsList", source = "points") - protected abstract Gauge mapDoubleGaugeToProto(GaugeData data); - - @Mapping(target = "dataPointsList", source = "points") - @Mapping(target = "isMonotonic", source = "monotonic") - protected abstract Sum mapLongSumToProto(SumData data); - - @Mapping(target = "dataPointsList", source = "points") - @Mapping(target = "isMonotonic", source = "monotonic") - protected abstract Sum mapDoubleSumToProto(SumData data); - - @Mapping(target = "dataPointsList", source = "points") - protected abstract Summary mapSummaryToProto(SummaryData data); - - @Mapping(target = "dataPointsList", source = "points") - protected abstract Histogram mapHistogramToProto(HistogramData data); - - @Mapping(target = "dataPointsList", source = "points") - protected abstract ExponentialHistogram mapExponentialHistogramToProto( - ExponentialHistogramData data); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asInt", source = "value") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract NumberDataPoint longPointDataToNumberDataPoint(LongPointData source); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asDouble", source = "value") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract NumberDataPoint doublePointDataToNumberDataPoint(DoublePointData source); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "quantileValuesList", source = "values") - protected abstract SummaryDataPoint summaryPointDataToSummaryDataPoint( - SummaryPointData summaryPointData); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "bucketCountsList", source = "counts") - @Mapping(target = "explicitBoundsList", source = "boundaries") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( - HistogramPointData histogramPointData); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "positive", source = "positiveBuckets") - @Mapping(target = "negative", source = "negativeBuckets") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract ExponentialHistogramDataPoint - exponentialHistogramPointDataToExponentialHistogramDataPoint( - ExponentialHistogramPointData exponentialHistogramPointData); - - @Mapping(target = "bucketCountsList", source = "bucketCounts") - @Mapping(target = "offset") - protected abstract ExponentialHistogramDataPoint.Buckets exponentialHistogramBucketsToBuckets( - ExponentialHistogramBuckets source); - - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asDouble", source = "value") - protected abstract Exemplar doubleExemplarDataToExemplar(DoubleExemplarData doubleExemplarData); - - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asInt", source = "value") - protected abstract Exemplar longExemplarDataToExemplar(LongExemplarData doubleExemplarData); - - @AfterMapping - protected void addAttributesToNumberDataPoint( - PointData source, @MappingTarget NumberDataPoint.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - } - - @AfterMapping - protected void addAttributesToSummaryDataPoint( - PointData source, @MappingTarget SummaryDataPoint.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - } - - @AfterMapping - protected void addExtrasToExemplar(ExemplarData source, @MappingTarget Exemplar.Builder target) { - target.addAllFilteredAttributes(attributesToProto(source.getFilteredAttributes())); - SpanContext spanContext = source.getSpanContext(); - target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); - target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); - } - - @AfterMapping - protected void addAttributesToExponentialHistogramDataPoint( - ExponentialHistogramPointData source, - @MappingTarget ExponentialHistogramDataPoint.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - } - - @AfterMapping - protected void addAttributesToHistogramDataPoint( - HistogramPointData source, @MappingTarget HistogramDataPoint.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - } - - @EnumMapping( - nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, - configuration = "AGGREGATION_TEMPORALITY_") - protected abstract AggregationTemporality mapAggregationTemporalityToProto( - io.opentelemetry.sdk.metrics.data.AggregationTemporality source); - - // FROM PROTO - private DataWithType mapGaugeToSdk(Gauge gauge) { - if (gauge.getDataPointsCount() > 0) { - NumberDataPoint dataPoint = gauge.getDataPoints(0); - if (dataPoint.hasAsInt()) { - return new DataWithType(mapLongGaugeToSdk(gauge), MetricDataType.LONG_GAUGE); - } else if (dataPoint.hasAsDouble()) { - return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); - } - } - return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); - } - - private DataWithType mapSumToSdk(Sum sum) { - if (sum.getDataPointsCount() > 0) { - NumberDataPoint dataPoint = sum.getDataPoints(0); - if (dataPoint.hasAsInt()) { - return new DataWithType(mapLongSumToSdk(sum), MetricDataType.LONG_SUM); - } else if (dataPoint.hasAsDouble()) { - return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); - } - } - return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); - } - - @InheritInverseConfiguration - @BeanMapping(resultType = SummaryDataImpl.class) - protected abstract SummaryData mapSummaryToSdk(Summary summary); - - @InheritInverseConfiguration - @BeanMapping(resultType = HistogramDataImpl.class) - protected abstract HistogramData mapHistogramToSdk(Histogram histogram); - - @InheritInverseConfiguration - @BeanMapping(resultType = ExponentialHistogramDataImpl.class) - protected abstract ExponentialHistogramData mapExponentialHistogramToSdk( - ExponentialHistogram source); - - @Mapping(target = "exemplars", source = "exemplarsList") - @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) - protected abstract ExponentialHistogramPointData - exponentialHistogramDataPointToExponentialHistogramPointData( - ExponentialHistogramDataPoint source); - - @InheritInverseConfiguration - @BeanMapping(resultType = HistogramPointDataImpl.class) - protected abstract HistogramPointData histogramDataPointToHistogramPointData( - HistogramDataPoint source); - - @InheritInverseConfiguration - @BeanMapping(resultType = DoubleExemplarDataImpl.class) - protected abstract DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source); - - @InheritInverseConfiguration - @BeanMapping(resultType = LongExemplarDataImpl.class) - protected abstract LongExemplarData exemplarToLongExemplarData(Exemplar source); - - @InheritInverseConfiguration - @BeanMapping(resultType = SummaryPointDataImpl.class) - protected abstract SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source); - - @BeanMapping(resultType = ValueAtQuantileImpl.class) - protected abstract ValueAtQuantile mapFromSummaryValueAtQuantileProto( - SummaryDataPoint.ValueAtQuantile source); - - @EnumMapping( - nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, - configuration = "AGGREGATION_TEMPORALITY_") - @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) - protected abstract io.opentelemetry.sdk.metrics.data.AggregationTemporality - mapAggregationTemporalityToSdk(AggregationTemporality source); - - @InheritInverseConfiguration - @BeanMapping(resultType = GaugeDataImpl.LongData.class) - protected abstract GaugeData mapLongGaugeToSdk(Gauge gauge); - - @InheritInverseConfiguration - @BeanMapping(resultType = GaugeDataImpl.DoubleData.class) - protected abstract GaugeData mapDoubleGaugeToSdk(Gauge gauge); - - @InheritInverseConfiguration - @BeanMapping(resultType = SumDataImpl.LongData.class) - protected abstract SumData mapLongSumToSdk(Sum sum); - - @InheritInverseConfiguration - @BeanMapping(resultType = SumDataImpl.DoubleData.class) - protected abstract SumData mapDoubleSumToSdk(Sum sum); - - @InheritInverseConfiguration - @BeanMapping(resultType = DoublePointDataImpl.class) - protected abstract DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source); - - @InheritInverseConfiguration - @BeanMapping(resultType = LongPointDataImpl.class) - protected abstract LongPointData mapLongNumberDataPointToSdk(NumberDataPoint source); - - @AfterMapping - protected void addAttributesFromNumberDataPoint( - NumberDataPoint source, @MappingTarget PointDataBuilder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); - } - - @AfterMapping - protected void addAttributesFromSummaryDataPoint( - SummaryDataPoint source, @MappingTarget SummaryPointDataImpl.Builder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); - } - - @AfterMapping - protected void addAttributesFromHistogramDataPoint( - HistogramDataPoint source, @MappingTarget HistogramPointDataImpl.Builder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); - } - - @AfterMapping - protected void addExtrasFromExemplar( - Exemplar source, @MappingTarget ExemplarDataBuilder target) { - target.setFilteredAttributes(protoToAttributes(source.getFilteredAttributesList())); - target.setSpanContext( - SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), - TraceFlags.getSampled(), - TraceState.getDefault())); - } - - @AfterMapping - protected void addBucketsExtrasFromProto( - ExponentialHistogramDataPoint source, - @MappingTarget ExponentialHistogramPointDataImpl.Builder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); - target.setStartEpochNanos(source.getStartTimeUnixNano()); - target.setEpochNanos(source.getTimeUnixNano()); - if (source.hasPositive()) { - target.setPositiveBuckets(mapBucketsFromProto(source.getPositive(), source.getScale())); - } - if (source.hasNegative()) { - target.setNegativeBuckets(mapBucketsFromProto(source.getNegative(), source.getScale())); - } - } - - protected ExponentialHistogramBuckets mapBucketsFromProto( - ExponentialHistogramDataPoint.Buckets source, Integer scale) { - List bucketCounts = new ArrayList<>(); - long totalCount = 0; - for (Long bucketCount : source.getBucketCountsList()) { - bucketCounts.add(bucketCount); - totalCount += bucketCount; - } - return ExponentialHistogramBucketsImpl.builder() - .setOffset(source.getOffset()) - .setBucketCounts(bucketCounts) - .setTotalCount(totalCount) - .setScale(scale) - .build(); - } - - private static List attributesToProto(Attributes source) { - return AttributesMapper.INSTANCE.attributesToProto(source); - } - - private static Attributes protoToAttributes(List source) { - return AttributesMapper.INSTANCE.protoToAttributes(source); - } - - private static final class DataWithType { - public final Data data; - public final MetricDataType type; - - private DataWithType(Data data, MetricDataType type) { - this.data = data; - this.type = type; - } - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java deleted file mode 100644 index 135a2ff20..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapper.java +++ /dev/null @@ -1,208 +0,0 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; - -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.api.trace.StatusCode; -import io.opentelemetry.api.trace.TraceFlags; -import io.opentelemetry.api.trace.TraceState; -import io.opentelemetry.api.trace.propagation.internal.W3CTraceContextEncoding; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.AttributesMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.ByteStringMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; -import io.opentelemetry.proto.common.v1.KeyValue; -import io.opentelemetry.proto.trace.v1.Span; -import io.opentelemetry.proto.trace.v1.Status; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.sdk.trace.data.EventData; -import io.opentelemetry.sdk.trace.data.LinkData; -import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.sdk.trace.data.StatusData; -import java.util.List; -import javax.annotation.Nullable; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Context; -import org.mapstruct.EnumMapping; -import org.mapstruct.InheritInverseConfiguration; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingConstants; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; -import org.mapstruct.ValueMapping; - -@Mapper( - uses = ByteStringMapper.class, - collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, - unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class SpanDataMapper { - - public static final SpanDataMapper INSTANCE = new SpanDataMapperImpl(); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "endTimeUnixNano", source = "endEpochNanos") - @Mapping(target = "eventsList", source = "events") - @Mapping(target = "linksList", source = "links") - public abstract Span mapToProto(SpanData source); - - @InheritInverseConfiguration - @BeanMapping(resultType = SpanDataImpl.class) - public abstract SpanData mapToSdk( - Span source, - @Context Resource resource, - @Context InstrumentationScopeInfo instrumentationScopeInfo); - - @Mapping(target = "timeUnixNano", source = "epochNanos") - protected abstract Span.Event eventDataToProto(EventData source); - - protected Span.Link linkDataToProto(LinkData source) { - Span.Link.Builder builder = Span.Link.newBuilder(); - SpanContext spanContext = source.getSpanContext(); - builder.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); - builder.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); - builder.addAllAttributes(attributesToProto(source.getAttributes())); - builder.setDroppedAttributesCount( - source.getTotalAttributeCount() - source.getAttributes().size()); - builder.setTraceState(encodeTraceState(spanContext.getTraceState())); - - return builder.build(); - } - - @Mapping(target = "message", source = "description") - @Mapping(target = "code", source = "statusCode") - protected abstract Status statusDataToProto(StatusData source); - - @AfterMapping - protected void addSpanProtoExtras(SpanData source, @MappingTarget Span.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - target.setDroppedAttributesCount( - source.getTotalAttributeCount() - source.getAttributes().size()); - target.setDroppedEventsCount(source.getTotalRecordedEvents() - getListSize(source.getEvents())); - target.setDroppedLinksCount(source.getTotalRecordedLinks() - getListSize(source.getLinks())); - target.setTraceState(encodeTraceState(source.getSpanContext().getTraceState())); - } - - @AfterMapping - protected void addEventProtoExtras(EventData source, @MappingTarget Span.Event.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - } - - @EnumMapping( - nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, - configuration = "SPAN_KIND_") - protected abstract Span.SpanKind mapSpanKindToProto(SpanKind source); - - @EnumMapping( - nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, - configuration = "STATUS_CODE_") - protected abstract Status.StatusCode mapStatusCodeToProto(StatusCode source); - - // FROM PROTO - protected StatusData mapStatusDataToSdk(Status source) { - return StatusData.create(getStatusCode(source.getCodeValue()), source.getMessage()); - } - - @InheritInverseConfiguration - @BeanMapping(resultType = EventDataImpl.class) - protected abstract EventData eventDataToSdk(Span.Event source); - - protected LinkData linkDataToSdk(Span.Link source) { - Attributes attributes = protoToAttributes(source.getAttributesList()); - int totalAttrCount = source.getDroppedAttributesCount() + attributes.size(); - SpanContext spanContext = - SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), - TraceFlags.getSampled(), - decodeTraceState(source.getTraceState())); - return LinkData.create(spanContext, attributes, totalAttrCount); - } - - @AfterMapping - protected void addEventSdkExtras(Span.Event source, @MappingTarget EventDataImpl.Builder target) { - Attributes attributes = protoToAttributes(source.getAttributesList()); - target.setAttributes(attributes); - target.setTotalAttributeCount(attributes.size() + source.getDroppedAttributesCount()); - } - - @AfterMapping - protected void addSpanDataExtras( - Span source, - @MappingTarget SpanDataImpl.Builder target, - @Context Resource resource, - @Context InstrumentationScopeInfo instrumentationScopeInfo) { - Attributes attributes = protoToAttributes(source.getAttributesList()); - target.setAttributes(attributes); - target.setResource(resource); - target.setInstrumentationScopeInfo(instrumentationScopeInfo); - String traceId = ByteStringMapper.INSTANCE.protoToString(source.getTraceId()); - target.setSpanContext( - SpanContext.create( - traceId, - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), - TraceFlags.getSampled(), - decodeTraceState(source.getTraceState()))); - target.setParentSpanContext( - SpanContext.create( - traceId, - ByteStringMapper.INSTANCE.protoToString(source.getParentSpanId()), - TraceFlags.getSampled(), - TraceState.getDefault())); - target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); - target.setTotalRecordedEvents( - calculateRecordedItems(source.getDroppedEventsCount(), source.getEventsCount())); - target.setTotalRecordedLinks( - calculateRecordedItems(source.getDroppedLinksCount(), source.getLinksCount())); - } - - @EnumMapping( - nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, - configuration = "SPAN_KIND_") - @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) - protected abstract SpanKind mapSpanKindToSdk(Span.SpanKind source); - - private static int calculateRecordedItems(int droppedCount, int itemsCount) { - return droppedCount + itemsCount; - } - - private static StatusCode getStatusCode(int ordinal) { - for (StatusCode statusCode : StatusCode.values()) { - if (statusCode.ordinal() == ordinal) { - return statusCode; - } - } - throw new IllegalArgumentException(); - } - - private static List attributesToProto(Attributes source) { - return AttributesMapper.INSTANCE.attributesToProto(source); - } - - private static Attributes protoToAttributes(List source) { - return AttributesMapper.INSTANCE.protoToAttributes(source); - } - - private static int getListSize(List list) { - if (list == null) { - return 0; - } - return list.size(); - } - - private static String encodeTraceState(TraceState traceState) { - if (!traceState.isEmpty()) { - return W3CTraceContextEncoding.encodeTraceState(traceState); - } - return ""; - } - - private static TraceState decodeTraceState(@Nullable String source) { - return (source == null || source.isEmpty()) - ? TraceState.getDefault() - : W3CTraceContextEncoding.decodeTraceState(source); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java similarity index 97% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java index 56e1d674d..3bd8cad50 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java @@ -1,6 +1,6 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common.BaseProtoSignalsDataMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper; import io.opentelemetry.proto.trace.v1.ResourceSpans; import io.opentelemetry.proto.trace.v1.ScopeSpans; import io.opentelemetry.proto.trace.v1.Span; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java deleted file mode 100644 index f284ad2e3..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansDataMapper.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseResourceSignalsDataMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpans; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpansData; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ScopeSpan; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.SpanDataJson; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.sdk.trace.data.SpanData; -import java.util.Collection; - -public final class ResourceSpansDataMapper - extends BaseResourceSignalsDataMapper< - SpanData, SpanDataJson, ScopeSpan, ResourceSpans, ResourceSpansData> { - - public static final ResourceSpansDataMapper INSTANCE = new ResourceSpansDataMapper(); - - private ResourceSpansDataMapper() {} - - @Override - protected SpanDataJson signalItemToDto(SpanData sourceData) { - return SpanDataMapper.INSTANCE.spanDataToJson(sourceData); - } - - @Override - protected ResourceSpans resourceSignalToDto(Resource resource) { - return ResourceSpansMapper.INSTANCE.resourceSpansToJson(resource); - } - - @Override - protected ScopeSpan instrumentationScopeToDto( - InstrumentationScopeInfo instrumentationScopeInfo) { - return ScopeSpansMapper.INSTANCE.scopeInfoToJson(instrumentationScopeInfo); - } - - @Override - protected SpanData dtoToSignalItem( - SpanDataJson jsonItem, Resource resource, InstrumentationScopeInfo scopeInfo) { - return SpanDataMapper.INSTANCE.jsonToSpanData(jsonItem, resource, scopeInfo); - } - - @Override - protected ResourceSpansData createResourceData(Collection items) { - return new ResourceSpansData(items); - } - - @Override - protected Resource getResource(SpanData spanData) { - return spanData.getResource(); - } - - @Override - protected InstrumentationScopeInfo getInstrumentationScopeInfo(SpanData spanData) { - return spanData.getInstrumentationScopeInfo(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java deleted file mode 100644 index 60a9ee3a0..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ResourceSpansMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ResourceMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpans; -import io.opentelemetry.sdk.resources.Resource; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -@Mapper(uses = {ResourceMapper.class}) -public interface ResourceSpansMapper { - - ResourceSpansMapper INSTANCE = new ResourceSpansMapperImpl(); - - @ResourceMapping - @Mapping(target = "scopeSpans", ignore = true) - ResourceSpans resourceSpansToJson(Resource resource); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java deleted file mode 100644 index db4883de3..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ScopeSpansMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ScopeMapping; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ScopeSpan; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -@Mapper -public interface ScopeSpansMapper { - - ScopeSpansMapper INSTANCE = new ScopeSpansMapperImpl(); - - @ScopeMapping - @Mapping(target = "spans", ignore = true) - ScopeSpan scopeInfoToJson(InstrumentationScopeInfo source); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index 4f4f5766c..a0b306aec 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -1,24 +1,19 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; +import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.api.trace.propagation.internal.W3CTraceContextEncoding; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.SpanContextMapping; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.LinkDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.EventDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.LinkDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.SpanDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.StatusDataJson; +import io.opentelemetry.proto.common.v1.KeyValue; +import io.opentelemetry.proto.trace.v1.Span; +import io.opentelemetry.proto.trace.v1.Status; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.EventData; @@ -29,154 +24,149 @@ import javax.annotation.Nullable; import org.mapstruct.AfterMapping; import org.mapstruct.BeanMapping; +import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Context; +import org.mapstruct.EnumMapping; +import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; +import org.mapstruct.ValueMapping; -@Mapper +@Mapper( + uses = ByteStringMapper.class, + collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, + unmappedTargetPolicy = ReportingPolicy.IGNORE) public abstract class SpanDataMapper { public static final SpanDataMapper INSTANCE = new SpanDataMapperImpl(); - @SpanContextMapping - @Mapping(target = "droppedAttributesCount", ignore = true) - @Mapping(target = "droppedEventsCount", ignore = true) - @Mapping(target = "droppedLinksCount", ignore = true) - @Mapping(target = "traceState", ignore = true) - public abstract SpanDataJson spanDataToJson(SpanData source); + @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") + @Mapping(target = "endTimeUnixNano", source = "endEpochNanos") + @Mapping(target = "eventsList", source = "events") + @Mapping(target = "linksList", source = "links") + public abstract Span mapToProto(SpanData source); - @SpanContextMapping - @Mapping(target = "droppedAttributesCount", ignore = true) - @Mapping(target = "traceState", ignore = true) - protected abstract LinkDataJson linkDataToJson(LinkData source); + @InheritInverseConfiguration + @BeanMapping(resultType = SpanDataImpl.class) + public abstract SpanData mapToSdk( + Span source, + @Context Resource resource, + @Context InstrumentationScopeInfo instrumentationScopeInfo); - @AfterMapping - protected void addSpanDataJsonExtras(SpanData source, @MappingTarget SpanDataJson target) { - target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); - target.droppedEventsCount = source.getTotalRecordedEvents() - getListSize(source.getEvents()); - target.droppedLinksCount = source.getTotalRecordedLinks() - getListSize(source.getLinks()); - target.traceState = encodeTraceState(source.getSpanContext().getTraceState()); - } + @Mapping(target = "timeUnixNano", source = "epochNanos") + protected abstract Span.Event eventDataToProto(EventData source); - private static int getListSize(List list) { - if (list == null) { - return 0; - } - return list.size(); - } + protected Span.Link linkDataToProto(LinkData source) { + Span.Link.Builder builder = Span.Link.newBuilder(); + SpanContext spanContext = source.getSpanContext(); + builder.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + builder.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + builder.addAllAttributes(attributesToProto(source.getAttributes())); + builder.setDroppedAttributesCount( + source.getTotalAttributeCount() - source.getAttributes().size()); + builder.setTraceState(encodeTraceState(spanContext.getTraceState())); - @AfterMapping - protected void addLinkExtras(LinkData source, @MappingTarget LinkDataJson target) { - target.droppedAttributesCount = source.getTotalAttributeCount() - source.getAttributes().size(); - target.traceState = encodeTraceState(source.getSpanContext().getTraceState()); + return builder.build(); } - @Nullable - private static String encodeTraceState(TraceState traceState) { - if (!traceState.isEmpty()) { - return W3CTraceContextEncoding.encodeTraceState(traceState); - } - return null; - } + @Mapping(target = "message", source = "description") + @Mapping(target = "code", source = "statusCode") + protected abstract Status statusDataToProto(StatusData source); - protected Integer mapSpanKindToJson(SpanKind value) { - return value.ordinal() + 1; + @AfterMapping + protected void addSpanProtoExtras(SpanData source, @MappingTarget Span.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + target.setDroppedAttributesCount( + source.getTotalAttributeCount() - source.getAttributes().size()); + target.setDroppedEventsCount(source.getTotalRecordedEvents() - getListSize(source.getEvents())); + target.setDroppedLinksCount(source.getTotalRecordedLinks() - getListSize(source.getLinks())); + target.setTraceState(encodeTraceState(source.getSpanContext().getTraceState())); } - protected Integer mapStatusCodeToJson(StatusCode value) { - return value.ordinal(); + @AfterMapping + protected void addEventProtoExtras(EventData source, @MappingTarget Span.Event.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); } - // FROM JSON - @BeanMapping(resultType = SpanDataImpl.class) - @Mapping(target = "spanContext", ignore = true) - @Mapping(target = "parentSpanContext", ignore = true) - @Mapping(target = "totalAttributeCount", ignore = true) - @Mapping(target = "totalRecordedEvents", ignore = true) - @Mapping(target = "totalRecordedLinks", ignore = true) - @Mapping(target = "instrumentationScopeInfo", ignore = true) - @Mapping(target = "resource", ignore = true) - public abstract SpanData jsonToSpanData( - SpanDataJson source, - @Context Resource resource, - @Context InstrumentationScopeInfo instrumentationScopeInfo); - - @BeanMapping(resultType = LinkDataImpl.class) - @Mapping(target = "spanContext", ignore = true) - @Mapping(target = "totalAttributeCount", ignore = true) - protected abstract LinkData jsonToLinkData(LinkDataJson source); + @EnumMapping( + nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, + configuration = "SPAN_KIND_") + protected abstract Span.SpanKind mapSpanKindToProto(SpanKind source); - @BeanMapping(resultType = EventDataImpl.class) - @Mapping(target = "totalAttributeCount", ignore = true) - protected abstract EventData jsonToEventData(EventDataJson source); + @EnumMapping( + nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, + configuration = "STATUS_CODE_") + protected abstract Status.StatusCode mapStatusCodeToProto(StatusCode source); - @AfterMapping - protected void addSpanDataExtras( - SpanDataJson source, - @MappingTarget SpanDataImpl.Builder target, - @Context Resource resource, - @Context InstrumentationScopeInfo scopeInfo) { - target.setResource(resource); - target.setInstrumentationScopeInfo(scopeInfo); - if (source.traceId != null) { - if (source.spanId != null) { - target.setSpanContext( - SpanContext.create( - source.traceId, - source.spanId, - TraceFlags.getSampled(), - decodeTraceState(source.traceState))); - } - if (source.parentSpanId != null) { - target.setParentSpanContext( - SpanContext.create( - source.traceId, - source.parentSpanId, - TraceFlags.getSampled(), - TraceState.getDefault())); - } - } - target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); - target.setTotalRecordedEvents(calculateRecordedItems(source.droppedEventsCount, source.events)); - target.setTotalRecordedLinks(calculateRecordedItems(source.droppedLinksCount, source.links)); + // FROM PROTO + protected StatusData mapStatusDataToSdk(Status source) { + return StatusData.create(getStatusCode(source.getCodeValue()), source.getMessage()); } - private static int calculateRecordedItems(int droppedCount, @Nullable List items) { - if (items == null) { - return 0; - } - return droppedCount + items.size(); + @InheritInverseConfiguration + @BeanMapping(resultType = EventDataImpl.class) + protected abstract EventData eventDataToSdk(Span.Event source); + + protected LinkData linkDataToSdk(Span.Link source) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + int totalAttrCount = source.getDroppedAttributesCount() + attributes.size(); + SpanContext spanContext = + SpanContext.create( + ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + decodeTraceState(source.getTraceState())); + return LinkData.create(spanContext, attributes, totalAttrCount); } @AfterMapping - protected void addTotalAttributesCount( - EventDataJson source, @MappingTarget EventDataImpl.Builder target) { - target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); + protected void addEventSdkExtras(Span.Event source, @MappingTarget EventDataImpl.Builder target) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + target.setAttributes(attributes); + target.setTotalAttributeCount(attributes.size() + source.getDroppedAttributesCount()); } @AfterMapping - protected void addLinkDataJsonExtras( - LinkDataJson source, @MappingTarget LinkDataImpl.Builder target) { - target.setTotalAttributeCount(source.droppedAttributesCount + source.attributes.size()); - if (source.traceId != null && source.spanId != null) { - target.setSpanContext( - SpanContext.create( - source.traceId, - source.spanId, - TraceFlags.getSampled(), - decodeTraceState(source.traceState))); - } + protected void addSpanDataExtras( + Span source, + @MappingTarget SpanDataImpl.Builder target, + @Context Resource resource, + @Context InstrumentationScopeInfo instrumentationScopeInfo) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + target.setAttributes(attributes); + target.setResource(resource); + target.setInstrumentationScopeInfo(instrumentationScopeInfo); + String traceId = ByteStringMapper.INSTANCE.protoToString(source.getTraceId()); + target.setSpanContext( + SpanContext.create( + traceId, + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + decodeTraceState(source.getTraceState()))); + target.setParentSpanContext( + SpanContext.create( + traceId, + ByteStringMapper.INSTANCE.protoToString(source.getParentSpanId()), + TraceFlags.getSampled(), + TraceState.getDefault())); + target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); + target.setTotalRecordedEvents( + calculateRecordedItems(source.getDroppedEventsCount(), source.getEventsCount())); + target.setTotalRecordedLinks( + calculateRecordedItems(source.getDroppedLinksCount(), source.getLinksCount())); } - private static TraceState decodeTraceState(@Nullable String source) { - return (source == null || source.isEmpty()) - ? TraceState.getDefault() - : W3CTraceContextEncoding.decodeTraceState(source); - } + @EnumMapping( + nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, + configuration = "SPAN_KIND_") + @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) + protected abstract SpanKind mapSpanKindToSdk(Span.SpanKind source); - protected StatusData jsonToStatusData(StatusDataJson source) { - return StatusData.create(getStatusCode(source.statusCode), source.description); + private static int calculateRecordedItems(int droppedCount, int itemsCount) { + return droppedCount + itemsCount; } private static StatusCode getStatusCode(int ordinal) { @@ -188,13 +178,31 @@ private static StatusCode getStatusCode(int ordinal) { throw new IllegalArgumentException(); } - protected SpanKind jsonToSpanKind(Integer value) { - int ordinal = value - 1; - for (SpanKind spanKind : SpanKind.values()) { - if (spanKind.ordinal() == ordinal) { - return spanKind; - } + private static List attributesToProto(Attributes source) { + return AttributesMapper.INSTANCE.attributesToProto(source); + } + + private static Attributes protoToAttributes(List source) { + return AttributesMapper.INSTANCE.protoToAttributes(source); + } + + private static int getListSize(List list) { + if (list == null) { + return 0; } - throw new IllegalArgumentException(); + return list.size(); + } + + private static String encodeTraceState(TraceState traceState) { + if (!traceState.isEmpty()) { + return W3CTraceContextEncoding.encodeTraceState(traceState); + } + return ""; + } + + private static TraceState decodeTraceState(@Nullable String source) { + return (source == null || source.isEmpty()) + ? TraceState.getDefault() + : W3CTraceContextEncoding.decodeTraceState(source); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java deleted file mode 100644 index 704245187..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceJson.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; - -public final class ResourceJson { - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java deleted file mode 100644 index 107f3b547..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignals.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import java.util.List; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public abstract class ResourceSignals> { - - @Nullable - @JsonAttribute(name = "resource") - public ResourceJson resource; - - @Nullable - @JsonAttribute(name = "schemaUrl") - public String schemaUrl; - - public abstract void addScopeSignalsItem(T item); - - public abstract List getScopeSignals(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java deleted file mode 100644 index c731b38cf..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ResourceSignalsData.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; - -import java.util.Collection; - -public interface ResourceSignalsData> { - - Collection getResourceSignals(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java deleted file mode 100644 index 170cb0342..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeJson.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import javax.annotation.Nullable; - -public final class ScopeJson { - - @Nullable - @JsonAttribute(name = "name") - public String name; - - @Nullable - @JsonAttribute(name = "version") - public String version; - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java deleted file mode 100644 index 4d2b2122b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/common/ScopeSignals.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common; - -import com.dslplatform.json.JsonAttribute; -import java.util.List; -import javax.annotation.Nullable; - -public abstract class ScopeSignals { - - @Nullable - @JsonAttribute(name = "scope") - public ScopeJson scope; - - @Nullable - @JsonAttribute(name = "schemaUrl") - public String schemaUrl; - - public abstract void addSignalItem(T item); - - public abstract List getSignalItems(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java deleted file mode 100644 index d84f38ca1..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/BodyJson.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; - -import com.dslplatform.json.JsonAttribute; -import javax.annotation.Nullable; - -public final class BodyJson { - - @Nullable - @JsonAttribute(name = "stringValue") - public String stringValue; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java deleted file mode 100644 index 2132ae589..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/LogRecordDataJson.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import javax.annotation.Nullable; - -public final class LogRecordDataJson { - - @Nullable - @JsonAttribute(name = "timeUnixNano") - public String timestampEpochNanos; - - @Nullable - @JsonAttribute(name = "observedTimeUnixNano") - public String observedTimestampEpochNanos; - - @Nullable - @JsonAttribute(name = "severityNumber") - public Integer severity; - - @Nullable - @JsonAttribute(name = "severityText") - public String severityText; - - @Nullable - @JsonAttribute(name = "body") - public BodyJson body; - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); - - @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount = 0; - - @Nullable - @JsonAttribute(name = "flags") - public Integer flags; - - @Nullable - @JsonAttribute(name = "traceId") - public String traceId; - - @Nullable - @JsonAttribute(name = "spanId") - public String spanId; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java deleted file mode 100644 index 63d5d0758..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogs.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; -import java.util.ArrayList; -import java.util.List; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ResourceLogs extends ResourceSignals { - - @JsonAttribute(name = "scopeLogs") - public List scopeLogs = new ArrayList<>(); - - @Override - public void addScopeSignalsItem(ScopeLogs item) { - scopeLogs.add(item); - } - - @Override - public List getScopeSignals() { - return scopeLogs; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java deleted file mode 100644 index 1c172a3b0..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ResourceLogsData.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; -import java.util.Collection; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ResourceLogsData implements ResourceSignalsData { - - @JsonAttribute(name = "resourceLogs") - public final Collection resourceLogs; - - public ResourceLogsData(Collection resourceLogs) { - this.resourceLogs = resourceLogs; - } - - @Override - public Collection getResourceSignals() { - return resourceLogs; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java deleted file mode 100644 index d9e5978a7..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/logs/ScopeLogs.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; -import java.util.ArrayList; -import java.util.List; - -public final class ScopeLogs extends ScopeSignals { - - @JsonAttribute(name = "logRecords") - public List logRecords = new ArrayList<>(); - - @Override - public void addSignalItem(LogRecordDataJson item) { - logRecords.add(item); - } - - @Override - public List getSignalItems() { - return logRecords; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java deleted file mode 100644 index 228ef4cc5..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/MetricDataJson.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import javax.annotation.Nullable; - -public abstract class MetricDataJson { - public static final String NAME = "name"; - public static final String DESCRIPTION = "description"; - public static final String UNIT = "unit"; - - @Nullable - @JsonAttribute(name = NAME) - public String name; - - @Nullable - @JsonAttribute(name = DESCRIPTION) - public String description; - - @Nullable - @JsonAttribute(name = UNIT) - public String unit; - - public abstract void setData(DataJson data); - - @Nullable - public abstract DataJson getData(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java deleted file mode 100644 index 2b92f3f16..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetrics.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; -import java.util.ArrayList; -import java.util.List; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ResourceMetrics extends ResourceSignals { - - @JsonAttribute(name = "scopeMetrics") - public List scopeMetrics = new ArrayList<>(); - - @Override - public void addScopeSignalsItem(ScopeMetrics item) { - scopeMetrics.add(item); - } - - @Override - public List getScopeSignals() { - return scopeMetrics; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java deleted file mode 100644 index a28e92564..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ResourceMetricsData.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; -import java.util.Collection; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ResourceMetricsData implements ResourceSignalsData { - - @JsonAttribute(name = "resourceMetrics") - public final Collection resourceMetrics; - - public ResourceMetricsData(Collection resourceMetrics) { - this.resourceMetrics = resourceMetrics; - } - - @Override - public Collection getResourceSignals() { - return resourceMetrics; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java deleted file mode 100644 index d901611a0..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/ScopeMetrics.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; -import java.util.ArrayList; -import java.util.List; - -public final class ScopeMetrics extends ScopeSignals { - - @JsonAttribute(name = "metrics") - public List metrics = new ArrayList<>(); - - @Override - public void addSignalItem(MetricDataJson item) { - metrics.add(item); - } - - @Override - public List getSignalItems() { - return metrics; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java deleted file mode 100644 index 923027211..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/DataJson.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.DataPoint; -import java.util.ArrayList; -import java.util.List; - -@CompiledJson -public abstract class DataJson { - - @JsonAttribute(name = "dataPoints") - public List points = new ArrayList<>(); - - @SuppressWarnings("unchecked") - public void setPoints(List points) { - this.points = (List) points; - } - - @JsonAttribute(ignore = true) - public List getPoints() { - return points; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java deleted file mode 100644 index ce8773076..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/ExponentialHistogram.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.ExponentialHistogramDataPoint; -import javax.annotation.Nullable; - -@CompiledJson -public final class ExponentialHistogram extends DataJson { - - @Nullable - @JsonAttribute(name = "aggregationTemporality") - public Integer aggregationTemporality; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java deleted file mode 100644 index 87d6ea023..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Gauge.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; - -@CompiledJson -public final class Gauge extends DataJson {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java deleted file mode 100644 index f1a7ff00f..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Histogram.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.HistogramDataPoint; -import javax.annotation.Nullable; - -@CompiledJson -public final class Histogram extends DataJson { - - @Nullable - @JsonAttribute(name = "aggregationTemporality") - public Integer aggregationTemporality; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java deleted file mode 100644 index b377bc2c7..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Sum.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.NumberDataPoint; -import javax.annotation.Nullable; - -@CompiledJson -public final class Sum extends DataJson { - - @Nullable - @JsonAttribute(name = "aggregationTemporality") - public Integer aggregationTemporality; - - @Nullable - @JsonAttribute(name = "isMonotonic") - public Boolean monotonic; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java deleted file mode 100644 index 73dd4974a..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/data/Summary.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data; - -import com.dslplatform.json.CompiledJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.SummaryDataPoint; - -@CompiledJson -public final class Summary extends DataJson {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java deleted file mode 100644 index f16ae01bf..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/DataPoint.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import javax.annotation.Nullable; - -public abstract class DataPoint { - - @Nullable - @JsonAttribute(name = "startTimeUnixNano") - public String startEpochNanos; - - @Nullable - @JsonAttribute(name = "timeUnixNano") - public String epochNanos; - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java deleted file mode 100644 index 2b17a3542..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/ExponentialHistogramDataPoint.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Buckets; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Nullable; - -@CompiledJson -public final class ExponentialHistogramDataPoint extends DataPoint { - - @Nullable - @JsonAttribute(name = "count") - public String count; - - @Nullable - @JsonAttribute(name = "sum") - public Double sum; - - @Nullable - @JsonAttribute(name = "min") - public Double min; - - @Nullable - @JsonAttribute(name = "max") - public Double max; - - @JsonAttribute(name = "scale") - public Integer scale = 0; - - @Nullable - @JsonAttribute(name = "zeroCount") - public String zeroCount; - - @Nullable - @JsonAttribute(name = "positive") - public Buckets positiveBuckets; - - @Nullable - @JsonAttribute(name = "negative") - public Buckets negativeBuckets; - - @JsonAttribute(name = "exemplars") - public List exemplars = new ArrayList<>(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java deleted file mode 100644 index 4b7496602..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/HistogramDataPoint.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Nullable; - -@CompiledJson -public final class HistogramDataPoint extends DataPoint { - - @Nullable - @JsonAttribute(name = "count") - public String count; - - @Nullable - @JsonAttribute(name = "sum") - public Double sum; - - @Nullable - @JsonAttribute(name = "min") - public Double min; - - @Nullable - @JsonAttribute(name = "max") - public Double max; - - @JsonAttribute(name = "bucketCounts") - public List counts = new ArrayList<>(); - - @JsonAttribute(name = "explicitBounds") - public List boundaries = new ArrayList<>(); - - @JsonAttribute(name = "exemplars") - public List exemplars = new ArrayList<>(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java deleted file mode 100644 index eafdd6aa5..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/NumberDataPoint.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.Exemplar; -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class NumberDataPoint extends DataPoint { - - @Nullable - @JsonAttribute(name = "asInt") - public String longValue; - - @Nullable - @JsonAttribute(name = "asDouble") - public Double doubleValue; - - @JsonAttribute(name = "exemplars") - public List exemplars = new ArrayList<>(); - - public void setValue(Object value) { - if (value instanceof Long) { - longValue = String.valueOf(value); - } else { - doubleValue = (Double) value; - } - } - - public Type getType() { - if (longValue != null) { - return Type.LONG; - } else { - return Type.DOUBLE; - } - } - - public enum Type { - LONG, - DOUBLE - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java deleted file mode 100644 index f7fa73d3f..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/SummaryDataPoint.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data.QuantileValue; -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Nullable; - -@CompiledJson -public final class SummaryDataPoint extends DataPoint { - - @Nullable - @JsonAttribute(name = "count") - public String count; - - @Nullable - @JsonAttribute(name = "sum") - public Double sum; - - @JsonAttribute(name = "quantileValues") - public List values = new ArrayList<>(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java deleted file mode 100644 index 9ff044b5c..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Buckets.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; - -import com.dslplatform.json.JsonAttribute; -import java.util.ArrayList; -import java.util.List; - -public final class Buckets { - - @JsonAttribute(name = "offset") - public Integer offset = 0; - - @JsonAttribute(name = "bucketCounts") - public List bucketCounts = new ArrayList<>(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java deleted file mode 100644 index 453c0d81a..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/Exemplar.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import javax.annotation.Nullable; - -public final class Exemplar { - - @Nullable - @JsonAttribute(name = "timeUnixNano") - public String epochNanos; - - @Nullable - @JsonAttribute(name = "spanId") - public String spanId; - - @Nullable - @JsonAttribute(name = "traceId") - public String traceId; - - @JsonAttribute(name = "filteredAttributes") - public Attributes filteredAttributes = Attributes.empty(); - - @Nullable - @JsonAttribute(name = "asDouble") - public Double doubleValue; - - @Nullable - @JsonAttribute(name = "asInt") - public String longValue; - - public void setValue(Object value) { - if (value instanceof Long) { - longValue = String.valueOf(value); - } else { - doubleValue = (Double) value; - } - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java deleted file mode 100644 index a002af4f3..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/datapoints/data/QuantileValue.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data; - -import com.dslplatform.json.JsonAttribute; -import javax.annotation.Nullable; - -public final class QuantileValue { - - @Nullable - @JsonAttribute(name = "quantile") - public Double quantile; - - @Nullable - @JsonAttribute(name = "value") - public Double value; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java deleted file mode 100644 index ee9635a66..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/ExponentialHistogramMetric.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ExponentialHistogramMetric extends MetricDataJson { - public static final String DATA_NAME = "exponentialHistogram"; - - @Nullable - @JsonAttribute(name = DATA_NAME) - public ExponentialHistogram exponentialHistogram; - - @Override - public void setData(DataJson data) { - exponentialHistogram = (ExponentialHistogram) data; - } - - @Nullable - @Override - public DataJson getData() { - return exponentialHistogram; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java deleted file mode 100644 index 284532dac..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/GaugeMetric.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class GaugeMetric extends MetricDataJson { - public static final String DATA_NAME = "gauge"; - - @Nullable - @JsonAttribute(name = DATA_NAME) - public Gauge gauge; - - @Override - public void setData(DataJson data) { - gauge = (Gauge) data; - } - - @Nullable - @Override - public DataJson getData() { - return gauge; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java deleted file mode 100644 index 2cace295d..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/HistogramMetric.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class HistogramMetric extends MetricDataJson { - public static final String DATA_NAME = "histogram"; - - @Nullable - @JsonAttribute(name = DATA_NAME) - public Histogram histogram; - - @Override - public void setData(DataJson data) { - histogram = (Histogram) data; - } - - @Nullable - @Override - public DataJson getData() { - return histogram; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java deleted file mode 100644 index caeb7de99..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SumMetric.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class SumMetric extends MetricDataJson { - public static final String DATA_NAME = "sum"; - - @Nullable - @JsonAttribute(name = DATA_NAME) - public Sum sum; - - @Override - public void setData(DataJson data) { - sum = (Sum) data; - } - - @Nullable - @Override - public DataJson getData() { - return sum; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java deleted file mode 100644 index ae25cb735..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/metrics/impl/SummaryMetric.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.DataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; -import javax.annotation.Nullable; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class SummaryMetric extends MetricDataJson { - public static final String DATA_NAME = "summary"; - - @Nullable - @JsonAttribute(name = DATA_NAME) - public Summary summary; - - @Override - public void setData(DataJson data) { - summary = (Summary) data; - } - - @Nullable - @Override - public DataJson getData() { - return summary; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java deleted file mode 100644 index 1d59d6b5c..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/EventDataJson.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import javax.annotation.Nullable; - -public final class EventDataJson { - - @Nullable - @JsonAttribute(name = "timeUnixNano") - public String epochNanos; - - @Nullable - @JsonAttribute(name = "name") - public String name; - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); - - @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount = 0; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java deleted file mode 100644 index 8f650a637..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/LinkDataJson.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import javax.annotation.Nullable; - -public final class LinkDataJson { - - @Nullable - @JsonAttribute(name = "traceId") - public String traceId; - - @Nullable - @JsonAttribute(name = "spanId") - public String spanId; - - @Nullable - @JsonAttribute(name = "traceState") - public String traceState; - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); - - @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount = 0; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java deleted file mode 100644 index 50b98c575..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpans.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignals; -import java.util.ArrayList; -import java.util.List; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ResourceSpans extends ResourceSignals { - - @JsonAttribute(name = "scopeSpans") - public List scopeSpans = new ArrayList<>(); - - @Override - public void addScopeSignalsItem(ScopeSpan item) { - scopeSpans.add(item); - } - - @Override - public List getScopeSignals() { - return scopeSpans; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java deleted file mode 100644 index b747a3304..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ResourceSpansData.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.CompiledJson; -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ResourceSignalsData; -import java.util.Collection; - -@CompiledJson(objectFormatPolicy = CompiledJson.ObjectFormatPolicy.EXPLICIT) -public final class ResourceSpansData implements ResourceSignalsData { - - @JsonAttribute(name = "resourceSpans") - public final Collection resourceSpans; - - public ResourceSpansData(Collection resourceSpans) { - this.resourceSpans = resourceSpans; - } - - @Override - public Collection getResourceSignals() { - return resourceSpans; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java deleted file mode 100644 index ffbeaf05d..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/ScopeSpan.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common.ScopeSignals; -import java.util.ArrayList; -import java.util.List; - -public final class ScopeSpan extends ScopeSignals { - - @JsonAttribute(name = "spans") - public List spans = new ArrayList<>(); - - @Override - public void addSignalItem(SpanDataJson item) { - spans.add(item); - } - - @Override - public List getSignalItems() { - return spans; - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java deleted file mode 100644 index 251a9da4a..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/SpanDataJson.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.common.Attributes; -import java.util.List; -import javax.annotation.Nullable; - -public final class SpanDataJson { - @Nullable - @JsonAttribute(name = "traceId") - public String traceId; - - @Nullable - @JsonAttribute(name = "spanId") - public String spanId; - - @Nullable - @JsonAttribute(name = "parentSpanId") - public String parentSpanId; - - @Nullable - @JsonAttribute(name = "traceState") - public String traceState; - - @Nullable - @JsonAttribute(name = "name") - public String name; - - @Nullable - @JsonAttribute(name = "kind") - public Integer kind; - - @Nullable - @JsonAttribute(name = "startTimeUnixNano") - public String startEpochNanos; - - @Nullable - @JsonAttribute(name = "endTimeUnixNano") - public String endEpochNanos; - - @JsonAttribute(name = "attributes") - public Attributes attributes = Attributes.empty(); - - @JsonAttribute(name = "droppedAttributesCount") - public Integer droppedAttributesCount = 0; - - @JsonAttribute(name = "droppedEventsCount") - public Integer droppedEventsCount = 0; - - @JsonAttribute(name = "droppedLinksCount") - public Integer droppedLinksCount = 0; - - @Nullable - @JsonAttribute(name = "events") - public List events; - - @Nullable - @JsonAttribute(name = "links") - public List links; - - @Nullable - @JsonAttribute(name = "status") - public StatusDataJson status; -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java deleted file mode 100644 index b1196115b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/models/spans/StatusDataJson.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans; - -import com.dslplatform.json.JsonAttribute; -import io.opentelemetry.api.trace.StatusCode; -import javax.annotation.Nullable; - -public final class StatusDataJson { - - @Nullable - @JsonAttribute(name = "message") - public String description; - - @JsonAttribute(name = "code") - public Integer statusCode = StatusCode.UNSET.ordinal(); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java deleted file mode 100644 index b3500753b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/JsonSerializer.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; - -import com.dslplatform.json.DslJson; -import com.dslplatform.json.JsonReader; -import com.dslplatform.json.JsonWriter; -import com.dslplatform.json.runtime.Settings; -import io.opentelemetry.api.common._Attributes_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common._ResourceJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common._ResourceSignals_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.common._ScopeJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._BodyJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._LogRecordDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._ResourceLogsData_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._ResourceLogs_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs._ScopeLogs_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._MetricDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._ResourceMetricsData_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._ResourceMetrics_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics._ScopeMetrics_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._DataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._ExponentialHistogram_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Gauge_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Histogram_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Sum_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data._Summary_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._ExponentialHistogramDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._HistogramDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._NumberDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints._SummaryDataPoint_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data._Buckets_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data._Exemplar_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.datapoints.data._QuantileValue_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._ExponentialHistogramMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._GaugeMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._HistogramMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._SumMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl._SummaryMetric_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._EventDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._LinkDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._ResourceSpansData_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._ResourceSpans_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._ScopeSpan_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._SpanDataJson_DslJsonConverter; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans._StatusDataJson_DslJsonConverter; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -public final class JsonSerializer { - - private static final DslJson DSL_JSON = - new DslJson<>( - Settings.withAnalyzers(/* unknownReader= */ false, /* unknownWriter= */ false) - .skipDefaultValues(true) - .with(new _Attributes_DslJsonConverter()) - .with(new _BodyJson_DslJsonConverter()) - .with(new _Buckets_DslJsonConverter()) - .with(new _DataJson_DslJsonConverter()) - .with(new _EventDataJson_DslJsonConverter()) - .with(new _Exemplar_DslJsonConverter()) - .with(new _ExponentialHistogramDataPoint_DslJsonConverter()) - .with(new _ExponentialHistogramMetric_DslJsonConverter()) - .with(new _ExponentialHistogram_DslJsonConverter()) - .with(new _GaugeMetric_DslJsonConverter()) - .with(new _Gauge_DslJsonConverter()) - .with(new _HistogramDataPoint_DslJsonConverter()) - .with(new _HistogramMetric_DslJsonConverter()) - .with(new _Histogram_DslJsonConverter()) - .with(new _LinkDataJson_DslJsonConverter()) - .with(new _LogRecordDataJson_DslJsonConverter()) - .with(new _MetricDataJson_DslJsonConverter()) - .with(new _NumberDataPoint_DslJsonConverter()) - .with(new _QuantileValue_DslJsonConverter()) - .with(new _ResourceJson_DslJsonConverter()) - .with(new _ResourceLogsData_DslJsonConverter()) - .with(new _ResourceLogs_DslJsonConverter()) - .with(new _ResourceMetricsData_DslJsonConverter()) - .with(new _ResourceMetrics_DslJsonConverter()) - .with(new _ResourceSignals_DslJsonConverter()) - .with(new _ResourceSpansData_DslJsonConverter()) - .with(new _ResourceSpans_DslJsonConverter()) - .with(new _ScopeJson_DslJsonConverter()) - .with(new _ScopeLogs_DslJsonConverter()) - .with(new _ScopeMetrics_DslJsonConverter()) - .with(new _ScopeSpan_DslJsonConverter()) - .with(new _SpanDataJson_DslJsonConverter()) - .with(new _StatusDataJson_DslJsonConverter()) - .with(new _SumMetric_DslJsonConverter()) - .with(new _Sum_DslJsonConverter()) - .with(new _SummaryDataPoint_DslJsonConverter()) - .with(new _SummaryMetric_DslJsonConverter()) - .with(new _Summary_DslJsonConverter())); - - private JsonSerializer() {} - - public static JsonReader.ReadObject tryFindReader(Class manifest) { - return DSL_JSON.tryFindReader(manifest); - } - - public static JsonWriter.WriteObject tryFindWriter(Class manifest) { - return DSL_JSON.tryFindWriter(manifest); - } - - public static T deserialize(Class type, byte[] value) throws IOException { - try (ByteArrayInputStream in = new ByteArrayInputStream(value)) { - return DSL_JSON.deserialize(type, in); - } - } - - public static byte[] serialize(Object object) throws IOException { - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - DSL_JSON.serialize(object, out); - return out.toByteArray(); - } - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java index 5053b2b2d..d47bbddb2 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java @@ -37,6 +37,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +@SuppressWarnings("unchecked") class AbstractDiskExporterTest { private SpanExporter wrapped; private SignalSerializer serializer; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java deleted file mode 100644 index 346c70ac0..000000000 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/AttributesJsonConverterTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.contrib.disk.buffering.testutils.BaseJsonSerializationTest; -import java.util.Arrays; -import org.junit.jupiter.api.Test; - -class AttributesJsonConverterTest extends BaseJsonSerializationTest { - - @Test - public void verifySerialization() { - Attributes attributes = - Attributes.builder() - .put(AttributeKey.stringKey("someString"), "someValue") - .put(AttributeKey.booleanKey("someBool"), true) - .put(AttributeKey.longKey("someLong"), 10L) - .put(AttributeKey.doubleKey("someDouble"), 10.0) - .build(); - - byte[] serialized = serialize(attributes); - - assertEquals(attributes, deserialize(serialized)); - } - - @Test - public void verifyArraySerialization() { - Attributes attributes = - Attributes.builder() - .put( - AttributeKey.stringArrayKey("someString"), - Arrays.asList("firstString", "secondString")) - .put(AttributeKey.booleanArrayKey("someBool"), Arrays.asList(true, false)) - .put(AttributeKey.longArrayKey("someLong"), Arrays.asList(10L, 50L)) - .put(AttributeKey.doubleArrayKey("someDouble"), Arrays.asList(10.0, 50.5)) - .build(); - - byte[] serialized = serialize(attributes); - - assertEquals(attributes, deserialize(serialized)); - } - - @Override - protected Class getTargetClass() { - return Attributes.class; - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java deleted file mode 100644 index f8a57d2a4..000000000 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/converters/MetricDataJsonConverterTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.converters; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.MetricDataJson; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.ExponentialHistogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Gauge; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Histogram; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Sum; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.data.Summary; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.ExponentialHistogramMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.GaugeMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.HistogramMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SumMetric; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.impl.SummaryMetric; -import io.opentelemetry.contrib.disk.buffering.testutils.BaseJsonSerializationTest; -import org.junit.jupiter.api.Test; - -class MetricDataJsonConverterTest extends BaseJsonSerializationTest { - private static final String METRIC_NAME = "metricName"; - private static final String METRIC_DESCRIPTION = "metricDescription"; - private static final String METRIC_UNIT = "metricUnit"; - - @Test - public void verifySumMetricSerialization() { - SumMetric metric = new SumMetric(); - setBaseValues(metric); - metric.sum = new Sum(); - - byte[] serialized = serialize(metric); - - assertTrue(deserialize(serialized) instanceof SumMetric); - assertBaseValues(metric); - } - - @Test - public void verifyGaugeMetricSerialization() { - GaugeMetric metric = new GaugeMetric(); - setBaseValues(metric); - metric.gauge = new Gauge(); - - byte[] serialized = serialize(metric); - - assertTrue(deserialize(serialized) instanceof GaugeMetric); - assertBaseValues(metric); - } - - @Test - public void verifyHistogramMetricSerialization() { - HistogramMetric metric = new HistogramMetric(); - setBaseValues(metric); - metric.histogram = new Histogram(); - - byte[] serialized = serialize(metric); - - assertTrue(deserialize(serialized) instanceof HistogramMetric); - assertBaseValues(metric); - } - - @Test - public void verifySummaryMetricSerialization() { - SummaryMetric metric = new SummaryMetric(); - setBaseValues(metric); - metric.summary = new Summary(); - - byte[] serialized = serialize(metric); - - assertTrue(deserialize(serialized) instanceof SummaryMetric); - assertBaseValues(metric); - } - - @Test - public void verifyExponentialHistogramMetricSerialization() { - ExponentialHistogramMetric metric = new ExponentialHistogramMetric(); - setBaseValues(metric); - metric.exponentialHistogram = new ExponentialHistogram(); - - byte[] serialized = serialize(metric); - - assertTrue(deserialize(serialized) instanceof ExponentialHistogramMetric); - assertBaseValues(metric); - } - - private static void assertBaseValues(MetricDataJson metric) { - assertEquals(METRIC_NAME, metric.name); - assertEquals(METRIC_DESCRIPTION, metric.description); - assertEquals(METRIC_UNIT, metric.unit); - } - - private static void setBaseValues(MetricDataJson metric) { - metric.name = METRIC_NAME; - metric.description = METRIC_DESCRIPTION; - metric.unit = METRIC_UNIT; - } - - @Override - protected Class getTargetClass() { - return MetricDataJson.class; - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java similarity index 98% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java index 287f8e77c..36924f0b9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/AttributesMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java similarity index 96% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java index ccf08ac1e..069d7d7cd 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/common/ResourceMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.common; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java similarity index 98% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java index 34b9d3e2d..010b21de4 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/LogRecordDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java similarity index 99% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java index 8942c10b8..de9bfa35b 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/logs/ProtoLogsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.logs; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java similarity index 99% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index e5701ef2c..9008e0841 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java similarity index 99% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index 5652afdc6..8ebb348d2 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.metrics; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java similarity index 99% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java index 2cbdf786b..d8a6eef67 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/ProtoSpansDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java similarity index 99% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java index d5b2ea551..bcc749466 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/proto/spans/SpanDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java @@ -1,4 +1,4 @@ -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.proto.spans; +package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index f45a41344..04654fcc7 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +@SuppressWarnings("unchecked") class StorageTest { private FolderManager folderManager; private Storage storage; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java deleted file mode 100644 index 8ce035130..000000000 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseJsonSerializationTest.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.testutils; - -import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.JsonSerializer; -import java.io.IOException; - -public abstract class BaseJsonSerializationTest { - protected byte[] serialize(T item) { - try { - return JsonSerializer.serialize(item); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - protected T deserialize(byte[] json) { - try { - return JsonSerializer.deserialize(getTargetClass(), json); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - protected abstract Class getTargetClass(); -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java index 92268121b..bc188178d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java @@ -11,6 +11,7 @@ import java.util.Arrays; import java.util.List; +@SuppressWarnings("unchecked") public abstract class BaseSignalSerializerTest { protected byte[] serialize(SIGNAL_SDK_ITEM... items) { return getSerializer().serialize(Arrays.asList(items)); From 00827c9a26c6be3c20869927a4ddc00d789b0d6d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 10:21:07 +0200 Subject: [PATCH 137/209] Serializing and deserializing using delimited protos --- .../serializers/LogRecordDataSerializer.java | 17 ++--- .../serializers/MetricDataSerializer.java | 17 ++--- .../serializers/SpanDataSerializer.java | 17 ++--- .../buffering/internal/storage/Storage.java | 4 +- .../internal/storage/files/ReadableFile.java | 6 +- .../reader/DelimitedProtoStreamReader.java | 55 ++++++++++++++++ .../files/reader/LineStreamReader.java | 42 ------------- .../files/utils/CountingInputStream.java | 63 +++++++++++++++++++ .../internal/storage/StorageTest.java | 12 ++-- .../storage/files/ReadableFileTest.java | 38 ++++++----- 10 files changed, 177 insertions(+), 94 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index cb93b3ec0..509d251d6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -5,9 +5,11 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.ResourceLogsDataMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.logs.ResourceLogsData; +import com.google.protobuf.InvalidProtocolBufferException; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.ProtoLogsDataMapper; +import io.opentelemetry.proto.logs.v1.LogsData; import io.opentelemetry.sdk.logs.data.LogRecordData; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Collection; import java.util.List; @@ -27,8 +29,10 @@ static LogRecordDataSerializer get() { @Override public byte[] serialize(Collection logRecordData) { - try { - return JsonSerializer.serialize(ResourceLogsDataMapper.INSTANCE.toDtoItems(logRecordData)); + LogsData proto = ProtoLogsDataMapper.INSTANCE.toProto(logRecordData); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + proto.writeDelimitedTo(out); + return out.toByteArray(); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -37,9 +41,8 @@ public byte[] serialize(Collection logRecordData) { @Override public List deserialize(byte[] source) { try { - return ResourceLogsDataMapper.INSTANCE.fromDtoItems( - JsonSerializer.deserialize(ResourceLogsData.class, source)); - } catch (IOException e) { + return ProtoLogsDataMapper.INSTANCE.fromProto(LogsData.parseFrom(source)); + } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException(e); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 3e3161f65..5e6d15146 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -5,9 +5,11 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.ResourceMetricsDataMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.metrics.ResourceMetricsData; +import com.google.protobuf.InvalidProtocolBufferException; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.ProtoMetricsDataMapper; +import io.opentelemetry.proto.metrics.v1.MetricsData; import io.opentelemetry.sdk.metrics.data.MetricData; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Collection; import java.util.List; @@ -27,8 +29,10 @@ static MetricDataSerializer get() { @Override public byte[] serialize(Collection metricData) { - try { - return JsonSerializer.serialize(ResourceMetricsDataMapper.INSTANCE.toDtoItems(metricData)); + MetricsData proto = ProtoMetricsDataMapper.INSTANCE.toProto(metricData); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + proto.writeDelimitedTo(out); + return out.toByteArray(); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -37,9 +41,8 @@ public byte[] serialize(Collection metricData) { @Override public List deserialize(byte[] source) { try { - return ResourceMetricsDataMapper.INSTANCE.fromDtoItems( - JsonSerializer.deserialize(ResourceMetricsData.class, source)); - } catch (IOException e) { + return ProtoMetricsDataMapper.INSTANCE.fromProto(MetricsData.parseFrom(source)); + } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException(e); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index 36fff3bf1..08be53d8f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -5,9 +5,11 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.ResourceSpansDataMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.models.spans.ResourceSpansData; +import com.google.protobuf.InvalidProtocolBufferException; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.ProtoSpansDataMapper; +import io.opentelemetry.proto.trace.v1.TracesData; import io.opentelemetry.sdk.trace.data.SpanData; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Collection; import java.util.List; @@ -27,8 +29,10 @@ static SpanDataSerializer get() { @Override public byte[] serialize(Collection spanData) { - try { - return JsonSerializer.serialize(ResourceSpansDataMapper.INSTANCE.toDtoItems(spanData)); + TracesData proto = ProtoSpansDataMapper.INSTANCE.toProto(spanData); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + proto.writeDelimitedTo(out); + return out.toByteArray(); } catch (IOException e) { throw new IllegalArgumentException(e); } @@ -37,9 +41,8 @@ public byte[] serialize(Collection spanData) { @Override public List deserialize(byte[] source) { try { - return ResourceSpansDataMapper.INSTANCE.fromDtoItems( - JsonSerializer.deserialize(ResourceSpansData.class, source)); - } catch (IOException e) { + return ProtoSpansDataMapper.INSTANCE.fromProto(TracesData.parseFrom(source)); + } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException(e); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index ff28cd277..4620b9d45 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -64,7 +64,7 @@ private void write(byte[] line, int attemptNumber) throws IOException { /** * Attempts to read a line from a ready-to-read file. * - * @param consumer Is passed over to {@link ReadableFile#readLine(Function)}. + * @param consumer Is passed over to {@link ReadableFile#readItem(Function)}. * @return TRUE if data was found and read, FALSE if there is no data available to read. * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. * @throws ResourceClosedException If it's closed. @@ -88,7 +88,7 @@ private boolean read(Function consumer, int attemptNumber) thro } } try { - readableFile.readLine(consumer); + readableFile.readItem(consumer); return true; } catch (ReadingTimeoutException | NoContentAvailableException | ResourceClosedException e) { // Retry with new file diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 083625882..d2c91a71a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -8,7 +8,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.LineStreamReader; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.DelimitedProtoStreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ReadResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; @@ -42,7 +42,7 @@ public ReadableFile( TimeProvider timeProvider, StorageConfiguration configuration) throws IOException { - this(file, createdTimeMillis, timeProvider, configuration, LineStreamReader.Factory.INSTANCE); + this(file, createdTimeMillis, timeProvider, configuration, DelimitedProtoStreamReader.Factory.INSTANCE); } public ReadableFile( @@ -74,7 +74,7 @@ public ReadableFile( * @throws NoContentAvailableException If there is no content to be read from the file. * @throws ResourceClosedException If it's closed. */ - public synchronized void readLine(Function consumer) throws IOException { + public synchronized void readItem(Function consumer) throws IOException { if (isClosed.get()) { throw new ResourceClosedException(); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java new file mode 100644 index 000000000..cadaa0d67 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java @@ -0,0 +1,55 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; + +import com.google.protobuf.CodedInputStream; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.CountingInputStream; +import java.io.IOException; +import java.io.InputStream; +import javax.annotation.Nullable; + +public final class DelimitedProtoStreamReader extends StreamReader { + private final CountingInputStream countingInputStream; + + public DelimitedProtoStreamReader(InputStream inputStream) { + super(new CountingInputStream(inputStream)); + countingInputStream = (CountingInputStream) this.inputStream; + } + + @Override + @Nullable + public ReadResult read() throws IOException { + int startingPosition = countingInputStream.getPosition(); + int itemSize = getNextItemSize(); + if (itemSize < 1) { + return null; + } + byte[] bytes = new byte[itemSize]; + if (inputStream.read(bytes) < 0) { + return null; + } + return new ReadResult(bytes, countingInputStream.getPosition() - startingPosition); + } + + private int getNextItemSize() { + try { + int firstByte = inputStream.read(); + if (firstByte == -1) { + return 0; + } + return CodedInputStream.readRawVarint32(firstByte, inputStream); + } catch (IOException e) { + return 0; + } + } + + public static class Factory implements StreamReader.Factory { + + public static final Factory INSTANCE = new DelimitedProtoStreamReader.Factory(); + + private Factory() {} + + @Override + public StreamReader create(InputStream stream) { + return new DelimitedProtoStreamReader(stream); + } + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java deleted file mode 100644 index e32686e3b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/LineStreamReader.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; - -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import javax.annotation.Nullable; - -public final class LineStreamReader extends StreamReader { - private final BufferedReader bufferedReader; - - public LineStreamReader(InputStream inputStream) { - super(inputStream); - bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); - } - - @Override - @Nullable - public ReadResult read() throws IOException { - String line = bufferedReader.readLine(); - if (line == null) { - return null; - } - byte[] bytes = line.getBytes(StandardCharsets.UTF_8); - return new ReadResult(bytes, bytes.length + NEW_LINE_BYTES_SIZE); - } - - public static class Factory implements StreamReader.Factory { - - public static final Factory INSTANCE = new LineStreamReader.Factory(); - - private Factory() {} - - @Override - public StreamReader create(InputStream stream) { - return new LineStreamReader(stream); - } - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java new file mode 100644 index 000000000..1aa1e3de1 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java @@ -0,0 +1,63 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; + +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; + +public final class CountingInputStream extends FilterInputStream { + + private int position; + private int mark = -1; + + public CountingInputStream(InputStream in) { + super(in); + } + + public int getPosition() { + return position; + } + + @Override + public synchronized void mark(int readlimit) { + in.mark(readlimit); + mark = position; + } + + @Override + public long skip(long n) throws IOException { + long result = in.skip(n); + position = (int) (position + result); + return result; + } + + @Override + public int read() throws IOException { + int result = in.read(); + if (result != -1) { + position++; + } + return result; + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + int result = in.read(b, off, len); + if (result != -1) { + position += result; + } + return result; + } + + @Override + public synchronized void reset() throws IOException { + if (!in.markSupported()) { + throw new IOException("Mark is not supported"); + } + if (mark == -1) { + throw new IOException("Mark is not set"); + } + + in.reset(); + position = mark; + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 04654fcc7..fc462805f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -52,7 +52,7 @@ public void whenReadingSuccessfully_returnTrue() throws IOException { assertTrue(storage.read(consumer)); - verify(readableFile).readLine(consumer); + verify(readableFile).readItem(consumer); } @Test @@ -63,7 +63,7 @@ public void whenReadingMultipleTimes_reuseReader() throws IOException { assertTrue(storage.read(consumer)); assertTrue(storage.read(consumer)); - verify(readableFile, times(2)).readLine(consumer); + verify(readableFile, times(2)).readItem(consumer); verify(folderManager, times(1)).getReadableFile(); verifyNoInteractions(anotherReadable); } @@ -110,7 +110,7 @@ public void whenNoFileAvailableForReading_returnFalse() throws IOException { @Test public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(ReadingTimeoutException.class).when(readableFile).readLine(consumer); + doThrow(ReadingTimeoutException.class).when(readableFile).readItem(consumer); assertFalse(storage.read(consumer)); @@ -120,7 +120,7 @@ public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOExceptio @Test public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(NoContentAvailableException.class).when(readableFile).readLine(consumer); + doThrow(NoContentAvailableException.class).when(readableFile).readItem(consumer); assertFalse(storage.read(consumer)); @@ -130,7 +130,7 @@ public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws @Test public void whenResourceClosedExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(ResourceClosedException.class).when(readableFile).readLine(consumer); + doThrow(ResourceClosedException.class).when(readableFile).readItem(consumer); assertFalse(storage.read(consumer)); @@ -141,7 +141,7 @@ public void whenResourceClosedExceptionHappens_lookForNewFileToRead() throws IOE public void whenEveryNewFileFoundCannotBeRead_throwExceptionAfterMaxAttempts() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile); - doThrow(ResourceClosedException.class).when(readableFile).readLine(consumer); + doThrow(ResourceClosedException.class).when(readableFile).readItem(consumer); try { assertFalse(storage.read(consumer)); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index ef253e8a5..f17d34f3d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -22,7 +22,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -104,22 +103,21 @@ public void setUp() throws IOException { } private static void addFileContents(File source) throws IOException { - List lines = new ArrayList<>(); - lines.add(SERIALIZER.serialize(Collections.singleton(FIRST_LOG_RECORD))); - lines.add(SERIALIZER.serialize(Collections.singleton(SECOND_LOG_RECORD))); - lines.add(SERIALIZER.serialize(Collections.singleton(THIRD_LOG_RECORD))); + List items = new ArrayList<>(); + items.add(SERIALIZER.serialize(Collections.singleton(FIRST_LOG_RECORD))); + items.add(SERIALIZER.serialize(Collections.singleton(SECOND_LOG_RECORD))); + items.add(SERIALIZER.serialize(Collections.singleton(THIRD_LOG_RECORD))); try (FileOutputStream out = new FileOutputStream(source)) { - for (byte[] line : lines) { - out.write(line); - out.write(Constants.NEW_LINE_BYTES); + for (byte[] item : items) { + out.write(item); } } } @Test - public void readSingleLineAndRemoveIt() throws IOException { - readableFile.readLine( + public void readSingleItemAndRemoveIt() throws IOException { + readableFile.readItem( bytes -> { assertEquals(FIRST_LOG_RECORD, deserialize(bytes)); return true; @@ -134,7 +132,7 @@ public void readSingleLineAndRemoveIt() throws IOException { @Test public void deleteTemporaryFileWhenClosing() throws IOException { - readableFile.readLine(bytes -> true); + readableFile.readItem(bytes -> true); readableFile.close(); assertFalse(temporaryFile.exists()); @@ -142,8 +140,8 @@ public void deleteTemporaryFileWhenClosing() throws IOException { @Test public void readMultipleLinesAndRemoveThem() throws IOException { - readableFile.readLine(bytes -> true); - readableFile.readLine(bytes -> true); + readableFile.readItem(bytes -> true); + readableFile.readItem(bytes -> true); List logs = getRemainingDataAndClose(readableFile); @@ -153,7 +151,7 @@ public void readMultipleLinesAndRemoveThem() throws IOException { @Test public void whenConsumerReturnsFalse_doNotRemoveLineFromSource() throws IOException { - readableFile.readLine(bytes -> false); + readableFile.readItem(bytes -> false); List logs = getRemainingDataAndClose(readableFile); @@ -180,7 +178,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc new ReadableFile( emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); try { - emptyReadableFile.readLine(bytes -> true); + emptyReadableFile.readItem(bytes -> true); fail(); } catch (NoContentAvailableException ignored) { assertTrue(emptyReadableFile.isClosed()); @@ -192,13 +190,13 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc public void whenReadingAfterTheConfiguredReadingTimeExpired_deleteOriginalFile_close_and_throwException() throws IOException { - readableFile.readLine(bytes -> true); + readableFile.readItem(bytes -> true); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) .when(timeProvider) .getSystemCurrentTimeMillis(); try { - readableFile.readLine(bytes -> true); + readableFile.readItem(bytes -> true); fail(); } catch (ReadingTimeoutException ignored) { assertTrue(readableFile.isClosed()); @@ -207,11 +205,11 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc @Test public void whenReadingAfterClosed_throwException() throws IOException { - readableFile.readLine(bytes -> true); + readableFile.readItem(bytes -> true); readableFile.close(); try { - readableFile.readLine(bytes -> true); + readableFile.readItem(bytes -> true); fail(); } catch (ResourceClosedException ignored) { } @@ -222,7 +220,7 @@ private static List getRemainingDataAndClose(ReadableFile readabl List result = new ArrayList<>(); while (true) { try { - readableFile.readLine( + readableFile.readItem( bytes -> { result.add(deserialize(bytes)); return true; From c243d7c1aa005d93edbbb44cba5c2ff7518fa101 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 10:42:56 +0200 Subject: [PATCH 138/209] Formatting --- .../buffering/internal/storage/files/ReadableFile.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index d2c91a71a..a15e659fc 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -42,7 +42,12 @@ public ReadableFile( TimeProvider timeProvider, StorageConfiguration configuration) throws IOException { - this(file, createdTimeMillis, timeProvider, configuration, DelimitedProtoStreamReader.Factory.INSTANCE); + this( + file, + createdTimeMillis, + timeProvider, + configuration, + DelimitedProtoStreamReader.Factory.INSTANCE); } public ReadableFile( From fb6f4a959e040cc25102b0a6a1ade017d46097d8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 10:53:18 +0200 Subject: [PATCH 139/209] Making WritableFile to not know about its data delimiters --- .../internal/storage/files/WritableFile.java | 5 +---- .../storage/files/WritableFileTest.java | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index a6f084f03..b91cd45c7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -5,8 +5,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; - import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; @@ -58,13 +56,12 @@ public synchronized void append(byte[] data) throws IOException { close(); throw new WritingTimeoutException(); } - int futureSize = size + data.length + NEW_LINE_BYTES.length; + int futureSize = size + data.length; if (futureSize > configuration.getMaxFileSize()) { close(); throw new NoSpaceAvailableException(); } out.write(data); - out.write(NEW_LINE_BYTES); size = futureSize; } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 09c04d787..cd3b4b379 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_WRITE_MILLIS; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; +import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -63,8 +64,8 @@ public void hasExpired_whenWriteAgeHasExpired() { @Test public void appendDataInNewLines_andIncreaseSize() throws IOException { - byte[] line1 = "First line".getBytes(StandardCharsets.UTF_8); - byte[] line2 = "Second line".getBytes(StandardCharsets.UTF_8); + byte[] line1 = getByteArrayLine("First line"); + byte[] line2 = getByteArrayLine("Second line"); writableFile.append(line1); writableFile.append(line2); writableFile.close(); @@ -74,13 +75,13 @@ public void appendDataInNewLines_andIncreaseSize() throws IOException { assertEquals(2, lines.size()); assertEquals("First line", lines.get(0)); assertEquals("Second line", lines.get(1)); - assertEquals(line1.length + line2.length + NEW_LINE_BYTES_SIZE * 2L, writableFile.getSize()); + assertEquals(line1.length + line2.length, writableFile.getSize()); } @Test public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowException() throws IOException { - writableFile.append(new byte[MAX_FILE_SIZE - NEW_LINE_BYTES_SIZE]); + writableFile.append(new byte[MAX_FILE_SIZE]); try { writableFile.append(new byte[1]); fail(); @@ -116,6 +117,14 @@ public void whenAppendingData_andIsAlreadyClosed_throwException() throws IOExcep } } + private static byte[] getByteArrayLine(String line) { + byte[] lineBytes = line.getBytes(StandardCharsets.UTF_8); + byte[] fullLine = new byte[lineBytes.length + NEW_LINE_BYTES_SIZE]; + System.arraycopy(lineBytes, 0, fullLine, 0, lineBytes.length); + System.arraycopy(NEW_LINE_BYTES, 0, fullLine, lineBytes.length, NEW_LINE_BYTES_SIZE); + return fullLine; + } + private List getWrittenLines() throws IOException { return Files.readAllLines(writableFile.file.toPath()); } From 09b97a3ec552dade3406f75b4b5865752b2ed8b6 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 11:29:28 +0200 Subject: [PATCH 140/209] Updating serializer tests --- .../mapping/logs/LogRecordDataMapper.java | 6 +++- .../spans/models/data/LinkDataImpl.java | 30 ------------------- .../LogRecordDataSerializerTest.java | 1 + .../serializers/SpanDataSerializerTest.java | 13 ++------ .../testutils/BaseSignalSerializerTest.java | 12 +++++++- 5 files changed, 19 insertions(+), 43 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java index f6ab3616b..5eb4af5e0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java @@ -22,9 +22,13 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; +import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.ReportingPolicy; -@Mapper(uses = AttributesMapper.class, unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper( + uses = AttributesMapper.class, + unmappedTargetPolicy = ReportingPolicy.IGNORE, + nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) public abstract class LogRecordDataMapper { public static final LogRecordDataMapper INSTANCE = new LogRecordDataMapperImpl(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java deleted file mode 100644 index 234e55368..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/LinkDataImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.sdk.trace.data.LinkData; - -@AutoValue -public abstract class LinkDataImpl implements LinkData { - - public static Builder builder() { - return new AutoValue_LinkDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder { - public abstract Builder setSpanContext(SpanContext value); - - public abstract Builder setAttributes(Attributes value); - - public abstract Builder setTotalAttributeCount(Integer value); - - public abstract LinkDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java index 168fb5afb..a559592d4 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializerTest.java @@ -37,6 +37,7 @@ class LogRecordDataSerializerTest extends BaseSignalSerializerTest { .build(); private static final LinkData LINK_DATA = - LinkDataImpl.builder() - .setAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT) - .setTotalAttributeCount(20) - .build(); + LinkData.create(TestData.SPAN_CONTEXT, TestData.ATTRIBUTES, 20); private static final LinkData LINK_DATA_WITH_TRACE_STATE = - LinkDataImpl.builder() - .setAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT_WITH_TRACE_STATE) - .setTotalAttributeCount(20) - .build(); + LinkData.create(TestData.SPAN_CONTEXT_WITH_TRACE_STATE, TestData.ATTRIBUTES, 20); private static final SpanData SPAN_DATA = SpanDataImpl.builder() diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java index bc188178d..a3ea6263d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java @@ -8,8 +8,13 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.DelimitedProtoStreamReader; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; import java.util.Arrays; import java.util.List; +import java.util.Objects; @SuppressWarnings("unchecked") public abstract class BaseSignalSerializerTest { @@ -18,7 +23,12 @@ protected byte[] serialize(SIGNAL_SDK_ITEM... items) { } protected List deserialize(byte[] source) { - return getSerializer().deserialize(source); + try (ByteArrayInputStream in = new ByteArrayInputStream(source)) { + StreamReader streamReader = DelimitedProtoStreamReader.Factory.INSTANCE.create(in); + return getSerializer().deserialize(Objects.requireNonNull(streamReader.read()).content); + } catch (IOException e) { + throw new RuntimeException(e); + } } protected void assertSerialization(SIGNAL_SDK_ITEM... targets) { From f69d6844d9552e9a0b49ee4240ee15bc772cdf28 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 13:23:36 +0200 Subject: [PATCH 141/209] Adding integration tests --- disk-buffering/build.gradle.kts | 1 + .../disk/buffering/IntegrationTest.java | 165 ++++++++++++++++++ .../exporters/AbstractDiskExporterTest.java | 15 +- .../buffering/testutils/FakeTimeProvider.java | 26 +++ 4 files changed, 195 insertions(+), 12 deletions(-) create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java create mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 1ceeebe38..cd3ac2421 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -22,4 +22,5 @@ dependencies { annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") annotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion") testImplementation("org.mockito:mockito-inline:4.11.0") + testImplementation("io.opentelemetry:opentelemetry-sdk-testing") } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java new file mode 100644 index 000000000..ec3db23a1 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java @@ -0,0 +1,165 @@ +package io.opentelemetry.contrib.disk.buffering; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.doReturn; + +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.contrib.disk.buffering.exporters.LogRecordDiskExporter; +import io.opentelemetry.contrib.disk.buffering.exporters.MetricDiskExporter; +import io.opentelemetry.contrib.disk.buffering.exporters.SpanDiskExporter; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.testutils.FakeTimeProvider; +import io.opentelemetry.sdk.logs.SdkLoggerProvider; +import io.opentelemetry.sdk.logs.export.LogRecordExporter; +import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; +import io.opentelemetry.sdk.metrics.SdkMeterProvider; +import io.opentelemetry.sdk.metrics.export.MetricExporter; +import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader; +import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter; +import io.opentelemetry.sdk.testing.exporter.InMemoryMetricExporter; +import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.export.SpanExporter; +import java.io.File; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +public class IntegrationTest { + private InMemorySpanExporter memorySpanExporter; + private SpanDiskExporter diskSpanExporter; + private Tracer tracer; + private InMemoryMetricExporter memoryMetricExporter; + private MetricDiskExporter diskMetricExporter; + private SdkMeterProvider meterProvider; + private Meter meter; + private InMemoryLogRecordExporter memoryLogRecordExporter; + private LogRecordDiskExporter diskLogRecordExporter; + private Logger logger; + private TimeProvider timeMachine; + @TempDir File rootDir; + private static final long INITIAL_TIME_IN_MILLIS = 1000; + private static final StorageConfiguration STORAGE_CONFIGURATION = + StorageConfiguration.getDefault(); + + @BeforeEach + public void setUp() { + timeMachine = FakeTimeProvider.createAndSetMock(INITIAL_TIME_IN_MILLIS); + + // Setting up spans + memorySpanExporter = InMemorySpanExporter.create(); + diskSpanExporter = new SpanDiskExporter(memorySpanExporter, rootDir, STORAGE_CONFIGURATION); + tracer = createTracerProvider(diskSpanExporter).get("SpanInstrumentationScope"); + + // Setting up metrics + memoryMetricExporter = InMemoryMetricExporter.create(); + diskMetricExporter = + new MetricDiskExporter(memoryMetricExporter, rootDir, STORAGE_CONFIGURATION); + meterProvider = createMeterProvider(diskMetricExporter); + meter = meterProvider.get("MetricInstrumentationScope"); + + // Setting up logs + memoryLogRecordExporter = InMemoryLogRecordExporter.create(); + diskLogRecordExporter = + new LogRecordDiskExporter(memoryLogRecordExporter, rootDir, STORAGE_CONFIGURATION); + logger = createLoggerProvider(diskLogRecordExporter).get("LogInstrumentationScope"); + } + + @Test + public void verifySpansIntegration() throws IOException { + Span span = tracer.spanBuilder("Span name").startSpan(); + span.end(); + + // Verify no data has been received in the original exporter until this point. + assertEquals(0, memorySpanExporter.getFinishedSpanItems().size()); + + // Go to the future when we can read the stored items. + fastForwardTimeByMillis(STORAGE_CONFIGURATION.getMinFileAgeForReadMillis()); + + // Read and send stored data. + assertTrue(diskSpanExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + + // Now the data must have been delegated to the original exporter. + assertEquals(1, memorySpanExporter.getFinishedSpanItems().size()); + + // Bonus: Try to read again, no more data should be available. + assertFalse(diskSpanExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + assertEquals(1, memorySpanExporter.getFinishedSpanItems().size()); + } + + @Test + public void verifyMetricsIntegration() throws IOException { + meter.counterBuilder("Counter").build().add(2); + meterProvider.forceFlush(); + + // Verify no data has been received in the original exporter until this point. + assertEquals(0, memoryMetricExporter.getFinishedMetricItems().size()); + + // Go to the future when we can read the stored items. + fastForwardTimeByMillis(STORAGE_CONFIGURATION.getMinFileAgeForReadMillis()); + + // Read and send stored data. + assertTrue(diskMetricExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + + // Now the data must have been delegated to the original exporter. + assertEquals(1, memoryMetricExporter.getFinishedMetricItems().size()); + + // Bonus: Try to read again, no more data should be available. + assertFalse(diskMetricExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + assertEquals(1, memoryMetricExporter.getFinishedMetricItems().size()); + } + + @Test + public void verifyLogRecordsIntegration() throws IOException { + logger.logRecordBuilder().setBody("I'm a log!").emit(); + + // Verify no data has been received in the original exporter until this point. + assertEquals(0, memoryLogRecordExporter.getFinishedLogRecordItems().size()); + + // Go to the future when we can read the stored items. + fastForwardTimeByMillis(STORAGE_CONFIGURATION.getMinFileAgeForReadMillis()); + + // Read and send stored data. + assertTrue(diskLogRecordExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + + // Now the data must have been delegated to the original exporter. + assertEquals(1, memoryLogRecordExporter.getFinishedLogRecordItems().size()); + + // Bonus: Try to read again, no more data should be available. + assertFalse(diskLogRecordExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + assertEquals(1, memoryLogRecordExporter.getFinishedLogRecordItems().size()); + } + + private void fastForwardTimeByMillis(long milliseconds) { + doReturn(timeMachine.getSystemCurrentTimeMillis() + milliseconds) + .when(timeMachine) + .getSystemCurrentTimeMillis(); + } + + private static SdkTracerProvider createTracerProvider(SpanExporter exporter) { + return SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.create(exporter)) + .build(); + } + + private static SdkMeterProvider createMeterProvider(MetricExporter exporter) { + return SdkMeterProvider.builder() + .registerMetricReader(PeriodicMetricReader.create(exporter)) + .build(); + } + + private static SdkLoggerProvider createLoggerProvider(LogRecordExporter exporter) { + return SdkLoggerProvider.builder() + .addLogRecordProcessor(SimpleLogRecordProcessor.create(exporter)) + .build(); + } +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java index d47bbddb2..d411d4d92 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java @@ -21,12 +21,12 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.testutils.FakeTimeProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.io.File; import java.io.IOException; -import java.lang.reflect.Field; import java.nio.file.Files; import java.util.Arrays; import java.util.Collection; @@ -48,8 +48,8 @@ class AbstractDiskExporterTest { private static final String STORAGE_FOLDER_NAME = "testName"; @BeforeEach - public void setUp() throws NoSuchFieldException, IllegalAccessException { - setUpTimeProvider(); + public void setUp() { + timeProvider = FakeTimeProvider.createAndSetMock(1000L); setUpSerializer(); wrapped = mock(); exporter = @@ -145,15 +145,6 @@ private File createDummyFile(long createdTimeMillis, String... lines) throws IOE return file; } - private void setUpTimeProvider() throws NoSuchFieldException, IllegalAccessException { - timeProvider = mock(); - Field field = TimeProvider.class.getDeclaredField("instance"); - field.setAccessible(true); - - field.set(null, timeProvider); - doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); - } - private void setUpSerializer() { serializer = mock(); doReturn(deserializedData).when(serializer).deserialize(any()); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java new file mode 100644 index 000000000..fd0927668 --- /dev/null +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java @@ -0,0 +1,26 @@ +package io.opentelemetry.contrib.disk.buffering.testutils; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; + +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import java.lang.reflect.Field; + +public class FakeTimeProvider { + + private FakeTimeProvider() { + } + + public static TimeProvider createAndSetMock(long initialTimeInMillis) { + TimeProvider timeProvider = mock(); + try { + Field field = TimeProvider.class.getDeclaredField("instance"); + field.setAccessible(true); + field.set(null, timeProvider); + doReturn(initialTimeInMillis).when(timeProvider).getSystemCurrentTimeMillis(); + return timeProvider; + } catch (NoSuchFieldException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } +} From 0b105d1b0f626db98e9bc0f5b40511163b2eda5d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 14:51:57 +0200 Subject: [PATCH 142/209] Extracting file transfer logic from ReadableFile into FileTransferUtil --- .../internal/storage/files/ReadableFile.java | 19 ++++++------ .../storage/files/utils/FileTransferUtil.java | 30 +++++++++++++++++++ 2 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index a15e659fc..ae89fddb7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -11,6 +11,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.DelimitedProtoStreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ReadResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.FileTransferUtil; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedInputStream; @@ -20,7 +21,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.channels.FileChannel; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import javax.annotation.Nullable; @@ -28,7 +28,7 @@ public final class ReadableFile extends StorageFile { private final int originalFileSize; private final StreamReader reader; - private final FileChannel tempInChannel; + private final FileTransferUtil fileTransferUtil; private final File temporaryFile; private final TimeProvider timeProvider; private final long expireTimeMillis; @@ -64,7 +64,7 @@ public ReadableFile( temporaryFile = configuration.getTemporaryFileProvider().createTemporaryFile(file.getName()); copyFile(file, temporaryFile); FileInputStream tempInputStream = new FileInputStream(temporaryFile); - tempInChannel = tempInputStream.getChannel(); + fileTransferUtil = new FileTransferUtil(tempInputStream, file); reader = readerFactory.create(tempInputStream); } @@ -95,13 +95,11 @@ public synchronized void readItem(Function consumer) throws IOE if (consumer.apply(read.content)) { unconsumedResult = null; readBytes += read.totalReadLength; - try (FileOutputStream out = new FileOutputStream(file, false)) { - int amountOfBytesToTransfer = originalFileSize - readBytes; - if (amountOfBytesToTransfer > 0) { - tempInChannel.transferTo(readBytes, amountOfBytesToTransfer, out.getChannel()); - } else { - cleanUp(); - } + int amountOfBytesToTransfer = originalFileSize - readBytes; + if (amountOfBytesToTransfer > 0) { + fileTransferUtil.transferBytes(readBytes, amountOfBytesToTransfer); + } else { + cleanUp(); } } else { unconsumedResult = read; @@ -140,6 +138,7 @@ public synchronized boolean isClosed() { public synchronized void close() throws IOException { if (isClosed.compareAndSet(false, true)) { unconsumedResult = null; + fileTransferUtil.close(); reader.close(); temporaryFile.delete(); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java new file mode 100644 index 000000000..5791b515a --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java @@ -0,0 +1,30 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; + +import java.io.Closeable; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.channels.FileChannel; + +public final class FileTransferUtil implements Closeable { + private final File output; + + private final FileChannel inputChannel; + + public FileTransferUtil(FileInputStream input, File output) { + this.output = output; + inputChannel = input.getChannel(); + } + + public void transferBytes(int offset, int length) throws IOException { + try (FileOutputStream out = new FileOutputStream(output, false)) { + inputChannel.transferTo(offset, length, out.getChannel()); + } + } + + @Override + public void close() throws IOException { + inputChannel.close(); + } +} From 315dd3afd45a62df3ca119d3db65ac80fa727e9d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Tue, 27 Jun 2023 16:39:07 +0200 Subject: [PATCH 143/209] Adding benchmark for the process of transferring data from a temporary file into the original one during the reading process to ensure the original file remains up-to-date --- disk-buffering/build.gradle.kts | 9 ++++ .../utils/FileTransferUtilBenchmark.java | 51 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index cd3ac2421..4c8d52ff3 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("otel.java-conventions") id("otel.publish-conventions") + id("me.champeau.jmh") version "0.7.1" } description = "Exporter implementations that store signals in disk" @@ -24,3 +25,11 @@ dependencies { testImplementation("org.mockito:mockito-inline:4.11.0") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") } + +jmh { + warmupIterations.set(0) + fork.set(2) + iterations.set(5) + timeOnIteration.set("5s") + timeUnit.set("ms") +} diff --git a/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java b/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java new file mode 100644 index 000000000..58b8712fa --- /dev/null +++ b/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java @@ -0,0 +1,51 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; + +public class FileTransferUtilBenchmark { + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void fileTransfer(FileTransferState state) throws IOException { + state.fileTransferUtil.transferBytes(state.offset, state.amountOfBytesToTransfer); + } + + @State(Scope.Benchmark) + public static class FileTransferState { + public FileTransferUtil fileTransferUtil; + public int offset; + public int amountOfBytesToTransfer; + private File inputFile; + private File outputFile; + + @Setup + public void setUp() throws IOException { + outputFile = File.createTempFile("output", ".txt"); + inputFile = File.createTempFile("input", ".txt"); + int totalDataSize = 1024 * 1024; // 1MB + byte[] data = new byte[totalDataSize]; + Files.write(inputFile.toPath(), data, StandardOpenOption.CREATE); + fileTransferUtil = new FileTransferUtil(new FileInputStream(inputFile), outputFile); + offset = 512; + amountOfBytesToTransfer = totalDataSize - offset; + } + + @TearDown + public void tearDown() throws IOException { + fileTransferUtil.close(); + inputFile.delete(); + outputFile.delete(); + } + } +} From 35bab1f08634ef707651123448655e3b89734e05 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:03:17 +0200 Subject: [PATCH 144/209] Replacing inheritance with delegation for DiskExporter usage --- .../exporters/LogRecordDiskExporter.java | 35 +++++-------- .../exporters/MetricDiskExporter.java | 36 +++++-------- .../buffering/exporters/SpanDiskExporter.java | 32 +++++------- .../exporters/StoredBatchExporter.java | 18 +++++++ ...actDiskExporter.java => DiskExporter.java} | 50 +++++++++--------- .../exporters/LogRecordDiskExporterTest.java | 34 ++++--------- .../exporters/MetricDiskExporterTest.java | 33 ++++-------- .../exporters/SpanDiskExporterTest.java | 34 ++++--------- ...xporterTest.java => DiskExporterTest.java} | 51 +++++-------------- 9 files changed, 123 insertions(+), 200 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/{AbstractDiskExporter.java => DiskExporter.java} (62%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/{AbstractDiskExporterTest.java => DiskExporterTest.java} (81%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index ab7ce996a..3f12bad71 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -5,7 +5,7 @@ package io.opentelemetry.contrib.disk.buffering.exporters; -import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; +import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; @@ -15,6 +15,7 @@ import java.io.File; import java.io.IOException; import java.util.Collection; +import java.util.concurrent.TimeUnit; /** * This is a {@link LogRecordExporter} wrapper that takes care of intercepting all the signals sent @@ -23,9 +24,9 @@ *

In order to use it, you need to wrap your own {@link LogRecordExporter} with a new instance of * this one, which will be the one you need to register in your {@link LogRecordProcessor}. */ -public final class LogRecordDiskExporter extends AbstractDiskExporter - implements LogRecordExporter { +public final class LogRecordDiskExporter implements LogRecordExporter, StoredBatchExporter { private final LogRecordExporter wrapped; + private final DiskExporter diskExporter; /** * @param wrapped - Your own exporter. @@ -35,28 +36,15 @@ public final class LogRecordDiskExporter extends AbstractDiskExporter logRecordData) { - return wrapped.export(logRecordData); - } - - @Override - protected SignalSerializer getSerializer() { - return SignalSerializer.ofLogs(); + diskExporter = + new DiskExporter<>( + rootDir, configuration, "logs", SignalSerializer.ofLogs(), wrapped::export); } @Override public CompletableResultCode export(Collection logs) { - return onExport(logs); + return diskExporter.onExport(logs); } @Override @@ -67,7 +55,7 @@ public CompletableResultCode flush() { @Override public CompletableResultCode shutdown() { try { - onShutDown(); + diskExporter.onShutDown(); } catch (IOException e) { return CompletableResultCode.ofFailure(); } finally { @@ -75,4 +63,9 @@ public CompletableResultCode shutdown() { } return CompletableResultCode.ofSuccess(); } + + @Override + public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { + return diskExporter.exportStoredBatch(timeout, unit); + } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 1beee26a2..11bf4f540 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -5,7 +5,7 @@ package io.opentelemetry.contrib.disk.buffering.exporters; -import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; +import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; @@ -17,6 +17,7 @@ import java.io.File; import java.io.IOException; import java.util.Collection; +import java.util.concurrent.TimeUnit; /** * This is a {@link MetricExporter} wrapper that takes care of intercepting all the signals sent out @@ -25,10 +26,9 @@ *

In order to use it, you need to wrap your own {@link MetricExporter} with a new instance of * this one, which will be the one you need to register in your {@link MetricReader}. */ -public final class MetricDiskExporter extends AbstractDiskExporter - implements MetricExporter { +public final class MetricDiskExporter implements MetricExporter, StoredBatchExporter { private final MetricExporter wrapped; - + private final DiskExporter diskExporter; /** * @param wrapped - Your own exporter. * @param rootDir - The directory to create this signal's cache dir where all the data will be @@ -37,28 +37,15 @@ public final class MetricDiskExporter extends AbstractDiskExporter */ public MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration) { - super(rootDir, configuration); this.wrapped = wrapped; - } - - @Override - protected String getStorageFolderName() { - return "metrics"; - } - - @Override - protected CompletableResultCode doExport(Collection metricData) { - return wrapped.export(metricData); - } - - @Override - protected SignalSerializer getSerializer() { - return SignalSerializer.ofMetrics(); + diskExporter = + new DiskExporter<>( + rootDir, configuration, "metrics", SignalSerializer.ofMetrics(), wrapped::export); } @Override public CompletableResultCode export(Collection metrics) { - return onExport(metrics); + return diskExporter.onExport(metrics); } @Override @@ -69,7 +56,7 @@ public CompletableResultCode flush() { @Override public CompletableResultCode shutdown() { try { - onShutDown(); + diskExporter.onShutDown(); } catch (IOException e) { return CompletableResultCode.ofFailure(); } finally { @@ -82,4 +69,9 @@ public CompletableResultCode shutdown() { public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) { return wrapped.getAggregationTemporality(instrumentType); } + + @Override + public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { + return diskExporter.exportStoredBatch(timeout, unit); + } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 17403ff8a..a7f0aad59 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -5,7 +5,7 @@ package io.opentelemetry.contrib.disk.buffering.exporters; -import io.opentelemetry.contrib.disk.buffering.internal.exporters.AbstractDiskExporter; +import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; @@ -15,6 +15,7 @@ import java.io.File; import java.io.IOException; import java.util.Collection; +import java.util.concurrent.TimeUnit; /** * This is a {@link SpanExporter} wrapper that takes care of intercepting all the signals sent out @@ -23,8 +24,9 @@ *

In order to use it, you need to wrap your own {@link SpanExporter} with a new instance of this * one, which will be the one you need to register in your {@link SpanProcessor}. */ -public final class SpanDiskExporter extends AbstractDiskExporter implements SpanExporter { +public final class SpanDiskExporter implements SpanExporter, StoredBatchExporter { private final SpanExporter wrapped; + private final DiskExporter diskExporter; /** * @param wrapped - Your own exporter. @@ -33,19 +35,21 @@ public final class SpanDiskExporter extends AbstractDiskExporter imple * @param configuration - How you want to manage the storage process. */ public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) { - super(rootDir, configuration); this.wrapped = wrapped; + diskExporter = + new DiskExporter<>( + rootDir, configuration, "spans", SignalSerializer.ofSpans(), wrapped::export); } @Override public CompletableResultCode export(Collection spans) { - return onExport(spans); + return diskExporter.onExport(spans); } @Override public CompletableResultCode shutdown() { try { - onShutDown(); + diskExporter.onShutDown(); } catch (IOException e) { return CompletableResultCode.ofFailure(); } finally { @@ -55,22 +59,12 @@ public CompletableResultCode shutdown() { } @Override - protected String getStorageFolderName() { - return "spans"; - } - - @Override - protected CompletableResultCode doExport(Collection data) { - return wrapped.export(data); - } - - @Override - protected SignalSerializer getSerializer() { - return SignalSerializer.ofSpans(); + public CompletableResultCode flush() { + return wrapped.flush(); } @Override - public CompletableResultCode flush() { - return wrapped.flush(); + public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { + return diskExporter.exportStoredBatch(timeout, unit); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java new file mode 100644 index 000000000..1b14f4ebc --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java @@ -0,0 +1,18 @@ +package io.opentelemetry.contrib.disk.buffering.exporters; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +public interface StoredBatchExporter { + + /** + * Reads data from the disk and attempts to export it. + * + * @param timeout The amount of time to wait for the wrapped exporter to finish. + * @param unit The unit of the time provided. + * @return TRUE if there was data available and it was successfully exported within the timeout + * provided. FALSE if either of those conditions didn't meet. + * @throws IOException If an unexpected error happens. + */ + boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException; +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java similarity index 62% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 7c9c0c8dc..8be5de8c4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -5,6 +5,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.exporters; +import io.opentelemetry.contrib.disk.buffering.exporters.StoredBatchExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; @@ -15,27 +16,30 @@ import java.util.Collection; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; import java.util.logging.Level; import java.util.logging.Logger; -public abstract class AbstractDiskExporter { +public final class DiskExporter implements StoredBatchExporter { private final Storage storage; - private static final Logger logger = Logger.getLogger(AbstractDiskExporter.class.getName()); + private final SignalSerializer serializer; + private final Function, CompletableResultCode> exportFunction; + private static final Logger logger = Logger.getLogger(DiskExporter.class.getName()); - public AbstractDiskExporter(File rootDir, StorageConfiguration configuration) { + public DiskExporter( + File rootDir, + StorageConfiguration configuration, + String folderName, + SignalSerializer serializer, + Function, CompletableResultCode> exportFunction) { validateConfiguration(configuration); - this.storage = new Storage(new FolderManager(getSignalFolder(rootDir), configuration)); + this.storage = + new Storage(new FolderManager(getSignalFolder(rootDir, folderName), configuration)); + this.serializer = serializer; + this.exportFunction = exportFunction; } - /** - * Reads data from the disk and attempts to export it. - * - * @param timeout The amount of time to wait for the wrapped exporter to finish. - * @param unit The unit of the time provided. - * @return TRUE if there was data available and it was successfully exported within the timeout - * provided. FALSE if either of those conditions didn't meet. - * @throws IOException If an unexpected error happens. - */ + @Override public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { logger.log(Level.INFO, "Attempting to export batch from disk."); AtomicBoolean exportSucceeded = new AtomicBoolean(false); @@ -44,36 +48,30 @@ public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException bytes -> { logger.log(Level.INFO, "About to export stored batch."); CompletableResultCode join = - doExport(getSerializer().deserialize(bytes)).join(timeout, unit); + exportFunction.apply(serializer.deserialize(bytes)).join(timeout, unit); exportSucceeded.set(join.isSuccess()); return exportSucceeded.get(); }); return foundDataToExport && exportSucceeded.get(); } - protected abstract String getStorageFolderName(); - - protected abstract CompletableResultCode doExport(Collection data); - - protected abstract SignalSerializer getSerializer(); - - protected void onShutDown() throws IOException { + public void onShutDown() throws IOException { storage.close(); } - protected CompletableResultCode onExport(Collection data) { + public CompletableResultCode onExport(Collection data) { logger.log(Level.FINER, "Intercepting exporter batch."); try { - storage.write(getSerializer().serialize(data)); + storage.write(serializer.serialize(data)); return CompletableResultCode.ofSuccess(); } catch (IOException e) { logger.log(Level.INFO, "Could not store batch in disk. Exporting it right away."); - return doExport(data); + return exportFunction.apply(data); } } - private File getSignalFolder(File rootDir) { - File folder = new File(rootDir, getStorageFolderName()); + private static File getSignalFolder(File rootDir, String folderName) { + File folder = new File(rootDir, folderName); if (!folder.exists()) { if (!folder.mkdirs()) { throw new IllegalStateException("Could not create the signal folder"); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java index 61a7e7b56..9898936c3 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -6,18 +6,13 @@ package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.sdk.common.CompletableResultCode; -import io.opentelemetry.sdk.logs.data.LogRecordData; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import java.io.File; -import java.util.Collections; -import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -25,33 +20,22 @@ class LogRecordDiskExporterTest { private LogRecordExporter wrapped; private LogRecordDiskExporter exporter; + private static final StorageConfiguration STORAGE_CONFIGURATION = + TestData.getDefaultConfiguration(); + private static final String STORAGE_FOLDER_NAME = "logs"; @TempDir File rootDir; @BeforeEach public void setUp() { wrapped = mock(); - exporter = new LogRecordDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration()); + exporter = new LogRecordDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); } @Test - public void verifyStorageFolderName() { - assertEquals("logs", exporter.getStorageFolderName()); - } - - @Test - public void callWrappedWhenDoingExport() { - List data = Collections.emptyList(); - CompletableResultCode result = CompletableResultCode.ofSuccess(); - doReturn(result).when(wrapped).export(data); - - assertEquals(result, exporter.doExport(data)); - - verify(wrapped).export(data); - } - - @Test - public void verifySerializer() { - assertEquals(SignalSerializer.ofLogs(), exporter.getSerializer()); + public void verifyCacheFolderName() { + File[] files = rootDir.listFiles(); + assertEquals(1, files.length); + assertEquals(STORAGE_FOLDER_NAME, files[0].getName()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java index 078811b93..89013a597 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -10,16 +10,12 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; -import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.export.MetricExporter; import java.io.File; -import java.util.Collections; -import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -28,33 +24,22 @@ class MetricDiskExporterTest { private MetricExporter wrapped; private MetricDiskExporter exporter; + private static final StorageConfiguration STORAGE_CONFIGURATION = + TestData.getDefaultConfiguration(); + private static final String STORAGE_FOLDER_NAME = "metrics"; @TempDir File rootDir; @BeforeEach public void setUp() { wrapped = mock(); - exporter = new MetricDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration()); + exporter = new MetricDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); } @Test - public void verifyStorageFolderName() { - assertEquals("metrics", exporter.getStorageFolderName()); - } - - @Test - public void callWrappedWhenDoingExport() { - List data = Collections.emptyList(); - CompletableResultCode result = CompletableResultCode.ofSuccess(); - doReturn(result).when(wrapped).export(data); - - assertEquals(result, exporter.doExport(data)); - - verify(wrapped).export(data); - } - - @Test - public void verifySerializer() { - assertEquals(SignalSerializer.ofMetrics(), exporter.getSerializer()); + public void verifyCacheFolderName() { + File[] files = rootDir.listFiles(); + assertEquals(1, files.length); + assertEquals(STORAGE_FOLDER_NAME, files[0].getName()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java index 57645afd1..11628f8a4 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -6,18 +6,13 @@ package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.sdk.common.CompletableResultCode; -import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.io.File; -import java.util.Collections; -import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -25,33 +20,22 @@ class SpanDiskExporterTest { private SpanExporter wrapped; private SpanDiskExporter exporter; + private static final StorageConfiguration STORAGE_CONFIGURATION = + TestData.getDefaultConfiguration(); + private static final String STORAGE_FOLDER_NAME = "spans"; @TempDir File rootDir; @BeforeEach public void setUp() { wrapped = mock(); - exporter = new SpanDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration()); + exporter = new SpanDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); } @Test - public void verifyStorageFolderName() { - assertEquals("spans", exporter.getStorageFolderName()); - } - - @Test - public void callWrappedWhenDoingExport() { - List data = Collections.emptyList(); - CompletableResultCode result = CompletableResultCode.ofSuccess(); - doReturn(result).when(wrapped).export(data); - - assertEquals(result, exporter.doExport(data)); - - verify(wrapped).export(data); - } - - @Test - public void verifySerializer() { - assertEquals(SignalSerializer.ofSpans(), exporter.getSerializer()); + public void verifyCacheFolderName() { + File[] files = rootDir.listFiles(); + assertEquals(1, files.length); + assertEquals(STORAGE_FOLDER_NAME, files[0].getName()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java similarity index 81% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java index d411d4d92..076ac4c3c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/AbstractDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java @@ -29,7 +29,6 @@ import java.io.IOException; import java.nio.file.Files; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -38,11 +37,11 @@ import org.junit.jupiter.api.io.TempDir; @SuppressWarnings("unchecked") -class AbstractDiskExporterTest { +class DiskExporterTest { private SpanExporter wrapped; private SignalSerializer serializer; private TimeProvider timeProvider; - private AbstractDiskExporter exporter; + private DiskExporter exporter; private final List deserializedData = Collections.emptyList(); @TempDir File rootDir; private static final String STORAGE_FOLDER_NAME = "testName"; @@ -53,7 +52,12 @@ public void setUp() { setUpSerializer(); wrapped = mock(); exporter = - new TestDiskExporter(wrapped, rootDir, TestData.getDefaultConfiguration(), serializer); + new DiskExporter<>( + rootDir, + TestData.getDefaultConfiguration(), + STORAGE_FOLDER_NAME, + serializer, + wrapped::export); } @Test @@ -70,14 +74,15 @@ public void whenExportingStoredBatch_withAvailableData_andSuccessfullyProcessed_ @Test public void whenMinFileReadIsNotGraterThanMaxFileWrite_throwException() { try { - new TestDiskExporter( - wrapped, + new DiskExporter<>( rootDir, StorageConfiguration.builder() .setMaxFileAgeForWriteMillis(2) .setMinFileAgeForReadMillis(1) .build(), - serializer); + STORAGE_FOLDER_NAME, + serializer, + wrapped::export); fail(); } catch (IllegalArgumentException e) { assertEquals( @@ -140,7 +145,7 @@ public void whenWritingFailsOnExport_doExportRightAway() throws IOException { } private File createDummyFile(long createdTimeMillis, String... lines) throws IOException { - File file = new File(rootDir, exporter.getStorageFolderName() + "/" + createdTimeMillis); + File file = new File(rootDir, STORAGE_FOLDER_NAME + "/" + createdTimeMillis); Files.write(file.toPath(), Arrays.asList(lines)); return file; } @@ -149,34 +154,4 @@ private void setUpSerializer() { serializer = mock(); doReturn(deserializedData).when(serializer).deserialize(any()); } - - private static class TestDiskExporter extends AbstractDiskExporter { - private final SpanExporter wrapped; - private final SignalSerializer serializer; - - public TestDiskExporter( - SpanExporter wrapped, - File rootDir, - StorageConfiguration configuration, - SignalSerializer serializer) { - super(rootDir, configuration); - this.wrapped = wrapped; - this.serializer = serializer; - } - - @Override - protected String getStorageFolderName() { - return STORAGE_FOLDER_NAME; - } - - @Override - protected CompletableResultCode doExport(Collection spanData) { - return wrapped.export(spanData); - } - - @Override - protected SignalSerializer getSerializer() { - return serializer; - } - } } From d6837c5e975b9fd79d99ac7e773e97c49b4beae1 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:13:25 +0200 Subject: [PATCH 145/209] Returning success on exporters flush --- .../disk/buffering/exporters/LogRecordDiskExporter.java | 2 +- .../disk/buffering/exporters/MetricDiskExporter.java | 2 +- .../disk/buffering/exporters/SpanDiskExporter.java | 2 +- .../buffering/exporters/LogRecordDiskExporterTest.java | 8 +++----- .../disk/buffering/exporters/MetricDiskExporterTest.java | 7 +++---- .../disk/buffering/exporters/SpanDiskExporterTest.java | 8 +++----- 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 3f12bad71..94a95c4ff 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -49,7 +49,7 @@ public CompletableResultCode export(Collection logs) { @Override public CompletableResultCode flush() { - return wrapped.flush(); + return CompletableResultCode.ofSuccess(); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 11bf4f540..570b77488 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -50,7 +50,7 @@ public CompletableResultCode export(Collection metrics) { @Override public CompletableResultCode flush() { - return wrapped.flush(); + return CompletableResultCode.ofSuccess(); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index a7f0aad59..3cc8545e2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -60,7 +60,7 @@ public CompletableResultCode shutdown() { @Override public CompletableResultCode flush() { - return wrapped.flush(); + return CompletableResultCode.ofSuccess(); } @Override diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java index 9898936c3..6144d04f8 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -7,10 +7,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import java.io.File; import org.junit.jupiter.api.BeforeEach; @@ -39,9 +39,7 @@ public void verifyCacheFolderName() { } @Test - public void onFlush_flushWrappedExporter() { - exporter.flush(); - - verify(wrapped).flush(); + public void onFlush_returnSuccess() { + assertEquals(CompletableResultCode.ofSuccess(), exporter.flush()); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java index 89013a597..c99167872 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -12,6 +12,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.export.MetricExporter; @@ -43,10 +44,8 @@ public void verifyCacheFolderName() { } @Test - public void onFlush_flushWrappedExporter() { - exporter.flush(); - - verify(wrapped).flush(); + public void onFlush_returnSuccess() { + assertEquals(CompletableResultCode.ofSuccess(), exporter.flush()); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java index 11628f8a4..758dcd767 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -7,10 +7,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; +import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.io.File; import org.junit.jupiter.api.BeforeEach; @@ -39,9 +39,7 @@ public void verifyCacheFolderName() { } @Test - public void onFlush_flushWrappedExporter() { - exporter.flush(); - - verify(wrapped).flush(); + public void onFlush_returnSuccess() { + assertEquals(CompletableResultCode.ofSuccess(), exporter.flush()); } } From d3be2013fdee9f85e043555ce4533724797f5331 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:32:27 +0200 Subject: [PATCH 146/209] Improving storage read return logic --- .../internal/exporters/DiskExporter.java | 18 +++---- .../buffering/internal/storage/Storage.java | 17 ++++--- .../internal/storage/files/ReadableFile.java | 16 +++--- .../internal/storage/StorageTest.java | 51 +++++++++++-------- .../storage/files/ReadableFileTest.java | 32 ++++++++---- 5 files changed, 79 insertions(+), 55 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 8be5de8c4..576a74914 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -43,16 +43,14 @@ public DiskExporter( public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { logger.log(Level.INFO, "Attempting to export batch from disk."); AtomicBoolean exportSucceeded = new AtomicBoolean(false); - boolean foundDataToExport = - storage.read( - bytes -> { - logger.log(Level.INFO, "About to export stored batch."); - CompletableResultCode join = - exportFunction.apply(serializer.deserialize(bytes)).join(timeout, unit); - exportSucceeded.set(join.isSuccess()); - return exportSucceeded.get(); - }); - return foundDataToExport && exportSucceeded.get(); + return storage.readAndProcess( + bytes -> { + logger.log(Level.INFO, "About to export stored batch."); + CompletableResultCode join = + exportFunction.apply(serializer.deserialize(bytes)).join(timeout, unit); + exportSucceeded.set(join.isSuccess()); + return exportSucceeded.get(); + }); } public void onShutDown() throws IOException { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index 4620b9d45..e1e08f0fb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -64,17 +64,19 @@ private void write(byte[] line, int attemptNumber) throws IOException { /** * Attempts to read a line from a ready-to-read file. * - * @param consumer Is passed over to {@link ReadableFile#readItem(Function)}. - * @return TRUE if data was found and read, FALSE if there is no data available to read. + * @param processing Is passed over to {@link ReadableFile#readAndProcess(Function)}. + * @return TRUE if data was found and processed, FALSE if either there was no data available or + * there was but could not be processed. * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. * @throws ResourceClosedException If it's closed. * @throws IOException If an unexpected error happens. */ - public boolean read(Function consumer) throws IOException { - return read(consumer, 1); + public boolean readAndProcess(Function processing) throws IOException { + return readAndProcess(processing, 1); } - private boolean read(Function consumer, int attemptNumber) throws IOException { + private boolean readAndProcess(Function processing, int attemptNumber) + throws IOException { if (isClosed.get()) { throw new ResourceClosedException(); } @@ -88,12 +90,11 @@ private boolean read(Function consumer, int attemptNumber) thro } } try { - readableFile.readItem(consumer); - return true; + return readableFile.readAndProcess(processing); } catch (ReadingTimeoutException | NoContentAvailableException | ResourceClosedException e) { // Retry with new file readableFile = null; - return read(consumer, ++attemptNumber); + return readAndProcess(processing, ++attemptNumber); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index ae89fddb7..bb139f8fb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -69,17 +69,19 @@ public ReadableFile( } /** - * Reads the next line available in the file and provides it to a {@link Function consumer} which - * will determine whether to remove the provided line or not. + * Reads the next line available in the file and provides it to a {@link Function processing} + * which will determine whether to remove the provided line or not. * - * @param consumer - A function that receives the line that has been read and returns a boolean. - * If the consumer function returns TRUE, then the provided line will be deleted from the + * @param processing - A function that receives the line that has been read and returns a boolean. + * If the processing function returns TRUE, then the provided line will be deleted from the * source file. If the function returns FALSE, no changes will be applied to the source file. * @throws ReadingTimeoutException If the configured reading time for the file has ended. * @throws NoContentAvailableException If there is no content to be read from the file. * @throws ResourceClosedException If it's closed. + * @return TRUE if the data is processed, FALSE otherwise. */ - public synchronized void readItem(Function consumer) throws IOException { + public synchronized boolean readAndProcess(Function processing) + throws IOException { if (isClosed.get()) { throw new ResourceClosedException(); } @@ -92,7 +94,7 @@ public synchronized void readItem(Function consumer) throws IOE cleanUp(); throw new NoContentAvailableException(); } - if (consumer.apply(read.content)) { + if (processing.apply(read.content)) { unconsumedResult = null; readBytes += read.totalReadLength; int amountOfBytesToTransfer = originalFileSize - readBytes; @@ -101,9 +103,11 @@ public synchronized void readItem(Function consumer) throws IOE } else { cleanUp(); } + return true; } else { unconsumedResult = read; } + return false; } @Nullable diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index fc462805f..e6d49c8f1 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -33,26 +33,37 @@ class StorageTest { private FolderManager folderManager; private Storage storage; - private Function consumer; + private Function processing; private ReadableFile readableFile; private WritableFile writableFile; @BeforeEach - public void setUp() { + public void setUp() throws IOException { folderManager = mock(); - consumer = mock(); readableFile = mock(); writableFile = mock(); + processing = mock(); + doReturn(true).when(readableFile).readAndProcess(processing); storage = new Storage(folderManager); } @Test - public void whenReadingSuccessfully_returnTrue() throws IOException { + public void whenReadingAndProcessingSuccessfully_returnTrue() throws IOException { doReturn(readableFile).when(folderManager).getReadableFile(); - assertTrue(storage.read(consumer)); + assertTrue(storage.readAndProcess(processing)); - verify(readableFile).readItem(consumer); + verify(readableFile).readAndProcess(processing); + } + + @Test + public void whenReadableFileProcessingFails_returnFalse() throws IOException { + doReturn(readableFile).when(folderManager).getReadableFile(); + doReturn(false).when(readableFile).readAndProcess(processing); + + assertFalse(storage.readAndProcess(processing)); + + verify(readableFile).readAndProcess(processing); } @Test @@ -60,10 +71,10 @@ public void whenReadingMultipleTimes_reuseReader() throws IOException { ReadableFile anotherReadable = mock(); when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(anotherReadable); - assertTrue(storage.read(consumer)); - assertTrue(storage.read(consumer)); + assertTrue(storage.readAndProcess(processing)); + assertTrue(storage.readAndProcess(processing)); - verify(readableFile, times(2)).readItem(consumer); + verify(readableFile, times(2)).readAndProcess(processing); verify(folderManager, times(1)).getReadableFile(); verifyNoInteractions(anotherReadable); } @@ -86,7 +97,7 @@ public void whenWritingMultipleTimes_reuseWriter() throws IOException { public void whenAttemptingToReadAfterClosed_throwException() throws IOException { storage.close(); try { - storage.read(consumer); + storage.readAndProcess(processing); fail(); } catch (ResourceClosedException ignored) { } @@ -104,15 +115,15 @@ public void whenAttemptingToWriteAfterClosed_throwException() throws IOException @Test public void whenNoFileAvailableForReading_returnFalse() throws IOException { - assertFalse(storage.read(consumer)); + assertFalse(storage.readAndProcess(processing)); } @Test public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(ReadingTimeoutException.class).when(readableFile).readItem(consumer); + doThrow(ReadingTimeoutException.class).when(readableFile).readAndProcess(processing); - assertFalse(storage.read(consumer)); + assertFalse(storage.readAndProcess(processing)); verify(folderManager, times(2)).getReadableFile(); } @@ -120,9 +131,9 @@ public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOExceptio @Test public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(NoContentAvailableException.class).when(readableFile).readItem(consumer); + doThrow(NoContentAvailableException.class).when(readableFile).readAndProcess(processing); - assertFalse(storage.read(consumer)); + assertFalse(storage.readAndProcess(processing)); verify(folderManager, times(2)).getReadableFile(); } @@ -130,9 +141,9 @@ public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws @Test public void whenResourceClosedExceptionHappens_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(ResourceClosedException.class).when(readableFile).readItem(consumer); + doThrow(ResourceClosedException.class).when(readableFile).readAndProcess(processing); - assertFalse(storage.read(consumer)); + assertFalse(storage.readAndProcess(processing)); verify(folderManager, times(2)).getReadableFile(); } @@ -141,10 +152,10 @@ public void whenResourceClosedExceptionHappens_lookForNewFileToRead() throws IOE public void whenEveryNewFileFoundCannotBeRead_throwExceptionAfterMaxAttempts() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile); - doThrow(ResourceClosedException.class).when(readableFile).readItem(consumer); + doThrow(ResourceClosedException.class).when(readableFile).readAndProcess(processing); try { - assertFalse(storage.read(consumer)); + assertFalse(storage.readAndProcess(processing)); fail(); } catch (MaxAttemptsReachedException e) { verify(folderManager, times(3)).getReadableFile(); @@ -222,7 +233,7 @@ public void whenClosing_closeWriterAndReaderIfNotNull() throws IOException { doReturn(writableFile).when(folderManager).createWritableFile(); doReturn(readableFile).when(folderManager).getReadableFile(); storage.write(new byte[1]); - storage.read(consumer); + storage.readAndProcess(processing); storage.close(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index f17d34f3d..973972d6b 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -117,7 +117,7 @@ private static void addFileContents(File source) throws IOException { @Test public void readSingleItemAndRemoveIt() throws IOException { - readableFile.readItem( + readableFile.readAndProcess( bytes -> { assertEquals(FIRST_LOG_RECORD, deserialize(bytes)); return true; @@ -130,9 +130,19 @@ public void readSingleItemAndRemoveIt() throws IOException { assertEquals(THIRD_LOG_RECORD, logs.get(1)); } + @Test + public void whenProcessingSucceeds_returnTrue() throws IOException { + assertTrue(readableFile.readAndProcess(bytes -> true)); + } + + @Test + public void whenProcessingFails_returnFalse() throws IOException { + assertFalse(readableFile.readAndProcess(bytes -> false)); + } + @Test public void deleteTemporaryFileWhenClosing() throws IOException { - readableFile.readItem(bytes -> true); + readableFile.readAndProcess(bytes -> true); readableFile.close(); assertFalse(temporaryFile.exists()); @@ -140,8 +150,8 @@ public void deleteTemporaryFileWhenClosing() throws IOException { @Test public void readMultipleLinesAndRemoveThem() throws IOException { - readableFile.readItem(bytes -> true); - readableFile.readItem(bytes -> true); + readableFile.readAndProcess(bytes -> true); + readableFile.readAndProcess(bytes -> true); List logs = getRemainingDataAndClose(readableFile); @@ -151,7 +161,7 @@ public void readMultipleLinesAndRemoveThem() throws IOException { @Test public void whenConsumerReturnsFalse_doNotRemoveLineFromSource() throws IOException { - readableFile.readItem(bytes -> false); + readableFile.readAndProcess(bytes -> false); List logs = getRemainingDataAndClose(readableFile); @@ -178,7 +188,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc new ReadableFile( emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); try { - emptyReadableFile.readItem(bytes -> true); + emptyReadableFile.readAndProcess(bytes -> true); fail(); } catch (NoContentAvailableException ignored) { assertTrue(emptyReadableFile.isClosed()); @@ -190,13 +200,13 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc public void whenReadingAfterTheConfiguredReadingTimeExpired_deleteOriginalFile_close_and_throwException() throws IOException { - readableFile.readItem(bytes -> true); + readableFile.readAndProcess(bytes -> true); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) .when(timeProvider) .getSystemCurrentTimeMillis(); try { - readableFile.readItem(bytes -> true); + readableFile.readAndProcess(bytes -> true); fail(); } catch (ReadingTimeoutException ignored) { assertTrue(readableFile.isClosed()); @@ -205,11 +215,11 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc @Test public void whenReadingAfterClosed_throwException() throws IOException { - readableFile.readItem(bytes -> true); + readableFile.readAndProcess(bytes -> true); readableFile.close(); try { - readableFile.readItem(bytes -> true); + readableFile.readAndProcess(bytes -> true); fail(); } catch (ResourceClosedException ignored) { } @@ -220,7 +230,7 @@ private static List getRemainingDataAndClose(ReadableFile readabl List result = new ArrayList<>(); while (true) { try { - readableFile.readItem( + readableFile.readAndProcess( bytes -> { result.add(deserialize(bytes)); return true; From 2afb324ec58cdcbfb5edc6a043ebbfc0fe004b15 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 11:08:31 +0200 Subject: [PATCH 147/209] Adding information to the README about parallel read/write --- disk-buffering/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index fb78f295d..417e6533d 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -87,6 +87,14 @@ try { } ``` +Both, the writing and reading processes can run in parallel and the way they don't overlap is +because each is supposed to happen in different files, and the way it is ensured that they don't +accidentally meet in the same file is by using the configurable parameters, which ensure to set time +frames for each action to be done on a single file at a time. On top of that, there's a mechanism in +place to avoid overlapping on edge cases where the time frames ended but the resources haven't been +released, for that mechanism to work properly, this tool assumes that both, the reading and the +writing actions, are executed within the same application process. + ## Component owners - [Cesar Munoz](https://github.com/LikeTheSalad), Elastic From 66dba3aa58d40c92b8b1749eb1ef2ef127b8995c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:48:42 +0200 Subject: [PATCH 148/209] Removing custom exceptions in favor of using result codes internally --- .../internal/exporters/DiskExporter.java | 46 +++++-- .../internal/storage/FolderManager.java | 4 - .../buffering/internal/storage/Storage.java | 57 ++++---- .../MaxAttemptsReachedException.java | 11 -- .../NoContentAvailableException.java | 11 -- .../exceptions/NoSpaceAvailableException.java | 11 -- .../exceptions/ReadingTimeoutException.java | 11 -- .../exceptions/ResourceClosedException.java | 11 -- .../exceptions/WritingTimeoutException.java | 11 -- .../internal/storage/files/ReadableFile.java | 20 +-- .../internal/storage/files/WritableFile.java | 22 ++-- .../storage/responses/ReadableResult.java | 9 ++ .../storage/responses/WritableResult.java | 8 ++ .../internal/exporters/DiskExporterTest.java | 12 -- .../internal/storage/StorageTest.java | 124 ++++++++---------- .../storage/files/ReadableFileTest.java | 64 ++++----- .../storage/files/WritableFileTest.java | 41 +++--- 17 files changed, 188 insertions(+), 285 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 576a74914..5c104ba07 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -9,6 +9,8 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import java.io.File; @@ -32,9 +34,20 @@ public DiskExporter( String folderName, SignalSerializer serializer, Function, CompletableResultCode> exportFunction) { + this(rootDir, configuration, folderName, serializer, exportFunction, TimeProvider.get()); + } + + DiskExporter( + File rootDir, + StorageConfiguration configuration, + String folderName, + SignalSerializer serializer, + Function, CompletableResultCode> exportFunction, + TimeProvider timeProvider) { validateConfiguration(configuration); this.storage = - new Storage(new FolderManager(getSignalFolder(rootDir, folderName), configuration)); + new Storage( + new FolderManager(getSignalFolder(rootDir, folderName), configuration, timeProvider)); this.serializer = serializer; this.exportFunction = exportFunction; } @@ -43,14 +56,16 @@ public DiskExporter( public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { logger.log(Level.INFO, "Attempting to export batch from disk."); AtomicBoolean exportSucceeded = new AtomicBoolean(false); - return storage.readAndProcess( - bytes -> { - logger.log(Level.INFO, "About to export stored batch."); - CompletableResultCode join = - exportFunction.apply(serializer.deserialize(bytes)).join(timeout, unit); - exportSucceeded.set(join.isSuccess()); - return exportSucceeded.get(); - }); + ReadableResult result = + storage.readAndProcess( + bytes -> { + logger.log(Level.INFO, "About to export stored batch."); + CompletableResultCode join = + exportFunction.apply(serializer.deserialize(bytes)).join(timeout, unit); + exportSucceeded.set(join.isSuccess()); + return exportSucceeded.get(); + }); + return result == ReadableResult.SUCCEEDED; } public void onShutDown() throws IOException { @@ -60,10 +75,17 @@ public void onShutDown() throws IOException { public CompletableResultCode onExport(Collection data) { logger.log(Level.FINER, "Intercepting exporter batch."); try { - storage.write(serializer.serialize(data)); - return CompletableResultCode.ofSuccess(); + if (storage.write(serializer.serialize(data))) { + return CompletableResultCode.ofSuccess(); + } else { + logger.log(Level.INFO, "Could not store batch in disk. Exporting it right away."); + return exportFunction.apply(data); + } } catch (IOException e) { - logger.log(Level.INFO, "Could not store batch in disk. Exporting it right away."); + logger.log( + Level.WARNING, + "An unexpected error happened while attempting to write the data in disk. Exporting it right away.", + e); return exportFunction.apply(data); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 150ddc969..d3951501e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -21,10 +21,6 @@ public final class FolderManager { @Nullable private ReadableFile currentReadableFile; @Nullable private WritableFile currentWritableFile; - public FolderManager(File folder, StorageConfiguration configuration) { - this(folder, configuration, TimeProvider.get()); - } - public FolderManager(File folder, StorageConfiguration configuration, TimeProvider timeProvider) { this.folder = folder; this.configuration = configuration; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index e1e08f0fb..d42516699 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -5,14 +5,10 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; import java.io.Closeable; import java.io.IOException; import java.util.concurrent.atomic.AtomicBoolean; @@ -34,67 +30,64 @@ public Storage(FolderManager folderManager) { * Attempts to write a line into a writable file. * * @param line - The data that would be appended to the file. - * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. - * @throws ResourceClosedException If it's closed. * @throws IOException If an unexpected error happens. */ - public void write(byte[] line) throws IOException { - write(line, 1); + public boolean write(byte[] line) throws IOException { + return write(line, 1); } - private void write(byte[] line, int attemptNumber) throws IOException { + private boolean write(byte[] line, int attemptNumber) throws IOException { if (isClosed.get()) { - throw new ResourceClosedException(); + return false; } if (attemptNumber > MAX_ATTEMPTS) { - throw new MaxAttemptsReachedException(); + return false; } if (writableFile == null) { writableFile = folderManager.createWritableFile(); } - try { - writableFile.append(line); - } catch (WritingTimeoutException | NoSpaceAvailableException | ResourceClosedException e) { + WritableResult result = writableFile.append(line); + if (result != WritableResult.SUCCEEDED) { // Retry with new file writableFile = null; - write(line, ++attemptNumber); + return write(line, ++attemptNumber); } + return true; } /** * Attempts to read a line from a ready-to-read file. * * @param processing Is passed over to {@link ReadableFile#readAndProcess(Function)}. - * @return TRUE if data was found and processed, FALSE if either there was no data available or - * there was but could not be processed. - * @throws MaxAttemptsReachedException If there are too many unsuccessful retries. - * @throws ResourceClosedException If it's closed. * @throws IOException If an unexpected error happens. */ - public boolean readAndProcess(Function processing) throws IOException { + public ReadableResult readAndProcess(Function processing) throws IOException { return readAndProcess(processing, 1); } - private boolean readAndProcess(Function processing, int attemptNumber) + private ReadableResult readAndProcess(Function processing, int attemptNumber) throws IOException { if (isClosed.get()) { - throw new ResourceClosedException(); + return ReadableResult.CLOSED; } if (attemptNumber > MAX_ATTEMPTS) { - throw new MaxAttemptsReachedException(); + return ReadableResult.NO_CONTENT_AVAILABLE; } if (readableFile == null) { readableFile = folderManager.getReadableFile(); if (readableFile == null) { - return false; + return ReadableResult.NO_CONTENT_AVAILABLE; } } - try { - return readableFile.readAndProcess(processing); - } catch (ReadingTimeoutException | NoContentAvailableException | ResourceClosedException e) { - // Retry with new file - readableFile = null; - return readAndProcess(processing, ++attemptNumber); + ReadableResult result = readableFile.readAndProcess(processing); + switch (result) { + case SUCCEEDED: + case PROCESSING_FAILED: + return result; + default: + // Retry with new file + readableFile = null; + return readAndProcess(processing, ++attemptNumber); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java deleted file mode 100644 index 366d0feff..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/MaxAttemptsReachedException.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; - -import java.io.IOException; - -@SuppressWarnings("serial") -public class MaxAttemptsReachedException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java deleted file mode 100644 index 7a5e55915..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoContentAvailableException.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; - -import java.io.IOException; - -@SuppressWarnings("serial") -public class NoContentAvailableException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java deleted file mode 100644 index 422da1131..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/NoSpaceAvailableException.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; - -import java.io.IOException; - -@SuppressWarnings("serial") -public class NoSpaceAvailableException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java deleted file mode 100644 index 92b0e391d..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ReadingTimeoutException.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; - -import java.io.IOException; - -@SuppressWarnings("serial") -public class ReadingTimeoutException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java deleted file mode 100644 index a79ef23c9..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/ResourceClosedException.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; - -import java.io.IOException; - -@SuppressWarnings("serial") -public class ResourceClosedException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java deleted file mode 100644 index 0d233fdee..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/exceptions/WritingTimeoutException.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions; - -import java.io.IOException; - -@SuppressWarnings("serial") -public class WritingTimeoutException extends IOException {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index bb139f8fb..3089db630 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -5,13 +5,11 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.DelimitedProtoStreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ReadResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.FileTransferUtil; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedInputStream; @@ -75,24 +73,20 @@ public ReadableFile( * @param processing - A function that receives the line that has been read and returns a boolean. * If the processing function returns TRUE, then the provided line will be deleted from the * source file. If the function returns FALSE, no changes will be applied to the source file. - * @throws ReadingTimeoutException If the configured reading time for the file has ended. - * @throws NoContentAvailableException If there is no content to be read from the file. - * @throws ResourceClosedException If it's closed. - * @return TRUE if the data is processed, FALSE otherwise. */ - public synchronized boolean readAndProcess(Function processing) + public synchronized ReadableResult readAndProcess(Function processing) throws IOException { if (isClosed.get()) { - throw new ResourceClosedException(); + return ReadableResult.CLOSED; } if (hasExpired()) { close(); - throw new ReadingTimeoutException(); + return ReadableResult.FILE_HAS_EXPIRED; } ReadResult read = readNextItem(); if (read == null) { cleanUp(); - throw new NoContentAvailableException(); + return ReadableResult.NO_CONTENT_AVAILABLE; } if (processing.apply(read.content)) { unconsumedResult = null; @@ -103,11 +97,11 @@ public synchronized boolean readAndProcess(Function processing) } else { cleanUp(); } - return true; + return ReadableResult.SUCCEEDED; } else { unconsumedResult = read; + return ReadableResult.PROCESSING_FAILED; } - return false; } @Nullable diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index b91cd45c7..4d115402a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -5,9 +5,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; @@ -39,30 +37,28 @@ public WritableFile( } /** - * Adds a new line to the file. If {@link WritingTimeoutException} or {@link - * NoSpaceAvailableException} are thrown, the file stream is closed with the contents available in - * the buffer before attempting to append the new data. + * Adds a new line to the file. If {@link WritableResult#FILE_EXPIRED} or {@link + * WritableResult#FILE_IS_FULL} are returned, the file stream is closed with the contents + * available in the buffer before attempting to append the new data. * * @param data - The new data line to add. - * @throws ResourceClosedException If it's closed. - * @throws WritingTimeoutException If the configured writing time for the file has ended. - * @throws NoSpaceAvailableException If the configured max file size has been reached. */ - public synchronized void append(byte[] data) throws IOException { + public synchronized WritableResult append(byte[] data) throws IOException { if (isClosed.get()) { - throw new ResourceClosedException(); + return WritableResult.CLOSED; } if (hasExpired()) { close(); - throw new WritingTimeoutException(); + return WritableResult.FILE_EXPIRED; } int futureSize = size + data.length; if (futureSize > configuration.getMaxFileSize()) { close(); - throw new NoSpaceAvailableException(); + return WritableResult.FILE_IS_FULL; } out.write(data); size = futureSize; + return WritableResult.SUCCEEDED; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java new file mode 100644 index 000000000..c790d7fd2 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java @@ -0,0 +1,9 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.responses; + +public enum ReadableResult { + SUCCEEDED, + CLOSED, + FILE_HAS_EXPIRED, + PROCESSING_FAILED, + NO_CONTENT_AVAILABLE +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java new file mode 100644 index 000000000..2f081a315 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java @@ -0,0 +1,8 @@ +package io.opentelemetry.contrib.disk.buffering.internal.storage.responses; + +public enum WritableResult { + SUCCEEDED, + CLOSED, + FILE_EXPIRED, + FILE_IS_FULL +} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java index 076ac4c3c..ee98f32bb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java @@ -18,7 +18,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.testutils.FakeTimeProvider; @@ -112,17 +111,6 @@ public void verifyStorageFolderIsCreated() { assertTrue(new File(rootDir, STORAGE_FOLDER_NAME).exists()); } - @Test - public void closeStorageOnShutDown() throws IOException { - exporter.onShutDown(); - - try { - exporter.exportStoredBatch(1, TimeUnit.SECONDS); - fail(); - } catch (ResourceClosedException ignored) { - } - } - @Test public void whenWritingSucceedsOnExport_returnSuccessfulResultCode() { doReturn(new byte[2]).when(serializer).serialize(deserializedData); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index e6d49c8f1..85d664812 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -5,25 +5,20 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.MaxAttemptsReachedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; import java.io.IOException; import java.util.function.Function; import org.junit.jupiter.api.BeforeEach; @@ -41,27 +36,27 @@ class StorageTest { public void setUp() throws IOException { folderManager = mock(); readableFile = mock(); - writableFile = mock(); + writableFile = createWritableFile(); processing = mock(); - doReturn(true).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.SUCCEEDED).when(readableFile).readAndProcess(processing); storage = new Storage(folderManager); } @Test - public void whenReadingAndProcessingSuccessfully_returnTrue() throws IOException { + public void whenReadingAndProcessingSuccessfully_returnSuccess() throws IOException { doReturn(readableFile).when(folderManager).getReadableFile(); - assertTrue(storage.readAndProcess(processing)); + assertEquals(ReadableResult.SUCCEEDED, storage.readAndProcess(processing)); verify(readableFile).readAndProcess(processing); } @Test - public void whenReadableFileProcessingFails_returnFalse() throws IOException { + public void whenReadableFileProcessingFails_returnFailed() throws IOException { doReturn(readableFile).when(folderManager).getReadableFile(); - doReturn(false).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.PROCESSING_FAILED).when(readableFile).readAndProcess(processing); - assertFalse(storage.readAndProcess(processing)); + assertEquals(ReadableResult.PROCESSING_FAILED, storage.readAndProcess(processing)); verify(readableFile).readAndProcess(processing); } @@ -71,8 +66,8 @@ public void whenReadingMultipleTimes_reuseReader() throws IOException { ReadableFile anotherReadable = mock(); when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(anotherReadable); - assertTrue(storage.readAndProcess(processing)); - assertTrue(storage.readAndProcess(processing)); + assertEquals(ReadableResult.SUCCEEDED, storage.readAndProcess(processing)); + assertEquals(ReadableResult.SUCCEEDED, storage.readAndProcess(processing)); verify(readableFile, times(2)).readAndProcess(processing); verify(folderManager, times(1)).getReadableFile(); @@ -82,7 +77,7 @@ public void whenReadingMultipleTimes_reuseReader() throws IOException { @Test public void whenWritingMultipleTimes_reuseWriter() throws IOException { byte[] data = new byte[1]; - WritableFile anotherWriter = mock(); + WritableFile anotherWriter = createWritableFile(); when(folderManager.createWritableFile()).thenReturn(writableFile).thenReturn(anotherWriter); storage.write(data); @@ -94,76 +89,64 @@ public void whenWritingMultipleTimes_reuseWriter() throws IOException { } @Test - public void whenAttemptingToReadAfterClosed_throwException() throws IOException { + public void whenAttemptingToReadAfterClosed_returnClosed() throws IOException { storage.close(); - try { - storage.readAndProcess(processing); - fail(); - } catch (ResourceClosedException ignored) { - } + assertEquals(ReadableResult.CLOSED, storage.readAndProcess(processing)); } @Test - public void whenAttemptingToWriteAfterClosed_throwException() throws IOException { + public void whenAttemptingToWriteAfterClosed_returnFalse() throws IOException { storage.close(); - try { - storage.write(new byte[1]); - fail(); - } catch (ResourceClosedException ignored) { - } + assertFalse(storage.write(new byte[1])); } @Test - public void whenNoFileAvailableForReading_returnFalse() throws IOException { - assertFalse(storage.readAndProcess(processing)); + public void whenNoFileAvailableForReading_returnNoContentAvailable() throws IOException { + assertEquals(ReadableResult.NO_CONTENT_AVAILABLE, storage.readAndProcess(processing)); } @Test - public void whenTimeoutExceptionHappens_lookForNewFileToRead() throws IOException { + public void whenTheReadTimeExpires_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(ReadingTimeoutException.class).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.FILE_HAS_EXPIRED).when(readableFile).readAndProcess(processing); - assertFalse(storage.readAndProcess(processing)); + storage.readAndProcess(processing); verify(folderManager, times(2)).getReadableFile(); } @Test - public void whenNoMoreLinesToReadExceptionHappens_lookForNewFileToRead() throws IOException { + public void whenNoMoreLinesToRead_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(NoContentAvailableException.class).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.NO_CONTENT_AVAILABLE).when(readableFile).readAndProcess(processing); - assertFalse(storage.readAndProcess(processing)); + storage.readAndProcess(processing); verify(folderManager, times(2)).getReadableFile(); } @Test - public void whenResourceClosedExceptionHappens_lookForNewFileToRead() throws IOException { + public void whenResourceClosed_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doThrow(ResourceClosedException.class).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.CLOSED).when(readableFile).readAndProcess(processing); - assertFalse(storage.readAndProcess(processing)); + storage.readAndProcess(processing); verify(folderManager, times(2)).getReadableFile(); } @Test - public void whenEveryNewFileFoundCannotBeRead_throwExceptionAfterMaxAttempts() - throws IOException { + public void whenEveryNewFileFoundCannotBeRead_returnContentNotAvailable() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile); - doThrow(ResourceClosedException.class).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.CLOSED).when(readableFile).readAndProcess(processing); + + assertEquals(ReadableResult.NO_CONTENT_AVAILABLE, storage.readAndProcess(processing)); - try { - assertFalse(storage.readAndProcess(processing)); - fail(); - } catch (MaxAttemptsReachedException e) { - verify(folderManager, times(3)).getReadableFile(); - } + verify(folderManager, times(3)).getReadableFile(); } @Test - public void appendLineToFile() throws IOException { + public void appendDataToFile() throws IOException { doReturn(writableFile).when(folderManager).createWritableFile(); byte[] data = new byte[1]; @@ -173,13 +156,13 @@ public void appendLineToFile() throws IOException { } @Test - public void whenWritingTimeoutExceptionHappens_retryWithNewFile() throws IOException { + public void whenWritingTimeoutHappens_retryWithNewFile() throws IOException { byte[] data = new byte[1]; - WritableFile workingWritableFile = mock(); + WritableFile workingWritableFile = createWritableFile(); when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doThrow(WritingTimeoutException.class).when(writableFile).append(data); + doReturn(WritableResult.FILE_EXPIRED).when(writableFile).append(data); storage.write(data); @@ -187,13 +170,13 @@ public void whenWritingTimeoutExceptionHappens_retryWithNewFile() throws IOExcep } @Test - public void whenNoSpaceAvailableExceptionHappens_retryWithNewFile() throws IOException { + public void whenThereIsNoSpaceAvailableForWriting_retryWithNewFile() throws IOException { byte[] data = new byte[1]; - WritableFile workingWritableFile = mock(); + WritableFile workingWritableFile = createWritableFile(); when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doThrow(NoSpaceAvailableException.class).when(writableFile).append(data); + doReturn(WritableResult.FILE_IS_FULL).when(writableFile).append(data); storage.write(data); @@ -201,13 +184,13 @@ public void whenNoSpaceAvailableExceptionHappens_retryWithNewFile() throws IOExc } @Test - public void whenResourceClosedExceptionHappens_retryWithNewFile() throws IOException { + public void whenWritingResourceIsClosed_retryWithNewFile() throws IOException { byte[] data = new byte[1]; - WritableFile workingWritableFile = mock(); + WritableFile workingWritableFile = createWritableFile(); when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doThrow(ResourceClosedException.class).when(writableFile).append(data); + doReturn(WritableResult.CLOSED).when(writableFile).append(data); storage.write(data); @@ -215,17 +198,14 @@ public void whenResourceClosedExceptionHappens_retryWithNewFile() throws IOExcep } @Test - public void whenEveryAttemptToWriteFails_throwExceptionAfterMaxAttempts() throws IOException { + public void whenEveryAttemptToWriteFails_returnFalse() throws IOException { byte[] data = new byte[1]; when(folderManager.createWritableFile()).thenReturn(writableFile); - doThrow(ResourceClosedException.class).when(writableFile).append(data); + doReturn(WritableResult.CLOSED).when(writableFile).append(data); - try { - storage.write(data); - fail(); - } catch (MaxAttemptsReachedException e) { - verify(folderManager, times(3)).createWritableFile(); - } + assertFalse(storage.write(data)); + + verify(folderManager, times(3)).createWritableFile(); } @Test @@ -240,4 +220,10 @@ public void whenClosing_closeWriterAndReaderIfNotNull() throws IOException { verify(writableFile).close(); verify(readableFile).close(); } + + private static WritableFile createWritableFile() throws IOException { + WritableFile mock = mock(); + doReturn(WritableResult.SUCCEEDED).when(mock).append(any()); + return mock; + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 973972d6b..583afadcd 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -19,9 +19,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.LogRecordDataSerializer; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoContentAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ReadingTimeoutException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -131,13 +129,13 @@ public void readSingleItemAndRemoveIt() throws IOException { } @Test - public void whenProcessingSucceeds_returnTrue() throws IOException { - assertTrue(readableFile.readAndProcess(bytes -> true)); + public void whenProcessingSucceeds_returnSuccessStatus() throws IOException { + assertEquals(ReadableResult.SUCCEEDED, readableFile.readAndProcess(bytes -> true)); } @Test - public void whenProcessingFails_returnFalse() throws IOException { - assertFalse(readableFile.readAndProcess(bytes -> false)); + public void whenProcessingFails_returnProcessFailedStatus() throws IOException { + assertEquals(ReadableResult.PROCESSING_FAILED, readableFile.readAndProcess(bytes -> false)); } @Test @@ -177,7 +175,7 @@ public void whenReadingLastLine_deleteOriginalFile_and_close() throws IOExceptio } @Test - public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwException() + public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_returnNoContentStatus() throws IOException { File emptyFile = new File(dir, "emptyFile"); if (!emptyFile.createNewFile()) { @@ -187,57 +185,47 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_throwExc ReadableFile emptyReadableFile = new ReadableFile( emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); - try { - emptyReadableFile.readAndProcess(bytes -> true); - fail(); - } catch (NoContentAvailableException ignored) { - assertTrue(emptyReadableFile.isClosed()); - assertFalse(emptyFile.exists()); - } + + assertEquals( + ReadableResult.NO_CONTENT_AVAILABLE, emptyReadableFile.readAndProcess(bytes -> true)); + + assertTrue(emptyReadableFile.isClosed()); + assertFalse(emptyFile.exists()); } @Test public void - whenReadingAfterTheConfiguredReadingTimeExpired_deleteOriginalFile_close_and_throwException() + whenReadingAfterTheConfiguredReadingTimeExpired_deleteOriginalFile_close_and_returnFileExpiredException() throws IOException { readableFile.readAndProcess(bytes -> true); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) .when(timeProvider) .getSystemCurrentTimeMillis(); - try { - readableFile.readAndProcess(bytes -> true); - fail(); - } catch (ReadingTimeoutException ignored) { - assertTrue(readableFile.isClosed()); - } + assertEquals(ReadableResult.FILE_HAS_EXPIRED, readableFile.readAndProcess(bytes -> true)); + + assertTrue(readableFile.isClosed()); } @Test - public void whenReadingAfterClosed_throwException() throws IOException { + public void whenReadingAfterClosed_returnClosedStatus() throws IOException { readableFile.readAndProcess(bytes -> true); readableFile.close(); - try { - readableFile.readAndProcess(bytes -> true); - fail(); - } catch (ResourceClosedException ignored) { - } + assertEquals(ReadableResult.CLOSED, readableFile.readAndProcess(bytes -> true)); } private static List getRemainingDataAndClose(ReadableFile readableFile) throws IOException { List result = new ArrayList<>(); - while (true) { - try { - readableFile.readAndProcess( - bytes -> { - result.add(deserialize(bytes)); - return true; - }); - } catch (IOException ignored) { - break; - } + ReadableResult readableResult = ReadableResult.SUCCEEDED; + while (readableResult == ReadableResult.SUCCEEDED) { + readableResult = + readableFile.readAndProcess( + bytes -> { + result.add(deserialize(bytes)); + return true; + }); } readableFile.close(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index cd3b4b379..4115616a8 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -12,14 +12,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.NoSpaceAvailableException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.ResourceClosedException; -import io.opentelemetry.contrib.disk.buffering.internal.storage.exceptions.WritingTimeoutException; +import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import java.io.File; import java.io.IOException; @@ -79,42 +76,34 @@ public void appendDataInNewLines_andIncreaseSize() throws IOException { } @Test - public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndThrowException() + public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndReturnNoSpaceAvailable() throws IOException { - writableFile.append(new byte[MAX_FILE_SIZE]); - try { - writableFile.append(new byte[1]); - fail(); - } catch (NoSpaceAvailableException e) { - assertEquals(1, getWrittenLines().size()); - assertEquals(MAX_FILE_SIZE, writableFile.getSize()); - } + assertEquals(WritableResult.SUCCEEDED, writableFile.append(new byte[MAX_FILE_SIZE])); + + assertEquals(WritableResult.FILE_IS_FULL, writableFile.append(new byte[1])); + + assertEquals(1, getWrittenLines().size()); + assertEquals(MAX_FILE_SIZE, writableFile.getSize()); } @Test - public void whenAppendingData_andHasExpired_closeAndThrowException() throws IOException { + public void whenAppendingData_andHasExpired_closeAndReturnExpiredStatus() throws IOException { writableFile.append(new byte[2]); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_WRITE_MILLIS) .when(timeProvider) .getSystemCurrentTimeMillis(); - try { - writableFile.append(new byte[1]); - fail(); - } catch (WritingTimeoutException e) { - assertEquals(1, getWrittenLines().size()); - } + + assertEquals(WritableResult.FILE_EXPIRED, writableFile.append(new byte[1])); + + assertEquals(1, getWrittenLines().size()); } @Test - public void whenAppendingData_andIsAlreadyClosed_throwException() throws IOException { + public void whenAppendingData_andIsAlreadyClosed_returnClosedStatus() throws IOException { writableFile.append(new byte[1]); writableFile.close(); - try { - writableFile.append(new byte[2]); - fail(); - } catch (ResourceClosedException ignored) { - } + assertEquals(WritableResult.CLOSED, writableFile.append(new byte[2])); } private static byte[] getByteArrayLine(String line) { From 0e4d6bdb80f3294dfc41896930afbb4bc95ad140 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:59:41 +0200 Subject: [PATCH 149/209] Passing TimeProvider to internal classes in their constructors --- .../exporters/LogRecordDiskExporter.java | 16 +++++++++++- .../exporters/MetricDiskExporter.java | 16 +++++++++++- .../buffering/exporters/SpanDiskExporter.java | 16 +++++++++++- .../internal/exporters/DiskExporter.java | 9 ------- .../internal/storage/utils/TimeProvider.java | 5 ++-- .../{ => exporters}/IntegrationTest.java | 19 +++++++------- .../internal/exporters/DiskExporterTest.java | 15 ++++++++--- .../buffering/testutils/FakeTimeProvider.java | 26 ------------------- 8 files changed, 68 insertions(+), 54 deletions(-) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/{ => exporters}/IntegrationTest.java (91%) delete mode 100644 disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 94a95c4ff..dc2159f25 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -7,6 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.LogRecordProcessor; @@ -36,10 +37,23 @@ public final class LogRecordDiskExporter implements LogRecordExporter, StoredBat */ public LogRecordDiskExporter( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) { + this(wrapped, rootDir, configuration, TimeProvider.get()); + } + + LogRecordDiskExporter( + LogRecordExporter wrapped, + File rootDir, + StorageConfiguration configuration, + TimeProvider timeProvider) { this.wrapped = wrapped; diskExporter = new DiskExporter<>( - rootDir, configuration, "logs", SignalSerializer.ofLogs(), wrapped::export); + rootDir, + configuration, + "logs", + SignalSerializer.ofLogs(), + wrapped::export, + timeProvider); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 570b77488..6fb063e63 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -7,6 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; @@ -37,10 +38,23 @@ public final class MetricDiskExporter implements MetricExporter, StoredBatchExpo */ public MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration) { + this(wrapped, rootDir, configuration, TimeProvider.get()); + } + + MetricDiskExporter( + MetricExporter wrapped, + File rootDir, + StorageConfiguration configuration, + TimeProvider timeProvider) { this.wrapped = wrapped; diskExporter = new DiskExporter<>( - rootDir, configuration, "metrics", SignalSerializer.ofMetrics(), wrapped::export); + rootDir, + configuration, + "metrics", + SignalSerializer.ofMetrics(), + wrapped::export, + timeProvider); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 3cc8545e2..b78046d63 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -7,6 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.SpanProcessor; @@ -35,10 +36,23 @@ public final class SpanDiskExporter implements SpanExporter, StoredBatchExporter * @param configuration - How you want to manage the storage process. */ public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) { + this(wrapped, rootDir, configuration, TimeProvider.get()); + } + + SpanDiskExporter( + SpanExporter wrapped, + File rootDir, + StorageConfiguration configuration, + TimeProvider timeProvider) { this.wrapped = wrapped; diskExporter = new DiskExporter<>( - rootDir, configuration, "spans", SignalSerializer.ofSpans(), wrapped::export); + rootDir, + configuration, + "spans", + SignalSerializer.ofSpans(), + wrapped::export, + timeProvider); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 5c104ba07..1265d2e89 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -29,15 +29,6 @@ public final class DiskExporter implements StoredBatchExporter { private static final Logger logger = Logger.getLogger(DiskExporter.class.getName()); public DiskExporter( - File rootDir, - StorageConfiguration configuration, - String folderName, - SignalSerializer serializer, - Function, CompletableResultCode> exportFunction) { - this(rootDir, configuration, folderName, serializer, exportFunction, TimeProvider.get()); - } - - DiskExporter( File rootDir, StorageConfiguration configuration, String folderName, diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java index 7345d0ba2..8b765b420 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java @@ -6,11 +6,10 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; public class TimeProvider { - @SuppressWarnings({"FieldCanBeFinal", "FieldMayBeFinal"}) // Needed for tests - private static TimeProvider instance = new TimeProvider(); + private static final TimeProvider INSTANCE = new TimeProvider(); public static TimeProvider get() { - return instance; + return INSTANCE; } public long getSystemCurrentTimeMillis() { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java similarity index 91% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index ec3db23a1..00f019b7d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -1,20 +1,17 @@ -package io.opentelemetry.contrib.disk.buffering; +package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import io.opentelemetry.api.logs.Logger; import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.contrib.disk.buffering.exporters.LogRecordDiskExporter; -import io.opentelemetry.contrib.disk.buffering.exporters.MetricDiskExporter; -import io.opentelemetry.contrib.disk.buffering.exporters.SpanDiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; -import io.opentelemetry.contrib.disk.buffering.testutils.FakeTimeProvider; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; @@ -53,24 +50,27 @@ public class IntegrationTest { @BeforeEach public void setUp() { - timeMachine = FakeTimeProvider.createAndSetMock(INITIAL_TIME_IN_MILLIS); + timeMachine = mock(); + doReturn(INITIAL_TIME_IN_MILLIS).when(timeMachine).getSystemCurrentTimeMillis(); // Setting up spans memorySpanExporter = InMemorySpanExporter.create(); - diskSpanExporter = new SpanDiskExporter(memorySpanExporter, rootDir, STORAGE_CONFIGURATION); + diskSpanExporter = + new SpanDiskExporter(memorySpanExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); tracer = createTracerProvider(diskSpanExporter).get("SpanInstrumentationScope"); // Setting up metrics memoryMetricExporter = InMemoryMetricExporter.create(); diskMetricExporter = - new MetricDiskExporter(memoryMetricExporter, rootDir, STORAGE_CONFIGURATION); + new MetricDiskExporter(memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); meterProvider = createMeterProvider(diskMetricExporter); meter = meterProvider.get("MetricInstrumentationScope"); // Setting up logs memoryLogRecordExporter = InMemoryLogRecordExporter.create(); diskLogRecordExporter = - new LogRecordDiskExporter(memoryLogRecordExporter, rootDir, STORAGE_CONFIGURATION); + new LogRecordDiskExporter( + memoryLogRecordExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); logger = createLoggerProvider(diskLogRecordExporter).get("LogInstrumentationScope"); } @@ -139,6 +139,7 @@ public void verifyLogRecordsIntegration() throws IOException { assertEquals(1, memoryLogRecordExporter.getFinishedLogRecordItems().size()); } + @SuppressWarnings("DirectInvocationOnMock") private void fastForwardTimeByMillis(long milliseconds) { doReturn(timeMachine.getSystemCurrentTimeMillis() + milliseconds) .when(timeMachine) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java index ee98f32bb..095a3ce02 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java @@ -20,7 +20,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; -import io.opentelemetry.contrib.disk.buffering.testutils.FakeTimeProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; @@ -47,7 +46,7 @@ class DiskExporterTest { @BeforeEach public void setUp() { - timeProvider = FakeTimeProvider.createAndSetMock(1000L); + timeProvider = createTimeProviderMock(1000L); setUpSerializer(); wrapped = mock(); exporter = @@ -56,7 +55,8 @@ public void setUp() { TestData.getDefaultConfiguration(), STORAGE_FOLDER_NAME, serializer, - wrapped::export); + wrapped::export, + timeProvider); } @Test @@ -81,7 +81,8 @@ public void whenMinFileReadIsNotGraterThanMaxFileWrite_throwException() { .build(), STORAGE_FOLDER_NAME, serializer, - wrapped::export); + wrapped::export, + timeProvider); fail(); } catch (IllegalArgumentException e) { assertEquals( @@ -142,4 +143,10 @@ private void setUpSerializer() { serializer = mock(); doReturn(deserializedData).when(serializer).deserialize(any()); } + + private static TimeProvider createTimeProviderMock(long initialTimeMillis) { + TimeProvider mock = mock(); + doReturn(initialTimeMillis).when(mock).getSystemCurrentTimeMillis(); + return mock; + } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java deleted file mode 100644 index fd0927668..000000000 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/FakeTimeProvider.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.opentelemetry.contrib.disk.buffering.testutils; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; -import java.lang.reflect.Field; - -public class FakeTimeProvider { - - private FakeTimeProvider() { - } - - public static TimeProvider createAndSetMock(long initialTimeInMillis) { - TimeProvider timeProvider = mock(); - try { - Field field = TimeProvider.class.getDeclaredField("instance"); - field.setAccessible(true); - field.set(null, timeProvider); - doReturn(initialTimeInMillis).when(timeProvider).getSystemCurrentTimeMillis(); - return timeProvider; - } catch (NoSuchFieldException | IllegalAccessException e) { - throw new RuntimeException(e); - } - } -} From 450534702da28c0bf81eca1039031aabd2ab2bad Mon Sep 17 00:00:00 2001 From: LikeTheSalad <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 15:04:41 +0200 Subject: [PATCH 150/209] Update disk-buffering/build.gradle.kts Co-authored-by: Gregor Zeitlinger --- disk-buffering/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 4c8d52ff3..1f8bc5441 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -4,7 +4,7 @@ plugins { id("me.champeau.jmh") version "0.7.1" } -description = "Exporter implementations that store signals in disk" +description = "Exporter implementations that store signals on disk" otelJava.moduleName.set("io.opentelemetry.contrib.disk.buffering") java { From e32252f5a1baf90f2afb0e70f81ba1528bb6c745 Mon Sep 17 00:00:00 2001 From: LikeTheSalad <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 15:06:17 +0200 Subject: [PATCH 151/209] Update disk-buffering/build.gradle.kts Co-authored-by: Gregor Zeitlinger --- disk-buffering/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 1f8bc5441..c93adc111 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } description = "Exporter implementations that store signals on disk" -otelJava.moduleName.set("io.opentelemetry.contrib.disk.buffering") +otelJava.moduleName.set("io.opentelemetry.contrib.exporters.disk") java { sourceCompatibility = JavaVersion.VERSION_1_8 From b04c758e1c07536bcc835072d8a5f029f075c2a2 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 16:33:29 +0200 Subject: [PATCH 152/209] Adding exception to disk exporters constructor signature --- .../disk/buffering/exporters/LogRecordDiskExporter.java | 5 +++-- .../disk/buffering/exporters/MetricDiskExporter.java | 4 ++-- .../contrib/disk/buffering/exporters/SpanDiskExporter.java | 6 ++++-- .../disk/buffering/internal/exporters/DiskExporter.java | 7 ++++--- .../contrib/disk/buffering/exporters/IntegrationTest.java | 2 +- .../buffering/exporters/LogRecordDiskExporterTest.java | 3 ++- .../disk/buffering/exporters/MetricDiskExporterTest.java | 3 ++- .../disk/buffering/exporters/SpanDiskExporterTest.java | 3 ++- .../buffering/internal/exporters/DiskExporterTest.java | 4 ++-- 9 files changed, 22 insertions(+), 15 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index dc2159f25..dadf36429 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -36,7 +36,8 @@ public final class LogRecordDiskExporter implements LogRecordExporter, StoredBat * @param configuration - How you want to manage the storage process. */ public LogRecordDiskExporter( - LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) { + LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) + throws IOException { this(wrapped, rootDir, configuration, TimeProvider.get()); } @@ -44,7 +45,7 @@ public LogRecordDiskExporter( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) { + TimeProvider timeProvider) throws IOException { this.wrapped = wrapped; diskExporter = new DiskExporter<>( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 6fb063e63..b3978184d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -37,7 +37,7 @@ public final class MetricDiskExporter implements MetricExporter, StoredBatchExpo * @param configuration - How you want to manage the storage process. */ public MetricDiskExporter( - MetricExporter wrapped, File rootDir, StorageConfiguration configuration) { + MetricExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { this(wrapped, rootDir, configuration, TimeProvider.get()); } @@ -45,7 +45,7 @@ public MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) { + TimeProvider timeProvider) throws IOException { this.wrapped = wrapped; diskExporter = new DiskExporter<>( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index b78046d63..e7bab6d0a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -35,7 +35,8 @@ public final class SpanDiskExporter implements SpanExporter, StoredBatchExporter * written into. * @param configuration - How you want to manage the storage process. */ - public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) { + public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) + throws IOException { this(wrapped, rootDir, configuration, TimeProvider.get()); } @@ -43,7 +44,8 @@ public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration SpanExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) { + TimeProvider timeProvider) + throws IOException { this.wrapped = wrapped; diskExporter = new DiskExporter<>( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 1265d2e89..1b6065b1f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -34,7 +34,7 @@ public DiskExporter( String folderName, SignalSerializer serializer, Function, CompletableResultCode> exportFunction, - TimeProvider timeProvider) { + TimeProvider timeProvider) throws IOException { validateConfiguration(configuration); this.storage = new Storage( @@ -81,11 +81,12 @@ public CompletableResultCode onExport(Collection data) { } } - private static File getSignalFolder(File rootDir, String folderName) { + private static File getSignalFolder(File rootDir, String folderName) throws IOException { File folder = new File(rootDir, folderName); if (!folder.exists()) { if (!folder.mkdirs()) { - throw new IllegalStateException("Could not create the signal folder"); + throw new IOException( + "Could not create the signal folder: '" + folderName + "' inside: " + rootDir); } } return folder; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index 00f019b7d..d2a93f95e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -49,7 +49,7 @@ public class IntegrationTest { StorageConfiguration.getDefault(); @BeforeEach - public void setUp() { + public void setUp() throws IOException { timeMachine = mock(); doReturn(INITIAL_TIME_IN_MILLIS).when(timeMachine).getSystemCurrentTimeMillis(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java index 6144d04f8..0da607997 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -13,6 +13,7 @@ import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import java.io.File; +import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -26,7 +27,7 @@ class LogRecordDiskExporterTest { @TempDir File rootDir; @BeforeEach - public void setUp() { + public void setUp() throws IOException { wrapped = mock(); exporter = new LogRecordDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java index c99167872..3cc420197 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -17,6 +17,7 @@ import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.export.MetricExporter; import java.io.File; +import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -31,7 +32,7 @@ class MetricDiskExporterTest { @TempDir File rootDir; @BeforeEach - public void setUp() { + public void setUp() throws IOException { wrapped = mock(); exporter = new MetricDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java index 758dcd767..279057894 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -13,6 +13,7 @@ import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.io.File; +import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -26,7 +27,7 @@ class SpanDiskExporterTest { @TempDir File rootDir; @BeforeEach - public void setUp() { + public void setUp() throws IOException { wrapped = mock(); exporter = new SpanDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java index 095a3ce02..473e4b9f9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java @@ -45,7 +45,7 @@ class DiskExporterTest { private static final String STORAGE_FOLDER_NAME = "testName"; @BeforeEach - public void setUp() { + public void setUp() throws IOException { timeProvider = createTimeProviderMock(1000L); setUpSerializer(); wrapped = mock(); @@ -71,7 +71,7 @@ public void whenExportingStoredBatch_withAvailableData_andSuccessfullyProcessed_ } @Test - public void whenMinFileReadIsNotGraterThanMaxFileWrite_throwException() { + public void whenMinFileReadIsNotGraterThanMaxFileWrite_throwException() throws IOException { try { new DiskExporter<>( rootDir, From c48c70d32c77abb606ff27b2d67683e5668c066d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 16:34:38 +0200 Subject: [PATCH 153/209] Formatting --- .../disk/buffering/exporters/LogRecordDiskExporter.java | 3 ++- .../contrib/disk/buffering/exporters/MetricDiskExporter.java | 3 ++- .../disk/buffering/internal/exporters/DiskExporter.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index dadf36429..85c5a39cc 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -45,7 +45,8 @@ public LogRecordDiskExporter( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) throws IOException { + TimeProvider timeProvider) + throws IOException { this.wrapped = wrapped; diskExporter = new DiskExporter<>( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index b3978184d..07e606b32 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -45,7 +45,8 @@ public MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) throws IOException { + TimeProvider timeProvider) + throws IOException { this.wrapped = wrapped; diskExporter = new DiskExporter<>( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 1b6065b1f..5bce8dab2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -34,7 +34,8 @@ public DiskExporter( String folderName, SignalSerializer serializer, Function, CompletableResultCode> exportFunction, - TimeProvider timeProvider) throws IOException { + TimeProvider timeProvider) + throws IOException { validateConfiguration(configuration); this.storage = new Storage( From 76c1fbb36e878b58c6c93699b9195f37a257229b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 16:48:58 +0200 Subject: [PATCH 154/209] Using static create function to instantiate the disk signal exporters --- .../exporters/LogRecordDiskExporter.java | 21 +++++++++++++++---- .../exporters/MetricDiskExporter.java | 21 +++++++++++++++---- .../buffering/exporters/SpanDiskExporter.java | 21 +++++++++++++++---- .../buffering/exporters/IntegrationTest.java | 7 ++++--- .../exporters/LogRecordDiskExporterTest.java | 2 +- .../exporters/MetricDiskExporterTest.java | 2 +- .../exporters/SpanDiskExporterTest.java | 2 +- 7 files changed, 58 insertions(+), 18 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 85c5a39cc..2aa3e13ed 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -30,18 +30,31 @@ public final class LogRecordDiskExporter implements LogRecordExporter, StoredBat private final DiskExporter diskExporter; /** - * @param wrapped - Your own exporter. + * Creates a new instance of {@link LogRecordDiskExporter}. + * + * @param wrapped - The exporter where the data retrieved from the disk will be delegated to. * @param rootDir - The directory to create this signal's cache dir where all the data will be * written into. * @param configuration - How you want to manage the storage process. + * @throws IOException If no dir can be created in rootDir. */ - public LogRecordDiskExporter( + public static LogRecordDiskExporter create( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { - this(wrapped, rootDir, configuration, TimeProvider.get()); + return create(wrapped, rootDir, configuration, TimeProvider.get()); } - LogRecordDiskExporter( + // This is used for testing purposes. + static LogRecordDiskExporter create( + LogRecordExporter wrapped, + File rootDir, + StorageConfiguration configuration, + TimeProvider timeProvider) + throws IOException { + return new LogRecordDiskExporter(wrapped, rootDir, configuration, timeProvider); + } + + private LogRecordDiskExporter( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration, diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 07e606b32..e5db53b16 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -31,17 +31,30 @@ public final class MetricDiskExporter implements MetricExporter, StoredBatchExpo private final MetricExporter wrapped; private final DiskExporter diskExporter; /** - * @param wrapped - Your own exporter. + * Creates a new instance of {@link MetricDiskExporter}. + * + * @param wrapped - The exporter where the data retrieved from the disk will be delegated to. * @param rootDir - The directory to create this signal's cache dir where all the data will be * written into. * @param configuration - How you want to manage the storage process. + * @throws IOException If no dir can be created in rootDir. */ - public MetricDiskExporter( + public static MetricDiskExporter create( MetricExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { - this(wrapped, rootDir, configuration, TimeProvider.get()); + return create(wrapped, rootDir, configuration, TimeProvider.get()); } - MetricDiskExporter( + // This is used for testing purposes. + public static MetricDiskExporter create( + MetricExporter wrapped, + File rootDir, + StorageConfiguration configuration, + TimeProvider timeProvider) + throws IOException { + return new MetricDiskExporter(wrapped, rootDir, configuration, timeProvider); + } + + private MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration, diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index e7bab6d0a..0ae429969 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -30,17 +30,30 @@ public final class SpanDiskExporter implements SpanExporter, StoredBatchExporter private final DiskExporter diskExporter; /** - * @param wrapped - Your own exporter. + * Creates a new instance of {@link SpanDiskExporter}. + * + * @param wrapped - The exporter where the data retrieved from the disk will be delegated to. * @param rootDir - The directory to create this signal's cache dir where all the data will be * written into. * @param configuration - How you want to manage the storage process. + * @throws IOException If no dir can be created in rootDir. */ - public SpanDiskExporter(SpanExporter wrapped, File rootDir, StorageConfiguration configuration) + public static SpanDiskExporter create( + SpanExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { + return create(wrapped, rootDir, configuration, TimeProvider.get()); + } + + // This is used for testing purposes. + public static SpanDiskExporter create( + SpanExporter wrapped, + File rootDir, + StorageConfiguration configuration, + TimeProvider timeProvider) throws IOException { - this(wrapped, rootDir, configuration, TimeProvider.get()); + return new SpanDiskExporter(wrapped, rootDir, configuration, timeProvider); } - SpanDiskExporter( + private SpanDiskExporter( SpanExporter wrapped, File rootDir, StorageConfiguration configuration, diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index d2a93f95e..cd9ded370 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -56,20 +56,21 @@ public void setUp() throws IOException { // Setting up spans memorySpanExporter = InMemorySpanExporter.create(); diskSpanExporter = - new SpanDiskExporter(memorySpanExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); + SpanDiskExporter.create(memorySpanExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); tracer = createTracerProvider(diskSpanExporter).get("SpanInstrumentationScope"); // Setting up metrics memoryMetricExporter = InMemoryMetricExporter.create(); diskMetricExporter = - new MetricDiskExporter(memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); + MetricDiskExporter.create( + memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); meterProvider = createMeterProvider(diskMetricExporter); meter = meterProvider.get("MetricInstrumentationScope"); // Setting up logs memoryLogRecordExporter = InMemoryLogRecordExporter.create(); diskLogRecordExporter = - new LogRecordDiskExporter( + LogRecordDiskExporter.create( memoryLogRecordExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); logger = createLoggerProvider(diskLogRecordExporter).get("LogInstrumentationScope"); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java index 0da607997..f9e98cb53 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java @@ -29,7 +29,7 @@ class LogRecordDiskExporterTest { @BeforeEach public void setUp() throws IOException { wrapped = mock(); - exporter = new LogRecordDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); + exporter = LogRecordDiskExporter.create(wrapped, rootDir, STORAGE_CONFIGURATION); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java index 3cc420197..6f2b0db55 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java @@ -34,7 +34,7 @@ class MetricDiskExporterTest { @BeforeEach public void setUp() throws IOException { wrapped = mock(); - exporter = new MetricDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); + exporter = MetricDiskExporter.create(wrapped, rootDir, STORAGE_CONFIGURATION); } @Test diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java index 279057894..21a7ebaf9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java @@ -29,7 +29,7 @@ class SpanDiskExporterTest { @BeforeEach public void setUp() throws IOException { wrapped = mock(); - exporter = new SpanDiskExporter(wrapped, rootDir, STORAGE_CONFIGURATION); + exporter = SpanDiskExporter.create(wrapped, rootDir, STORAGE_CONFIGURATION); } @Test From 9d306679165d18b77bbe051702dd9e2e7bca18da Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 17:08:04 +0200 Subject: [PATCH 155/209] Updating the README file to add more info about the high level process --- disk-buffering/README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 417e6533d..ae7515c60 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -1,7 +1,15 @@ # Disk buffering This module provides signal exporter wrappers that intercept and store signals in files which can be -sent later on demand. +sent later on demand. A high level description of how it works is that there are two separate +processes in place, one for writing data in disk, and one for reading/exporting the previously +stored data. + +* Each exporter stores the received data automatically in disk right after it's received from its + processor. +* The reading of the data back from disk and exporting process has to be done manually. At + the moment there's no automatic mechanism to do so. There's more information on it can be + achieved, under [Reading data](#reading-data). ## Configuration @@ -58,7 +66,7 @@ take care of always storing the data it receives. SpanExporter mySpanExporter = OtlpGrpcSpanExporter.getDefault(); // Wrapping our exporter with its disk exporter. -SpanDiskExporter diskExporter = new SpanDiskExporter(mySpanExporter, new File("/my/signals/cache/dir"), StorageConfiguration.getDefault()); +SpanDiskExporter diskExporter=SpanDiskExporter.create(mySpanExporter, new File("/my/signals/cache/dir"), StorageConfiguration.getDefault()); // Registering the disk exporter within our OpenTelemetry instance. SdkTracerProvider myTraceProvider = SdkTracerProvider.builder() From abedf2b16273c426fb80bab536e22cf0b59abadc Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 18:05:10 +0200 Subject: [PATCH 156/209] Created the CONTRIBUTING.md file --- disk-buffering/CONTRIBUTING.md | 52 +++++++++++++++++++++++++ disk-buffering/README.md | 3 ++ disk-buffering/assets/reading-flow.png | Bin 0 -> 120001 bytes disk-buffering/assets/writing-flow.png | Bin 0 -> 74418 bytes 4 files changed, 55 insertions(+) create mode 100644 disk-buffering/CONTRIBUTING.md create mode 100644 disk-buffering/assets/reading-flow.png create mode 100644 disk-buffering/assets/writing-flow.png diff --git a/disk-buffering/CONTRIBUTING.md b/disk-buffering/CONTRIBUTING.md new file mode 100644 index 000000000..a11da0045 --- /dev/null +++ b/disk-buffering/CONTRIBUTING.md @@ -0,0 +1,52 @@ +# Contributor Guide + +Each one of the three exporters provided by this +tool ([LogRecordDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java), [MetricDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java) +and [SpanDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java)) +is responsible of performing 2 actions, `write` and `read/delegate`, the `write` one happens +automatically as a set of signals are provided from the processor, while the `read/delegate` one has +to be triggered manually by the consumer of this library as explained in the [README](README.md). + +## Writing overview + +![Writing flow](assets/writing-flow.png) + +* The writing process happens automatically within its `export(Collection signals)` + method, which is called by the configured signal processor. +* When a set of signals is received, these are delegated over to + the [DiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java) + class which then serializes them using an implementation + of [SignalSerializer](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java) + and then the serialized data is appended into a File using an instance of + the [Storage](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java) + class. +* Each disk exporter stores its signals in its own folder, which is expected to contain files + that belong to that type of signal only. +* Each file may contain more than a batch of signals if the configuration parameters allow enough + limit size for it. +* If the configured folder size for the signals has been reached and a new file is needed to be + created to keep storing new data, the oldest available file will be removed to make space for the + new one. +* The [Storage](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java), + [FolderManager](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java) + and [WritableFile](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java) + files contain more information on the details of the writing process into a file. + +## Reading overview + +![Reading flow](assets/reading-flow.png) + +* The reading process has to be triggered manually by the library consumer as explained in + the [README](README.md). +* A single file is read at a time and updated to remove the data gathered from it after it is + successfully exported, until it's emptied. Each file previously created during the + writing process has a timestamp in milliseconds, which is used to determine what file to start + reading from, which will be the oldest one available. +* If the oldest file available is stale, which is determined based on the configuration provided at + the time of creating the disk exporter, then it will be ignored, and the next oldest (and + unexpired) one will be used instead. +* All the stale and empty files will be removed as a new file is created. +* The [Storage](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java), + [FolderManager](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java) + and [ReadableFile](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java) + files contain more information on the details of the file reading process. diff --git a/disk-buffering/README.md b/disk-buffering/README.md index ae7515c60..2028c4d2e 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -11,6 +11,9 @@ stored data. the moment there's no automatic mechanism to do so. There's more information on it can be achieved, under [Reading data](#reading-data). +> For a more detailed information on how the whole process works, take a look at +the [CONTRIBUTING](CONTRIBUTING.md) file. + ## Configuration The configurable parameters are provided **per exporter**, the available ones are: diff --git a/disk-buffering/assets/reading-flow.png b/disk-buffering/assets/reading-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..76b8de43871efa097dd283a0cce5e05eab1885f2 GIT binary patch literal 120001 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 literal 0 HcmV?d00001 diff --git a/disk-buffering/assets/writing-flow.png b/disk-buffering/assets/writing-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..c6144b301c6f77b42e68dc9e8f47495643117b97 GIT binary patch literal 74418 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 LL%vwn$p8NX#&kri literal 0 HcmV?d00001 From 884d13388f9b24f5f6ae79bb4b14638657e8a79b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 18:05:26 +0200 Subject: [PATCH 157/209] Formatting --- disk-buffering/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 2028c4d2e..81f113ba0 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -69,7 +69,7 @@ take care of always storing the data it receives. SpanExporter mySpanExporter = OtlpGrpcSpanExporter.getDefault(); // Wrapping our exporter with its disk exporter. -SpanDiskExporter diskExporter=SpanDiskExporter.create(mySpanExporter, new File("/my/signals/cache/dir"), StorageConfiguration.getDefault()); +SpanDiskExporter diskExporter = SpanDiskExporter.create(mySpanExporter, new File("/my/signals/cache/dir"), StorageConfiguration.getDefault()); // Registering the disk exporter within our OpenTelemetry instance. SdkTracerProvider myTraceProvider = SdkTracerProvider.builder() From 0f2803c535f843a2a8cdb88f5c40af29955dfdee Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 18:07:28 +0200 Subject: [PATCH 158/209] Adding license headers --- .../storage/files/utils/FileTransferUtilBenchmark.java | 5 +++++ .../disk/buffering/exporters/MetricDiskExporter.java | 1 + .../disk/buffering/exporters/StoredBatchExporter.java | 5 +++++ .../serialization/mapping/common/AttributesMapper.java | 5 +++++ .../serialization/mapping/common/ByteStringMapper.java | 5 +++++ .../serialization/mapping/common/ResourceMapper.java | 5 +++++ .../serialization/mapping/logs/LogRecordDataMapper.java | 5 +++++ .../serialization/mapping/logs/ProtoLogsDataMapper.java | 5 +++++ .../serialization/mapping/metrics/MetricDataMapper.java | 5 +++++ .../mapping/metrics/ProtoMetricsDataMapper.java | 5 +++++ .../metrics/models/data/ExponentialHistogramDataImpl.java | 2 +- .../mapping/metrics/models/data/HistogramDataImpl.java | 2 +- .../mapping/metrics/models/data/SumDataImpl.java | 2 +- .../serialization/mapping/spans/ProtoSpansDataMapper.java | 5 +++++ .../serialization/mapping/spans/SpanDataMapper.java | 5 +++++ .../storage/files/reader/DelimitedProtoStreamReader.java | 5 +++++ .../buffering/internal/storage/files/reader/ReadResult.java | 6 ++++++ .../internal/storage/files/reader/StreamReader.java | 5 +++++ .../internal/storage/files/utils/CountingInputStream.java | 5 +++++ .../internal/storage/files/utils/FileTransferUtil.java | 5 +++++ .../internal/storage/responses/ReadableResult.java | 5 +++++ .../internal/storage/responses/WritableResult.java | 5 +++++ .../contrib/disk/buffering/exporters/IntegrationTest.java | 5 +++++ .../serialization/mapping/common/AttributesMapperTest.java | 5 +++++ .../serialization/mapping/common/ResourceMapperTest.java | 5 +++++ .../serialization/mapping/logs/LogRecordDataMapperTest.java | 5 +++++ .../serialization/mapping/logs/ProtoLogsDataMapperTest.java | 5 +++++ .../serialization/mapping/metrics/MetricDataMapperTest.java | 5 +++++ .../mapping/metrics/ProtoMetricsDataMapperTest.java | 5 +++++ .../mapping/spans/ProtoSpansDataMapperTest.java | 5 +++++ .../serialization/mapping/spans/SpanDataMapperTest.java | 5 +++++ 31 files changed, 140 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java b/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java index 58b8712fa..aa4ccdf39 100644 --- a/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java +++ b/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; import java.io.File; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index e5db53b16..795443b7f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -30,6 +30,7 @@ public final class MetricDiskExporter implements MetricExporter, StoredBatchExporter { private final MetricExporter wrapped; private final DiskExporter diskExporter; + /** * Creates a new instance of {@link MetricDiskExporter}. * diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java index 1b14f4ebc..996009742 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java index 5760db911..5821f7500 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import io.opentelemetry.api.common.AttributeKey; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java index 9e8995acc..0f8de0291 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import com.google.protobuf.ByteString; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index 844c37c56..c256580be 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import io.opentelemetry.proto.resource.v1.Resource; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java index 5eb4af5e0..224306849 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java index a570ef851..9f21af250 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 8b5262073..fd1c24a56 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java index 00e39c61b..ce6268f64 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java index 01815d29f..368710242 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java index e9e2cc195..daa377245 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.sdk.metrics.data.HistogramData; import io.opentelemetry.sdk.metrics.data.HistogramPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java index 224255b72..5c21a8af7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; +import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.MonotonicBuilder; import io.opentelemetry.sdk.metrics.data.DoublePointData; import io.opentelemetry.sdk.metrics.data.LongPointData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java index 3bd8cad50..a40515f17 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index a0b306aec..27a9d0d62 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import io.opentelemetry.api.common.Attributes; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java index cadaa0d67..ab4108a83 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; import com.google.protobuf.CodedInputStream; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java index 929efb4ec..079c2396c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/ReadResult.java @@ -1,8 +1,14 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; public final class ReadResult { /** The consumable data. */ public final byte[] content; + /** * The total amount of data read from the stream. This number can be greater than the content * length as it also takes into account any delimiters size. diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java index b61726c72..d263aad71 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/StreamReader.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader; import java.io.Closeable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java index 1aa1e3de1..9faa2c018 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/CountingInputStream.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; import java.io.FilterInputStream; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java index 5791b515a..e4729cb53 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtil.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; import java.io.Closeable; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java index c790d7fd2..19dcb0c59 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.responses; public enum ReadableResult { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java index 2f081a315..c00f4f1db 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.storage.responses; public enum WritableResult { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index cd9ded370..5b38c9c1e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.exporters; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java index 36924f0b9..95b922a50 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java index 069d7d7cd..55b95fbfb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java index 010b21de4..fe8746913 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java index de9bfa35b..2b7f2c5f5 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs; import static org.assertj.core.api.Assertions.assertThat; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 9008e0841..8975d8eab 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index 8ebb348d2..faf4b5807 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics; import static org.assertj.core.api.Assertions.assertThat; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java index d8a6eef67..8754e8ef2 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import static org.assertj.core.api.Assertions.assertThat; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java index bcc749466..ba9fd8699 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans; import static org.junit.jupiter.api.Assertions.assertEquals; From eb5d795a8b04c491535933eaee67cc3e60bd42d9 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 28 Jun 2023 18:12:41 +0200 Subject: [PATCH 159/209] Updating CONTRIBUTING --- disk-buffering/CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/disk-buffering/CONTRIBUTING.md b/disk-buffering/CONTRIBUTING.md index a11da0045..e031d9144 100644 --- a/disk-buffering/CONTRIBUTING.md +++ b/disk-buffering/CONTRIBUTING.md @@ -20,6 +20,8 @@ to be triggered manually by the consumer of this library as explained in the [RE and then the serialized data is appended into a File using an instance of the [Storage](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java) class. +* The data is written into a file directly, without the use of a buffer, to make sure no data gets + lost in case the application ends unexpectedly. * Each disk exporter stores its signals in its own folder, which is expected to contain files that belong to that type of signal only. * Each file may contain more than a batch of signals if the configuration parameters allow enough From e1235399a37eaecfa2709d907817d149a8f024b2 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:19:06 +0200 Subject: [PATCH 160/209] Removing mapstruct for metrics --- .../mapping/metrics/MetricDataMapper.java | 875 +++++++++++++----- .../mapping/metrics/models/Constants.java | 15 - 2 files changed, 653 insertions(+), 237 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index fd1c24a56..d28d5ffd7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -64,35 +64,37 @@ import io.opentelemetry.sdk.resources.Resource; import java.util.ArrayList; import java.util.List; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Context; -import org.mapstruct.EnumMapping; -import org.mapstruct.InheritInverseConfiguration; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingConstants; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; -import org.mapstruct.ValueMapping; - -@Mapper( - collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, - unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class MetricDataMapper { - - public static final MetricDataMapper INSTANCE = new MetricDataMapperImpl(); - - public abstract Metric mapToProto(MetricData source); - - @BeanMapping(resultType = MetricDataImpl.class) - public abstract MetricData mapToSdk( - Metric source, @Context Resource resource, @Context InstrumentationScopeInfo scope); + +public final class MetricDataMapper { + + public static final MetricDataMapper INSTANCE = new MetricDataMapper(); + + public Metric mapToProto(MetricData source) { + Metric.Builder metric = Metric.newBuilder(); + + metric.setName(source.getName()); + metric.setDescription(source.getDescription()); + metric.setUnit(source.getUnit()); + + addDataToProto(source, metric); + + return metric.build(); + } + + public MetricData mapToSdk(Metric source, Resource resource, InstrumentationScopeInfo scope) { + MetricDataImpl.Builder metricData = MetricDataImpl.builder(); + + metricData.setName(source.getName()); + metricData.setDescription(source.getDescription()); + metricData.setUnit(source.getUnit()); + + addDataToSdk(source, metricData, resource, scope); + + return metricData.build(); + } @SuppressWarnings("unchecked") - @AfterMapping - protected void addDataToProto(MetricData source, @MappingTarget Metric.Builder target) { + private static void addDataToProto(MetricData source, Metric.Builder target) { switch (source.getType()) { case LONG_GAUGE: target.setGauge(mapLongGaugeToProto((GaugeData) source.getData())); @@ -119,12 +121,11 @@ protected void addDataToProto(MetricData source, @MappingTarget Metric.Builder t } } - @AfterMapping - protected void addDataToSdk( + private static void addDataToSdk( Metric source, - @MappingTarget MetricDataImpl.Builder target, - @Context Resource resource, - @Context InstrumentationScopeInfo scope) { + MetricDataImpl.Builder target, + Resource resource, + InstrumentationScopeInfo scope) { target.setResource(resource); target.setInstrumentationScopeInfo(scope); switch (source.getDataCase()) { @@ -155,234 +156,451 @@ protected void addDataToSdk( } } - @Mapping(target = "dataPointsList", source = "points") - protected abstract Gauge mapLongGaugeToProto(GaugeData data); + private static DataWithType mapGaugeToSdk(Gauge gauge) { + if (gauge.getDataPointsCount() > 0) { + NumberDataPoint dataPoint = gauge.getDataPoints(0); + if (dataPoint.hasAsInt()) { + return new DataWithType(mapLongGaugeToSdk(gauge), MetricDataType.LONG_GAUGE); + } else if (dataPoint.hasAsDouble()) { + return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); + } + } + return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); + } - @Mapping(target = "dataPointsList", source = "points") - protected abstract Gauge mapDoubleGaugeToProto(GaugeData data); + private static DataWithType mapSumToSdk(Sum sum) { + if (sum.getDataPointsCount() > 0) { + NumberDataPoint dataPoint = sum.getDataPoints(0); + if (dataPoint.hasAsInt()) { + return new DataWithType(mapLongSumToSdk(sum), MetricDataType.LONG_SUM); + } else if (dataPoint.hasAsDouble()) { + return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); + } + } + return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); + } - @Mapping(target = "dataPointsList", source = "points") - @Mapping(target = "isMonotonic", source = "monotonic") - protected abstract Sum mapLongSumToProto(SumData data); + private static Gauge mapLongGaugeToProto(GaugeData data) { + Gauge.Builder gauge = Gauge.newBuilder(); - @Mapping(target = "dataPointsList", source = "points") - @Mapping(target = "isMonotonic", source = "monotonic") - protected abstract Sum mapDoubleSumToProto(SumData data); + if (data.getPoints() != null) { + for (LongPointData point : data.getPoints()) { + gauge.addDataPoints(longPointDataToNumberDataPoint(point)); + } + } - @Mapping(target = "dataPointsList", source = "points") - protected abstract Summary mapSummaryToProto(SummaryData data); + return gauge.build(); + } - @Mapping(target = "dataPointsList", source = "points") - protected abstract Histogram mapHistogramToProto(HistogramData data); + private static Gauge mapDoubleGaugeToProto(GaugeData data) { + Gauge.Builder gauge = Gauge.newBuilder(); - @Mapping(target = "dataPointsList", source = "points") - protected abstract ExponentialHistogram mapExponentialHistogramToProto( - ExponentialHistogramData data); + if (data.getPoints() != null) { + for (DoublePointData point : data.getPoints()) { + gauge.addDataPoints(doublePointDataToNumberDataPoint(point)); + } + } - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asInt", source = "value") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract NumberDataPoint longPointDataToNumberDataPoint(LongPointData source); + return gauge.build(); + } - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asDouble", source = "value") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract NumberDataPoint doublePointDataToNumberDataPoint(DoublePointData source); + private static Sum mapLongSumToProto(SumData data) { + Sum.Builder sum = Sum.newBuilder(); - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "quantileValuesList", source = "values") - protected abstract SummaryDataPoint summaryPointDataToSummaryDataPoint( - SummaryPointData summaryPointData); + if (data.getPoints() != null) { + for (LongPointData point : data.getPoints()) { + sum.addDataPoints(longPointDataToNumberDataPoint(point)); + } + } + sum.setIsMonotonic(data.isMonotonic()); + sum.setAggregationTemporality( + mapAggregationTemporalityToProto(data.getAggregationTemporality())); - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "bucketCountsList", source = "counts") - @Mapping(target = "explicitBoundsList", source = "boundaries") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract HistogramDataPoint histogramPointDataToHistogramDataPoint( - HistogramPointData histogramPointData); + return sum.build(); + } - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "positive", source = "positiveBuckets") - @Mapping(target = "negative", source = "negativeBuckets") - @Mapping(target = "exemplarsList", source = "exemplars") - protected abstract ExponentialHistogramDataPoint - exponentialHistogramPointDataToExponentialHistogramDataPoint( - ExponentialHistogramPointData exponentialHistogramPointData); + private static Sum mapDoubleSumToProto(SumData data) { + Sum.Builder sum = Sum.newBuilder(); + + if (data.getPoints() != null) { + for (DoublePointData point : data.getPoints()) { + sum.addDataPoints(doublePointDataToNumberDataPoint(point)); + } + } + sum.setIsMonotonic(data.isMonotonic()); + sum.setAggregationTemporality( + mapAggregationTemporalityToProto(data.getAggregationTemporality())); + + return sum.build(); + } + + private static Summary mapSummaryToProto(SummaryData data) { + Summary.Builder summary = Summary.newBuilder(); + + if (data.getPoints() != null) { + for (SummaryPointData point : data.getPoints()) { + summary.addDataPoints(summaryPointDataToSummaryDataPoint(point)); + } + } + + return summary.build(); + } - @Mapping(target = "bucketCountsList", source = "bucketCounts") - @Mapping(target = "offset") - protected abstract ExponentialHistogramDataPoint.Buckets exponentialHistogramBucketsToBuckets( - ExponentialHistogramBuckets source); + private static Histogram mapHistogramToProto(HistogramData data) { + Histogram.Builder histogram = Histogram.newBuilder(); - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asDouble", source = "value") - protected abstract Exemplar doubleExemplarDataToExemplar(DoubleExemplarData doubleExemplarData); + if (data.getPoints() != null) { + for (HistogramPointData point : data.getPoints()) { + histogram.addDataPoints(histogramPointDataToHistogramDataPoint(point)); + } + } + histogram.setAggregationTemporality( + mapAggregationTemporalityToProto(data.getAggregationTemporality())); + + return histogram.build(); + } + + private static ExponentialHistogram mapExponentialHistogramToProto( + ExponentialHistogramData data) { + ExponentialHistogram.Builder exponentialHistogram = ExponentialHistogram.newBuilder(); + + if (data.getPoints() != null) { + for (ExponentialHistogramPointData point : data.getPoints()) { + exponentialHistogram.addDataPoints( + exponentialHistogramPointDataToExponentialHistogramDataPoint(point)); + } + } + exponentialHistogram.setAggregationTemporality( + mapAggregationTemporalityToProto(data.getAggregationTemporality())); - @Mapping(target = "timeUnixNano", source = "epochNanos") - @Mapping(target = "asInt", source = "value") - protected abstract Exemplar longExemplarDataToExemplar(LongExemplarData doubleExemplarData); + return exponentialHistogram.build(); + } + + private static NumberDataPoint longPointDataToNumberDataPoint(LongPointData source) { + NumberDataPoint.Builder numberDataPoint = NumberDataPoint.newBuilder(); + + numberDataPoint.setStartTimeUnixNano(source.getStartEpochNanos()); + numberDataPoint.setTimeUnixNano(source.getEpochNanos()); + numberDataPoint.setAsInt(source.getValue()); + if (source.getExemplars() != null) { + for (LongExemplarData exemplar : source.getExemplars()) { + numberDataPoint.addExemplars(longExemplarDataToExemplar(exemplar)); + } + } + + addAttributesToNumberDataPoint(source, numberDataPoint); + + return numberDataPoint.build(); + } - @AfterMapping - protected void addAttributesToNumberDataPoint( - PointData source, @MappingTarget NumberDataPoint.Builder target) { + private static void addAttributesToNumberDataPoint( + PointData source, NumberDataPoint.Builder target) { target.addAllAttributes(attributesToProto(source.getAttributes())); } - @AfterMapping - protected void addAttributesToSummaryDataPoint( - PointData source, @MappingTarget SummaryDataPoint.Builder target) { + private static NumberDataPoint doublePointDataToNumberDataPoint(DoublePointData source) { + NumberDataPoint.Builder numberDataPoint = NumberDataPoint.newBuilder(); + + numberDataPoint.setStartTimeUnixNano(source.getStartEpochNanos()); + numberDataPoint.setTimeUnixNano(source.getEpochNanos()); + numberDataPoint.setAsDouble(source.getValue()); + if (source.getExemplars() != null) { + for (DoubleExemplarData exemplar : source.getExemplars()) { + numberDataPoint.addExemplars(doubleExemplarDataToExemplar(exemplar)); + } + } + + addAttributesToNumberDataPoint(source, numberDataPoint); + + return numberDataPoint.build(); + } + + private static SummaryDataPoint summaryPointDataToSummaryDataPoint( + SummaryPointData summaryPointData) { + SummaryDataPoint.Builder summaryDataPoint = SummaryDataPoint.newBuilder(); + + summaryDataPoint.setStartTimeUnixNano(summaryPointData.getStartEpochNanos()); + summaryDataPoint.setTimeUnixNano(summaryPointData.getEpochNanos()); + if (summaryPointData.getValues() != null) { + for (ValueAtQuantile value : summaryPointData.getValues()) { + summaryDataPoint.addQuantileValues(valueAtQuantileToValueAtQuantile(value)); + } + } + summaryDataPoint.setCount(summaryPointData.getCount()); + summaryDataPoint.setSum(summaryPointData.getSum()); + + addAttributesToSummaryDataPoint(summaryPointData, summaryDataPoint); + + return summaryDataPoint.build(); + } + + private static void addAttributesToSummaryDataPoint( + PointData source, SummaryDataPoint.Builder target) { target.addAllAttributes(attributesToProto(source.getAttributes())); } - @AfterMapping - protected void addExtrasToExemplar(ExemplarData source, @MappingTarget Exemplar.Builder target) { - target.addAllFilteredAttributes(attributesToProto(source.getFilteredAttributes())); - SpanContext spanContext = source.getSpanContext(); - target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); - target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + private static HistogramDataPoint histogramPointDataToHistogramDataPoint( + HistogramPointData histogramPointData) { + HistogramDataPoint.Builder histogramDataPoint = HistogramDataPoint.newBuilder(); + + histogramDataPoint.setStartTimeUnixNano(histogramPointData.getStartEpochNanos()); + histogramDataPoint.setTimeUnixNano(histogramPointData.getEpochNanos()); + if (histogramPointData.getCounts() != null) { + for (Long count : histogramPointData.getCounts()) { + histogramDataPoint.addBucketCounts(count); + } + } + if (histogramPointData.getBoundaries() != null) { + for (Double boundary : histogramPointData.getBoundaries()) { + histogramDataPoint.addExplicitBounds(boundary); + } + } + if (histogramPointData.getExemplars() != null) { + for (DoubleExemplarData exemplar : histogramPointData.getExemplars()) { + histogramDataPoint.addExemplars(doubleExemplarDataToExemplar(exemplar)); + } + } + histogramDataPoint.setCount(histogramPointData.getCount()); + histogramDataPoint.setSum(histogramPointData.getSum()); + if (histogramPointData.hasMin()) { + histogramDataPoint.setMin(histogramPointData.getMin()); + } + if (histogramPointData.hasMax()) { + histogramDataPoint.setMax(histogramPointData.getMax()); + } + + addAttributesToHistogramDataPoint(histogramPointData, histogramDataPoint); + + return histogramDataPoint.build(); } - @AfterMapping - protected void addAttributesToExponentialHistogramDataPoint( - ExponentialHistogramPointData source, - @MappingTarget ExponentialHistogramDataPoint.Builder target) { + private static void addAttributesToHistogramDataPoint( + HistogramPointData source, HistogramDataPoint.Builder target) { target.addAllAttributes(attributesToProto(source.getAttributes())); } - @AfterMapping - protected void addAttributesToHistogramDataPoint( - HistogramPointData source, @MappingTarget HistogramDataPoint.Builder target) { + private static ExponentialHistogramDataPoint + exponentialHistogramPointDataToExponentialHistogramDataPoint( + ExponentialHistogramPointData exponentialHistogramPointData) { + ExponentialHistogramDataPoint.Builder exponentialHistogramDataPoint = + ExponentialHistogramDataPoint.newBuilder(); + + exponentialHistogramDataPoint.setStartTimeUnixNano( + exponentialHistogramPointData.getStartEpochNanos()); + exponentialHistogramDataPoint.setTimeUnixNano(exponentialHistogramPointData.getEpochNanos()); + exponentialHistogramDataPoint.setPositive( + exponentialHistogramBucketsToBuckets(exponentialHistogramPointData.getPositiveBuckets())); + exponentialHistogramDataPoint.setNegative( + exponentialHistogramBucketsToBuckets(exponentialHistogramPointData.getNegativeBuckets())); + if (exponentialHistogramPointData.getExemplars() != null) { + for (DoubleExemplarData exemplar : exponentialHistogramPointData.getExemplars()) { + exponentialHistogramDataPoint.addExemplars(doubleExemplarDataToExemplar(exemplar)); + } + } + exponentialHistogramDataPoint.setCount(exponentialHistogramPointData.getCount()); + exponentialHistogramDataPoint.setSum(exponentialHistogramPointData.getSum()); + exponentialHistogramDataPoint.setScale(exponentialHistogramPointData.getScale()); + exponentialHistogramDataPoint.setZeroCount(exponentialHistogramPointData.getZeroCount()); + if (exponentialHistogramPointData.hasMin()) { + exponentialHistogramDataPoint.setMin(exponentialHistogramPointData.getMin()); + } + if (exponentialHistogramPointData.hasMax()) { + exponentialHistogramDataPoint.setMax(exponentialHistogramPointData.getMax()); + } + + addAttributesToExponentialHistogramDataPoint( + exponentialHistogramPointData, exponentialHistogramDataPoint); + + return exponentialHistogramDataPoint.build(); + } + + private static void addAttributesToExponentialHistogramDataPoint( + ExponentialHistogramPointData source, ExponentialHistogramDataPoint.Builder target) { target.addAllAttributes(attributesToProto(source.getAttributes())); } - @EnumMapping( - nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, - configuration = "AGGREGATION_TEMPORALITY_") - protected abstract AggregationTemporality mapAggregationTemporalityToProto( - io.opentelemetry.sdk.metrics.data.AggregationTemporality source); + private static ExponentialHistogramDataPoint.Buckets exponentialHistogramBucketsToBuckets( + ExponentialHistogramBuckets source) { + ExponentialHistogramDataPoint.Buckets.Builder buckets = + ExponentialHistogramDataPoint.Buckets.newBuilder(); - // FROM PROTO - private DataWithType mapGaugeToSdk(Gauge gauge) { - if (gauge.getDataPointsCount() > 0) { - NumberDataPoint dataPoint = gauge.getDataPoints(0); - if (dataPoint.hasAsInt()) { - return new DataWithType(mapLongGaugeToSdk(gauge), MetricDataType.LONG_GAUGE); - } else if (dataPoint.hasAsDouble()) { - return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); + if (source.getBucketCounts() != null) { + for (Long bucketCount : source.getBucketCounts()) { + buckets.addBucketCounts(bucketCount); } } - return new DataWithType(mapDoubleGaugeToSdk(gauge), MetricDataType.DOUBLE_GAUGE); + buckets.setOffset(source.getOffset()); + + return buckets.build(); } - private DataWithType mapSumToSdk(Sum sum) { - if (sum.getDataPointsCount() > 0) { - NumberDataPoint dataPoint = sum.getDataPoints(0); - if (dataPoint.hasAsInt()) { - return new DataWithType(mapLongSumToSdk(sum), MetricDataType.LONG_SUM); - } else if (dataPoint.hasAsDouble()) { - return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); - } + private static Exemplar doubleExemplarDataToExemplar(DoubleExemplarData doubleExemplarData) { + Exemplar.Builder exemplar = Exemplar.newBuilder(); + + exemplar.setTimeUnixNano(doubleExemplarData.getEpochNanos()); + exemplar.setAsDouble(doubleExemplarData.getValue()); + + addExtrasToExemplar(doubleExemplarData, exemplar); + + return exemplar.build(); + } + + private static Exemplar longExemplarDataToExemplar(LongExemplarData doubleExemplarData) { + Exemplar.Builder exemplar = Exemplar.newBuilder(); + + exemplar.setTimeUnixNano(doubleExemplarData.getEpochNanos()); + exemplar.setAsInt(doubleExemplarData.getValue()); + + addExtrasToExemplar(doubleExemplarData, exemplar); + + return exemplar.build(); + } + + private static void addExtrasToExemplar(ExemplarData source, Exemplar.Builder target) { + target.addAllFilteredAttributes(attributesToProto(source.getFilteredAttributes())); + SpanContext spanContext = source.getSpanContext(); + target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + } + + private static AggregationTemporality mapAggregationTemporalityToProto( + io.opentelemetry.sdk.metrics.data.AggregationTemporality source) { + AggregationTemporality aggregationTemporality; + + switch (source) { + case DELTA: + aggregationTemporality = AggregationTemporality.AGGREGATION_TEMPORALITY_DELTA; + break; + case CUMULATIVE: + aggregationTemporality = AggregationTemporality.AGGREGATION_TEMPORALITY_CUMULATIVE; + break; + default: + aggregationTemporality = AggregationTemporality.UNRECOGNIZED; } - return new DataWithType(mapDoubleSumToSdk(sum), MetricDataType.DOUBLE_SUM); + + return aggregationTemporality; + } + + private static SummaryData mapSummaryToSdk(Summary summary) { + SummaryDataImpl.Builder summaryData = SummaryDataImpl.builder(); + + summaryData.setPoints( + summaryDataPointListToSummaryPointDataCollection(summary.getDataPointsList())); + + return summaryData.build(); } - @InheritInverseConfiguration - @BeanMapping(resultType = SummaryDataImpl.class) - protected abstract SummaryData mapSummaryToSdk(Summary summary); + private static HistogramData mapHistogramToSdk(Histogram histogram) { + HistogramDataImpl.Builder histogramData = HistogramDataImpl.builder(); + + histogramData.setPoints( + histogramDataPointListToHistogramPointDataCollection(histogram.getDataPointsList())); + histogramData.setAggregationTemporality( + mapAggregationTemporalityToSdk(histogram.getAggregationTemporality())); + + return histogramData.build(); + } - @InheritInverseConfiguration - @BeanMapping(resultType = HistogramDataImpl.class) - protected abstract HistogramData mapHistogramToSdk(Histogram histogram); + private static ExponentialHistogramData mapExponentialHistogramToSdk( + ExponentialHistogram source) { + ExponentialHistogramDataImpl.Builder exponentialHistogramData = + ExponentialHistogramDataImpl.builder(); - @InheritInverseConfiguration - @BeanMapping(resultType = ExponentialHistogramDataImpl.class) - protected abstract ExponentialHistogramData mapExponentialHistogramToSdk( - ExponentialHistogram source); + exponentialHistogramData.setPoints( + exponentialHistogramDataPointListToExponentialHistogramPointDataCollection( + source.getDataPointsList())); + exponentialHistogramData.setAggregationTemporality( + mapAggregationTemporalityToSdk(source.getAggregationTemporality())); - @Mapping(target = "exemplars", source = "exemplarsList") - @BeanMapping(resultType = ExponentialHistogramPointDataImpl.class) - protected abstract ExponentialHistogramPointData + return exponentialHistogramData.build(); + } + + private static ExponentialHistogramPointData exponentialHistogramDataPointToExponentialHistogramPointData( - ExponentialHistogramDataPoint source); - - @InheritInverseConfiguration - @BeanMapping(resultType = HistogramPointDataImpl.class) - protected abstract HistogramPointData histogramDataPointToHistogramPointData( - HistogramDataPoint source); - - @InheritInverseConfiguration - @BeanMapping(resultType = DoubleExemplarDataImpl.class) - protected abstract DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source); - - @InheritInverseConfiguration - @BeanMapping(resultType = LongExemplarDataImpl.class) - protected abstract LongExemplarData exemplarToLongExemplarData(Exemplar source); - - @InheritInverseConfiguration - @BeanMapping(resultType = SummaryPointDataImpl.class) - protected abstract SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source); - - @BeanMapping(resultType = ValueAtQuantileImpl.class) - protected abstract ValueAtQuantile mapFromSummaryValueAtQuantileProto( - SummaryDataPoint.ValueAtQuantile source); - - @EnumMapping( - nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, - configuration = "AGGREGATION_TEMPORALITY_") - @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) - protected abstract io.opentelemetry.sdk.metrics.data.AggregationTemporality - mapAggregationTemporalityToSdk(AggregationTemporality source); - - @InheritInverseConfiguration - @BeanMapping(resultType = GaugeDataImpl.LongData.class) - protected abstract GaugeData mapLongGaugeToSdk(Gauge gauge); - - @InheritInverseConfiguration - @BeanMapping(resultType = GaugeDataImpl.DoubleData.class) - protected abstract GaugeData mapDoubleGaugeToSdk(Gauge gauge); - - @InheritInverseConfiguration - @BeanMapping(resultType = SumDataImpl.LongData.class) - protected abstract SumData mapLongSumToSdk(Sum sum); - - @InheritInverseConfiguration - @BeanMapping(resultType = SumDataImpl.DoubleData.class) - protected abstract SumData mapDoubleSumToSdk(Sum sum); - - @InheritInverseConfiguration - @BeanMapping(resultType = DoublePointDataImpl.class) - protected abstract DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source); - - @InheritInverseConfiguration - @BeanMapping(resultType = LongPointDataImpl.class) - protected abstract LongPointData mapLongNumberDataPointToSdk(NumberDataPoint source); - - @AfterMapping - protected void addAttributesFromNumberDataPoint( - NumberDataPoint source, @MappingTarget PointDataBuilder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); + ExponentialHistogramDataPoint source) { + ExponentialHistogramPointDataImpl.Builder exponentialHistogramPointData = + ExponentialHistogramPointDataImpl.builder(); + + exponentialHistogramPointData.setExemplars( + exemplarListToDoubleExemplarDataList(source.getExemplarsList())); + exponentialHistogramPointData.setScale(source.getScale()); + if (source.hasSum()) { + exponentialHistogramPointData.setSum(source.getSum()); + } + exponentialHistogramPointData.setCount(source.getCount()); + exponentialHistogramPointData.setZeroCount(source.getZeroCount()); + if (source.hasMin()) { + exponentialHistogramPointData.setMin(source.getMin()); + } + if (source.hasMax()) { + exponentialHistogramPointData.setMax(source.getMax()); + } + + addBucketsExtrasFromProto(source, exponentialHistogramPointData); + + return exponentialHistogramPointData.build(); } - @AfterMapping - protected void addAttributesFromSummaryDataPoint( - SummaryDataPoint source, @MappingTarget SummaryPointDataImpl.Builder target) { + private static void addBucketsExtrasFromProto( + ExponentialHistogramDataPoint source, ExponentialHistogramPointDataImpl.Builder target) { target.setAttributes(protoToAttributes(source.getAttributesList())); + target.setStartEpochNanos(source.getStartTimeUnixNano()); + target.setEpochNanos(source.getTimeUnixNano()); + if (source.hasPositive()) { + target.setPositiveBuckets(mapBucketsFromProto(source.getPositive(), source.getScale())); + } + if (source.hasNegative()) { + target.setNegativeBuckets(mapBucketsFromProto(source.getNegative(), source.getScale())); + } } - @AfterMapping - protected void addAttributesFromHistogramDataPoint( - HistogramDataPoint source, @MappingTarget HistogramPointDataImpl.Builder target) { + private static HistogramPointData histogramDataPointToHistogramPointData( + HistogramDataPoint source) { + HistogramPointDataImpl.Builder histogramPointData = HistogramPointDataImpl.builder(); + + histogramPointData.setStartEpochNanos(source.getStartTimeUnixNano()); + histogramPointData.setEpochNanos(source.getTimeUnixNano()); + List bucketCounts = source.getBucketCountsList(); + histogramPointData.setCounts(new ArrayList<>(bucketCounts)); + List explicitBounds = source.getExplicitBoundsList(); + histogramPointData.setBoundaries(new ArrayList<>(explicitBounds)); + histogramPointData.setExemplars( + exemplarListToDoubleExemplarDataList(source.getExemplarsList())); + if (source.hasSum()) { + histogramPointData.setSum(source.getSum()); + } + histogramPointData.setCount(source.getCount()); + if (source.hasMin()) { + histogramPointData.setMin(source.getMin()); + } + if (source.hasMax()) { + histogramPointData.setMax(source.getMax()); + } + + addAttributesFromHistogramDataPoint(source, histogramPointData); + + return histogramPointData.build(); + } + + private static void addAttributesFromHistogramDataPoint( + HistogramDataPoint source, HistogramPointDataImpl.Builder target) { target.setAttributes(protoToAttributes(source.getAttributesList())); } - @AfterMapping - protected void addExtrasFromExemplar( - Exemplar source, @MappingTarget ExemplarDataBuilder target) { + private static DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source) { + DoubleExemplarDataImpl.Builder doubleExemplarData = DoubleExemplarDataImpl.builder(); + + doubleExemplarData.setEpochNanos(source.getTimeUnixNano()); + if (source.hasAsDouble()) { + doubleExemplarData.setValue(source.getAsDouble()); + } + + addExtrasFromExemplar(source, doubleExemplarData); + + return doubleExemplarData.build(); + } + + private static void addExtrasFromExemplar(Exemplar source, ExemplarDataBuilder target) { target.setFilteredAttributes(protoToAttributes(source.getFilteredAttributesList())); target.setSpanContext( SpanContext.create( @@ -392,22 +610,235 @@ protected void addExtrasFromExemplar( TraceState.getDefault())); } - @AfterMapping - protected void addBucketsExtrasFromProto( - ExponentialHistogramDataPoint source, - @MappingTarget ExponentialHistogramPointDataImpl.Builder target) { + private static LongExemplarData exemplarToLongExemplarData(Exemplar source) { + LongExemplarDataImpl.Builder longExemplarData = LongExemplarDataImpl.builder(); + + longExemplarData.setEpochNanos(source.getTimeUnixNano()); + if (source.hasAsInt()) { + longExemplarData.setValue(source.getAsInt()); + } + + addExtrasFromExemplar(source, longExemplarData); + + return longExemplarData.build(); + } + + private static SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source) { + SummaryPointDataImpl.Builder summaryPointData = SummaryPointDataImpl.builder(); + + summaryPointData.setStartEpochNanos(source.getStartTimeUnixNano()); + summaryPointData.setEpochNanos(source.getTimeUnixNano()); + summaryPointData.setValues( + valueAtQuantileListToValueAtQuantileList(source.getQuantileValuesList())); + summaryPointData.setCount(source.getCount()); + summaryPointData.setSum(source.getSum()); + + addAttributesFromSummaryDataPoint(source, summaryPointData); + + return summaryPointData.build(); + } + + private static void addAttributesFromSummaryDataPoint( + SummaryDataPoint source, SummaryPointDataImpl.Builder target) { target.setAttributes(protoToAttributes(source.getAttributesList())); - target.setStartEpochNanos(source.getStartTimeUnixNano()); - target.setEpochNanos(source.getTimeUnixNano()); - if (source.hasPositive()) { - target.setPositiveBuckets(mapBucketsFromProto(source.getPositive(), source.getScale())); + } + + private static ValueAtQuantile mapFromSummaryValueAtQuantileProto( + SummaryDataPoint.ValueAtQuantile source) { + ValueAtQuantileImpl.Builder valueAtQuantile = ValueAtQuantileImpl.builder(); + + valueAtQuantile.setQuantile(source.getQuantile()); + valueAtQuantile.setValue(source.getValue()); + + return valueAtQuantile.build(); + } + + private static io.opentelemetry.sdk.metrics.data.AggregationTemporality + mapAggregationTemporalityToSdk(AggregationTemporality source) { + io.opentelemetry.sdk.metrics.data.AggregationTemporality aggregationTemporality; + + switch (source) { + case AGGREGATION_TEMPORALITY_DELTA: + aggregationTemporality = io.opentelemetry.sdk.metrics.data.AggregationTemporality.DELTA; + break; + case AGGREGATION_TEMPORALITY_CUMULATIVE: + aggregationTemporality = + io.opentelemetry.sdk.metrics.data.AggregationTemporality.CUMULATIVE; + break; + default: + throw new IllegalArgumentException("Unexpected enum constant: " + source); } - if (source.hasNegative()) { - target.setNegativeBuckets(mapBucketsFromProto(source.getNegative(), source.getScale())); + + return aggregationTemporality; + } + + private static GaugeData mapLongGaugeToSdk(Gauge gauge) { + GaugeDataImpl.LongData.Builder gaugeData = GaugeDataImpl.LongData.builder(); + + gaugeData.setPoints(numberDataPointListToLongPointDataCollection(gauge.getDataPointsList())); + + return gaugeData.build(); + } + + private static GaugeData mapDoubleGaugeToSdk(Gauge gauge) { + GaugeDataImpl.DoubleData.Builder gaugeData = GaugeDataImpl.DoubleData.builder(); + + gaugeData.setPoints(numberDataPointListToDoublePointDataCollection(gauge.getDataPointsList())); + + return gaugeData.build(); + } + + private static SumData mapLongSumToSdk(Sum sum) { + SumDataImpl.LongData.Builder sumData = SumDataImpl.LongData.builder(); + + sumData.setPoints(numberDataPointListToLongPointDataCollection(sum.getDataPointsList())); + sumData.setMonotonic(sum.getIsMonotonic()); + sumData.setAggregationTemporality( + mapAggregationTemporalityToSdk(sum.getAggregationTemporality())); + + return sumData.build(); + } + + private static SumData mapDoubleSumToSdk(Sum sum) { + SumDataImpl.DoubleData.Builder sumData = SumDataImpl.DoubleData.builder(); + + sumData.setPoints(numberDataPointListToDoublePointDataCollection(sum.getDataPointsList())); + sumData.setMonotonic(sum.getIsMonotonic()); + sumData.setAggregationTemporality( + mapAggregationTemporalityToSdk(sum.getAggregationTemporality())); + + return sumData.build(); + } + + private static DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source) { + DoublePointDataImpl.Builder doublePointData = DoublePointDataImpl.builder(); + + doublePointData.setStartEpochNanos(source.getStartTimeUnixNano()); + doublePointData.setEpochNanos(source.getTimeUnixNano()); + if (source.hasAsDouble()) { + doublePointData.setValue(source.getAsDouble()); + } + doublePointData.setExemplars(exemplarListToDoubleExemplarDataList(source.getExemplarsList())); + + addAttributesFromNumberDataPoint(source, doublePointData); + + return doublePointData.build(); + } + + private static LongPointData mapLongNumberDataPointToSdk(NumberDataPoint source) { + LongPointDataImpl.Builder longPointData = LongPointDataImpl.builder(); + + longPointData.setStartEpochNanos(source.getStartTimeUnixNano()); + longPointData.setEpochNanos(source.getTimeUnixNano()); + if (source.hasAsInt()) { + longPointData.setValue(source.getAsInt()); + } + longPointData.setExemplars(exemplarListToLongExemplarDataList(source.getExemplarsList())); + + addAttributesFromNumberDataPoint(source, longPointData); + + return longPointData.build(); + } + + private static void addAttributesFromNumberDataPoint( + NumberDataPoint source, PointDataBuilder target) { + target.setAttributes(protoToAttributes(source.getAttributesList())); + } + + private static SummaryDataPoint.ValueAtQuantile valueAtQuantileToValueAtQuantile( + ValueAtQuantile valueAtQuantile) { + SummaryDataPoint.ValueAtQuantile.Builder builder = + SummaryDataPoint.ValueAtQuantile.newBuilder(); + + builder.setQuantile(valueAtQuantile.getQuantile()); + builder.setValue(valueAtQuantile.getValue()); + + return builder.build(); + } + + private static List summaryDataPointListToSummaryPointDataCollection( + List list) { + List collection = new ArrayList<>(list.size()); + for (SummaryDataPoint summaryDataPoint : list) { + collection.add(summaryDataPointToSummaryPointData(summaryDataPoint)); + } + + return collection; + } + + private static List histogramDataPointListToHistogramPointDataCollection( + List list) { + List collection = new ArrayList<>(list.size()); + for (HistogramDataPoint histogramDataPoint : list) { + collection.add(histogramDataPointToHistogramPointData(histogramDataPoint)); + } + + return collection; + } + + private static List + exponentialHistogramDataPointListToExponentialHistogramPointDataCollection( + List list) { + List collection = new ArrayList<>(list.size()); + for (ExponentialHistogramDataPoint exponentialHistogramDataPoint : list) { + collection.add( + exponentialHistogramDataPointToExponentialHistogramPointData( + exponentialHistogramDataPoint)); + } + + return collection; + } + + private static List exemplarListToDoubleExemplarDataList( + List list) { + List result = new ArrayList<>(list.size()); + for (Exemplar exemplar : list) { + result.add(exemplarToDoubleExemplarData(exemplar)); } + + return result; + } + + private static List valueAtQuantileListToValueAtQuantileList( + List list) { + List result = new ArrayList<>(list.size()); + for (SummaryDataPoint.ValueAtQuantile valueAtQuantile : list) { + result.add(mapFromSummaryValueAtQuantileProto(valueAtQuantile)); + } + + return result; + } + + private static List numberDataPointListToLongPointDataCollection( + List list) { + List collection = new ArrayList<>(list.size()); + for (NumberDataPoint numberDataPoint : list) { + collection.add(mapLongNumberDataPointToSdk(numberDataPoint)); + } + + return collection; + } + + private static List numberDataPointListToDoublePointDataCollection( + List list) { + List collection = new ArrayList<>(list.size()); + for (NumberDataPoint numberDataPoint : list) { + collection.add(mapDoubleNumberDataPointToSdk(numberDataPoint)); + } + + return collection; + } + + private static List exemplarListToLongExemplarDataList(List list) { + List result = new ArrayList<>(list.size()); + for (Exemplar exemplar : list) { + result.add(exemplarToLongExemplarData(exemplar)); + } + + return result; } - protected ExponentialHistogramBuckets mapBucketsFromProto( + private static ExponentialHistogramBuckets mapBucketsFromProto( ExponentialHistogramDataPoint.Buckets source, Integer scale) { List bucketCounts = new ArrayList<>(); long totalCount = 0; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java deleted file mode 100644 index 1ab61af93..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/Constants.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models; - -import io.opentelemetry.sdk.metrics.data.AggregationTemporality; - -public final class Constants { - public static final AggregationTemporality DEFAULT_AGGREGATION_TEMPORALITY = - AggregationTemporality.DELTA; - - private Constants() {} -} From 3d64adb5afce2b47c05bf1e02c6eba6642dc207a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:34:48 +0200 Subject: [PATCH 161/209] Cleaning up custom metric datapoints --- .../mapping/metrics/MetricDataMapper.java | 78 ++++++------------- .../data/DoubleExemplarDataImpl.java | 24 ------ .../datapoints/data/ExemplarDataBuilder.java | 22 ------ .../data/ExponentialHistogramBucketsImpl.java | 31 -------- .../datapoints/data/LongExemplarDataImpl.java | 24 ------ .../datapoints/data/ValueAtQuantileImpl.java | 26 ------- .../mapping/metrics/MetricDataMapperTest.java | 41 +++------- .../metrics/ProtoMetricsDataMapperTest.java | 9 +-- .../serializers/MetricDataSerializerTest.java | 42 +++------- 9 files changed, 49 insertions(+), 248 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index d28d5ffd7..09deb7835 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -23,11 +23,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.PointDataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExemplarDataBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; import io.opentelemetry.proto.metrics.v1.Exemplar; @@ -61,6 +56,10 @@ import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; import java.util.ArrayList; import java.util.List; @@ -588,39 +587,27 @@ private static void addAttributesFromHistogramDataPoint( } private static DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source) { - DoubleExemplarDataImpl.Builder doubleExemplarData = DoubleExemplarDataImpl.builder(); - - doubleExemplarData.setEpochNanos(source.getTimeUnixNano()); - if (source.hasAsDouble()) { - doubleExemplarData.setValue(source.getAsDouble()); - } - - addExtrasFromExemplar(source, doubleExemplarData); - - return doubleExemplarData.build(); - } - - private static void addExtrasFromExemplar(Exemplar source, ExemplarDataBuilder target) { - target.setFilteredAttributes(protoToAttributes(source.getFilteredAttributesList())); - target.setSpanContext( - SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), - TraceFlags.getSampled(), - TraceState.getDefault())); + return ImmutableDoubleExemplarData.create( + protoToAttributes(source.getFilteredAttributesList()), + source.getTimeUnixNano(), + createForExemplar(source), + source.getAsDouble()); } private static LongExemplarData exemplarToLongExemplarData(Exemplar source) { - LongExemplarDataImpl.Builder longExemplarData = LongExemplarDataImpl.builder(); - - longExemplarData.setEpochNanos(source.getTimeUnixNano()); - if (source.hasAsInt()) { - longExemplarData.setValue(source.getAsInt()); - } - - addExtrasFromExemplar(source, longExemplarData); + return ImmutableLongExemplarData.create( + protoToAttributes(source.getFilteredAttributesList()), + source.getTimeUnixNano(), + createForExemplar(source), + source.getAsInt()); + } - return longExemplarData.build(); + private static SpanContext createForExemplar(Exemplar value) { + return SpanContext.create( + ByteStringMapper.INSTANCE.protoToString(value.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(value.getSpanId()), + TraceFlags.getSampled(), + TraceState.getDefault()); } private static SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source) { @@ -645,12 +632,7 @@ private static void addAttributesFromSummaryDataPoint( private static ValueAtQuantile mapFromSummaryValueAtQuantileProto( SummaryDataPoint.ValueAtQuantile source) { - ValueAtQuantileImpl.Builder valueAtQuantile = ValueAtQuantileImpl.builder(); - - valueAtQuantile.setQuantile(source.getQuantile()); - valueAtQuantile.setValue(source.getValue()); - - return valueAtQuantile.build(); + return ImmutableValueAtQuantile.create(source.getQuantile(), source.getValue()); } private static io.opentelemetry.sdk.metrics.data.AggregationTemporality @@ -839,19 +821,9 @@ private static List exemplarListToLongExemplarDataList(List bucketCounts = new ArrayList<>(); - long totalCount = 0; - for (Long bucketCount : source.getBucketCountsList()) { - bucketCounts.add(bucketCount); - totalCount += bucketCount; - } - return ExponentialHistogramBucketsImpl.builder() - .setOffset(source.getOffset()) - .setBucketCounts(bucketCounts) - .setTotalCount(totalCount) - .setScale(scale) - .build(); + ExponentialHistogramDataPoint.Buckets source, int scale) { + return ImmutableExponentialHistogramBuckets.create( + scale, source.getOffset(), source.getBucketCountsList()); } private static List attributesToProto(Attributes source) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java deleted file mode 100644 index 608839710..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/DoubleExemplarDataImpl.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; - -@AutoValue -public abstract class DoubleExemplarDataImpl implements DoubleExemplarData { - - public static Builder builder() { - return new AutoValue_DoubleExemplarDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements ExemplarDataBuilder { - public abstract Builder setValue(Double value); - - public abstract DoubleExemplarDataImpl build(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java deleted file mode 100644 index d2ca28fd5..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExemplarDataBuilder.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; - -import com.google.errorprone.annotations.CanIgnoreReturnValue; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.trace.SpanContext; - -public interface ExemplarDataBuilder> { - - @CanIgnoreReturnValue - T setSpanContext(SpanContext value); - - @CanIgnoreReturnValue - T setEpochNanos(Long value); - - @CanIgnoreReturnValue - T setFilteredAttributes(Attributes value); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java deleted file mode 100644 index d8109cd38..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ExponentialHistogramBucketsImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; -import java.util.List; - -@AutoValue -public abstract class ExponentialHistogramBucketsImpl implements ExponentialHistogramBuckets { - - public static Builder builder() { - return new AutoValue_ExponentialHistogramBucketsImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder { - public abstract Builder setScale(Integer value); - - public abstract Builder setOffset(Integer value); - - public abstract Builder setBucketCounts(List value); - - public abstract Builder setTotalCount(Long value); - - public abstract ExponentialHistogramBucketsImpl build(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java deleted file mode 100644 index 2cc5c1ebd..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/LongExemplarDataImpl.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.LongExemplarData; - -@AutoValue -public abstract class LongExemplarDataImpl implements LongExemplarData { - - public static Builder builder() { - return new AutoValue_LongExemplarDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements ExemplarDataBuilder { - public abstract Builder setValue(Long value); - - public abstract LongExemplarDataImpl build(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java deleted file mode 100644 index d34ac9ad5..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/data/ValueAtQuantileImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; - -@AutoValue -public abstract class ValueAtQuantileImpl implements ValueAtQuantile { - - public static Builder builder() { - return new AutoValue_ValueAtQuantileImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder { - public abstract Builder setQuantile(Double value); - - public abstract Builder setValue(Double value); - - public abstract ValueAtQuantileImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 8975d8eab..a1845150a 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -18,10 +18,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; @@ -41,6 +37,11 @@ import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; import java.util.Arrays; import java.util.Collections; @@ -49,20 +50,10 @@ class MetricDataMapperTest { private static final LongExemplarData LONG_EXEMPLAR_DATA = - LongExemplarDataImpl.builder() - .setValue(1L) - .setEpochNanos(100L) - .setFilteredAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT) - .build(); + ImmutableLongExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1L); private static final DoubleExemplarData DOUBLE_EXEMPLAR_DATA = - DoubleExemplarDataImpl.builder() - .setValue(1.0) - .setEpochNanos(100L) - .setFilteredAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT) - .build(); + ImmutableDoubleExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1.0); private static final LongPointData LONG_POINT_DATA = LongPointDataImpl.builder() .setValue(1L) @@ -105,8 +96,8 @@ class MetricDataMapperTest { .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) .build(); - private static final ValueAtQuantileImpl VALUE_AT_QUANTILE = - ValueAtQuantileImpl.builder().setValue(1.0).setQuantile(2.0).build(); + private static final ValueAtQuantile VALUE_AT_QUANTILE = + ImmutableValueAtQuantile.create(2.0, 1.0); private static final SummaryPointData SUMMARY_POINT_DATA = SummaryPointDataImpl.builder() .setCount(1L) @@ -135,20 +126,10 @@ class MetricDataMapperTest { .build(); private static final ExponentialHistogramBuckets POSITIVE_BUCKET = - ExponentialHistogramBucketsImpl.builder() - .setBucketCounts(Arrays.asList(1L, 10L)) - .setTotalCount(11L) - .setOffset(10) - .setScale(1) - .build(); + ImmutableExponentialHistogramBuckets.create(1, 10, Arrays.asList(1L, 10L)); private static final ExponentialHistogramBuckets NEGATIVE_BUCKET = - ExponentialHistogramBucketsImpl.builder() - .setBucketCounts(Collections.emptyList()) - .setTotalCount(0L) - .setOffset(0) - .setScale(1) - .build(); + ImmutableExponentialHistogramBuckets.create(1, 0, Collections.emptyList()); private static final ExponentialHistogramPointData EXPONENTIAL_HISTOGRAM_POINT_DATA = ExponentialHistogramPointDataImpl.builder() diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index faf4b5807..75d5797ee 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -11,7 +11,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.proto.metrics.v1.MetricsData; @@ -22,6 +21,7 @@ import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -31,12 +31,7 @@ class ProtoMetricsDataMapperTest { private static final LongExemplarData LONG_EXEMPLAR_DATA = - LongExemplarDataImpl.builder() - .setValue(1L) - .setEpochNanos(100L) - .setFilteredAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT) - .build(); + ImmutableLongExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1L); private static final LongPointData LONG_POINT_DATA = LongPointDataImpl.builder() diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index f5b48e0d9..e1fa14dfb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -16,10 +16,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.DoubleExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ExponentialHistogramBucketsImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.LongExemplarDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.data.ValueAtQuantileImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; @@ -38,6 +34,11 @@ import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; +import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import java.util.Arrays; import java.util.Collections; import org.junit.jupiter.api.Test; @@ -45,20 +46,10 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { private static final LongExemplarData LONG_EXEMPLAR_DATA = - LongExemplarDataImpl.builder() - .setValue(1L) - .setEpochNanos(100L) - .setFilteredAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT) - .build(); + ImmutableLongExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1L); private static final DoubleExemplarData DOUBLE_EXEMPLAR_DATA = - DoubleExemplarDataImpl.builder() - .setValue(1.0) - .setEpochNanos(100L) - .setFilteredAttributes(TestData.ATTRIBUTES) - .setSpanContext(TestData.SPAN_CONTEXT) - .build(); + ImmutableDoubleExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1.0); private static final LongPointData LONG_POINT_DATA = LongPointDataImpl.builder() .setValue(1L) @@ -101,8 +92,8 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) .build(); - private static final ValueAtQuantileImpl VALUE_AT_QUANTILE = - ValueAtQuantileImpl.builder().setValue(1.0).setQuantile(2.0).build(); + private static final ValueAtQuantile VALUE_AT_QUANTILE = + ImmutableValueAtQuantile.create(2.0, 1.0); private static final SummaryPointData SUMMARY_POINT_DATA = SummaryPointDataImpl.builder() .setCount(1L) @@ -131,21 +122,10 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { .build(); private static final ExponentialHistogramBuckets POSITIVE_BUCKET = - ExponentialHistogramBucketsImpl.builder() - .setBucketCounts(Arrays.asList(1L, 10L)) - .setTotalCount(11L) - .setOffset(10) - .setScale(1) - .build(); + ImmutableExponentialHistogramBuckets.create(1, 10, Arrays.asList(1L, 10L)); private static final ExponentialHistogramBuckets NEGATIVE_BUCKET = - ExponentialHistogramBucketsImpl.builder() - .setBucketCounts(Collections.emptyList()) - .setTotalCount(0L) - .setOffset(0) - .setScale(1) - .build(); - + ImmutableExponentialHistogramBuckets.create(1, 0, Collections.emptyList()); private static final ExponentialHistogramPointData EXPONENTIAL_HISTOGRAM_POINT_DATA = ExponentialHistogramPointDataImpl.builder() .setCount(1L) From 79c4d1aba682c450ed39d76f3f24ebc9911c6124 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:40:36 +0200 Subject: [PATCH 162/209] Cleaning up custom metric point data types --- .../mapping/metrics/MetricDataMapper.java | 46 ++++++------------- .../datapoints/DoublePointDataImpl.java | 28 ----------- .../models/datapoints/LongPointDataImpl.java | 28 ----------- .../mapping/metrics/MetricDataMapperTest.java | 22 +++------ .../metrics/ProtoMetricsDataMapperTest.java | 11 ++--- .../serializers/MetricDataSerializerTest.java | 22 +++------ 6 files changed, 29 insertions(+), 128 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 09deb7835..2c6d527c8 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -17,11 +17,8 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.PointDataBuilder; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; @@ -57,8 +54,10 @@ import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; import java.util.ArrayList; @@ -693,38 +692,21 @@ private static SumData mapDoubleSumToSdk(Sum sum) { } private static DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source) { - DoublePointDataImpl.Builder doublePointData = DoublePointDataImpl.builder(); - - doublePointData.setStartEpochNanos(source.getStartTimeUnixNano()); - doublePointData.setEpochNanos(source.getTimeUnixNano()); - if (source.hasAsDouble()) { - doublePointData.setValue(source.getAsDouble()); - } - doublePointData.setExemplars(exemplarListToDoubleExemplarDataList(source.getExemplarsList())); - - addAttributesFromNumberDataPoint(source, doublePointData); - - return doublePointData.build(); + return ImmutableDoublePointData.create( + source.getStartTimeUnixNano(), + source.getTimeUnixNano(), + protoToAttributes(source.getAttributesList()), + source.getAsDouble(), + exemplarListToDoubleExemplarDataList(source.getExemplarsList())); } private static LongPointData mapLongNumberDataPointToSdk(NumberDataPoint source) { - LongPointDataImpl.Builder longPointData = LongPointDataImpl.builder(); - - longPointData.setStartEpochNanos(source.getStartTimeUnixNano()); - longPointData.setEpochNanos(source.getTimeUnixNano()); - if (source.hasAsInt()) { - longPointData.setValue(source.getAsInt()); - } - longPointData.setExemplars(exemplarListToLongExemplarDataList(source.getExemplarsList())); - - addAttributesFromNumberDataPoint(source, longPointData); - - return longPointData.build(); - } - - private static void addAttributesFromNumberDataPoint( - NumberDataPoint source, PointDataBuilder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); + return ImmutableLongPointData.create( + source.getStartTimeUnixNano(), + source.getTimeUnixNano(), + protoToAttributes(source.getAttributesList()), + source.getAsInt(), + exemplarListToLongExemplarDataList(source.getExemplarsList())); } private static SummaryDataPoint.ValueAtQuantile valueAtQuantileToValueAtQuantile( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java deleted file mode 100644 index 94066e5dd..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/DoublePointDataImpl.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; -import io.opentelemetry.sdk.metrics.data.DoublePointData; -import java.util.List; - -@AutoValue -public abstract class DoublePointDataImpl implements DoublePointData { - - public static Builder builder() { - return new AutoValue_DoublePointDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements PointDataBuilder { - public abstract Builder setValue(Double value); - - public abstract Builder setExemplars(List value); - - public abstract DoublePointDataImpl build(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java deleted file mode 100644 index 77d9ecf0f..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/LongPointDataImpl.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.LongExemplarData; -import io.opentelemetry.sdk.metrics.data.LongPointData; -import java.util.List; - -@AutoValue -public abstract class LongPointDataImpl implements LongPointData { - - public static Builder builder() { - return new AutoValue_LongPointDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements PointDataBuilder { - public abstract Builder setValue(Long value); - - public abstract Builder setExemplars(List value); - - public abstract LongPointDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index a1845150a..8f2a6049a 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -13,10 +13,8 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; @@ -39,8 +37,10 @@ import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; import java.util.Arrays; @@ -55,22 +55,12 @@ class MetricDataMapperTest { private static final DoubleExemplarData DOUBLE_EXEMPLAR_DATA = ImmutableDoubleExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1.0); private static final LongPointData LONG_POINT_DATA = - LongPointDataImpl.builder() - .setValue(1L) - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(2L) - .setStartEpochNanos(1L) - .setExemplars(Collections.singletonList(LONG_EXEMPLAR_DATA)) - .build(); + ImmutableLongPointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1L, Collections.singletonList(LONG_EXEMPLAR_DATA)); private static final DoublePointData DOUBLE_POINT_DATA = - DoublePointDataImpl.builder() - .setValue(1.0) - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(2L) - .setStartEpochNanos(1L) - .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) - .build(); + ImmutableDoublePointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1.0, Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final GaugeData LONG_GAUGE_DATA = GaugeDataImpl.LongData.builder() diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index 75d5797ee..6f5fb494f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -10,7 +10,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.proto.metrics.v1.MetricsData; @@ -22,6 +21,7 @@ import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricDataType; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -34,13 +34,8 @@ class ProtoMetricsDataMapperTest { ImmutableLongExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1L); private static final LongPointData LONG_POINT_DATA = - LongPointDataImpl.builder() - .setValue(1L) - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(2L) - .setStartEpochNanos(1L) - .setExemplars(Collections.singletonList(LONG_EXEMPLAR_DATA)) - .build(); + ImmutableLongPointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1L, Collections.singletonList(LONG_EXEMPLAR_DATA)); private static final GaugeData LONG_GAUGE_DATA = GaugeDataImpl.LongData.builder() .setPoints(Collections.singletonList(LONG_POINT_DATA)) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index e1fa14dfb..8184d2591 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -11,10 +11,8 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.DoublePointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.LongPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -36,8 +34,10 @@ import io.opentelemetry.sdk.metrics.data.SummaryPointData; import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import java.util.Arrays; import java.util.Collections; @@ -51,22 +51,12 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { private static final DoubleExemplarData DOUBLE_EXEMPLAR_DATA = ImmutableDoubleExemplarData.create(TestData.ATTRIBUTES, 100L, TestData.SPAN_CONTEXT, 1.0); private static final LongPointData LONG_POINT_DATA = - LongPointDataImpl.builder() - .setValue(1L) - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(2L) - .setStartEpochNanos(1L) - .setExemplars(Collections.singletonList(LONG_EXEMPLAR_DATA)) - .build(); + ImmutableLongPointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1L, Collections.singletonList(LONG_EXEMPLAR_DATA)); private static final DoublePointData DOUBLE_POINT_DATA = - DoublePointDataImpl.builder() - .setValue(1.0) - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(2L) - .setStartEpochNanos(1L) - .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) - .build(); + ImmutableDoublePointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1.0, Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final GaugeData LONG_GAUGE_DATA = GaugeDataImpl.LongData.builder() From 2a8bb8f0ec48babdf6cdd0bb328d0530cb03072f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:46:34 +0200 Subject: [PATCH 163/209] Cleaning up custom metric ExponentialHistogramPointData --- .../mapping/metrics/MetricDataMapper.java | 48 +++++------------ .../ExponentialHistogramPointDataImpl.java | 53 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 30 +++++------ .../serializers/MetricDataSerializerTest.java | 30 +++++------ 4 files changed, 44 insertions(+), 117 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 2c6d527c8..7c700af9b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -17,7 +17,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; @@ -56,6 +55,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; @@ -516,40 +516,20 @@ private static ExponentialHistogramData mapExponentialHistogramToSdk( private static ExponentialHistogramPointData exponentialHistogramDataPointToExponentialHistogramPointData( ExponentialHistogramDataPoint source) { - ExponentialHistogramPointDataImpl.Builder exponentialHistogramPointData = - ExponentialHistogramPointDataImpl.builder(); - - exponentialHistogramPointData.setExemplars( + return ImmutableExponentialHistogramPointData.create( + source.getScale(), + source.getSum(), + source.getZeroCount(), + source.hasMin(), + source.getMin(), + source.hasMax(), + source.getMax(), + mapBucketsFromProto(source.getPositive(), source.getScale()), + mapBucketsFromProto(source.getNegative(), source.getScale()), + source.getStartTimeUnixNano(), + source.getTimeUnixNano(), + protoToAttributes(source.getAttributesList()), exemplarListToDoubleExemplarDataList(source.getExemplarsList())); - exponentialHistogramPointData.setScale(source.getScale()); - if (source.hasSum()) { - exponentialHistogramPointData.setSum(source.getSum()); - } - exponentialHistogramPointData.setCount(source.getCount()); - exponentialHistogramPointData.setZeroCount(source.getZeroCount()); - if (source.hasMin()) { - exponentialHistogramPointData.setMin(source.getMin()); - } - if (source.hasMax()) { - exponentialHistogramPointData.setMax(source.getMax()); - } - - addBucketsExtrasFromProto(source, exponentialHistogramPointData); - - return exponentialHistogramPointData.build(); - } - - private static void addBucketsExtrasFromProto( - ExponentialHistogramDataPoint source, ExponentialHistogramPointDataImpl.Builder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); - target.setStartEpochNanos(source.getStartTimeUnixNano()); - target.setEpochNanos(source.getTimeUnixNano()); - if (source.hasPositive()) { - target.setPositiveBuckets(mapBucketsFromProto(source.getPositive(), source.getScale())); - } - if (source.hasNegative()) { - target.setNegativeBuckets(mapBucketsFromProto(source.getNegative(), source.getScale())); - } } private static HistogramPointData histogramDataPointToHistogramPointData( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java deleted file mode 100644 index 256d97f6c..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/ExponentialHistogramPointDataImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; -import java.util.List; - -@AutoValue -public abstract class ExponentialHistogramPointDataImpl implements ExponentialHistogramPointData { - - public static Builder builder() { - return new AutoValue_ExponentialHistogramPointDataImpl.Builder(); - } - - @Override - public boolean hasMin() { - return getMin() > -1; - } - - @Override - public boolean hasMax() { - return getMax() > -1; - } - - @AutoValue.Builder - public abstract static class Builder implements PointDataBuilder { - public abstract Builder setScale(Integer value); - - public abstract Builder setSum(Double value); - - public abstract Builder setCount(Long value); - - public abstract Builder setZeroCount(Long value); - - public abstract Builder setMin(Double value); - - public abstract Builder setMax(Double value); - - public abstract Builder setExemplars(List value); - - public abstract Builder setPositiveBuckets(ExponentialHistogramBuckets value); - - public abstract Builder setNegativeBuckets(ExponentialHistogramBuckets value); - - public abstract ExponentialHistogramPointDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 8f2a6049a..c49404830 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -13,7 +13,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -39,6 +38,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; @@ -122,20 +122,20 @@ class MetricDataMapperTest { ImmutableExponentialHistogramBuckets.create(1, 0, Collections.emptyList()); private static final ExponentialHistogramPointData EXPONENTIAL_HISTOGRAM_POINT_DATA = - ExponentialHistogramPointDataImpl.builder() - .setCount(1L) - .setAttributes(TestData.ATTRIBUTES) - .setStartEpochNanos(1L) - .setEpochNanos(2L) - .setSum(10.0) - .setMin(2.0) - .setMax(4.0) - .setZeroCount(1L) - .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) - .setPositiveBuckets(POSITIVE_BUCKET) - .setNegativeBuckets(NEGATIVE_BUCKET) - .setScale(1) - .build(); + ImmutableExponentialHistogramPointData.create( + 1, + 10.0, + 1L, + true, + 2.0, + true, + 4.0, + POSITIVE_BUCKET, + NEGATIVE_BUCKET, + 1L, + 2L, + TestData.ATTRIBUTES, + Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final HistogramData HISTOGRAM_DATA = HistogramDataImpl.builder() .setAggregationTemporality(AggregationTemporality.CUMULATIVE) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 8184d2591..d3230d1bf 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -11,7 +11,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.ExponentialHistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; @@ -36,6 +35,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; @@ -117,20 +117,20 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { private static final ExponentialHistogramBuckets NEGATIVE_BUCKET = ImmutableExponentialHistogramBuckets.create(1, 0, Collections.emptyList()); private static final ExponentialHistogramPointData EXPONENTIAL_HISTOGRAM_POINT_DATA = - ExponentialHistogramPointDataImpl.builder() - .setCount(1L) - .setAttributes(TestData.ATTRIBUTES) - .setStartEpochNanos(1L) - .setEpochNanos(2L) - .setSum(10.0) - .setMin(2.0) - .setMax(4.0) - .setZeroCount(1L) - .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) - .setPositiveBuckets(POSITIVE_BUCKET) - .setNegativeBuckets(NEGATIVE_BUCKET) - .setScale(1) - .build(); + ImmutableExponentialHistogramPointData.create( + 1, + 10.0, + 1L, + true, + 2.0, + true, + 4.0, + POSITIVE_BUCKET, + NEGATIVE_BUCKET, + 1L, + 2L, + TestData.ATTRIBUTES, + Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final HistogramData HISTOGRAM_DATA = HistogramDataImpl.builder() .setAggregationTemporality(AggregationTemporality.CUMULATIVE) From 8e76fd068a1c8f039e486cc02bd31f4cec18fe6a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:51:10 +0200 Subject: [PATCH 164/209] Cleaning up custom metric HistogramPointData --- .../mapping/metrics/MetricDataMapper.java | 41 +++++----------- .../datapoints/HistogramPointDataImpl.java | 48 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 27 +++++------ .../serializers/MetricDataSerializerTest.java | 27 +++++------ 4 files changed, 38 insertions(+), 105 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 7c700af9b..534eb6b80 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -17,7 +17,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; @@ -56,6 +55,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; @@ -534,35 +534,18 @@ private static ExponentialHistogramData mapExponentialHistogramToSdk( private static HistogramPointData histogramDataPointToHistogramPointData( HistogramDataPoint source) { - HistogramPointDataImpl.Builder histogramPointData = HistogramPointDataImpl.builder(); - - histogramPointData.setStartEpochNanos(source.getStartTimeUnixNano()); - histogramPointData.setEpochNanos(source.getTimeUnixNano()); - List bucketCounts = source.getBucketCountsList(); - histogramPointData.setCounts(new ArrayList<>(bucketCounts)); - List explicitBounds = source.getExplicitBoundsList(); - histogramPointData.setBoundaries(new ArrayList<>(explicitBounds)); - histogramPointData.setExemplars( + return ImmutableHistogramPointData.create( + source.getStartTimeUnixNano(), + source.getTimeUnixNano(), + protoToAttributes(source.getAttributesList()), + source.getSum(), + source.hasMin(), + source.getMin(), + source.hasMax(), + source.getMax(), + source.getExplicitBoundsList(), + source.getBucketCountsList(), exemplarListToDoubleExemplarDataList(source.getExemplarsList())); - if (source.hasSum()) { - histogramPointData.setSum(source.getSum()); - } - histogramPointData.setCount(source.getCount()); - if (source.hasMin()) { - histogramPointData.setMin(source.getMin()); - } - if (source.hasMax()) { - histogramPointData.setMax(source.getMax()); - } - - addAttributesFromHistogramDataPoint(source, histogramPointData); - - return histogramPointData.build(); - } - - private static void addAttributesFromHistogramDataPoint( - HistogramDataPoint source, HistogramPointDataImpl.Builder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); } private static DoubleExemplarData exemplarToDoubleExemplarData(Exemplar source) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java deleted file mode 100644 index 81a697d65..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/HistogramPointDataImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; -import io.opentelemetry.sdk.metrics.data.HistogramPointData; -import java.util.List; - -@AutoValue -public abstract class HistogramPointDataImpl implements HistogramPointData { - - public static Builder builder() { - return new AutoValue_HistogramPointDataImpl.Builder(); - } - - @Override - public boolean hasMin() { - return getMin() > -1; - } - - @Override - public boolean hasMax() { - return getMax() > -1; - } - - @AutoValue.Builder - public abstract static class Builder implements PointDataBuilder { - public abstract Builder setSum(Double value); - - public abstract Builder setCount(Long value); - - public abstract Builder setMin(Double value); - - public abstract Builder setMax(Double value); - - public abstract Builder setBoundaries(List value); - - public abstract Builder setCounts(List value); - - public abstract Builder setExemplars(List value); - - public abstract HistogramPointDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index c49404830..0924cdb83 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -13,7 +13,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; @@ -39,6 +38,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; @@ -102,19 +102,18 @@ class MetricDataMapperTest { SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); private static final HistogramPointData HISTOGRAM_POINT_DATA = - HistogramPointDataImpl.builder() - .setCount(3L) - .setAttributes(TestData.ATTRIBUTES) - .setStartEpochNanos(1L) - .setEpochNanos(2L) - .setSum(15.0) - .setMin(4.0) - .setMax(7.0) - .setBoundaries(Collections.singletonList(10.0)) - .setCounts(Arrays.asList(1L, 2L)) - .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) - .build(); - + ImmutableHistogramPointData.create( + 1L, + 2L, + TestData.ATTRIBUTES, + 15.0, + true, + 4.0, + true, + 7.0, + Collections.singletonList(10.0), + Arrays.asList(1L, 2L), + Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final ExponentialHistogramBuckets POSITIVE_BUCKET = ImmutableExponentialHistogramBuckets.create(1, 10, Arrays.asList(1L, 10L)); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index d3230d1bf..7e05864f4 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -11,7 +11,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.HistogramPointDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -36,6 +35,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; @@ -98,19 +98,18 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); private static final HistogramPointData HISTOGRAM_POINT_DATA = - HistogramPointDataImpl.builder() - .setCount(3L) - .setAttributes(TestData.ATTRIBUTES) - .setStartEpochNanos(1L) - .setEpochNanos(2L) - .setSum(15.0) - .setMin(4.0) - .setMax(7.0) - .setBoundaries(Collections.singletonList(10.0)) - .setCounts(Arrays.asList(1L, 2L)) - .setExemplars(Collections.singletonList(DOUBLE_EXEMPLAR_DATA)) - .build(); - + ImmutableHistogramPointData.create( + 1L, + 2L, + TestData.ATTRIBUTES, + 15.0, + true, + 4.0, + true, + 7.0, + Collections.singletonList(10.0), + Arrays.asList(1L, 2L), + Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final ExponentialHistogramBuckets POSITIVE_BUCKET = ImmutableExponentialHistogramBuckets.create(1, 10, Arrays.asList(1L, 10L)); From 7bfbff7b01ee15f9fe0a7f4de2cb72c4f83c4d32 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:54:05 +0200 Subject: [PATCH 165/209] Cleaning up custom metric pointdata utils --- .../mapping/metrics/MetricDataMapper.java | 24 ++++-------- .../models/datapoints/PointDataBuilder.java | 21 ----------- .../datapoints/SummaryPointDataImpl.java | 37 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 12 ++---- .../serializers/MetricDataSerializerTest.java | 12 ++---- 5 files changed, 13 insertions(+), 93 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 534eb6b80..67964c1a4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -17,7 +17,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; import io.opentelemetry.proto.metrics.v1.Exemplar; @@ -58,6 +57,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; import java.util.ArrayList; @@ -573,23 +573,13 @@ private static SpanContext createForExemplar(Exemplar value) { } private static SummaryPointData summaryDataPointToSummaryPointData(SummaryDataPoint source) { - SummaryPointDataImpl.Builder summaryPointData = SummaryPointDataImpl.builder(); - - summaryPointData.setStartEpochNanos(source.getStartTimeUnixNano()); - summaryPointData.setEpochNanos(source.getTimeUnixNano()); - summaryPointData.setValues( + return ImmutableSummaryPointData.create( + source.getStartTimeUnixNano(), + source.getTimeUnixNano(), + protoToAttributes(source.getAttributesList()), + source.getCount(), + source.getSum(), valueAtQuantileListToValueAtQuantileList(source.getQuantileValuesList())); - summaryPointData.setCount(source.getCount()); - summaryPointData.setSum(source.getSum()); - - addAttributesFromSummaryDataPoint(source, summaryPointData); - - return summaryPointData.build(); - } - - private static void addAttributesFromSummaryDataPoint( - SummaryDataPoint source, SummaryPointDataImpl.Builder target) { - target.setAttributes(protoToAttributes(source.getAttributesList())); } private static ValueAtQuantile mapFromSummaryValueAtQuantileProto( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java deleted file mode 100644 index 29b0d63ee..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/PointDataBuilder.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; - -import com.google.errorprone.annotations.CanIgnoreReturnValue; -import io.opentelemetry.api.common.Attributes; - -public interface PointDataBuilder> { - - @CanIgnoreReturnValue - T setStartEpochNanos(Long value); - - @CanIgnoreReturnValue - T setEpochNanos(Long value); - - @CanIgnoreReturnValue - T setAttributes(Attributes value); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java deleted file mode 100644 index 6ba02e48d..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/datapoints/SummaryPointDataImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.metrics.data.ExemplarData; -import io.opentelemetry.sdk.metrics.data.SummaryPointData; -import io.opentelemetry.sdk.metrics.data.ValueAtQuantile; -import java.util.Collections; -import java.util.List; - -@AutoValue -public abstract class SummaryPointDataImpl implements SummaryPointData { - - public static Builder builder() { - return new AutoValue_SummaryPointDataImpl.Builder(); - } - - @Override - public List getExemplars() { - return Collections.emptyList(); - } - - @AutoValue.Builder - public abstract static class Builder implements PointDataBuilder { - public abstract Builder setCount(Long value); - - public abstract Builder setSum(Double value); - - public abstract Builder setValues(List value); - - public abstract SummaryPointDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 0924cdb83..38dc1e592 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -13,7 +13,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; @@ -41,6 +40,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; import java.util.Arrays; @@ -89,14 +89,8 @@ class MetricDataMapperTest { private static final ValueAtQuantile VALUE_AT_QUANTILE = ImmutableValueAtQuantile.create(2.0, 1.0); private static final SummaryPointData SUMMARY_POINT_DATA = - SummaryPointDataImpl.builder() - .setCount(1L) - .setSum(2.0) - .setStartEpochNanos(1L) - .setEpochNanos(2L) - .setAttributes(TestData.ATTRIBUTES) - .setValues(Collections.singletonList(VALUE_AT_QUANTILE)) - .build(); + ImmutableSummaryPointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1L, 2.0, Collections.singletonList(VALUE_AT_QUANTILE)); private static final SummaryData SUMMARY_DATA = SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 7e05864f4..46439162f 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -11,7 +11,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.datapoints.SummaryPointDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; @@ -38,6 +37,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import java.util.Arrays; import java.util.Collections; @@ -85,14 +85,8 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { private static final ValueAtQuantile VALUE_AT_QUANTILE = ImmutableValueAtQuantile.create(2.0, 1.0); private static final SummaryPointData SUMMARY_POINT_DATA = - SummaryPointDataImpl.builder() - .setCount(1L) - .setSum(2.0) - .setStartEpochNanos(1L) - .setEpochNanos(2L) - .setAttributes(TestData.ATTRIBUTES) - .setValues(Collections.singletonList(VALUE_AT_QUANTILE)) - .build(); + ImmutableSummaryPointData.create( + 1L, 2L, TestData.ATTRIBUTES, 1L, 2.0, Collections.singletonList(VALUE_AT_QUANTILE)); private static final SummaryData SUMMARY_DATA = SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); From d968210643a3f1da038e19766ccec4134fe26685 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:57:45 +0200 Subject: [PATCH 166/209] Cleaning up custom metric histogram data --- .../mapping/metrics/MetricDataMapper.java | 12 +++------ .../data/ExponentialHistogramDataImpl.java | 27 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 9 +++---- .../serializers/MetricDataSerializerTest.java | 10 +++---- 4 files changed, 11 insertions(+), 47 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 67964c1a4..2b93a9bb2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -12,7 +12,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; @@ -53,6 +52,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; @@ -501,16 +501,10 @@ private static HistogramData mapHistogramToSdk(Histogram histogram) { private static ExponentialHistogramData mapExponentialHistogramToSdk( ExponentialHistogram source) { - ExponentialHistogramDataImpl.Builder exponentialHistogramData = - ExponentialHistogramDataImpl.builder(); - - exponentialHistogramData.setPoints( + return ImmutableExponentialHistogramData.create( + mapAggregationTemporalityToSdk(source.getAggregationTemporality()), exponentialHistogramDataPointListToExponentialHistogramPointDataCollection( source.getDataPointsList())); - exponentialHistogramData.setAggregationTemporality( - mapAggregationTemporalityToSdk(source.getAggregationTemporality())); - - return exponentialHistogramData.build(); } private static ExponentialHistogramPointData diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java deleted file mode 100644 index 368710242..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/ExponentialHistogramDataImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramData; -import io.opentelemetry.sdk.metrics.data.ExponentialHistogramPointData; - -@AutoValue -public abstract class ExponentialHistogramDataImpl implements ExponentialHistogramData { - - public static Builder builder() { - return new AutoValue_ExponentialHistogramDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder - implements DataBuilder, - AggregationTemporalityBuilder { - public abstract ExponentialHistogramDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 38dc1e592..438049b36 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -8,7 +8,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; @@ -36,6 +35,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; @@ -136,10 +136,9 @@ class MetricDataMapperTest { .build(); private static final ExponentialHistogramData EXPONENTIAL_HISTOGRAM_DATA = - ExponentialHistogramDataImpl.builder() - .setAggregationTemporality(AggregationTemporality.CUMULATIVE) - .setPoints(Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)) - .build(); + ImmutableExponentialHistogramData.create( + AggregationTemporality.CUMULATIVE, + Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)); private static final MetricData LONG_GAUGE_METRIC = MetricDataImpl.builder() diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 46439162f..2dc396150 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -6,7 +6,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.ExponentialHistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; @@ -33,6 +32,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoubleExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; @@ -131,11 +131,9 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { .build(); private static final ExponentialHistogramData EXPONENTIAL_HISTOGRAM_DATA = - ExponentialHistogramDataImpl.builder() - .setAggregationTemporality(AggregationTemporality.CUMULATIVE) - .setPoints(Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)) - .build(); - + ImmutableExponentialHistogramData.create( + AggregationTemporality.CUMULATIVE, + Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)); private static final MetricData LONG_GAUGE_METRIC = MetricDataImpl.builder() .setResource(TestData.RESOURCE_FULL) From 232d42c9635ff2265301a2c86c8c7d34a98e6b9d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:01:05 +0200 Subject: [PATCH 167/209] Cleaning up custom metric gauge data --- .../mapping/metrics/MetricDataMapper.java | 16 +++---- .../metrics/models/data/GaugeDataImpl.java | 42 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 10 ++--- .../metrics/ProtoMetricsDataMapperTest.java | 7 ++-- .../serializers/MetricDataSerializerTest.java | 10 ++--- 5 files changed, 14 insertions(+), 71 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 2b93a9bb2..8eadf96c6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -12,7 +12,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; @@ -54,6 +53,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; @@ -601,19 +601,13 @@ private static ValueAtQuantile mapFromSummaryValueAtQuantileProto( } private static GaugeData mapLongGaugeToSdk(Gauge gauge) { - GaugeDataImpl.LongData.Builder gaugeData = GaugeDataImpl.LongData.builder(); - - gaugeData.setPoints(numberDataPointListToLongPointDataCollection(gauge.getDataPointsList())); - - return gaugeData.build(); + return ImmutableGaugeData.create( + numberDataPointListToLongPointDataCollection(gauge.getDataPointsList())); } private static GaugeData mapDoubleGaugeToSdk(Gauge gauge) { - GaugeDataImpl.DoubleData.Builder gaugeData = GaugeDataImpl.DoubleData.builder(); - - gaugeData.setPoints(numberDataPointListToDoublePointDataCollection(gauge.getDataPointsList())); - - return gaugeData.build(); + return ImmutableGaugeData.create( + numberDataPointListToDoublePointDataCollection(gauge.getDataPointsList())); } private static SumData mapLongSumToSdk(Sum sum) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java deleted file mode 100644 index ce63c57e2..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/GaugeDataImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; -import io.opentelemetry.sdk.metrics.data.DoublePointData; -import io.opentelemetry.sdk.metrics.data.GaugeData; -import io.opentelemetry.sdk.metrics.data.LongPointData; -import io.opentelemetry.sdk.metrics.data.PointData; - -public abstract class GaugeDataImpl implements GaugeData { - - @AutoValue - public abstract static class LongData extends GaugeDataImpl { - - public static Builder builder() { - return new AutoValue_GaugeDataImpl_LongData.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements DataBuilder { - public abstract LongData build(); - } - } - - @AutoValue - public abstract static class DoubleData extends GaugeDataImpl { - - public static Builder builder() { - return new AutoValue_GaugeDataImpl_DoubleData.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements DataBuilder { - public abstract DoubleData build(); - } - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 438049b36..d6b1f11a9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -8,7 +8,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; @@ -37,6 +36,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; @@ -63,14 +63,10 @@ class MetricDataMapperTest { 1L, 2L, TestData.ATTRIBUTES, 1.0, Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final GaugeData LONG_GAUGE_DATA = - GaugeDataImpl.LongData.builder() - .setPoints(Collections.singletonList(LONG_POINT_DATA)) - .build(); + ImmutableGaugeData.create(Collections.singletonList(LONG_POINT_DATA)); private static final GaugeData DOUBLE_GAUGE_DATA = - GaugeDataImpl.DoubleData.builder() - .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) - .build(); + ImmutableGaugeData.create(Collections.singletonList(DOUBLE_POINT_DATA)); private static final SumData LONG_SUM_DATA = SumDataImpl.LongData.builder() diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index 6f5fb494f..65d425fb9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -9,7 +9,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.proto.metrics.v1.MetricsData; @@ -20,6 +19,7 @@ import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricDataType; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import java.util.Arrays; @@ -37,9 +37,8 @@ class ProtoMetricsDataMapperTest { ImmutableLongPointData.create( 1L, 2L, TestData.ATTRIBUTES, 1L, Collections.singletonList(LONG_EXEMPLAR_DATA)); private static final GaugeData LONG_GAUGE_DATA = - GaugeDataImpl.LongData.builder() - .setPoints(Collections.singletonList(LONG_POINT_DATA)) - .build(); + ImmutableGaugeData.create(Collections.singletonList(LONG_POINT_DATA)); + private static final MetricData LONG_GAUGE_METRIC = MetricDataImpl.builder() .setResource(TestData.RESOURCE_FULL) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 2dc396150..05493c148 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -6,7 +6,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.GaugeDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; @@ -34,6 +33,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramBuckets; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; @@ -59,14 +59,10 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { 1L, 2L, TestData.ATTRIBUTES, 1.0, Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final GaugeData LONG_GAUGE_DATA = - GaugeDataImpl.LongData.builder() - .setPoints(Collections.singletonList(LONG_POINT_DATA)) - .build(); + ImmutableGaugeData.create(Collections.singletonList(LONG_POINT_DATA)); private static final GaugeData DOUBLE_GAUGE_DATA = - GaugeDataImpl.DoubleData.builder() - .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) - .build(); + ImmutableGaugeData.create(Collections.singletonList(DOUBLE_POINT_DATA)); private static final SumData LONG_SUM_DATA = SumDataImpl.LongData.builder() From 505f13492412289e4b1c53a693533e70804a9b23 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:02:39 +0200 Subject: [PATCH 168/209] Cleaning up custom metric histogram data --- .../mapping/metrics/MetricDataMapper.java | 11 +++----- .../models/data/HistogramDataImpl.java | 26 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 8 +++--- .../serializers/MetricDataSerializerTest.java | 9 +++---- 4 files changed, 9 insertions(+), 45 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 8eadf96c6..0573960a2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -12,7 +12,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; @@ -54,6 +53,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; @@ -489,14 +489,9 @@ private static SummaryData mapSummaryToSdk(Summary summary) { } private static HistogramData mapHistogramToSdk(Histogram histogram) { - HistogramDataImpl.Builder histogramData = HistogramDataImpl.builder(); - - histogramData.setPoints( + return ImmutableHistogramData.create( + mapAggregationTemporalityToSdk(histogram.getAggregationTemporality()), histogramDataPointListToHistogramPointDataCollection(histogram.getDataPointsList())); - histogramData.setAggregationTemporality( - mapAggregationTemporalityToSdk(histogram.getAggregationTemporality())); - - return histogramData.build(); } private static ExponentialHistogramData mapExponentialHistogramToSdk( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java deleted file mode 100644 index daa377245..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/HistogramDataImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; -import io.opentelemetry.sdk.metrics.data.HistogramData; -import io.opentelemetry.sdk.metrics.data.HistogramPointData; - -@AutoValue -public abstract class HistogramDataImpl implements HistogramData { - - public static Builder builder() { - return new AutoValue_HistogramDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder - implements DataBuilder, AggregationTemporalityBuilder { - public abstract HistogramDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index d6b1f11a9..708574f6c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -8,7 +8,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -37,6 +36,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; @@ -126,10 +126,8 @@ class MetricDataMapperTest { TestData.ATTRIBUTES, Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final HistogramData HISTOGRAM_DATA = - HistogramDataImpl.builder() - .setAggregationTemporality(AggregationTemporality.CUMULATIVE) - .setPoints(Collections.singletonList(HISTOGRAM_POINT_DATA)) - .build(); + ImmutableHistogramData.create( + AggregationTemporality.CUMULATIVE, Collections.singletonList(HISTOGRAM_POINT_DATA)); private static final ExponentialHistogramData EXPONENTIAL_HISTOGRAM_DATA = ImmutableExponentialHistogramData.create( diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 05493c148..c14292919 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -6,7 +6,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.HistogramDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; @@ -34,6 +33,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; @@ -121,11 +121,8 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { TestData.ATTRIBUTES, Collections.singletonList(DOUBLE_EXEMPLAR_DATA)); private static final HistogramData HISTOGRAM_DATA = - HistogramDataImpl.builder() - .setAggregationTemporality(AggregationTemporality.CUMULATIVE) - .setPoints(Collections.singletonList(HISTOGRAM_POINT_DATA)) - .build(); - + ImmutableHistogramData.create( + AggregationTemporality.CUMULATIVE, Collections.singletonList(HISTOGRAM_POINT_DATA)); private static final ExponentialHistogramData EXPONENTIAL_HISTOGRAM_DATA = ImmutableExponentialHistogramData.create( AggregationTemporality.CUMULATIVE, From 18a6e52d4767e247b1bd7effe9cc58a391b81beb Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:05:28 +0200 Subject: [PATCH 169/209] Cleaning up custom metric sum data --- .../mapping/metrics/MetricDataMapper.java | 26 ++++------ .../metrics/models/data/SumDataImpl.java | 49 ------------------- .../mapping/metrics/MetricDataMapperTest.java | 16 ++---- .../serializers/MetricDataSerializerTest.java | 16 ++---- 4 files changed, 19 insertions(+), 88 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 0573960a2..52b206cef 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -12,7 +12,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; @@ -57,6 +56,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; @@ -606,25 +606,17 @@ private static GaugeData mapDoubleGaugeToSdk(Gauge gauge) { } private static SumData mapLongSumToSdk(Sum sum) { - SumDataImpl.LongData.Builder sumData = SumDataImpl.LongData.builder(); - - sumData.setPoints(numberDataPointListToLongPointDataCollection(sum.getDataPointsList())); - sumData.setMonotonic(sum.getIsMonotonic()); - sumData.setAggregationTemporality( - mapAggregationTemporalityToSdk(sum.getAggregationTemporality())); - - return sumData.build(); + return ImmutableSumData.create( + sum.getIsMonotonic(), + mapAggregationTemporalityToSdk(sum.getAggregationTemporality()), + numberDataPointListToLongPointDataCollection(sum.getDataPointsList())); } private static SumData mapDoubleSumToSdk(Sum sum) { - SumDataImpl.DoubleData.Builder sumData = SumDataImpl.DoubleData.builder(); - - sumData.setPoints(numberDataPointListToDoublePointDataCollection(sum.getDataPointsList())); - sumData.setMonotonic(sum.getIsMonotonic()); - sumData.setAggregationTemporality( - mapAggregationTemporalityToSdk(sum.getAggregationTemporality())); - - return sumData.build(); + return ImmutableSumData.create( + sum.getIsMonotonic(), + mapAggregationTemporalityToSdk(sum.getAggregationTemporality()), + numberDataPointListToDoublePointDataCollection(sum.getDataPointsList())); } private static DoublePointData mapDoubleNumberDataPointToSdk(NumberDataPoint source) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java deleted file mode 100644 index 5c21a8af7..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SumDataImpl.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.AggregationTemporalityBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.MonotonicBuilder; -import io.opentelemetry.sdk.metrics.data.DoublePointData; -import io.opentelemetry.sdk.metrics.data.LongPointData; -import io.opentelemetry.sdk.metrics.data.PointData; -import io.opentelemetry.sdk.metrics.data.SumData; - -public abstract class SumDataImpl implements SumData { - @AutoValue - public abstract static class LongData extends SumDataImpl { - - public static Builder builder() { - return new AutoValue_SumDataImpl_LongData.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder - implements DataBuilder, - AggregationTemporalityBuilder, - MonotonicBuilder { - public abstract LongData build(); - } - } - - @AutoValue - public abstract static class DoubleData extends SumDataImpl { - - public static Builder builder() { - return new AutoValue_SumDataImpl_DoubleData.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder - implements DataBuilder, - AggregationTemporalityBuilder, - MonotonicBuilder { - public abstract DoubleData build(); - } - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 708574f6c..eca43d476 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -8,7 +8,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; @@ -40,6 +39,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; @@ -69,18 +69,12 @@ class MetricDataMapperTest { ImmutableGaugeData.create(Collections.singletonList(DOUBLE_POINT_DATA)); private static final SumData LONG_SUM_DATA = - SumDataImpl.LongData.builder() - .setMonotonic(true) - .setAggregationTemporality(AggregationTemporality.DELTA) - .setPoints(Collections.singletonList(LONG_POINT_DATA)) - .build(); + ImmutableSumData.create( + true, AggregationTemporality.DELTA, Collections.singletonList(LONG_POINT_DATA)); private static final SumData DOUBLE_SUM_DATA = - SumDataImpl.DoubleData.builder() - .setMonotonic(true) - .setAggregationTemporality(AggregationTemporality.DELTA) - .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) - .build(); + ImmutableSumData.create( + true, AggregationTemporality.DELTA, Collections.singletonList(DOUBLE_POINT_DATA)); private static final ValueAtQuantile VALUE_AT_QUANTILE = ImmutableValueAtQuantile.create(2.0, 1.0); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index c14292919..9b5f331f9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -6,7 +6,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SumDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; @@ -37,6 +36,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import java.util.Arrays; @@ -65,18 +65,12 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { ImmutableGaugeData.create(Collections.singletonList(DOUBLE_POINT_DATA)); private static final SumData LONG_SUM_DATA = - SumDataImpl.LongData.builder() - .setMonotonic(true) - .setAggregationTemporality(AggregationTemporality.DELTA) - .setPoints(Collections.singletonList(LONG_POINT_DATA)) - .build(); + ImmutableSumData.create( + true, AggregationTemporality.DELTA, Collections.singletonList(LONG_POINT_DATA)); private static final SumData DOUBLE_SUM_DATA = - SumDataImpl.DoubleData.builder() - .setMonotonic(true) - .setAggregationTemporality(AggregationTemporality.DELTA) - .setPoints(Collections.singletonList(DOUBLE_POINT_DATA)) - .build(); + ImmutableSumData.create( + true, AggregationTemporality.DELTA, Collections.singletonList(DOUBLE_POINT_DATA)); private static final ValueAtQuantile VALUE_AT_QUANTILE = ImmutableValueAtQuantile.create(2.0, 1.0); From d133723983a91ce66b763325bb4fcff1b5265e35 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:07:07 +0200 Subject: [PATCH 170/209] Cleaning up custom metric data types --- .../mapping/metrics/MetricDataMapper.java | 8 ++----- .../metrics/models/data/SummaryDataImpl.java | 24 ------------------- .../base/AggregationTemporalityBuilder.java | 15 ------------ .../metrics/models/data/base/DataBuilder.java | 16 ------------- .../models/data/base/MonotonicBuilder.java | 14 ----------- .../mapping/metrics/MetricDataMapperTest.java | 4 ++-- .../serializers/MetricDataSerializerTest.java | 4 ++-- 7 files changed, 6 insertions(+), 79 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 52b206cef..0c545a87a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -12,7 +12,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; import io.opentelemetry.proto.metrics.v1.Exemplar; @@ -57,6 +56,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; @@ -480,12 +480,8 @@ private static AggregationTemporality mapAggregationTemporalityToProto( } private static SummaryData mapSummaryToSdk(Summary summary) { - SummaryDataImpl.Builder summaryData = SummaryDataImpl.builder(); - - summaryData.setPoints( + return ImmutableSummaryData.create( summaryDataPointListToSummaryPointDataCollection(summary.getDataPointsList())); - - return summaryData.build(); } private static HistogramData mapHistogramToSdk(Histogram histogram) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java deleted file mode 100644 index c24e256ac..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/SummaryDataImpl.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base.DataBuilder; -import io.opentelemetry.sdk.metrics.data.SummaryData; -import io.opentelemetry.sdk.metrics.data.SummaryPointData; - -@AutoValue -public abstract class SummaryDataImpl implements SummaryData { - - public static Builder builder() { - return new AutoValue_SummaryDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder implements DataBuilder { - public abstract SummaryDataImpl build(); - } -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java deleted file mode 100644 index 0225dc755..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/AggregationTemporalityBuilder.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; - -import com.google.errorprone.annotations.CanIgnoreReturnValue; -import io.opentelemetry.sdk.metrics.data.AggregationTemporality; - -public interface AggregationTemporalityBuilder> { - - @CanIgnoreReturnValue - T setAggregationTemporality(AggregationTemporality value); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java deleted file mode 100644 index 55ac3d12b..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/DataBuilder.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; - -import com.google.errorprone.annotations.CanIgnoreReturnValue; -import io.opentelemetry.sdk.metrics.data.PointData; -import java.util.Collection; - -public interface DataBuilder

> { - - @CanIgnoreReturnValue - T setPoints(Collection

value); -} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java deleted file mode 100644 index 89898b213..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/data/base/MonotonicBuilder.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.base; - -import com.google.errorprone.annotations.CanIgnoreReturnValue; - -public interface MonotonicBuilder> { - - @CanIgnoreReturnValue - T setMonotonic(Boolean value); -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index eca43d476..65fb9099d 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -8,7 +8,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; @@ -40,6 +39,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import io.opentelemetry.sdk.resources.Resource; @@ -83,7 +83,7 @@ class MetricDataMapperTest { 1L, 2L, TestData.ATTRIBUTES, 1L, 2.0, Collections.singletonList(VALUE_AT_QUANTILE)); private static final SummaryData SUMMARY_DATA = - SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); + ImmutableSummaryData.create(Collections.singletonList(SUMMARY_POINT_DATA)); private static final HistogramPointData HISTOGRAM_POINT_DATA = ImmutableHistogramPointData.create( diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 9b5f331f9..6a1dbba37 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -6,7 +6,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.data.SummaryDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; @@ -37,6 +36,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile; import java.util.Arrays; @@ -79,7 +79,7 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { 1L, 2L, TestData.ATTRIBUTES, 1L, 2.0, Collections.singletonList(VALUE_AT_QUANTILE)); private static final SummaryData SUMMARY_DATA = - SummaryDataImpl.builder().setPoints(Collections.singletonList(SUMMARY_POINT_DATA)).build(); + ImmutableSummaryData.create(Collections.singletonList(SUMMARY_POINT_DATA)); private static final HistogramPointData HISTOGRAM_POINT_DATA = ImmutableHistogramPointData.create( From 38eba1d20f7b32c2c082db0e3b30d7d32cf2dc4e Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:22:38 +0200 Subject: [PATCH 171/209] Cleaning up custom metric impl --- .../mapping/metrics/MetricDataMapper.java | 113 ++++++++++------- .../metrics/models/MetricDataImpl.java | 40 ------ .../mapping/metrics/MetricDataMapperTest.java | 119 ++++++++---------- .../metrics/ProtoMetricsDataMapperTest.java | 67 +++++----- .../serializers/MetricDataSerializerTest.java | 119 ++++++++---------- 5 files changed, 197 insertions(+), 261 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 0c545a87a..6e98abbb7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -11,7 +11,6 @@ import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.AggregationTemporality; import io.opentelemetry.proto.metrics.v1.Exemplar; @@ -55,6 +54,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; @@ -79,16 +79,74 @@ public Metric mapToProto(MetricData source) { return metric.build(); } + @SuppressWarnings("unchecked") public MetricData mapToSdk(Metric source, Resource resource, InstrumentationScopeInfo scope) { - MetricDataImpl.Builder metricData = MetricDataImpl.builder(); - - metricData.setName(source.getName()); - metricData.setDescription(source.getDescription()); - metricData.setUnit(source.getUnit()); - - addDataToSdk(source, metricData, resource, scope); - - return metricData.build(); + switch (source.getDataCase()) { + case GAUGE: + DataWithType gaugeDataWithType = mapGaugeToSdk(source.getGauge()); + if (gaugeDataWithType.type == MetricDataType.DOUBLE_GAUGE) { + return ImmutableMetricData.createDoubleGauge( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + (GaugeData) gaugeDataWithType.data); + } else { + return ImmutableMetricData.createLongGauge( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + (GaugeData) gaugeDataWithType.data); + } + case SUM: + DataWithType sumDataWithType = mapSumToSdk(source.getSum()); + if (sumDataWithType.type == MetricDataType.DOUBLE_SUM) { + return ImmutableMetricData.createDoubleSum( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + (SumData) sumDataWithType.data); + } else { + return ImmutableMetricData.createLongSum( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + (SumData) sumDataWithType.data); + } + case SUMMARY: + return ImmutableMetricData.createDoubleSummary( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + mapSummaryToSdk(source.getSummary())); + case HISTOGRAM: + return ImmutableMetricData.createDoubleHistogram( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + mapHistogramToSdk(source.getHistogram())); + case EXPONENTIAL_HISTOGRAM: + return ImmutableMetricData.createExponentialHistogram( + resource, + scope, + source.getName(), + source.getDescription(), + source.getUnit(), + mapExponentialHistogramToSdk(source.getExponentialHistogram())); + default: + throw new UnsupportedOperationException(); + } } @SuppressWarnings("unchecked") @@ -119,41 +177,6 @@ private static void addDataToProto(MetricData source, Metric.Builder target) { } } - private static void addDataToSdk( - Metric source, - MetricDataImpl.Builder target, - Resource resource, - InstrumentationScopeInfo scope) { - target.setResource(resource); - target.setInstrumentationScopeInfo(scope); - switch (source.getDataCase()) { - case GAUGE: - DataWithType gaugeDataWithType = mapGaugeToSdk(source.getGauge()); - target.setData(gaugeDataWithType.data); - target.setType(gaugeDataWithType.type); - break; - case SUM: - DataWithType sumDataWithType = mapSumToSdk(source.getSum()); - target.setData(sumDataWithType.data); - target.setType(sumDataWithType.type); - break; - case SUMMARY: - target.setData(mapSummaryToSdk(source.getSummary())); - target.setType(MetricDataType.SUMMARY); - break; - case HISTOGRAM: - target.setData(mapHistogramToSdk(source.getHistogram())); - target.setType(MetricDataType.HISTOGRAM); - break; - case EXPONENTIAL_HISTOGRAM: - target.setData(mapExponentialHistogramToSdk(source.getExponentialHistogram())); - target.setType(MetricDataType.EXPONENTIAL_HISTOGRAM); - break; - default: - throw new UnsupportedOperationException(); - } - } - private static DataWithType mapGaugeToSdk(Gauge gauge) { if (gauge.getDataPointsCount() > 0) { NumberDataPoint dataPoint = gauge.getDataPoints(0); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java deleted file mode 100644 index ed0339f19..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/models/MetricDataImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.metrics.data.Data; -import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.metrics.data.MetricDataType; -import io.opentelemetry.sdk.resources.Resource; - -@AutoValue -public abstract class MetricDataImpl implements MetricData { - - public static Builder builder() { - return new AutoValue_MetricDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder { - public abstract Builder setResource(Resource value); - - public abstract Builder setInstrumentationScopeInfo(InstrumentationScopeInfo value); - - public abstract Builder setName(String value); - - public abstract Builder setDescription(String value); - - public abstract Builder setUnit(String value); - - public abstract Builder setType(MetricDataType value); - - public abstract Builder setData(Data value); - - public abstract MetricDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 65fb9099d..65ad8112c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -7,7 +7,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; @@ -23,7 +22,6 @@ import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.metrics.data.MetricDataType; import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; @@ -38,6 +36,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; @@ -129,81 +128,63 @@ class MetricDataMapperTest { Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)); private static final MetricData LONG_GAUGE_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Long gauge name") - .setDescription("Long gauge description") - .setUnit("ms") - .setType(MetricDataType.LONG_GAUGE) - .setData(LONG_GAUGE_DATA) - .build(); + ImmutableMetricData.createLongGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Long gauge name", + "Long gauge description", + "ms", + LONG_GAUGE_DATA); private static final MetricData DOUBLE_GAUGE_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Double gauge name") - .setDescription("Double gauge description") - .setUnit("ms") - .setType(MetricDataType.DOUBLE_GAUGE) - .setData(DOUBLE_GAUGE_DATA) - .build(); - + ImmutableMetricData.createDoubleGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Double gauge name", + "Double gauge description", + "ms", + DOUBLE_GAUGE_DATA); private static final MetricData LONG_SUM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Long sum name") - .setDescription("Long sum description") - .setUnit("ms") - .setType(MetricDataType.LONG_SUM) - .setData(LONG_SUM_DATA) - .build(); - + ImmutableMetricData.createLongSum( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Long sum name", + "Long sum description", + "ms", + LONG_SUM_DATA); private static final MetricData DOUBLE_SUM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Double sum name") - .setDescription("Double sum description") - .setUnit("ms") - .setType(MetricDataType.DOUBLE_SUM) - .setData(DOUBLE_SUM_DATA) - .build(); - + ImmutableMetricData.createDoubleSum( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Double sum name", + "Double sum description", + "ms", + DOUBLE_SUM_DATA); private static final MetricData SUMMARY_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Summary name") - .setDescription("Summary description") - .setUnit("ms") - .setType(MetricDataType.SUMMARY) - .setData(SUMMARY_DATA) - .build(); + ImmutableMetricData.createDoubleSummary( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Summary name", + "Summary description", + "ms", + SUMMARY_DATA); private static final MetricData HISTOGRAM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Histogram name") - .setDescription("Histogram description") - .setUnit("ms") - .setType(MetricDataType.HISTOGRAM) - .setData(HISTOGRAM_DATA) - .build(); - + ImmutableMetricData.createDoubleHistogram( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Histogram name", + "Histogram description", + "ms", + HISTOGRAM_DATA); private static final MetricData EXPONENTIAL_HISTOGRAM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Exponential histogram name") - .setDescription("Exponential histogram description") - .setUnit("ms") - .setType(MetricDataType.EXPONENTIAL_HISTOGRAM) - .setData(EXPONENTIAL_HISTOGRAM_DATA) - .build(); + ImmutableMetricData.createExponentialHistogram( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Exponential histogram name", + "Exponential histogram description", + "ms", + EXPONENTIAL_HISTOGRAM_DATA); @Test public void verifyLongGaugeMapping() { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index 65d425fb9..5916fb2ff 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -8,7 +8,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.metrics.v1.Metric; import io.opentelemetry.proto.metrics.v1.MetricsData; @@ -18,10 +17,10 @@ import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.metrics.data.MetricDataType; import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -40,48 +39,40 @@ class ProtoMetricsDataMapperTest { ImmutableGaugeData.create(Collections.singletonList(LONG_POINT_DATA)); private static final MetricData LONG_GAUGE_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Long gauge name") - .setDescription("Long gauge description") - .setUnit("ms") - .setType(MetricDataType.LONG_GAUGE) - .setData(LONG_GAUGE_DATA) - .build(); + ImmutableMetricData.createLongGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Long gauge name", + "Long gauge description", + "ms", + LONG_GAUGE_DATA); private static final MetricData OTHER_LONG_GAUGE_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Long gauge name") - .setDescription("Long gauge description") - .setUnit("ms") - .setType(MetricDataType.LONG_GAUGE) - .setData(LONG_GAUGE_DATA) - .build(); + ImmutableMetricData.createLongGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Long gauge name", + "Long gauge description", + "ms", + LONG_GAUGE_DATA); private static final MetricData LONG_GAUGE_METRIC_WITH_DIFFERENT_SCOPE_SAME_RESOURCE = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) - .setName("Long gauge name") - .setDescription("Long gauge description") - .setUnit("ms") - .setType(MetricDataType.LONG_GAUGE) - .setData(LONG_GAUGE_DATA) - .build(); + ImmutableMetricData.createLongGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION, + "Long gauge name", + "Long gauge description", + "ms", + LONG_GAUGE_DATA); private static final MetricData LONG_GAUGE_METRIC_WITH_DIFFERENT_RESOURCE = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_WITHOUT_SCHEMA_URL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION) - .setName("Long gauge name") - .setDescription("Long gauge description") - .setUnit("ms") - .setType(MetricDataType.LONG_GAUGE) - .setData(LONG_GAUGE_DATA) - .build(); + ImmutableMetricData.createLongGauge( + TestData.RESOURCE_WITHOUT_SCHEMA_URL, + TestData.INSTRUMENTATION_SCOPE_INFO_WITHOUT_VERSION, + "Long gauge name", + "Long gauge description", + "ms", + LONG_GAUGE_DATA); @Test public void verifyConversionDataStructure() { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java index 6a1dbba37..f2d2bcc85 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializerTest.java @@ -5,7 +5,6 @@ package io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.metrics.models.MetricDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; @@ -20,7 +19,6 @@ import io.opentelemetry.sdk.metrics.data.LongExemplarData; import io.opentelemetry.sdk.metrics.data.LongPointData; import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.metrics.data.MetricDataType; import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryPointData; @@ -35,6 +33,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongExemplarData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData; +import io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; @@ -122,81 +121,63 @@ class MetricDataSerializerTest extends BaseSignalSerializerTest { AggregationTemporality.CUMULATIVE, Collections.singletonList(EXPONENTIAL_HISTOGRAM_POINT_DATA)); private static final MetricData LONG_GAUGE_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Long gauge name") - .setDescription("Long gauge description") - .setUnit("ms") - .setType(MetricDataType.LONG_GAUGE) - .setData(LONG_GAUGE_DATA) - .build(); + ImmutableMetricData.createLongGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Long gauge name", + "Long gauge description", + "ms", + LONG_GAUGE_DATA); private static final MetricData DOUBLE_GAUGE_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Double gauge name") - .setDescription("Double gauge description") - .setUnit("ms") - .setType(MetricDataType.DOUBLE_GAUGE) - .setData(DOUBLE_GAUGE_DATA) - .build(); - + ImmutableMetricData.createDoubleGauge( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Double gauge name", + "Double gauge description", + "ms", + DOUBLE_GAUGE_DATA); private static final MetricData LONG_SUM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Long sum name") - .setDescription("Long sum description") - .setUnit("ms") - .setType(MetricDataType.LONG_SUM) - .setData(LONG_SUM_DATA) - .build(); - + ImmutableMetricData.createLongSum( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Long sum name", + "Long sum description", + "ms", + LONG_SUM_DATA); private static final MetricData DOUBLE_SUM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Double sum name") - .setDescription("Double sum description") - .setUnit("ms") - .setType(MetricDataType.DOUBLE_SUM) - .setData(DOUBLE_SUM_DATA) - .build(); - + ImmutableMetricData.createDoubleSum( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Double sum name", + "Double sum description", + "ms", + DOUBLE_SUM_DATA); private static final MetricData SUMMARY_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Summary name") - .setDescription("Summary description") - .setUnit("ms") - .setType(MetricDataType.SUMMARY) - .setData(SUMMARY_DATA) - .build(); + ImmutableMetricData.createDoubleSummary( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Summary name", + "Summary description", + "ms", + SUMMARY_DATA); private static final MetricData HISTOGRAM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Histogram name") - .setDescription("Histogram description") - .setUnit("ms") - .setType(MetricDataType.HISTOGRAM) - .setData(HISTOGRAM_DATA) - .build(); - + ImmutableMetricData.createDoubleHistogram( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Histogram name", + "Histogram description", + "ms", + HISTOGRAM_DATA); private static final MetricData EXPONENTIAL_HISTOGRAM_METRIC = - MetricDataImpl.builder() - .setResource(TestData.RESOURCE_FULL) - .setInstrumentationScopeInfo(TestData.INSTRUMENTATION_SCOPE_INFO_FULL) - .setName("Exponential histogram name") - .setDescription("Exponential histogram description") - .setUnit("ms") - .setType(MetricDataType.EXPONENTIAL_HISTOGRAM) - .setData(EXPONENTIAL_HISTOGRAM_DATA) - .build(); + ImmutableMetricData.createExponentialHistogram( + TestData.RESOURCE_FULL, + TestData.INSTRUMENTATION_SCOPE_INFO_FULL, + "Exponential histogram name", + "Exponential histogram description", + "ms", + EXPONENTIAL_HISTOGRAM_DATA); @Test public void verifySerialization() { From 68591f3c82530a91da7c9132289a30de1851cd55 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:35:12 +0200 Subject: [PATCH 172/209] Removing mapstruct from SpanDataMapper --- .../mapping/spans/SpanDataMapper.java | 307 ++++++++++++------ 1 file changed, 208 insertions(+), 99 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index 27a9d0d62..1c7c2b343 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -25,64 +25,43 @@ import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; +import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; -import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Context; -import org.mapstruct.EnumMapping; -import org.mapstruct.InheritInverseConfiguration; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.MappingConstants; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; -import org.mapstruct.ValueMapping; - -@Mapper( - uses = ByteStringMapper.class, - collectionMappingStrategy = CollectionMappingStrategy.TARGET_IMMUTABLE, - unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class SpanDataMapper { - - public static final SpanDataMapper INSTANCE = new SpanDataMapperImpl(); - - @Mapping(target = "startTimeUnixNano", source = "startEpochNanos") - @Mapping(target = "endTimeUnixNano", source = "endEpochNanos") - @Mapping(target = "eventsList", source = "events") - @Mapping(target = "linksList", source = "links") - public abstract Span mapToProto(SpanData source); - - @InheritInverseConfiguration - @BeanMapping(resultType = SpanDataImpl.class) - public abstract SpanData mapToSdk( - Span source, - @Context Resource resource, - @Context InstrumentationScopeInfo instrumentationScopeInfo); - @Mapping(target = "timeUnixNano", source = "epochNanos") - protected abstract Span.Event eventDataToProto(EventData source); +public final class SpanDataMapper { - protected Span.Link linkDataToProto(LinkData source) { - Span.Link.Builder builder = Span.Link.newBuilder(); - SpanContext spanContext = source.getSpanContext(); - builder.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); - builder.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); - builder.addAllAttributes(attributesToProto(source.getAttributes())); - builder.setDroppedAttributesCount( - source.getTotalAttributeCount() - source.getAttributes().size()); - builder.setTraceState(encodeTraceState(spanContext.getTraceState())); + public static final SpanDataMapper INSTANCE = new SpanDataMapper(); + private final ByteStringMapper byteStringMapper = ByteStringMapper.INSTANCE; - return builder.build(); - } + public Span mapToProto(SpanData source) { + Span.Builder span = Span.newBuilder(); + + span.setStartTimeUnixNano(source.getStartEpochNanos()); + span.setEndTimeUnixNano(source.getEndEpochNanos()); + if (source.getEvents() != null) { + for (EventData event : source.getEvents()) { + span.addEvents(eventDataToProto(event)); + } + } + if (source.getLinks() != null) { + for (LinkData link : source.getLinks()) { + span.addLinks(linkDataToProto(link)); + } + } + span.setTraceId(byteStringMapper.stringToProto(source.getTraceId())); + span.setSpanId(byteStringMapper.stringToProto(source.getSpanId())); + span.setParentSpanId(byteStringMapper.stringToProto(source.getParentSpanId())); + span.setName(source.getName()); + span.setKind(mapSpanKindToProto(source.getKind())); + span.setStatus(statusDataToProto(source.getStatus())); - @Mapping(target = "message", source = "description") - @Mapping(target = "code", source = "statusCode") - protected abstract Status statusDataToProto(StatusData source); + addSpanProtoExtras(source, span); + + return span.build(); + } - @AfterMapping - protected void addSpanProtoExtras(SpanData source, @MappingTarget Span.Builder target) { + private static void addSpanProtoExtras(SpanData source, Span.Builder target) { target.addAllAttributes(attributesToProto(source.getAttributes())); target.setDroppedAttributesCount( source.getTotalAttributeCount() - source.getAttributes().size()); @@ -91,55 +70,30 @@ protected void addSpanProtoExtras(SpanData source, @MappingTarget Span.Builder t target.setTraceState(encodeTraceState(source.getSpanContext().getTraceState())); } - @AfterMapping - protected void addEventProtoExtras(EventData source, @MappingTarget Span.Event.Builder target) { - target.addAllAttributes(attributesToProto(source.getAttributes())); - } + public SpanData mapToSdk( + Span source, Resource resource, InstrumentationScopeInfo instrumentationScopeInfo) { + SpanDataImpl.Builder spanData = SpanDataImpl.builder(); - @EnumMapping( - nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, - configuration = "SPAN_KIND_") - protected abstract Span.SpanKind mapSpanKindToProto(SpanKind source); + spanData.setStartEpochNanos(source.getStartTimeUnixNano()); + spanData.setEndEpochNanos(source.getEndTimeUnixNano()); + spanData.setEvents(eventListToEventDataList(source.getEventsList())); + spanData.setLinks(linkListToLinkDataList(source.getLinksList())); + spanData.setName(source.getName()); + spanData.setKind(mapSpanKindToSdk(source.getKind())); + if (source.hasStatus()) { + spanData.setStatus(mapStatusDataToSdk(source.getStatus())); + } - @EnumMapping( - nameTransformationStrategy = MappingConstants.PREFIX_TRANSFORMATION, - configuration = "STATUS_CODE_") - protected abstract Status.StatusCode mapStatusCodeToProto(StatusCode source); + addSpanDataExtras(source, spanData, resource, instrumentationScopeInfo); - // FROM PROTO - protected StatusData mapStatusDataToSdk(Status source) { - return StatusData.create(getStatusCode(source.getCodeValue()), source.getMessage()); + return spanData.build(); } - @InheritInverseConfiguration - @BeanMapping(resultType = EventDataImpl.class) - protected abstract EventData eventDataToSdk(Span.Event source); - - protected LinkData linkDataToSdk(Span.Link source) { - Attributes attributes = protoToAttributes(source.getAttributesList()); - int totalAttrCount = source.getDroppedAttributesCount() + attributes.size(); - SpanContext spanContext = - SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), - TraceFlags.getSampled(), - decodeTraceState(source.getTraceState())); - return LinkData.create(spanContext, attributes, totalAttrCount); - } - - @AfterMapping - protected void addEventSdkExtras(Span.Event source, @MappingTarget EventDataImpl.Builder target) { - Attributes attributes = protoToAttributes(source.getAttributesList()); - target.setAttributes(attributes); - target.setTotalAttributeCount(attributes.size() + source.getDroppedAttributesCount()); - } - - @AfterMapping - protected void addSpanDataExtras( + private static void addSpanDataExtras( Span source, - @MappingTarget SpanDataImpl.Builder target, - @Context Resource resource, - @Context InstrumentationScopeInfo instrumentationScopeInfo) { + SpanDataImpl.Builder target, + Resource resource, + InstrumentationScopeInfo instrumentationScopeInfo) { Attributes attributes = protoToAttributes(source.getAttributesList()); target.setAttributes(attributes); target.setResource(resource); @@ -164,11 +118,153 @@ protected void addSpanDataExtras( calculateRecordedItems(source.getDroppedLinksCount(), source.getLinksCount())); } - @EnumMapping( - nameTransformationStrategy = MappingConstants.STRIP_PREFIX_TRANSFORMATION, - configuration = "SPAN_KIND_") - @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) - protected abstract SpanKind mapSpanKindToSdk(Span.SpanKind source); + private static StatusData mapStatusDataToSdk(Status source) { + return StatusData.create(getStatusCode(source.getCodeValue()), source.getMessage()); + } + + private static Span.Event eventDataToProto(EventData source) { + Span.Event.Builder event = Span.Event.newBuilder(); + + event.setTimeUnixNano(source.getEpochNanos()); + event.setName(source.getName()); + event.setDroppedAttributesCount(source.getDroppedAttributesCount()); + + addEventProtoExtras(source, event); + + return event.build(); + } + + private static void addEventProtoExtras(EventData source, Span.Event.Builder target) { + target.addAllAttributes(attributesToProto(source.getAttributes())); + } + + private static Status statusDataToProto(StatusData source) { + Status.Builder status = Status.newBuilder(); + + status.setMessage(source.getDescription()); + status.setCode(mapStatusCodeToProto(source.getStatusCode())); + + return status.build(); + } + + private static Span.SpanKind mapSpanKindToProto(SpanKind source) { + Span.SpanKind spanKind; + + switch (source) { + case INTERNAL: + spanKind = Span.SpanKind.SPAN_KIND_INTERNAL; + break; + case SERVER: + spanKind = Span.SpanKind.SPAN_KIND_SERVER; + break; + case CLIENT: + spanKind = Span.SpanKind.SPAN_KIND_CLIENT; + break; + case PRODUCER: + spanKind = Span.SpanKind.SPAN_KIND_PRODUCER; + break; + case CONSUMER: + spanKind = Span.SpanKind.SPAN_KIND_CONSUMER; + break; + default: + throw new IllegalArgumentException("Unexpected enum constant: " + source); + } + + return spanKind; + } + + private static Status.StatusCode mapStatusCodeToProto(StatusCode source) { + Status.StatusCode statusCode; + + switch (source) { + case UNSET: + statusCode = Status.StatusCode.STATUS_CODE_UNSET; + break; + case OK: + statusCode = Status.StatusCode.STATUS_CODE_OK; + break; + case ERROR: + statusCode = Status.StatusCode.STATUS_CODE_ERROR; + break; + default: + throw new IllegalArgumentException("Unexpected enum constant: " + source); + } + + return statusCode; + } + + private static EventData eventDataToSdk(Span.Event source) { + EventDataImpl.Builder eventData = EventDataImpl.builder(); + + eventData.setEpochNanos(source.getTimeUnixNano()); + eventData.setName(source.getName()); + + addEventSdkExtras(source, eventData); + + return eventData.build(); + } + + private static void addEventSdkExtras(Span.Event source, EventDataImpl.Builder target) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + target.setAttributes(attributes); + target.setTotalAttributeCount(attributes.size() + source.getDroppedAttributesCount()); + } + + private static SpanKind mapSpanKindToSdk(Span.SpanKind source) { + SpanKind spanKind; + + switch (source) { + case SPAN_KIND_INTERNAL: + spanKind = SpanKind.INTERNAL; + break; + case SPAN_KIND_SERVER: + spanKind = SpanKind.SERVER; + break; + case SPAN_KIND_CLIENT: + spanKind = SpanKind.CLIENT; + break; + case SPAN_KIND_PRODUCER: + spanKind = SpanKind.PRODUCER; + break; + case SPAN_KIND_CONSUMER: + spanKind = SpanKind.CONSUMER; + break; + default: + throw new IllegalArgumentException("Unexpected enum constant: " + source); + } + + return spanKind; + } + + private static List eventListToEventDataList(List list) { + List result = new ArrayList<>(list.size()); + for (Span.Event event : list) { + result.add(eventDataToSdk(event)); + } + + return result; + } + + private static List linkListToLinkDataList(List list) { + List result = new ArrayList<>(list.size()); + for (Span.Link link : list) { + result.add(linkDataToSdk(link)); + } + + return result; + } + + private static LinkData linkDataToSdk(Span.Link source) { + Attributes attributes = protoToAttributes(source.getAttributesList()); + int totalAttrCount = source.getDroppedAttributesCount() + attributes.size(); + SpanContext spanContext = + SpanContext.create( + ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), + ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + TraceFlags.getSampled(), + decodeTraceState(source.getTraceState())); + return LinkData.create(spanContext, attributes, totalAttrCount); + } private static int calculateRecordedItems(int droppedCount, int itemsCount) { return droppedCount + itemsCount; @@ -210,4 +306,17 @@ private static TraceState decodeTraceState(@Nullable String source) { ? TraceState.getDefault() : W3CTraceContextEncoding.decodeTraceState(source); } + + private static Span.Link linkDataToProto(LinkData source) { + Span.Link.Builder builder = Span.Link.newBuilder(); + SpanContext spanContext = source.getSpanContext(); + builder.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + builder.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + builder.addAllAttributes(attributesToProto(source.getAttributes())); + builder.setDroppedAttributesCount( + source.getTotalAttributeCount() - source.getAttributes().size()); + builder.setTraceState(encodeTraceState(spanContext.getTraceState())); + + return builder.build(); + } } From 5198591ff94c6252aa52551e5992bfcdb666b679 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:39:11 +0200 Subject: [PATCH 173/209] Removing mapstruct from LogRecordDataMapper --- .../mapping/logs/LogRecordDataMapper.java | 88 +++++++++++-------- 1 file changed, 50 insertions(+), 38 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java index 224306849..2e5e1090e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java @@ -20,40 +20,36 @@ import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; -import org.mapstruct.AfterMapping; -import org.mapstruct.BeanMapping; import org.mapstruct.Context; -import org.mapstruct.InheritInverseConfiguration; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; -import org.mapstruct.NullValueCheckStrategy; -import org.mapstruct.ReportingPolicy; - -@Mapper( - uses = AttributesMapper.class, - unmappedTargetPolicy = ReportingPolicy.IGNORE, - nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) -public abstract class LogRecordDataMapper { - - public static final LogRecordDataMapper INSTANCE = new LogRecordDataMapperImpl(); - - @Mapping(target = "droppedAttributesCount", ignore = true) - @Mapping(target = "timeUnixNano", source = "timestampEpochNanos") - @Mapping(target = "observedTimeUnixNano", source = "observedTimestampEpochNanos") - @Mapping(target = "severityNumber", source = "severity") - @Mapping( - target = "flags", - expression = "java((int) source.getSpanContext().getTraceFlags().asByte())") - public abstract LogRecord mapToProto(LogRecordData source); - - @InheritInverseConfiguration - @BeanMapping(resultType = LogRecordDataImpl.class) - public abstract LogRecordData mapToSdk( - LogRecord source, @Context Resource resource, @Context InstrumentationScopeInfo scopeInfo); - - @AfterMapping - protected void addExtrasToProtoBuilder( + +public final class LogRecordDataMapper { + + public static final LogRecordDataMapper INSTANCE = new LogRecordDataMapper(); + + public LogRecord mapToProto(LogRecordData source) { + LogRecord.Builder logRecord = LogRecord.newBuilder(); + + logRecord.setTimeUnixNano(source.getTimestampEpochNanos()); + logRecord.setObservedTimeUnixNano(source.getObservedTimestampEpochNanos()); + if (source.getSeverity() != null) { + logRecord.setSeverityNumber(severityToProto(source.getSeverity())); + } + if (source.getSeverityText() != null) { + logRecord.setSeverityText(source.getSeverityText()); + } + if (source.getBody() != null) { + logRecord.setBody(bodyToAnyValue(source.getBody())); + } + + logRecord.setFlags(source.getSpanContext().getTraceFlags().asByte()); + + addExtrasToProtoBuilder(source, logRecord); + + return logRecord.build(); + } + + private static void addExtrasToProtoBuilder( LogRecordData source, @MappingTarget LogRecord.Builder target) { target.addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(source.getAttributes())); SpanContext spanContext = source.getSpanContext(); @@ -63,8 +59,24 @@ protected void addExtrasToProtoBuilder( source.getTotalAttributeCount() - source.getAttributes().size()); } - @AfterMapping - protected void addExtrasToSdkItemBuilder( + public LogRecordData mapToSdk( + LogRecord source, Resource resource, InstrumentationScopeInfo scopeInfo) { + LogRecordDataImpl.Builder logRecordData = LogRecordDataImpl.builder(); + + logRecordData.setTimestampEpochNanos(source.getTimeUnixNano()); + logRecordData.setObservedTimestampEpochNanos(source.getObservedTimeUnixNano()); + logRecordData.setSeverity(severityNumberToSdk(source.getSeverityNumber())); + logRecordData.setSeverityText(source.getSeverityText()); + if (source.hasBody()) { + logRecordData.setBody(anyValueToBody(source.getBody())); + } + + addExtrasToSdkItemBuilder(source, logRecordData, resource, scopeInfo); + + return logRecordData.build(); + } + + private static void addExtrasToSdkItemBuilder( LogRecord source, @MappingTarget LogRecordDataImpl.Builder target, @Context Resource resource, @@ -82,15 +94,15 @@ protected void addExtrasToSdkItemBuilder( target.setInstrumentationScopeInfo(scopeInfo); } - protected AnyValue bodyToAnyValue(Body body) { + private static AnyValue bodyToAnyValue(Body body) { return AnyValue.newBuilder().setStringValue(body.asString()).build(); } - protected SeverityNumber severityToProto(Severity severity) { + private static SeverityNumber severityToProto(Severity severity) { return SeverityNumber.forNumber(severity.getSeverityNumber()); } - protected Body anyValueToBody(AnyValue source) { + private static Body anyValueToBody(AnyValue source) { if (source.hasStringValue()) { return Body.string(source.getStringValue()); } else { @@ -98,7 +110,7 @@ protected Body anyValueToBody(AnyValue source) { } } - protected Severity severityNumberToSdk(SeverityNumber source) { + private static Severity severityNumberToSdk(SeverityNumber source) { for (Severity value : Severity.values()) { if (value.getSeverityNumber() == source.getNumber()) { return value; From 815dbd6b597c284fe4b9c193c7840baec53dba39 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:39:37 +0200 Subject: [PATCH 174/209] Removing mapstruct from LogRecordDataMapper --- .../mapping/logs/LogRecordDataMapper.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java index 2e5e1090e..e365bec0d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java @@ -20,8 +20,6 @@ import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.resources.Resource; -import org.mapstruct.Context; -import org.mapstruct.MappingTarget; public final class LogRecordDataMapper { @@ -49,8 +47,7 @@ public LogRecord mapToProto(LogRecordData source) { return logRecord.build(); } - private static void addExtrasToProtoBuilder( - LogRecordData source, @MappingTarget LogRecord.Builder target) { + private static void addExtrasToProtoBuilder(LogRecordData source, LogRecord.Builder target) { target.addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(source.getAttributes())); SpanContext spanContext = source.getSpanContext(); target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); @@ -78,9 +75,9 @@ public LogRecordData mapToSdk( private static void addExtrasToSdkItemBuilder( LogRecord source, - @MappingTarget LogRecordDataImpl.Builder target, - @Context Resource resource, - @Context InstrumentationScopeInfo scopeInfo) { + LogRecordDataImpl.Builder target, + Resource resource, + InstrumentationScopeInfo scopeInfo) { Attributes attributes = AttributesMapper.INSTANCE.protoToAttributes(source.getAttributesList()); target.setAttributes(attributes); target.setSpanContext( From 9bea0a4712d46bd45a384828479912371fca5b0b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:42:27 +0200 Subject: [PATCH 175/209] Removing custom span event data --- .../mapping/spans/SpanDataMapper.java | 19 +++--------- .../spans/models/data/EventDataImpl.java | 31 ------------------- .../spans/ProtoSpansDataMapperTest.java | 8 +---- .../mapping/spans/SpanDataMapperTest.java | 8 +---- .../serializers/SpanDataSerializerTest.java | 8 +---- 5 files changed, 8 insertions(+), 66 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index 1c7c2b343..ee55601fe 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -15,7 +15,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.ByteStringMapper; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.trace.v1.Span; import io.opentelemetry.proto.trace.v1.Status; @@ -194,20 +193,12 @@ private static Status.StatusCode mapStatusCodeToProto(StatusCode source) { } private static EventData eventDataToSdk(Span.Event source) { - EventDataImpl.Builder eventData = EventDataImpl.builder(); - - eventData.setEpochNanos(source.getTimeUnixNano()); - eventData.setName(source.getName()); - - addEventSdkExtras(source, eventData); - - return eventData.build(); - } - - private static void addEventSdkExtras(Span.Event source, EventDataImpl.Builder target) { Attributes attributes = protoToAttributes(source.getAttributesList()); - target.setAttributes(attributes); - target.setTotalAttributeCount(attributes.size() + source.getDroppedAttributesCount()); + return EventData.create( + source.getTimeUnixNano(), + source.getName(), + attributes, + attributes.size() + source.getDroppedAttributesCount()); } private static SpanKind mapSpanKindToSdk(Span.SpanKind source) { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java deleted file mode 100644 index 522d3483e..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/models/data/EventDataImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data; - -import com.google.auto.value.AutoValue; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.sdk.trace.data.EventData; - -@AutoValue -public abstract class EventDataImpl implements EventData { - - public static Builder builder() { - return new AutoValue_EventDataImpl.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder { - public abstract Builder setName(String value); - - public abstract Builder setAttributes(Attributes value); - - public abstract Builder setEpochNanos(Long value); - - public abstract Builder setTotalAttributeCount(Integer value); - - public abstract EventDataImpl build(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java index 8754e8ef2..dca0419cd 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java @@ -10,7 +10,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.trace.v1.ResourceSpans; import io.opentelemetry.proto.trace.v1.ScopeSpans; @@ -29,12 +28,7 @@ class ProtoSpansDataMapperTest { private static final EventData EVENT_DATA = - EventDataImpl.builder() - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(1L) - .setName("Event name") - .setTotalAttributeCount(10) - .build(); + EventData.create(1L, "Event name", TestData.ATTRIBUTES, 10); private static final LinkData LINK_DATA = LinkData.create(TestData.SPAN_CONTEXT, TestData.ATTRIBUTES, 20); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java index ba9fd8699..06215d098 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java @@ -9,7 +9,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.proto.trace.v1.Span; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; @@ -25,12 +24,7 @@ class SpanDataMapperTest { private static final EventData EVENT_DATA = - EventDataImpl.builder() - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(1L) - .setName("Event name") - .setTotalAttributeCount(10) - .build(); + EventData.create(1L, "Event name", TestData.ATTRIBUTES, 10); private static final LinkData LINK_DATA = LinkData.create(TestData.SPAN_CONTEXT, TestData.ATTRIBUTES, 20); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java index 677bbac11..a12155ae0 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializerTest.java @@ -7,7 +7,6 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.SpanDataImpl; -import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.models.data.EventDataImpl; import io.opentelemetry.contrib.disk.buffering.testutils.BaseSignalSerializerTest; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.trace.data.EventData; @@ -21,12 +20,7 @@ class SpanDataSerializerTest extends BaseSignalSerializerTest { private static final EventData EVENT_DATA = - EventDataImpl.builder() - .setAttributes(TestData.ATTRIBUTES) - .setEpochNanos(1L) - .setName("Event name") - .setTotalAttributeCount(10) - .build(); + EventData.create(1L, "Event name", TestData.ATTRIBUTES, 10); private static final LinkData LINK_DATA = LinkData.create(TestData.SPAN_CONTEXT, TestData.ATTRIBUTES, 20); From f143f8fe7fad76300000c503d340907923bb8a33 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:46:38 +0200 Subject: [PATCH 176/209] Changes from Gregor --- .../buffering/exporters/IntegrationTest.java | 48 +++++-------------- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index 5b38c9c1e..24b85eefe 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -32,6 +32,7 @@ import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -85,21 +86,7 @@ public void verifySpansIntegration() throws IOException { Span span = tracer.spanBuilder("Span name").startSpan(); span.end(); - // Verify no data has been received in the original exporter until this point. - assertEquals(0, memorySpanExporter.getFinishedSpanItems().size()); - - // Go to the future when we can read the stored items. - fastForwardTimeByMillis(STORAGE_CONFIGURATION.getMinFileAgeForReadMillis()); - - // Read and send stored data. - assertTrue(diskSpanExporter.exportStoredBatch(1, TimeUnit.SECONDS)); - - // Now the data must have been delegated to the original exporter. - assertEquals(1, memorySpanExporter.getFinishedSpanItems().size()); - - // Bonus: Try to read again, no more data should be available. - assertFalse(diskSpanExporter.exportStoredBatch(1, TimeUnit.SECONDS)); - assertEquals(1, memorySpanExporter.getFinishedSpanItems().size()); + assertExporter(diskSpanExporter, () -> memorySpanExporter.getFinishedSpanItems().size()); } @Test @@ -107,42 +94,33 @@ public void verifyMetricsIntegration() throws IOException { meter.counterBuilder("Counter").build().add(2); meterProvider.forceFlush(); - // Verify no data has been received in the original exporter until this point. - assertEquals(0, memoryMetricExporter.getFinishedMetricItems().size()); - - // Go to the future when we can read the stored items. - fastForwardTimeByMillis(STORAGE_CONFIGURATION.getMinFileAgeForReadMillis()); - - // Read and send stored data. - assertTrue(diskMetricExporter.exportStoredBatch(1, TimeUnit.SECONDS)); - - // Now the data must have been delegated to the original exporter. - assertEquals(1, memoryMetricExporter.getFinishedMetricItems().size()); - - // Bonus: Try to read again, no more data should be available. - assertFalse(diskMetricExporter.exportStoredBatch(1, TimeUnit.SECONDS)); - assertEquals(1, memoryMetricExporter.getFinishedMetricItems().size()); + assertExporter(diskMetricExporter, () -> memoryMetricExporter.getFinishedMetricItems().size()); } @Test public void verifyLogRecordsIntegration() throws IOException { logger.logRecordBuilder().setBody("I'm a log!").emit(); + assertExporter(diskLogRecordExporter, () -> memoryLogRecordExporter.getFinishedLogRecordItems().size()); + } + + private void assertExporter(StoredBatchExporter exporter, Supplier finishedItems) + throws IOException { // Verify no data has been received in the original exporter until this point. - assertEquals(0, memoryLogRecordExporter.getFinishedLogRecordItems().size()); + assertEquals(0, finishedItems.get()); // Go to the future when we can read the stored items. fastForwardTimeByMillis(STORAGE_CONFIGURATION.getMinFileAgeForReadMillis()); // Read and send stored data. - assertTrue(diskLogRecordExporter.exportStoredBatch(1, TimeUnit.SECONDS)); + assertTrue(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); // Now the data must have been delegated to the original exporter. - assertEquals(1, memoryLogRecordExporter.getFinishedLogRecordItems().size()); + assertEquals(1, finishedItems.get()); // Bonus: Try to read again, no more data should be available. - assertFalse(diskLogRecordExporter.exportStoredBatch(1, TimeUnit.SECONDS)); - assertEquals(1, memoryLogRecordExporter.getFinishedLogRecordItems().size()); + assertFalse(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); + assertEquals(1, finishedItems.get()); } @SuppressWarnings("DirectInvocationOnMock") From 70889c8f596594bada331ab3794abd9ed305ae1d Mon Sep 17 00:00:00 2001 From: LikeTheSalad <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:47:41 +0200 Subject: [PATCH 177/209] Update disk-buffering/CONTRIBUTING.md Co-authored-by: Gregor Zeitlinger --- disk-buffering/CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/disk-buffering/CONTRIBUTING.md b/disk-buffering/CONTRIBUTING.md index e031d9144..3c467355e 100644 --- a/disk-buffering/CONTRIBUTING.md +++ b/disk-buffering/CONTRIBUTING.md @@ -52,3 +52,4 @@ to be triggered manually by the consumer of this library as explained in the [RE [FolderManager](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java) and [ReadableFile](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java) files contain more information on the details of the file reading process. +- Note that the reader delegates the data to the exporter exactly in the way it has received the data - it does not try to batch data (but this could be an optimization in the future). From fa8dc9fa8f1deaa5ac0a59785d1849189262e86b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:49:44 +0200 Subject: [PATCH 178/209] Removing unused AtomicBoolean in DiskExporter --- .../disk/buffering/internal/exporters/DiskExporter.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 5bce8dab2..749e70bc3 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.util.Collection; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.logging.Level; import java.util.logging.Logger; @@ -47,15 +46,13 @@ public DiskExporter( @Override public boolean exportStoredBatch(long timeout, TimeUnit unit) throws IOException { logger.log(Level.INFO, "Attempting to export batch from disk."); - AtomicBoolean exportSucceeded = new AtomicBoolean(false); ReadableResult result = storage.readAndProcess( bytes -> { logger.log(Level.INFO, "About to export stored batch."); CompletableResultCode join = exportFunction.apply(serializer.deserialize(bytes)).join(timeout, unit); - exportSucceeded.set(join.isSuccess()); - return exportSucceeded.get(); + return join.isSuccess(); }); return result == ReadableResult.SUCCEEDED; } From 0d478e7cc953d2047c130a2f16cb880b448c5d4a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:52:46 +0200 Subject: [PATCH 179/209] Removing unused enum values from ReadableResult --- .../buffering/internal/storage/Storage.java | 6 +++--- .../internal/storage/files/ReadableFile.java | 6 +++--- .../storage/responses/ReadableResult.java | 6 ++---- .../internal/storage/StorageTest.java | 18 +++++++++--------- .../storage/files/ReadableFileTest.java | 9 ++++----- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index d42516699..f0617c071 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -68,15 +68,15 @@ public ReadableResult readAndProcess(Function processing) throw private ReadableResult readAndProcess(Function processing, int attemptNumber) throws IOException { if (isClosed.get()) { - return ReadableResult.CLOSED; + return ReadableResult.FAILED; } if (attemptNumber > MAX_ATTEMPTS) { - return ReadableResult.NO_CONTENT_AVAILABLE; + return ReadableResult.FAILED; } if (readableFile == null) { readableFile = folderManager.getReadableFile(); if (readableFile == null) { - return ReadableResult.NO_CONTENT_AVAILABLE; + return ReadableResult.FAILED; } } ReadableResult result = readableFile.readAndProcess(processing); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 3089db630..5fc693627 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -77,16 +77,16 @@ public ReadableFile( public synchronized ReadableResult readAndProcess(Function processing) throws IOException { if (isClosed.get()) { - return ReadableResult.CLOSED; + return ReadableResult.FAILED; } if (hasExpired()) { close(); - return ReadableResult.FILE_HAS_EXPIRED; + return ReadableResult.FAILED; } ReadResult read = readNextItem(); if (read == null) { cleanUp(); - return ReadableResult.NO_CONTENT_AVAILABLE; + return ReadableResult.FAILED; } if (processing.apply(read.content)) { unconsumedResult = null; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java index 19dcb0c59..8448d2a15 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/ReadableResult.java @@ -7,8 +7,6 @@ public enum ReadableResult { SUCCEEDED, - CLOSED, - FILE_HAS_EXPIRED, - PROCESSING_FAILED, - NO_CONTENT_AVAILABLE + FAILED, + PROCESSING_FAILED } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 85d664812..5f76411bb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -89,9 +89,9 @@ public void whenWritingMultipleTimes_reuseWriter() throws IOException { } @Test - public void whenAttemptingToReadAfterClosed_returnClosed() throws IOException { + public void whenAttemptingToReadAfterClosed_returnFailed() throws IOException { storage.close(); - assertEquals(ReadableResult.CLOSED, storage.readAndProcess(processing)); + assertEquals(ReadableResult.FAILED, storage.readAndProcess(processing)); } @Test @@ -101,14 +101,14 @@ public void whenAttemptingToWriteAfterClosed_returnFalse() throws IOException { } @Test - public void whenNoFileAvailableForReading_returnNoContentAvailable() throws IOException { - assertEquals(ReadableResult.NO_CONTENT_AVAILABLE, storage.readAndProcess(processing)); + public void whenNoFileAvailableForReading_returnFailed() throws IOException { + assertEquals(ReadableResult.FAILED, storage.readAndProcess(processing)); } @Test public void whenTheReadTimeExpires_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doReturn(ReadableResult.FILE_HAS_EXPIRED).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.FAILED).when(readableFile).readAndProcess(processing); storage.readAndProcess(processing); @@ -118,7 +118,7 @@ public void whenTheReadTimeExpires_lookForNewFileToRead() throws IOException { @Test public void whenNoMoreLinesToRead_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doReturn(ReadableResult.NO_CONTENT_AVAILABLE).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.FAILED).when(readableFile).readAndProcess(processing); storage.readAndProcess(processing); @@ -128,7 +128,7 @@ public void whenNoMoreLinesToRead_lookForNewFileToRead() throws IOException { @Test public void whenResourceClosed_lookForNewFileToRead() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile).thenReturn(null); - doReturn(ReadableResult.CLOSED).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.FAILED).when(readableFile).readAndProcess(processing); storage.readAndProcess(processing); @@ -138,9 +138,9 @@ public void whenResourceClosed_lookForNewFileToRead() throws IOException { @Test public void whenEveryNewFileFoundCannotBeRead_returnContentNotAvailable() throws IOException { when(folderManager.getReadableFile()).thenReturn(readableFile); - doReturn(ReadableResult.CLOSED).when(readableFile).readAndProcess(processing); + doReturn(ReadableResult.FAILED).when(readableFile).readAndProcess(processing); - assertEquals(ReadableResult.NO_CONTENT_AVAILABLE, storage.readAndProcess(processing)); + assertEquals(ReadableResult.FAILED, storage.readAndProcess(processing)); verify(folderManager, times(3)).getReadableFile(); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 583afadcd..91368cb90 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -186,8 +186,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_returnNo new ReadableFile( emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); - assertEquals( - ReadableResult.NO_CONTENT_AVAILABLE, emptyReadableFile.readAndProcess(bytes -> true)); + assertEquals(ReadableResult.FAILED, emptyReadableFile.readAndProcess(bytes -> true)); assertTrue(emptyReadableFile.isClosed()); assertFalse(emptyFile.exists()); @@ -202,17 +201,17 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_returnNo .when(timeProvider) .getSystemCurrentTimeMillis(); - assertEquals(ReadableResult.FILE_HAS_EXPIRED, readableFile.readAndProcess(bytes -> true)); + assertEquals(ReadableResult.FAILED, readableFile.readAndProcess(bytes -> true)); assertTrue(readableFile.isClosed()); } @Test - public void whenReadingAfterClosed_returnClosedStatus() throws IOException { + public void whenReadingAfterClosed_returnFailedStatus() throws IOException { readableFile.readAndProcess(bytes -> true); readableFile.close(); - assertEquals(ReadableResult.CLOSED, readableFile.readAndProcess(bytes -> true)); + assertEquals(ReadableResult.FAILED, readableFile.readAndProcess(bytes -> true)); } private static List getRemainingDataAndClose(ReadableFile readableFile) From fda405efb7cd27e8b1205232403e93eb2487b685 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 11:56:21 +0200 Subject: [PATCH 180/209] Removing unused enum values from WritableResult --- .../internal/storage/files/WritableFile.java | 12 ++++++------ .../internal/storage/responses/WritableResult.java | 4 +--- .../disk/buffering/internal/storage/StorageTest.java | 8 ++++---- .../internal/storage/files/WritableFileTest.java | 10 +++++----- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 4d115402a..4b1613cff 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -37,24 +37,24 @@ public WritableFile( } /** - * Adds a new line to the file. If {@link WritableResult#FILE_EXPIRED} or {@link - * WritableResult#FILE_IS_FULL} are returned, the file stream is closed with the contents - * available in the buffer before attempting to append the new data. + * Adds a new line to the file. If it fails due to expired write time or because the file has + * reached the configured max size, the file stream is closed with the contents available in the + * buffer before attempting to append the new data. * * @param data - The new data line to add. */ public synchronized WritableResult append(byte[] data) throws IOException { if (isClosed.get()) { - return WritableResult.CLOSED; + return WritableResult.FAILED; } if (hasExpired()) { close(); - return WritableResult.FILE_EXPIRED; + return WritableResult.FAILED; } int futureSize = size + data.length; if (futureSize > configuration.getMaxFileSize()) { close(); - return WritableResult.FILE_IS_FULL; + return WritableResult.FAILED; } out.write(data); size = futureSize; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java index c00f4f1db..9cab7f2eb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/responses/WritableResult.java @@ -7,7 +7,5 @@ public enum WritableResult { SUCCEEDED, - CLOSED, - FILE_EXPIRED, - FILE_IS_FULL + FAILED } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java index 5f76411bb..a8bb08689 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/StorageTest.java @@ -162,7 +162,7 @@ public void whenWritingTimeoutHappens_retryWithNewFile() throws IOException { when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doReturn(WritableResult.FILE_EXPIRED).when(writableFile).append(data); + doReturn(WritableResult.FAILED).when(writableFile).append(data); storage.write(data); @@ -176,7 +176,7 @@ public void whenThereIsNoSpaceAvailableForWriting_retryWithNewFile() throws IOEx when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doReturn(WritableResult.FILE_IS_FULL).when(writableFile).append(data); + doReturn(WritableResult.FAILED).when(writableFile).append(data); storage.write(data); @@ -190,7 +190,7 @@ public void whenWritingResourceIsClosed_retryWithNewFile() throws IOException { when(folderManager.createWritableFile()) .thenReturn(writableFile) .thenReturn(workingWritableFile); - doReturn(WritableResult.CLOSED).when(writableFile).append(data); + doReturn(WritableResult.FAILED).when(writableFile).append(data); storage.write(data); @@ -201,7 +201,7 @@ public void whenWritingResourceIsClosed_retryWithNewFile() throws IOException { public void whenEveryAttemptToWriteFails_returnFalse() throws IOException { byte[] data = new byte[1]; when(folderManager.createWritableFile()).thenReturn(writableFile); - doReturn(WritableResult.CLOSED).when(writableFile).append(data); + doReturn(WritableResult.FAILED).when(writableFile).append(data); assertFalse(storage.write(data)); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 4115616a8..6c5ce2181 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -76,11 +76,11 @@ public void appendDataInNewLines_andIncreaseSize() throws IOException { } @Test - public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndReturnNoSpaceAvailable() + public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndReturnFailed() throws IOException { assertEquals(WritableResult.SUCCEEDED, writableFile.append(new byte[MAX_FILE_SIZE])); - assertEquals(WritableResult.FILE_IS_FULL, writableFile.append(new byte[1])); + assertEquals(WritableResult.FAILED, writableFile.append(new byte[1])); assertEquals(1, getWrittenLines().size()); assertEquals(MAX_FILE_SIZE, writableFile.getSize()); @@ -93,17 +93,17 @@ public void whenAppendingData_andHasExpired_closeAndReturnExpiredStatus() throws .when(timeProvider) .getSystemCurrentTimeMillis(); - assertEquals(WritableResult.FILE_EXPIRED, writableFile.append(new byte[1])); + assertEquals(WritableResult.FAILED, writableFile.append(new byte[1])); assertEquals(1, getWrittenLines().size()); } @Test - public void whenAppendingData_andIsAlreadyClosed_returnClosedStatus() throws IOException { + public void whenAppendingData_andIsAlreadyClosed_returnFailedStatus() throws IOException { writableFile.append(new byte[1]); writableFile.close(); - assertEquals(WritableResult.CLOSED, writableFile.append(new byte[2])); + assertEquals(WritableResult.FAILED, writableFile.append(new byte[2])); } private static byte[] getByteArrayLine(String line) { From 2479c9a7f615fb9cc321a70abe16633dc2dfec6e Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:00:32 +0200 Subject: [PATCH 181/209] Updated README --- disk-buffering/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/CONTRIBUTING.md b/disk-buffering/CONTRIBUTING.md index 3c467355e..01d451b5d 100644 --- a/disk-buffering/CONTRIBUTING.md +++ b/disk-buffering/CONTRIBUTING.md @@ -52,4 +52,4 @@ to be triggered manually by the consumer of this library as explained in the [RE [FolderManager](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java) and [ReadableFile](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java) files contain more information on the details of the file reading process. -- Note that the reader delegates the data to the exporter exactly in the way it has received the data - it does not try to batch data (but this could be an optimization in the future). +* Note that the reader delegates the data to the exporter exactly in the way it has received the data - it does not try to batch data (but this could be an optimization in the future). From c7eb673cc9304984125a084fb0e03c329dca9d4d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:09:02 +0200 Subject: [PATCH 182/209] Removing mapstruct from AttributesMapper --- .../mapping/common/AttributesMapper.java | 172 +++++++++++++----- 1 file changed, 124 insertions(+), 48 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java index 5821f7500..52d0e1e38 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java @@ -14,14 +14,10 @@ import io.opentelemetry.proto.common.v1.KeyValue; import java.util.ArrayList; import java.util.List; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.ReportingPolicy; -@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class AttributesMapper { +public final class AttributesMapper { - public static final AttributesMapper INSTANCE = new AttributesMapperImpl(); + public static final AttributesMapper INSTANCE = new AttributesMapper(); public List attributesToProto(Attributes attributes) { List keyValues = new ArrayList<>(); @@ -29,7 +25,15 @@ public List attributesToProto(Attributes attributes) { return keyValues; } - protected KeyValue attributeEntryToProto(AttributeKey key, Object value) { + public Attributes protoToAttributes(List values) { + AttributesBuilder builder = Attributes.builder(); + for (KeyValue keyValue : values) { + addValue(builder, keyValue.getKey(), keyValue.getValue()); + } + return builder.build(); + } + + private static KeyValue attributeEntryToProto(AttributeKey key, Object value) { KeyValue.Builder builder = KeyValue.newBuilder(); builder.setKey(key.getKey()); builder.setValue(attributeValueToProto(key.getType(), value)); @@ -37,7 +41,7 @@ protected KeyValue attributeEntryToProto(AttributeKey key, Object value) { } @SuppressWarnings("unchecked") - private AnyValue attributeValueToProto(AttributeType type, Object value) { + private static AnyValue attributeValueToProto(AttributeType type, Object value) { switch (type) { case STRING: return stringToAnyValue((String) value); @@ -59,43 +63,13 @@ private AnyValue attributeValueToProto(AttributeType type, Object value) { throw new UnsupportedOperationException(); } - @Mapping(target = "stringValue", source = ".") - protected abstract AnyValue stringToAnyValue(String value); - - @Mapping(target = "boolValue", source = ".") - protected abstract AnyValue booleanToAnyValue(Boolean value); - - @Mapping(target = "intValue", source = ".") - protected abstract AnyValue longToAnyValue(Long value); - - @Mapping(target = "doubleValue", source = ".") - protected abstract AnyValue doubleToAnyValue(Double value); - - protected abstract List stringListToAnyValue(List value); - - protected abstract List booleanListToAnyValue(List value); - - protected abstract List longListToAnyValue(List value); - - protected abstract List doubleListToAnyValue(List value); - private static AnyValue arrayToAnyValue(List value) { return AnyValue.newBuilder() .setArrayValue(ArrayValue.newBuilder().addAllValues(value).build()) .build(); } - // FROM PROTO - - public Attributes protoToAttributes(List values) { - AttributesBuilder builder = Attributes.builder(); - for (KeyValue keyValue : values) { - addValue(builder, keyValue.getKey(), keyValue.getValue()); - } - return builder.build(); - } - - private void addValue(AttributesBuilder builder, String key, AnyValue value) { + private static void addValue(AttributesBuilder builder, String key, AnyValue value) { if (value.hasStringValue()) { builder.put(AttributeKey.stringKey(key), value.getStringValue()); } else if (value.hasBoolValue()) { @@ -111,7 +85,7 @@ private void addValue(AttributesBuilder builder, String key, AnyValue value) { } } - private void addArray(AttributesBuilder builder, String key, ArrayValue arrayValue) { + private static void addArray(AttributesBuilder builder, String key, ArrayValue arrayValue) { List values = arrayValue.getValuesList(); AnyValue anyValue = values.get(0); if (anyValue.hasStringValue()) { @@ -127,27 +101,129 @@ private void addArray(AttributesBuilder builder, String key, ArrayValue arrayVal } } - protected abstract List anyValuesToStrings(List values); + private static AnyValue stringToAnyValue(String value) { + AnyValue.Builder anyValue = AnyValue.newBuilder(); + + anyValue.setStringValue(value); + + return anyValue.build(); + } + + private static AnyValue booleanToAnyValue(Boolean value) { + AnyValue.Builder anyValue = AnyValue.newBuilder(); + + if (value != null) { + anyValue.setBoolValue(value); + } + + return anyValue.build(); + } + + private static AnyValue longToAnyValue(Long value) { + AnyValue.Builder anyValue = AnyValue.newBuilder(); + + if (value != null) { + anyValue.setIntValue(value); + } + + return anyValue.build(); + } + + private static AnyValue doubleToAnyValue(Double value) { + AnyValue.Builder anyValue = AnyValue.newBuilder(); + + if (value != null) { + anyValue.setDoubleValue(value); + } + + return anyValue.build(); + } + + private static List stringListToAnyValue(List value) { + List list = new ArrayList<>(value.size()); + for (String string : value) { + list.add(stringToAnyValue(string)); + } + + return list; + } + + private static List booleanListToAnyValue(List value) { + List list = new ArrayList<>(value.size()); + for (Boolean boolean1 : value) { + list.add(booleanToAnyValue(boolean1)); + } + + return list; + } + + private static List longListToAnyValue(List value) { + List list = new ArrayList<>(value.size()); + for (Long long1 : value) { + list.add(longToAnyValue(long1)); + } + + return list; + } + + private static List doubleListToAnyValue(List value) { + List list = new ArrayList<>(value.size()); + for (Double double1 : value) { + list.add(doubleToAnyValue(double1)); + } + + return list; + } + + private static List anyValuesToStrings(List values) { + List list = new ArrayList<>(values.size()); + for (AnyValue anyValue : values) { + list.add(anyValueToString(anyValue)); + } + + return list; + } + + private static List anyValuesToBooleans(List values) { + List list = new ArrayList<>(values.size()); + for (AnyValue anyValue : values) { + list.add(anyValueToBoolean(anyValue)); + } - protected abstract List anyValuesToBooleans(List values); + return list; + } - protected abstract List anyValuesToLongs(List values); + private static List anyValuesToLongs(List values) { + List list = new ArrayList<>(values.size()); + for (AnyValue anyValue : values) { + list.add(anyValueToLong(anyValue)); + } - protected abstract List anyValuesToDoubles(List values); + return list; + } + + private static List anyValuesToDoubles(List values) { + List list = new ArrayList<>(values.size()); + for (AnyValue anyValue : values) { + list.add(anyValueToDouble(anyValue)); + } + + return list; + } - protected String anyValueToString(AnyValue value) { + private static String anyValueToString(AnyValue value) { return value.getStringValue(); } - protected Boolean anyValueToBoolean(AnyValue value) { + private static Boolean anyValueToBoolean(AnyValue value) { return value.getBoolValue(); } - protected Long anyValueToLong(AnyValue value) { + private static Long anyValueToLong(AnyValue value) { return value.getIntValue(); } - protected Double anyValueToDouble(AnyValue value) { + private static Double anyValueToDouble(AnyValue value) { return value.getDoubleValue(); } } From 5b0b34a4f05a82804c5ad3ed124f52d3dbeca74c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:11:38 +0200 Subject: [PATCH 183/209] Removing mapstruct from ResourceMapper --- .../mapping/common/ResourceMapper.java | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index c256580be..fe44695c9 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -8,15 +8,10 @@ import io.opentelemetry.proto.resource.v1.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; import javax.annotation.Nullable; -import org.mapstruct.AfterMapping; -import org.mapstruct.Mapper; -import org.mapstruct.MappingTarget; -import org.mapstruct.ReportingPolicy; -@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE) -public abstract class ResourceMapper { +public final class ResourceMapper { - public static final ResourceMapper INSTANCE = new ResourceMapperImpl(); + public static final ResourceMapper INSTANCE = new ResourceMapper(); public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { return Resource.newBuilder() @@ -24,11 +19,14 @@ public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) .build(); } - public abstract io.opentelemetry.sdk.resources.Resource mapToSdk( - Resource protoResource, @Nullable String schemaUrl); + public io.opentelemetry.sdk.resources.Resource mapToSdk( + Resource protoResource, @Nullable String schemaUrl) { + ResourceBuilder resource = io.opentelemetry.sdk.resources.Resource.builder(); - @AfterMapping - protected void addAttributes(Resource protoResource, @MappingTarget ResourceBuilder builder) { - builder.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); + if (schemaUrl != null) { + resource.setSchemaUrl(schemaUrl); + } + resource.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); + return resource.build(); } } From 2b05d9688e69ffe4ec1b371bf9be440ce8e4ac0d Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:12:13 +0200 Subject: [PATCH 184/209] Removing mapstruct from the dependencies --- disk-buffering/build.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index c93adc111..107229b5c 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -12,16 +12,13 @@ java { targetCompatibility = JavaVersion.VERSION_1_8 } -val mapStructVersion = "1.5.5.Final" val autovalueVersion = "1.10.1" dependencies { api("io.opentelemetry:opentelemetry-sdk") implementation("io.opentelemetry:opentelemetry-exporter-otlp-common") implementation("io.opentelemetry.proto:opentelemetry-proto:0.20.0-alpha") - implementation("org.mapstruct:mapstruct:$mapStructVersion") compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") - annotationProcessor("org.mapstruct:mapstruct-processor:$mapStructVersion") testImplementation("org.mockito:mockito-inline:4.11.0") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") } From 522aba2b2ff0c3453874aaad21e1d7adf9f6522c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:52:48 +0200 Subject: [PATCH 185/209] Updated CONTRIBUTING.md formatting --- disk-buffering/CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/disk-buffering/CONTRIBUTING.md b/disk-buffering/CONTRIBUTING.md index 01d451b5d..47d08e9fa 100644 --- a/disk-buffering/CONTRIBUTING.md +++ b/disk-buffering/CONTRIBUTING.md @@ -52,4 +52,5 @@ to be triggered manually by the consumer of this library as explained in the [RE [FolderManager](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java) and [ReadableFile](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java) files contain more information on the details of the file reading process. -* Note that the reader delegates the data to the exporter exactly in the way it has received the data - it does not try to batch data (but this could be an optimization in the future). +* Note that the reader delegates the data to the exporter exactly in the way it has received the + data - it does not try to batch data (but this could be an optimization in the future). From e89728569bae06d5f04e4a3a74229b8da71bb7cd Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:53:31 +0200 Subject: [PATCH 186/209] Updated IntegrationTest formatting --- .../contrib/disk/buffering/exporters/IntegrationTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index 24b85eefe..b19f8b35e 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -101,7 +101,8 @@ public void verifyMetricsIntegration() throws IOException { public void verifyLogRecordsIntegration() throws IOException { logger.logRecordBuilder().setBody("I'm a log!").emit(); - assertExporter(diskLogRecordExporter, () -> memoryLogRecordExporter.getFinishedLogRecordItems().size()); + assertExporter( + diskLogRecordExporter, () -> memoryLogRecordExporter.getFinishedLogRecordItems().size()); } private void assertExporter(StoredBatchExporter exporter, Supplier finishedItems) From 8596be1cbf04e4cf52401c604e8067a355bcc11b Mon Sep 17 00:00:00 2001 From: LikeTheSalad <56847527+LikeTheSalad@users.noreply.github.com> Date: Mon, 10 Jul 2023 09:40:40 +0200 Subject: [PATCH 187/209] Update disk-buffering/README.md Co-authored-by: jason plumb <75337021+breedx-splk@users.noreply.github.com> --- disk-buffering/README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 81f113ba0..6c2617b20 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -98,13 +98,12 @@ try { } ``` -Both, the writing and reading processes can run in parallel and the way they don't overlap is -because each is supposed to happen in different files, and the way it is ensured that they don't -accidentally meet in the same file is by using the configurable parameters, which ensure to set time -frames for each action to be done on a single file at a time. On top of that, there's a mechanism in +Both the writing and reading processes can run in parallel and they don't overlap +because each is supposed to happen in different files. We ensure that reader and writer don't +accidentally meet in the same file by using the configurable parameters. These parameters set non-overlapping time frames for each action to be done on a single file at a time. On top of that, there's a mechanism in place to avoid overlapping on edge cases where the time frames ended but the resources haven't been -released, for that mechanism to work properly, this tool assumes that both, the reading and the -writing actions, are executed within the same application process. +released. For that mechanism to work properly, this tool assumes that both the reading and the +writing actions are executed within the same application process. ## Component owners From eb1333590576c507db30842dc5cd5ca2e9310ded Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:22:25 +0200 Subject: [PATCH 188/209] Renaming TimeProvider to StorageClock and implementing OTel's Clock --- .../exporters/LogRecordDiskExporter.java | 12 +++---- .../exporters/MetricDiskExporter.java | 12 +++---- .../buffering/exporters/SpanDiskExporter.java | 12 +++---- .../internal/exporters/DiskExporter.java | 6 ++-- .../internal/storage/FolderManager.java | 16 ++++----- .../internal/storage/files/ReadableFile.java | 14 ++++---- .../internal/storage/files/WritableFile.java | 10 +++--- .../internal/storage/utils/StorageClock.java | 27 ++++++++++++++ .../internal/storage/utils/TimeProvider.java | 18 ---------- .../buffering/exporters/IntegrationTest.java | 20 +++++------ .../internal/exporters/DiskExporterTest.java | 20 +++++------ .../internal/storage/FolderManagerTest.java | 36 +++++++++---------- .../storage/files/ReadableFileTest.java | 14 ++++---- .../storage/files/WritableFileTest.java | 16 ++++----- 14 files changed, 121 insertions(+), 112 deletions(-) create mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java index 2aa3e13ed..511f4609f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java @@ -7,7 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.LogRecordProcessor; @@ -41,7 +41,7 @@ public final class LogRecordDiskExporter implements LogRecordExporter, StoredBat public static LogRecordDiskExporter create( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { - return create(wrapped, rootDir, configuration, TimeProvider.get()); + return create(wrapped, rootDir, configuration, StorageClock.getInstance()); } // This is used for testing purposes. @@ -49,16 +49,16 @@ static LogRecordDiskExporter create( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { - return new LogRecordDiskExporter(wrapped, rootDir, configuration, timeProvider); + return new LogRecordDiskExporter(wrapped, rootDir, configuration, clock); } private LogRecordDiskExporter( LogRecordExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { this.wrapped = wrapped; diskExporter = @@ -68,7 +68,7 @@ private LogRecordDiskExporter( "logs", SignalSerializer.ofLogs(), wrapped::export, - timeProvider); + clock); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java index 795443b7f..bbcc114f2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java @@ -7,7 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; @@ -42,7 +42,7 @@ public final class MetricDiskExporter implements MetricExporter, StoredBatchExpo */ public static MetricDiskExporter create( MetricExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { - return create(wrapped, rootDir, configuration, TimeProvider.get()); + return create(wrapped, rootDir, configuration, StorageClock.getInstance()); } // This is used for testing purposes. @@ -50,16 +50,16 @@ public static MetricDiskExporter create( MetricExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { - return new MetricDiskExporter(wrapped, rootDir, configuration, timeProvider); + return new MetricDiskExporter(wrapped, rootDir, configuration, clock); } private MetricDiskExporter( MetricExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { this.wrapped = wrapped; diskExporter = @@ -69,7 +69,7 @@ private MetricDiskExporter( "metrics", SignalSerializer.ofMetrics(), wrapped::export, - timeProvider); + clock); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java index 0ae429969..61aca72ea 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java @@ -7,7 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.SpanProcessor; @@ -40,7 +40,7 @@ public final class SpanDiskExporter implements SpanExporter, StoredBatchExporter */ public static SpanDiskExporter create( SpanExporter wrapped, File rootDir, StorageConfiguration configuration) throws IOException { - return create(wrapped, rootDir, configuration, TimeProvider.get()); + return create(wrapped, rootDir, configuration, StorageClock.getInstance()); } // This is used for testing purposes. @@ -48,16 +48,16 @@ public static SpanDiskExporter create( SpanExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { - return new SpanDiskExporter(wrapped, rootDir, configuration, timeProvider); + return new SpanDiskExporter(wrapped, rootDir, configuration, clock); } private SpanDiskExporter( SpanExporter wrapped, File rootDir, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { this.wrapped = wrapped; diskExporter = @@ -67,7 +67,7 @@ private SpanDiskExporter( "spans", SignalSerializer.ofSpans(), wrapped::export, - timeProvider); + clock); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 749e70bc3..2d9f45174 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -10,7 +10,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import java.io.File; @@ -33,12 +33,12 @@ public DiskExporter( String folderName, SignalSerializer serializer, Function, CompletableResultCode> exportFunction, - TimeProvider timeProvider) + StorageClock clock) throws IOException { validateConfiguration(configuration); this.storage = new Storage( - new FolderManager(getSignalFolder(rootDir, folderName), configuration, timeProvider)); + new FolderManager(getSignalFolder(rootDir, folderName), configuration, clock)); this.serializer = serializer; this.exportFunction = exportFunction; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index d3951501e..70858a055 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -7,7 +7,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; import java.io.IOException; @@ -16,15 +16,15 @@ public final class FolderManager { private final File folder; - private final TimeProvider timeProvider; + private final StorageClock clock; private final StorageConfiguration configuration; @Nullable private ReadableFile currentReadableFile; @Nullable private WritableFile currentWritableFile; - public FolderManager(File folder, StorageConfiguration configuration, TimeProvider timeProvider) { + public FolderManager(File folder, StorageConfiguration configuration, StorageClock clock) { this.folder = folder; this.configuration = configuration; - this.timeProvider = timeProvider; + this.clock = clock; } @Nullable @@ -34,14 +34,14 @@ public synchronized ReadableFile getReadableFile() throws IOException { if (readableFile != null) { currentReadableFile = new ReadableFile( - readableFile, Long.parseLong(readableFile.getName()), timeProvider, configuration); + readableFile, Long.parseLong(readableFile.getName()), clock, configuration); return currentReadableFile; } return null; } public synchronized WritableFile createWritableFile() throws IOException { - long systemCurrentTimeMillis = timeProvider.getSystemCurrentTimeMillis(); + long systemCurrentTimeMillis = clock.now(); File[] existingFiles = folder.listFiles(); if (existingFiles != null) { if (purgeExpiredFilesIfAny(existingFiles, systemCurrentTimeMillis) == 0) { @@ -50,13 +50,13 @@ public synchronized WritableFile createWritableFile() throws IOException { } File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); currentWritableFile = - new WritableFile(file, systemCurrentTimeMillis, configuration, timeProvider); + new WritableFile(file, systemCurrentTimeMillis, configuration, clock); return currentWritableFile; } @Nullable private File findReadableFile() throws IOException { - long currentTime = timeProvider.getSystemCurrentTimeMillis(); + long currentTime = clock.now(); File[] existingFiles = folder.listFiles(); File oldestFileAvailable = null; long oldestFileCreationTimeMillis = 0; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 5fc693627..0a6e99487 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -10,7 +10,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.FileTransferUtil; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedInputStream; import java.io.File; @@ -28,7 +28,7 @@ public final class ReadableFile extends StorageFile { private final StreamReader reader; private final FileTransferUtil fileTransferUtil; private final File temporaryFile; - private final TimeProvider timeProvider; + private final StorageClock clock; private final long expireTimeMillis; private final AtomicBoolean isClosed = new AtomicBoolean(false); private int readBytes = 0; @@ -37,13 +37,13 @@ public final class ReadableFile extends StorageFile { public ReadableFile( File file, long createdTimeMillis, - TimeProvider timeProvider, + StorageClock clock, StorageConfiguration configuration) throws IOException { this( file, createdTimeMillis, - timeProvider, + clock, configuration, DelimitedProtoStreamReader.Factory.INSTANCE); } @@ -51,12 +51,12 @@ public ReadableFile( public ReadableFile( File file, long createdTimeMillis, - TimeProvider timeProvider, + StorageClock clock, StorageConfiguration configuration, StreamReader.Factory readerFactory) throws IOException { super(file); - this.timeProvider = timeProvider; + this.clock = clock; expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForReadMillis(); originalFileSize = (int) file.length(); temporaryFile = configuration.getTemporaryFileProvider().createTemporaryFile(file.getName()); @@ -124,7 +124,7 @@ public long getSize() { @Override public synchronized boolean hasExpired() { - return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; + return clock.now() >= expireTimeMillis; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index 4b1613cff..cc18825fa 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -6,7 +6,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; import java.io.FileOutputStream; @@ -16,7 +16,7 @@ public final class WritableFile extends StorageFile { private final StorageConfiguration configuration; - private final TimeProvider timeProvider; + private final StorageClock clock; private final long expireTimeMillis; private final OutputStream out; private final AtomicBoolean isClosed = new AtomicBoolean(false); @@ -26,11 +26,11 @@ public WritableFile( File file, long createdTimeMillis, StorageConfiguration configuration, - TimeProvider timeProvider) + StorageClock clock) throws IOException { super(file); this.configuration = configuration; - this.timeProvider = timeProvider; + this.clock = clock; expireTimeMillis = createdTimeMillis + configuration.getMaxFileAgeForWriteMillis(); size = (int) file.length(); out = new FileOutputStream(file); @@ -68,7 +68,7 @@ public synchronized long getSize() { @Override public synchronized boolean hasExpired() { - return timeProvider.getSystemCurrentTimeMillis() >= expireTimeMillis; + return clock.now() >= expireTimeMillis; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java new file mode 100644 index 000000000..6363d59a9 --- /dev/null +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; + +import io.opentelemetry.sdk.common.Clock; +import java.util.concurrent.TimeUnit; + +public class StorageClock implements Clock { + private static final StorageClock INSTANCE = new StorageClock(); + + public static StorageClock getInstance() { + return INSTANCE; + } + + @Override + public long now() { + return TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis()); + } + + @Override + public long nanoTime() { + return System.nanoTime(); + } +} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java deleted file mode 100644 index 8b765b420..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/TimeProvider.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; - -public class TimeProvider { - private static final TimeProvider INSTANCE = new TimeProvider(); - - public static TimeProvider get() { - return INSTANCE; - } - - public long getSystemCurrentTimeMillis() { - return System.currentTimeMillis(); - } -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java index b19f8b35e..5657d4c2c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java @@ -15,7 +15,7 @@ import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; @@ -48,7 +48,7 @@ public class IntegrationTest { private InMemoryLogRecordExporter memoryLogRecordExporter; private LogRecordDiskExporter diskLogRecordExporter; private Logger logger; - private TimeProvider timeMachine; + private StorageClock clock; @TempDir File rootDir; private static final long INITIAL_TIME_IN_MILLIS = 1000; private static final StorageConfiguration STORAGE_CONFIGURATION = @@ -56,20 +56,20 @@ public class IntegrationTest { @BeforeEach public void setUp() throws IOException { - timeMachine = mock(); - doReturn(INITIAL_TIME_IN_MILLIS).when(timeMachine).getSystemCurrentTimeMillis(); + clock = mock(); + doReturn(INITIAL_TIME_IN_MILLIS).when(clock).now(); // Setting up spans memorySpanExporter = InMemorySpanExporter.create(); diskSpanExporter = - SpanDiskExporter.create(memorySpanExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); + SpanDiskExporter.create(memorySpanExporter, rootDir, STORAGE_CONFIGURATION, clock); tracer = createTracerProvider(diskSpanExporter).get("SpanInstrumentationScope"); // Setting up metrics memoryMetricExporter = InMemoryMetricExporter.create(); diskMetricExporter = MetricDiskExporter.create( - memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); + memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, clock); meterProvider = createMeterProvider(diskMetricExporter); meter = meterProvider.get("MetricInstrumentationScope"); @@ -77,7 +77,7 @@ public void setUp() throws IOException { memoryLogRecordExporter = InMemoryLogRecordExporter.create(); diskLogRecordExporter = LogRecordDiskExporter.create( - memoryLogRecordExporter, rootDir, STORAGE_CONFIGURATION, timeMachine); + memoryLogRecordExporter, rootDir, STORAGE_CONFIGURATION, clock); logger = createLoggerProvider(diskLogRecordExporter).get("LogInstrumentationScope"); } @@ -126,9 +126,9 @@ private void assertExporter(StoredBatchExporter exporter, Supplier fini @SuppressWarnings("DirectInvocationOnMock") private void fastForwardTimeByMillis(long milliseconds) { - doReturn(timeMachine.getSystemCurrentTimeMillis() + milliseconds) - .when(timeMachine) - .getSystemCurrentTimeMillis(); + doReturn(clock.now() + milliseconds) + .when(clock) + .now(); } private static SdkTracerProvider createTracerProvider(SpanExporter exporter) { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java index 473e4b9f9..a4fe5e348 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java @@ -18,7 +18,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; @@ -38,7 +38,7 @@ class DiskExporterTest { private SpanExporter wrapped; private SignalSerializer serializer; - private TimeProvider timeProvider; + private StorageClock clock; private DiskExporter exporter; private final List deserializedData = Collections.emptyList(); @TempDir File rootDir; @@ -46,7 +46,7 @@ class DiskExporterTest { @BeforeEach public void setUp() throws IOException { - timeProvider = createTimeProviderMock(1000L); + clock = createClockMock(1000L); setUpSerializer(); wrapped = mock(); exporter = @@ -56,7 +56,7 @@ public void setUp() throws IOException { STORAGE_FOLDER_NAME, serializer, wrapped::export, - timeProvider); + clock); } @Test @@ -65,7 +65,7 @@ public void whenExportingStoredBatch_withAvailableData_andSuccessfullyProcessed_ doReturn(CompletableResultCode.ofSuccess()).when(wrapped).export(deserializedData); createDummyFile(1000L, "First line"); - doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); assertTrue(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); } @@ -82,7 +82,7 @@ public void whenMinFileReadIsNotGraterThanMaxFileWrite_throwException() throws I STORAGE_FOLDER_NAME, serializer, wrapped::export, - timeProvider); + clock); fail(); } catch (IllegalArgumentException e) { assertEquals( @@ -97,7 +97,7 @@ public void whenExportingStoredBatch_withAvailableData_andUnsuccessfullyProcesse doReturn(CompletableResultCode.ofFailure()).when(wrapped).export(deserializedData); createDummyFile(1000L, "First line"); - doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); assertFalse(exporter.exportStoredBatch(1, TimeUnit.SECONDS)); } @@ -144,9 +144,9 @@ private void setUpSerializer() { doReturn(deserializedData).when(serializer).deserialize(any()); } - private static TimeProvider createTimeProviderMock(long initialTimeMillis) { - TimeProvider mock = mock(); - doReturn(initialTimeMillis).when(mock).getSystemCurrentTimeMillis(); + private static StorageClock createClockMock(long initialTimeMillis) { + StorageClock mock = mock(); + doReturn(initialTimeMillis).when(mock).now(); return mock; } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index f58093b98..8c27b2097 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -20,7 +20,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.StorageFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -32,17 +32,17 @@ class FolderManagerTest { @TempDir File rootDir; private FolderManager folderManager; - private TimeProvider timeProvider; + private StorageClock clock; @BeforeEach public void setUp() { - timeProvider = mock(); - folderManager = new FolderManager(rootDir, TestData.getDefaultConfiguration(), timeProvider); + clock = mock(); + folderManager = new FolderManager(rootDir, TestData.getDefaultConfiguration(), clock); } @Test public void createWritableFile_withTimeMillisAsName() throws IOException { - doReturn(1000L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(1000L).when(clock).now(); StorageFile file = folderManager.createWritableFile(); @@ -59,7 +59,7 @@ public void createWritableFile_andRemoveOldestOne_whenTheAvailableFolderSpaceIsN fillWithBytes(existingFile1, MAX_FILE_SIZE); fillWithBytes(existingFile2, MAX_FILE_SIZE); fillWithBytes(existingFile3, MAX_FILE_SIZE); - doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(1500L).when(clock).now(); StorageFile file = folderManager.createWritableFile(); @@ -75,14 +75,14 @@ public void createWritableFile_andRemoveOldestOne_whenTheAvailableFolderSpaceIsN public void closeCurrentlyWritableFile_whenItIsReadyToBeRead_anNoOtherReadableFilesAreAvailable() throws IOException { long createdFileTime = 1000L; - doReturn(createdFileTime).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(createdFileTime).when(clock).now(); WritableFile writableFile = folderManager.createWritableFile(); writableFile.append(new byte[3]); doReturn(createdFileTime + MIN_FILE_AGE_FOR_READ_MILLIS) - .when(timeProvider) - .getSystemCurrentTimeMillis(); + .when(clock) + .now(); ReadableFile readableFile = folderManager.getReadableFile(); @@ -101,7 +101,7 @@ public void closeCurrentlyWritableFile_whenItIsReadyToBeRead_anNoOtherReadableFi fillWithBytes(existingFile1, MAX_FILE_SIZE); fillWithBytes(existingFile2, MAX_FILE_SIZE); fillWithBytes(existingFile3, MAX_FILE_SIZE); - doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(1000L + MIN_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); ReadableFile readableFile = folderManager.getReadableFile(); assertEquals(existingFile1, readableFile.file); @@ -124,7 +124,7 @@ public void createWritableFile_andDoNotRemoveOldestOne_ifAtLeastOneExpiredFileIs fillWithBytes(existingFile1, MAX_FILE_SIZE); fillWithBytes(existingFile2, MAX_FILE_SIZE); fillWithBytes(existingFile3, MAX_FILE_SIZE); - doReturn(11_000L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(11_000L).when(clock).now(); StorageFile file = folderManager.createWritableFile(); @@ -143,7 +143,7 @@ public void purgeExpiredForReadFiles_whenCreatingNewOne() throws IOException { // Files that cannot be written, but can still be read, aren't ready to be deleted. File expiredWritableFile = new File(rootDir, "10000"); createFiles(expiredReadableFile, expiredWritableFile); - doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(11_500L).when(clock).now(); StorageFile file = folderManager.createWritableFile(); @@ -160,11 +160,11 @@ public void closeExpiredReadableFileInUseIfAny_whenPurgingExpiredForReadFiles_wh File expiredWritableFile = new File(rootDir, "10000"); createFiles(expiredReadableFile, expiredWritableFile, expiredReadableFileBeingRead); - doReturn(900 + MIN_FILE_AGE_FOR_READ_MILLIS).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(900 + MIN_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); ReadableFile readableFile = folderManager.getReadableFile(); assertEquals(expiredReadableFileBeingRead, readableFile.file); - doReturn(11_500L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(11_500L).when(clock).now(); StorageFile file = folderManager.createWritableFile(); @@ -179,7 +179,7 @@ public void closeExpiredReadableFileInUseIfAny_whenPurgingExpiredForReadFiles_wh public void provideFileForRead_afterItsMinFileAgeForReadTimePassed() throws IOException { long readableFileCreationTime = 1000; long currentTime = readableFileCreationTime + MIN_FILE_AGE_FOR_READ_MILLIS; - doReturn(currentTime).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(currentTime).when(clock).now(); File writableFile = new File(rootDir, String.valueOf(currentTime)); File readableFile = new File(rootDir, String.valueOf(readableFileCreationTime)); createFiles(writableFile, readableFile); @@ -194,7 +194,7 @@ public void provideOldestFileForRead_whenMultipleReadableFilesAreAvailable() thr long newerReadableFileCreationTime = 1000; long olderReadableFileCreationTime = 900; long currentTime = newerReadableFileCreationTime + MIN_FILE_AGE_FOR_READ_MILLIS; - doReturn(currentTime).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(currentTime).when(clock).now(); File writableFile = new File(rootDir, String.valueOf(currentTime)); File readableFileOlder = new File(rootDir, String.valueOf(olderReadableFileCreationTime)); File readableFileNewer = new File(rootDir, String.valueOf(newerReadableFileCreationTime)); @@ -226,8 +226,8 @@ public void provideNullFileForRead_whenReadableFilesAreExpired() throws IOExcept File expiredReadableFile2 = new File(rootDir, String.valueOf(creationReferenceTime - 10)); createFiles(expiredReadableFile1, expiredReadableFile2); doReturn(creationReferenceTime + MAX_FILE_AGE_FOR_READ_MILLIS) - .when(timeProvider) - .getSystemCurrentTimeMillis(); + .when(clock) + .now(); assertNull(folderManager.getReadableFile()); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index 91368cb90..c993a03ee 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -20,7 +20,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.LogRecordDataSerializer; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.logs.data.Body; @@ -41,7 +41,7 @@ class ReadableFileTest { private File source; private File temporaryFile; private ReadableFile readableFile; - private TimeProvider timeProvider; + private StorageClock clock; private TemporaryFileProvider temporaryFileProvider; private static final long CREATED_TIME_MILLIS = 1000L; private static final LogRecordDataSerializer SERIALIZER = SignalSerializer.ofLogs(); @@ -94,10 +94,10 @@ public void setUp() throws IOException { addFileContents(source); temporaryFileProvider = mock(); doReturn(temporaryFile).when(temporaryFileProvider).createTemporaryFile(anyString()); - timeProvider = mock(); + clock = mock(); readableFile = new ReadableFile( - source, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); + source, CREATED_TIME_MILLIS, clock, getConfiguration(temporaryFileProvider)); } private static void addFileContents(File source) throws IOException { @@ -184,7 +184,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_returnNo ReadableFile emptyReadableFile = new ReadableFile( - emptyFile, CREATED_TIME_MILLIS, timeProvider, getConfiguration(temporaryFileProvider)); + emptyFile, CREATED_TIME_MILLIS, clock, getConfiguration(temporaryFileProvider)); assertEquals(ReadableResult.FAILED, emptyReadableFile.readAndProcess(bytes -> true)); @@ -198,8 +198,8 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_returnNo throws IOException { readableFile.readAndProcess(bytes -> true); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) - .when(timeProvider) - .getSystemCurrentTimeMillis(); + .when(clock) + .now(); assertEquals(ReadableResult.FAILED, readableFile.readAndProcess(bytes -> true)); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 6c5ce2181..9b5959f84 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -17,7 +17,7 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; -import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.TimeProvider; +import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -30,31 +30,31 @@ class WritableFileTest { @TempDir File rootDir; - private TimeProvider timeProvider; + private StorageClock clock; private WritableFile writableFile; private static final long CREATED_TIME_MILLIS = 1000L; @BeforeEach public void setUp() throws IOException { - timeProvider = mock(); + clock = mock(); writableFile = new WritableFile( new File(rootDir, String.valueOf(CREATED_TIME_MILLIS)), CREATED_TIME_MILLIS, TestData.getDefaultConfiguration(), - timeProvider); + clock); } @Test public void hasNotExpired_whenWriteAgeHasNotExpired() { - doReturn(1500L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(1500L).when(clock).now(); assertFalse(writableFile.hasExpired()); } @Test public void hasExpired_whenWriteAgeHasExpired() { - doReturn(2000L).when(timeProvider).getSystemCurrentTimeMillis(); + doReturn(2000L).when(clock).now(); assertTrue(writableFile.hasExpired()); } @@ -90,8 +90,8 @@ public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndReturnFailed( public void whenAppendingData_andHasExpired_closeAndReturnExpiredStatus() throws IOException { writableFile.append(new byte[2]); doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_WRITE_MILLIS) - .when(timeProvider) - .getSystemCurrentTimeMillis(); + .when(clock) + .now(); assertEquals(WritableResult.FAILED, writableFile.append(new byte[1])); From 35c6187673308a642e20cb7af5302c0243e4c655 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:34:07 +0200 Subject: [PATCH 189/209] Providing milliseconds in StorageClock.now() --- .../buffering/internal/storage/utils/StorageClock.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java index 6363d59a9..43e02dee4 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java @@ -6,8 +6,8 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.utils; import io.opentelemetry.sdk.common.Clock; -import java.util.concurrent.TimeUnit; +/** Internal utility that allows changing the time for testing purposes. */ public class StorageClock implements Clock { private static final StorageClock INSTANCE = new StorageClock(); @@ -15,13 +15,14 @@ public static StorageClock getInstance() { return INSTANCE; } + /** Returns the current time in milliseconds. */ @Override public long now() { - return TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis()); + return System.currentTimeMillis(); } @Override public long nanoTime() { - return System.nanoTime(); + throw new UnsupportedOperationException(); } } From e8abb3b0d43e8410cd9f9933467f5b977ae05ddf Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:34:50 +0200 Subject: [PATCH 190/209] Making StorageClock final --- .../disk/buffering/internal/storage/utils/StorageClock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java index 43e02dee4..0836f257e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/utils/StorageClock.java @@ -8,7 +8,7 @@ import io.opentelemetry.sdk.common.Clock; /** Internal utility that allows changing the time for testing purposes. */ -public class StorageClock implements Clock { +public final class StorageClock implements Clock { private static final StorageClock INSTANCE = new StorageClock(); public static StorageClock getInstance() { From d55a4d5ab9d1431b9d0c83b743709f0891be29bf Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:48:44 +0200 Subject: [PATCH 191/209] Replacing singleton access from INSTANCE field to getInstance() method --- .../mapping/common/AttributesMapper.java | 6 ++++- .../common/BaseProtoSignalsDataMapper.java | 8 +++--- .../mapping/common/ByteStringMapper.java | 6 ++++- .../mapping/common/ResourceMapper.java | 12 ++++++--- .../mapping/logs/LogRecordDataMapper.java | 20 +++++++++----- .../mapping/logs/ProtoLogsDataMapper.java | 10 ++++--- .../mapping/metrics/MetricDataMapper.java | 18 ++++++++----- .../metrics/ProtoMetricsDataMapper.java | 10 ++++--- .../mapping/spans/ProtoSpansDataMapper.java | 10 ++++--- .../mapping/spans/SpanDataMapper.java | 27 +++++++++++-------- .../serializers/LogRecordDataSerializer.java | 4 +-- .../serializers/MetricDataSerializer.java | 4 +-- .../serializers/SpanDataSerializer.java | 4 +-- .../internal/storage/files/ReadableFile.java | 2 +- .../reader/DelimitedProtoStreamReader.java | 6 ++++- .../storage/StorageConfiguration.java | 2 +- .../files/DefaultTemporaryFileProvider.java | 6 ++++- .../mapping/common/AttributesMapperTest.java | 4 +-- .../mapping/common/ResourceMapperTest.java | 4 +-- .../mapping/logs/LogRecordDataMapperTest.java | 4 +-- .../mapping/logs/ProtoLogsDataMapperTest.java | 4 +-- .../mapping/metrics/MetricDataMapperTest.java | 4 +-- .../metrics/ProtoMetricsDataMapperTest.java | 4 +-- .../spans/ProtoSpansDataMapperTest.java | 4 +-- .../mapping/spans/SpanDataMapperTest.java | 4 +-- .../buffering/internal/storage/TestData.java | 2 +- .../testutils/BaseSignalSerializerTest.java | 2 +- 27 files changed, 120 insertions(+), 71 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java index 52d0e1e38..8b4ceb05a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapper.java @@ -17,7 +17,11 @@ public final class AttributesMapper { - public static final AttributesMapper INSTANCE = new AttributesMapper(); + private static final AttributesMapper INSTANCE = new AttributesMapper(); + + public static AttributesMapper getInstance() { + return INSTANCE; + } public List attributesToProto(Attributes attributes) { List keyValues = new ArrayList<>(); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java index 0d9a944a4..c754aa612 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java @@ -65,12 +65,12 @@ public List fromProto(PROTO_DATA protoData) { } protected io.opentelemetry.proto.resource.v1.Resource resourceToProto(Resource resource) { - return ResourceMapper.INSTANCE.mapToProto(resource); + return ResourceMapper.getInstance().mapToProto(resource); } protected Resource protoToResource( io.opentelemetry.proto.resource.v1.Resource protoResource, String schemaUrl) { - return ResourceMapper.INSTANCE.mapToSdk(protoResource, schemaUrl.isEmpty() ? null : schemaUrl); + return ResourceMapper.getInstance().mapToSdk(protoResource, schemaUrl.isEmpty() ? null : schemaUrl); } protected InstrumentationScopeInfo protoToInstrumentationScopeInfo( @@ -120,10 +120,10 @@ protected abstract InstrumentationScopeInfo getInstrumentationScopeFromProto( protected abstract InstrumentationScopeInfo getInstrumentationScopeInfo(SIGNAL_ITEM source); private static List attributesToProto(Attributes source) { - return AttributesMapper.INSTANCE.attributesToProto(source); + return AttributesMapper.getInstance().attributesToProto(source); } private static Attributes protoToAttributes(List source) { - return AttributesMapper.INSTANCE.protoToAttributes(source); + return AttributesMapper.getInstance().protoToAttributes(source); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java index 0f8de0291..a04fbe0b7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ByteStringMapper.java @@ -9,7 +9,11 @@ public final class ByteStringMapper { - public static final ByteStringMapper INSTANCE = new ByteStringMapper(); + private static final ByteStringMapper INSTANCE = new ByteStringMapper(); + + public static ByteStringMapper getInstance() { + return INSTANCE; + } public ByteString stringToProto(String source) { return ByteString.copyFromUtf8(source); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java index fe44695c9..c93894cb6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapper.java @@ -11,11 +11,16 @@ public final class ResourceMapper { - public static final ResourceMapper INSTANCE = new ResourceMapper(); + private static final ResourceMapper INSTANCE = new ResourceMapper(); + + public static ResourceMapper getInstance() { + return INSTANCE; + } public Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { return Resource.newBuilder() - .addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(sdkResource.getAttributes())) + .addAllAttributes( + AttributesMapper.getInstance().attributesToProto(sdkResource.getAttributes())) .build(); } @@ -26,7 +31,8 @@ public io.opentelemetry.sdk.resources.Resource mapToSdk( if (schemaUrl != null) { resource.setSchemaUrl(schemaUrl); } - resource.putAll(AttributesMapper.INSTANCE.protoToAttributes(protoResource.getAttributesList())); + resource.putAll( + AttributesMapper.getInstance().protoToAttributes(protoResource.getAttributesList())); return resource.build(); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java index e365bec0d..8cedb2d4e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapper.java @@ -23,7 +23,11 @@ public final class LogRecordDataMapper { - public static final LogRecordDataMapper INSTANCE = new LogRecordDataMapper(); + private static final LogRecordDataMapper INSTANCE = new LogRecordDataMapper(); + + public static LogRecordDataMapper getInstance() { + return INSTANCE; + } public LogRecord mapToProto(LogRecordData source) { LogRecord.Builder logRecord = LogRecord.newBuilder(); @@ -48,10 +52,11 @@ public LogRecord mapToProto(LogRecordData source) { } private static void addExtrasToProtoBuilder(LogRecordData source, LogRecord.Builder target) { - target.addAllAttributes(AttributesMapper.INSTANCE.attributesToProto(source.getAttributes())); + target.addAllAttributes( + AttributesMapper.getInstance().attributesToProto(source.getAttributes())); SpanContext spanContext = source.getSpanContext(); - target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); - target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + target.setSpanId(ByteStringMapper.getInstance().stringToProto(spanContext.getSpanId())); + target.setTraceId(ByteStringMapper.getInstance().stringToProto(spanContext.getTraceId())); target.setDroppedAttributesCount( source.getTotalAttributeCount() - source.getAttributes().size()); } @@ -78,12 +83,13 @@ private static void addExtrasToSdkItemBuilder( LogRecordDataImpl.Builder target, Resource resource, InstrumentationScopeInfo scopeInfo) { - Attributes attributes = AttributesMapper.INSTANCE.protoToAttributes(source.getAttributesList()); + Attributes attributes = + AttributesMapper.getInstance().protoToAttributes(source.getAttributesList()); target.setAttributes(attributes); target.setSpanContext( SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + ByteStringMapper.getInstance().protoToString(source.getTraceId()), + ByteStringMapper.getInstance().protoToString(source.getSpanId()), TraceFlags.getSampled(), TraceState.getDefault())); target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java index 9f21af250..92ee11ab2 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapper.java @@ -21,17 +21,21 @@ public class ProtoLogsDataMapper extends BaseProtoSignalsDataMapper< LogRecordData, LogRecord, LogsData, ResourceLogs, ScopeLogs> { - public static final ProtoLogsDataMapper INSTANCE = new ProtoLogsDataMapper(); + private static final ProtoLogsDataMapper INSTANCE = new ProtoLogsDataMapper(); + + public static ProtoLogsDataMapper getInstance() { + return INSTANCE; + } @Override protected LogRecord signalItemToProto(LogRecordData sourceData) { - return LogRecordDataMapper.INSTANCE.mapToProto(sourceData); + return LogRecordDataMapper.getInstance().mapToProto(sourceData); } @Override protected LogRecordData protoToSignalItem( LogRecord logRecord, Resource resource, InstrumentationScopeInfo scopeInfo) { - return LogRecordDataMapper.INSTANCE.mapToSdk(logRecord, resource, scopeInfo); + return LogRecordDataMapper.getInstance().mapToSdk(logRecord, resource, scopeInfo); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java index 6e98abbb7..512cc71cb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapper.java @@ -65,7 +65,11 @@ public final class MetricDataMapper { - public static final MetricDataMapper INSTANCE = new MetricDataMapper(); + private static final MetricDataMapper INSTANCE = new MetricDataMapper(); + + public static MetricDataMapper getInstance() { + return INSTANCE; + } public Metric mapToProto(MetricData source) { Metric.Builder metric = Metric.newBuilder(); @@ -480,8 +484,8 @@ private static Exemplar longExemplarDataToExemplar(LongExemplarData doubleExempl private static void addExtrasToExemplar(ExemplarData source, Exemplar.Builder target) { target.addAllFilteredAttributes(attributesToProto(source.getFilteredAttributes())); SpanContext spanContext = source.getSpanContext(); - target.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); - target.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); + target.setSpanId(ByteStringMapper.getInstance().stringToProto(spanContext.getSpanId())); + target.setTraceId(ByteStringMapper.getInstance().stringToProto(spanContext.getTraceId())); } private static AggregationTemporality mapAggregationTemporalityToProto( @@ -574,8 +578,8 @@ private static LongExemplarData exemplarToLongExemplarData(Exemplar source) { private static SpanContext createForExemplar(Exemplar value) { return SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(value.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(value.getSpanId()), + ByteStringMapper.getInstance().protoToString(value.getTraceId()), + ByteStringMapper.getInstance().protoToString(value.getSpanId()), TraceFlags.getSampled(), TraceState.getDefault()); } @@ -756,11 +760,11 @@ private static ExponentialHistogramBuckets mapBucketsFromProto( } private static List attributesToProto(Attributes source) { - return AttributesMapper.INSTANCE.attributesToProto(source); + return AttributesMapper.getInstance().attributesToProto(source); } private static Attributes protoToAttributes(List source) { - return AttributesMapper.INSTANCE.protoToAttributes(source); + return AttributesMapper.getInstance().protoToAttributes(source); } private static final class DataWithType { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java index ce6268f64..b05631d5c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapper.java @@ -21,17 +21,21 @@ public class ProtoMetricsDataMapper extends BaseProtoSignalsDataMapper< MetricData, Metric, MetricsData, ResourceMetrics, ScopeMetrics> { - public static final ProtoMetricsDataMapper INSTANCE = new ProtoMetricsDataMapper(); + private static final ProtoMetricsDataMapper INSTANCE = new ProtoMetricsDataMapper(); + + public static ProtoMetricsDataMapper getInstance() { + return INSTANCE; + } @Override protected Metric signalItemToProto(MetricData sourceData) { - return MetricDataMapper.INSTANCE.mapToProto(sourceData); + return MetricDataMapper.getInstance().mapToProto(sourceData); } @Override protected MetricData protoToSignalItem( Metric protoSignalItem, Resource resource, InstrumentationScopeInfo scopeInfo) { - return MetricDataMapper.INSTANCE.mapToSdk(protoSignalItem, resource, scopeInfo); + return MetricDataMapper.getInstance().mapToSdk(protoSignalItem, resource, scopeInfo); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java index a40515f17..632dd491b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapper.java @@ -20,11 +20,15 @@ public class ProtoSpansDataMapper extends BaseProtoSignalsDataMapper { - public static final ProtoSpansDataMapper INSTANCE = new ProtoSpansDataMapper(); + private static final ProtoSpansDataMapper INSTANCE = new ProtoSpansDataMapper(); + + public static ProtoSpansDataMapper getInstance() { + return INSTANCE; + } @Override protected Span signalItemToProto(SpanData sourceData) { - return SpanDataMapper.INSTANCE.mapToProto(sourceData); + return SpanDataMapper.getInstance().mapToProto(sourceData); } @Override @@ -35,7 +39,7 @@ protected List getProtoResources(TracesData protoData) { @Override protected SpanData protoToSignalItem( Span protoSignalItem, Resource resource, InstrumentationScopeInfo scopeInfo) { - return SpanDataMapper.INSTANCE.mapToSdk(protoSignalItem, resource, scopeInfo); + return SpanDataMapper.getInstance().mapToSdk(protoSignalItem, resource, scopeInfo); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java index ee55601fe..689be4d9b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapper.java @@ -30,8 +30,13 @@ public final class SpanDataMapper { - public static final SpanDataMapper INSTANCE = new SpanDataMapper(); - private final ByteStringMapper byteStringMapper = ByteStringMapper.INSTANCE; + private static final SpanDataMapper INSTANCE = new SpanDataMapper(); + + public static SpanDataMapper getInstance() { + return INSTANCE; + } + + private final ByteStringMapper byteStringMapper = ByteStringMapper.getInstance(); public Span mapToProto(SpanData source) { Span.Builder span = Span.newBuilder(); @@ -97,17 +102,17 @@ private static void addSpanDataExtras( target.setAttributes(attributes); target.setResource(resource); target.setInstrumentationScopeInfo(instrumentationScopeInfo); - String traceId = ByteStringMapper.INSTANCE.protoToString(source.getTraceId()); + String traceId = ByteStringMapper.getInstance().protoToString(source.getTraceId()); target.setSpanContext( SpanContext.create( traceId, - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + ByteStringMapper.getInstance().protoToString(source.getSpanId()), TraceFlags.getSampled(), decodeTraceState(source.getTraceState()))); target.setParentSpanContext( SpanContext.create( traceId, - ByteStringMapper.INSTANCE.protoToString(source.getParentSpanId()), + ByteStringMapper.getInstance().protoToString(source.getParentSpanId()), TraceFlags.getSampled(), TraceState.getDefault())); target.setTotalAttributeCount(source.getDroppedAttributesCount() + attributes.size()); @@ -250,8 +255,8 @@ private static LinkData linkDataToSdk(Span.Link source) { int totalAttrCount = source.getDroppedAttributesCount() + attributes.size(); SpanContext spanContext = SpanContext.create( - ByteStringMapper.INSTANCE.protoToString(source.getTraceId()), - ByteStringMapper.INSTANCE.protoToString(source.getSpanId()), + ByteStringMapper.getInstance().protoToString(source.getTraceId()), + ByteStringMapper.getInstance().protoToString(source.getSpanId()), TraceFlags.getSampled(), decodeTraceState(source.getTraceState())); return LinkData.create(spanContext, attributes, totalAttrCount); @@ -271,11 +276,11 @@ private static StatusCode getStatusCode(int ordinal) { } private static List attributesToProto(Attributes source) { - return AttributesMapper.INSTANCE.attributesToProto(source); + return AttributesMapper.getInstance().attributesToProto(source); } private static Attributes protoToAttributes(List source) { - return AttributesMapper.INSTANCE.protoToAttributes(source); + return AttributesMapper.getInstance().protoToAttributes(source); } private static int getListSize(List list) { @@ -301,8 +306,8 @@ private static TraceState decodeTraceState(@Nullable String source) { private static Span.Link linkDataToProto(LinkData source) { Span.Link.Builder builder = Span.Link.newBuilder(); SpanContext spanContext = source.getSpanContext(); - builder.setTraceId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getTraceId())); - builder.setSpanId(ByteStringMapper.INSTANCE.stringToProto(spanContext.getSpanId())); + builder.setTraceId(ByteStringMapper.getInstance().stringToProto(spanContext.getTraceId())); + builder.setSpanId(ByteStringMapper.getInstance().stringToProto(spanContext.getSpanId())); builder.addAllAttributes(attributesToProto(source.getAttributes())); builder.setDroppedAttributesCount( source.getTotalAttributeCount() - source.getAttributes().size()); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index 509d251d6..6ca3ca151 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -29,7 +29,7 @@ static LogRecordDataSerializer get() { @Override public byte[] serialize(Collection logRecordData) { - LogsData proto = ProtoLogsDataMapper.INSTANCE.toProto(logRecordData); + LogsData proto = ProtoLogsDataMapper.getInstance().toProto(logRecordData); try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { proto.writeDelimitedTo(out); return out.toByteArray(); @@ -41,7 +41,7 @@ public byte[] serialize(Collection logRecordData) { @Override public List deserialize(byte[] source) { try { - return ProtoLogsDataMapper.INSTANCE.fromProto(LogsData.parseFrom(source)); + return ProtoLogsDataMapper.getInstance().fromProto(LogsData.parseFrom(source)); } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 5e6d15146..c1544aa52 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -29,7 +29,7 @@ static MetricDataSerializer get() { @Override public byte[] serialize(Collection metricData) { - MetricsData proto = ProtoMetricsDataMapper.INSTANCE.toProto(metricData); + MetricsData proto = ProtoMetricsDataMapper.getInstance().toProto(metricData); try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { proto.writeDelimitedTo(out); return out.toByteArray(); @@ -41,7 +41,7 @@ public byte[] serialize(Collection metricData) { @Override public List deserialize(byte[] source) { try { - return ProtoMetricsDataMapper.INSTANCE.fromProto(MetricsData.parseFrom(source)); + return ProtoMetricsDataMapper.getInstance().fromProto(MetricsData.parseFrom(source)); } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index 08be53d8f..037e9869c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -29,7 +29,7 @@ static SpanDataSerializer get() { @Override public byte[] serialize(Collection spanData) { - TracesData proto = ProtoSpansDataMapper.INSTANCE.toProto(spanData); + TracesData proto = ProtoSpansDataMapper.getInstance().toProto(spanData); try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { proto.writeDelimitedTo(out); return out.toByteArray(); @@ -41,7 +41,7 @@ public byte[] serialize(Collection spanData) { @Override public List deserialize(byte[] source) { try { - return ProtoSpansDataMapper.INSTANCE.fromProto(TracesData.parseFrom(source)); + return ProtoSpansDataMapper.getInstance().fromProto(TracesData.parseFrom(source)); } catch (InvalidProtocolBufferException e) { throw new IllegalArgumentException(e); } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 0a6e99487..f86c96e55 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -45,7 +45,7 @@ public ReadableFile( createdTimeMillis, clock, configuration, - DelimitedProtoStreamReader.Factory.INSTANCE); + DelimitedProtoStreamReader.Factory.getInstance()); } public ReadableFile( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java index ab4108a83..ccdb0f1ed 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/reader/DelimitedProtoStreamReader.java @@ -48,7 +48,11 @@ private int getNextItemSize() { public static class Factory implements StreamReader.Factory { - public static final Factory INSTANCE = new DelimitedProtoStreamReader.Factory(); + private static final Factory INSTANCE = new DelimitedProtoStreamReader.Factory(); + + public static Factory getInstance() { + return INSTANCE; + } private Factory() {} diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java index ab6196248..17518cf2a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java @@ -56,7 +56,7 @@ public static Builder builder() { .setMaxFileAgeForWriteMillis(TimeUnit.SECONDS.toMillis(30)) .setMinFileAgeForReadMillis(TimeUnit.SECONDS.toMillis(33)) .setMaxFileAgeForReadMillis(TimeUnit.HOURS.toMillis(18)) - .setTemporaryFileProvider(DefaultTemporaryFileProvider.INSTANCE); + .setTemporaryFileProvider(DefaultTemporaryFileProvider.getInstance()); } @AutoValue.Builder diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java index e2f855a4c..b58cd6963 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java @@ -9,7 +9,11 @@ import java.io.IOException; public class DefaultTemporaryFileProvider implements TemporaryFileProvider { - public static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); + private static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); + + public static TemporaryFileProvider getInstance() { + return INSTANCE; + } private DefaultTemporaryFileProvider() {} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java index 95b922a50..1ca814fcb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/AttributesMapperTest.java @@ -49,10 +49,10 @@ public void verifyArrayMapping() { } private static List mapToProto(Attributes attributes) { - return AttributesMapper.INSTANCE.attributesToProto(attributes); + return AttributesMapper.getInstance().attributesToProto(attributes); } private static Attributes mapFromProto(List keyValues) { - return AttributesMapper.INSTANCE.protoToAttributes(keyValues); + return AttributesMapper.getInstance().protoToAttributes(keyValues); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java index 55b95fbfb..ef9483f78 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/ResourceMapperTest.java @@ -21,11 +21,11 @@ public void verifyMapping() { } private static Resource mapToProto(io.opentelemetry.sdk.resources.Resource sdkResource) { - return ResourceMapper.INSTANCE.mapToProto(sdkResource); + return ResourceMapper.getInstance().mapToProto(sdkResource); } private static io.opentelemetry.sdk.resources.Resource mapToSdk( Resource protoResource, String schemaUrl) { - return ResourceMapper.INSTANCE.mapToSdk(protoResource, schemaUrl); + return ResourceMapper.getInstance().mapToSdk(protoResource, schemaUrl); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java index fe8746913..81e1147db 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/LogRecordDataMapperTest.java @@ -43,11 +43,11 @@ public void verifyMapping() { } private static LogRecord mapToProto(LogRecordData data) { - return LogRecordDataMapper.INSTANCE.mapToProto(data); + return LogRecordDataMapper.getInstance().mapToProto(data); } private static LogRecordData mapToSdk( LogRecord data, Resource resource, InstrumentationScopeInfo scopeInfo) { - return LogRecordDataMapper.INSTANCE.mapToSdk(data, resource, scopeInfo); + return LogRecordDataMapper.getInstance().mapToSdk(data, resource, scopeInfo); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java index 2b7f2c5f5..4834e34c9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/logs/ProtoLogsDataMapperTest.java @@ -161,10 +161,10 @@ public void verifyMultipleLogsWithDifferentResource() { } private static LogsData mapToProto(Collection signals) { - return ProtoLogsDataMapper.INSTANCE.toProto(signals); + return ProtoLogsDataMapper.getInstance().toProto(signals); } private static List mapFromProto(LogsData protoData) { - return ProtoLogsDataMapper.INSTANCE.fromProto(protoData); + return ProtoLogsDataMapper.getInstance().fromProto(protoData); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java index 65ad8112c..fccfc90b6 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/MetricDataMapperTest.java @@ -265,11 +265,11 @@ public void verifyExponentialHistogramMapping() { } private static Metric mapToProto(MetricData source) { - return MetricDataMapper.INSTANCE.mapToProto(source); + return MetricDataMapper.getInstance().mapToProto(source); } private static MetricData mapToSdk( Metric source, Resource resource, InstrumentationScopeInfo scope) { - return MetricDataMapper.INSTANCE.mapToSdk(source, resource, scope); + return MetricDataMapper.getInstance().mapToSdk(source, resource, scope); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java index 5916fb2ff..40d1d2f40 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/metrics/ProtoMetricsDataMapperTest.java @@ -151,10 +151,10 @@ public void verifyMultipleMetricsWithDifferentResource() { } private static MetricsData mapToProto(Collection signals) { - return ProtoMetricsDataMapper.INSTANCE.toProto(signals); + return ProtoMetricsDataMapper.getInstance().toProto(signals); } private static List mapFromProto(MetricsData protoData) { - return ProtoMetricsDataMapper.INSTANCE.fromProto(protoData); + return ProtoMetricsDataMapper.getInstance().fromProto(protoData); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java index dca0419cd..97a12edbb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/ProtoSpansDataMapperTest.java @@ -187,10 +187,10 @@ public void verifyMultipleSpansWithDifferentResource() { } private static TracesData mapToProto(Collection signals) { - return ProtoSpansDataMapper.INSTANCE.toProto(signals); + return ProtoSpansDataMapper.getInstance().toProto(signals); } private static List mapFromProto(TracesData protoData) { - return ProtoSpansDataMapper.INSTANCE.fromProto(protoData); + return ProtoSpansDataMapper.getInstance().fromProto(protoData); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java index 06215d098..9735690b9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/spans/SpanDataMapperTest.java @@ -92,11 +92,11 @@ public void verifyMappingWithTraceState() { } private static Span mapToProto(SpanData source) { - return SpanDataMapper.INSTANCE.mapToProto(source); + return SpanDataMapper.getInstance().mapToProto(source); } private static SpanData mapToSdk( Span source, Resource resource, InstrumentationScopeInfo instrumentationScopeInfo) { - return SpanDataMapper.INSTANCE.mapToSdk(source, resource, instrumentationScopeInfo); + return SpanDataMapper.getInstance().mapToSdk(source, resource, instrumentationScopeInfo); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index 27a5c2b06..6d9fd9ca6 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -18,7 +18,7 @@ public final class TestData { public static final int MAX_FOLDER_SIZE = 300; public static StorageConfiguration getDefaultConfiguration() { - return getConfiguration(DefaultTemporaryFileProvider.INSTANCE); + return getConfiguration(DefaultTemporaryFileProvider.getInstance()); } public static StorageConfiguration getConfiguration(TemporaryFileProvider fileProvider) { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java index a3ea6263d..5ad19aff6 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/testutils/BaseSignalSerializerTest.java @@ -24,7 +24,7 @@ protected byte[] serialize(SIGNAL_SDK_ITEM... items) { protected List deserialize(byte[] source) { try (ByteArrayInputStream in = new ByteArrayInputStream(source)) { - StreamReader streamReader = DelimitedProtoStreamReader.Factory.INSTANCE.create(in); + StreamReader streamReader = DelimitedProtoStreamReader.Factory.getInstance().create(in); return getSerializer().deserialize(Objects.requireNonNull(streamReader.read()).content); } catch (IOException e) { throw new RuntimeException(e); From 9f71217c380f2db8a4184126fc2af0b9be11dc22 Mon Sep 17 00:00:00 2001 From: LikeTheSalad <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:50:36 +0200 Subject: [PATCH 192/209] Update disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java Co-authored-by: jack-berg <34418638+jack-berg@users.noreply.github.com> --- .../buffering/storage/files/DefaultTemporaryFileProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java index e2f855a4c..1d2041ece 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java @@ -8,7 +8,7 @@ import java.io.File; import java.io.IOException; -public class DefaultTemporaryFileProvider implements TemporaryFileProvider { +public final class DefaultTemporaryFileProvider implements TemporaryFileProvider { public static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); private DefaultTemporaryFileProvider() {} From e0dbd4c4086876dd40d59f8d3b6646aea3e8fef9 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:52:01 +0200 Subject: [PATCH 193/209] Making DefaultTemporaryFileProvider final --- .../buffering/storage/files/DefaultTemporaryFileProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java index b58cd6963..98bc0dd30 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java @@ -8,7 +8,7 @@ import java.io.File; import java.io.IOException; -public class DefaultTemporaryFileProvider implements TemporaryFileProvider { +public final class DefaultTemporaryFileProvider implements TemporaryFileProvider { private static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); public static TemporaryFileProvider getInstance() { From 1ed6042274c1f8e778e0f384a9925ebf2b76e17c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:53:21 +0200 Subject: [PATCH 194/209] Adding DefaultTemporaryFileProvider getInstance after committing PR suggestion --- .../storage/files/DefaultTemporaryFileProvider.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java index 1d2041ece..98bc0dd30 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java @@ -9,7 +9,11 @@ import java.io.IOException; public final class DefaultTemporaryFileProvider implements TemporaryFileProvider { - public static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); + private static final TemporaryFileProvider INSTANCE = new DefaultTemporaryFileProvider(); + + public static TemporaryFileProvider getInstance() { + return INSTANCE; + } private DefaultTemporaryFileProvider() {} From 21a945b9826cc23f945c2d3a0a9c8c8d3226584f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 10:58:23 +0200 Subject: [PATCH 195/209] Moving all public classes outside the `exporters` package --- .../LogRecordDiskExporter.java | 9 ++------- .../{exporters => }/MetricDiskExporter.java | 2 +- .../{exporters => }/SpanDiskExporter.java | 19 ++++--------------- .../{exporters => }/StoredBatchExporter.java | 2 +- .../internal/exporters/DiskExporter.java | 2 +- .../{exporters => }/IntegrationTest.java | 9 +++------ .../LogRecordDiskExporterTest.java | 2 +- .../MetricDiskExporterTest.java | 2 +- .../{exporters => }/SpanDiskExporterTest.java | 2 +- 9 files changed, 15 insertions(+), 34 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/LogRecordDiskExporter.java (93%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/MetricDiskExporter.java (98%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/SpanDiskExporter.java (86%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/StoredBatchExporter.java (92%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/IntegrationTest.java (95%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/LogRecordDiskExporterTest.java (95%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/MetricDiskExporterTest.java (97%) rename disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/{exporters => }/SpanDiskExporterTest.java (95%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java similarity index 93% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java index 511f4609f..df6593b96 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; @@ -63,12 +63,7 @@ private LogRecordDiskExporter( this.wrapped = wrapped; diskExporter = new DiskExporter<>( - rootDir, - configuration, - "logs", - SignalSerializer.ofLogs(), - wrapped::export, - clock); + rootDir, configuration, "logs", SignalSerializer.ofLogs(), wrapped::export, clock); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java similarity index 98% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java index bbcc114f2..5d4497ee6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java index 61aca72ea..56f737fcb 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; @@ -45,29 +45,18 @@ public static SpanDiskExporter create( // This is used for testing purposes. public static SpanDiskExporter create( - SpanExporter wrapped, - File rootDir, - StorageConfiguration configuration, - StorageClock clock) + SpanExporter wrapped, File rootDir, StorageConfiguration configuration, StorageClock clock) throws IOException { return new SpanDiskExporter(wrapped, rootDir, configuration, clock); } private SpanDiskExporter( - SpanExporter wrapped, - File rootDir, - StorageConfiguration configuration, - StorageClock clock) + SpanExporter wrapped, File rootDir, StorageConfiguration configuration, StorageClock clock) throws IOException { this.wrapped = wrapped; diskExporter = new DiskExporter<>( - rootDir, - configuration, - "spans", - SignalSerializer.ofSpans(), - wrapped::export, - clock); + rootDir, configuration, "spans", SignalSerializer.ofSpans(), wrapped::export, clock); } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/StoredBatchExporter.java similarity index 92% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/StoredBatchExporter.java index 996009742..ccaf2ad5c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/StoredBatchExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/StoredBatchExporter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import java.io.IOException; import java.util.concurrent.TimeUnit; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 2d9f45174..6db45feed 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -5,7 +5,7 @@ package io.opentelemetry.contrib.disk.buffering.internal.exporters; -import io.opentelemetry.contrib.disk.buffering.exporters.StoredBatchExporter; +import io.opentelemetry.contrib.disk.buffering.StoredBatchExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java similarity index 95% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java index 5657d4c2c..6e0659de9 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -68,8 +68,7 @@ public void setUp() throws IOException { // Setting up metrics memoryMetricExporter = InMemoryMetricExporter.create(); diskMetricExporter = - MetricDiskExporter.create( - memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, clock); + MetricDiskExporter.create(memoryMetricExporter, rootDir, STORAGE_CONFIGURATION, clock); meterProvider = createMeterProvider(diskMetricExporter); meter = meterProvider.get("MetricInstrumentationScope"); @@ -126,9 +125,7 @@ private void assertExporter(StoredBatchExporter exporter, Supplier fini @SuppressWarnings("DirectInvocationOnMock") private void fastForwardTimeByMillis(long milliseconds) { - doReturn(clock.now() + milliseconds) - .when(clock) - .now(); + doReturn(clock.now() + milliseconds).when(clock).now(); } private static SdkTracerProvider createTracerProvider(SpanExporter exporter) { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java similarity index 95% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java index f9e98cb53..2ef660a2a 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java similarity index 97% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java index 6f2b0db55..654120d17 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.doReturn; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java similarity index 95% rename from disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java rename to disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java index 21a7ebaf9..8cb7ef15b 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.exporters; +package io.opentelemetry.contrib.disk.buffering; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; From 101b9325d9892cfa9d5b3b2d604114837e9bb3bd Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 11:01:49 +0200 Subject: [PATCH 196/209] Moving all classes from `storage` directly to `internal` --- .../contrib/disk/buffering/LogRecordDiskExporter.java | 2 +- .../contrib/disk/buffering/MetricDiskExporter.java | 2 +- .../contrib/disk/buffering/SpanDiskExporter.java | 2 +- .../{storage => internal}/StorageConfiguration.java | 6 +++--- .../disk/buffering/internal/exporters/DiskExporter.java | 2 +- .../files/DefaultTemporaryFileProvider.java | 2 +- .../{storage => internal}/files/TemporaryFileProvider.java | 2 +- .../disk/buffering/internal/storage/FolderManager.java | 2 +- .../disk/buffering/internal/storage/files/ReadableFile.java | 2 +- .../disk/buffering/internal/storage/files/WritableFile.java | 2 +- .../contrib/disk/buffering/IntegrationTest.java | 2 +- .../contrib/disk/buffering/LogRecordDiskExporterTest.java | 2 +- .../contrib/disk/buffering/MetricDiskExporterTest.java | 2 +- .../contrib/disk/buffering/SpanDiskExporterTest.java | 2 +- .../disk/buffering/internal/exporters/DiskExporterTest.java | 2 +- .../contrib/disk/buffering/internal/storage/TestData.java | 6 +++--- .../buffering/internal/storage/files/ReadableFileTest.java | 2 +- 17 files changed, 21 insertions(+), 21 deletions(-) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{storage => internal}/StorageConfiguration.java (91%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{storage => internal}/files/DefaultTemporaryFileProvider.java (90%) rename disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/{storage => internal}/files/TemporaryFileProvider.java (86%) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java index df6593b96..b5fcedd0d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java @@ -5,10 +5,10 @@ package io.opentelemetry.contrib.disk.buffering; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.LogRecordProcessor; import io.opentelemetry.sdk.logs.data.LogRecordData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java index 5d4497ee6..7ddd5b524 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java @@ -5,10 +5,10 @@ package io.opentelemetry.contrib.disk.buffering; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java index 56f737fcb..abcf98d17 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java @@ -5,10 +5,10 @@ package io.opentelemetry.contrib.disk.buffering; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.exporters.DiskExporter; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.data.SpanData; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/StorageConfiguration.java similarity index 91% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/StorageConfiguration.java index 17518cf2a..3cd4a48b8 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/StorageConfiguration.java @@ -3,11 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.storage; +package io.opentelemetry.contrib.disk.buffering.internal; import com.google.auto.value.AutoValue; -import io.opentelemetry.contrib.disk.buffering.storage.files.DefaultTemporaryFileProvider; -import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.internal.files.DefaultTemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.internal.files.TemporaryFileProvider; import java.util.concurrent.TimeUnit; /** Defines how the storage should be managed. */ diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index 6db45feed..f86641364 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -6,12 +6,12 @@ package io.opentelemetry.contrib.disk.buffering.internal.exporters; import io.opentelemetry.contrib.disk.buffering.StoredBatchExporter; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.FolderManager; import io.opentelemetry.contrib.disk.buffering.internal.storage.Storage; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import java.io.File; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/DefaultTemporaryFileProvider.java similarity index 90% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/DefaultTemporaryFileProvider.java index 98bc0dd30..2e6e21d98 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/DefaultTemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/DefaultTemporaryFileProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.storage.files; +package io.opentelemetry.contrib.disk.buffering.internal.files; import java.io.File; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/TemporaryFileProvider.java similarity index 86% rename from disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java rename to disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/TemporaryFileProvider.java index e2aab18a9..37f13abdd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/TemporaryFileProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.storage.files; +package io.opentelemetry.contrib.disk.buffering.internal.files; import java.io.File; import java.io.IOException; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index 70858a055..ab7af193a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -5,10 +5,10 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.WritableFile; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; import java.io.IOException; import java.util.Objects; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index f86c96e55..1c51fd397 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -5,13 +5,13 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.DelimitedProtoStreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.ReadResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.reader.StreamReader; import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.FileTransferUtil; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index cc18825fa..b9e491094 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -5,9 +5,9 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage.files; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.WritableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java index 6e0659de9..f204a45cb 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java @@ -15,8 +15,8 @@ import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java index 2ef660a2a..a1f521a84 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporterTest.java @@ -8,8 +8,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import java.io.File; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java index 654120d17..8df89da76 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporterTest.java @@ -10,8 +10,8 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java index 8cb7ef15b..eaa8c1629 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporterTest.java @@ -8,8 +8,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.export.SpanExporter; import java.io.File; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java index a4fe5e348..168e812e1 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporterTest.java @@ -16,10 +16,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.TestData; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java index 6d9fd9ca6..b267327ca 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/TestData.java @@ -5,9 +5,9 @@ package io.opentelemetry.contrib.disk.buffering.internal.storage; -import io.opentelemetry.contrib.disk.buffering.storage.StorageConfiguration; -import io.opentelemetry.contrib.disk.buffering.storage.files.DefaultTemporaryFileProvider; -import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.internal.StorageConfiguration; +import io.opentelemetry.contrib.disk.buffering.internal.files.DefaultTemporaryFileProvider; +import io.opentelemetry.contrib.disk.buffering.internal.files.TemporaryFileProvider; public final class TestData { diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index c993a03ee..b8272381c 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -16,12 +16,12 @@ import static org.mockito.Mockito.mock; import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.contrib.disk.buffering.internal.files.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.logs.models.LogRecordDataImpl; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.LogRecordDataSerializer; import io.opentelemetry.contrib.disk.buffering.internal.serialization.serializers.SignalSerializer; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import io.opentelemetry.contrib.disk.buffering.storage.files.TemporaryFileProvider; import io.opentelemetry.contrib.disk.buffering.testutils.TestData; import io.opentelemetry.sdk.logs.data.Body; import io.opentelemetry.sdk.logs.data.LogRecordData; From 9eabe763243d2fbf49c2f468383ef3b27f648bd0 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 11:05:28 +0200 Subject: [PATCH 197/209] Moving all classes from `storage` directly to `internal` --- .../{storage => }/files/utils/FileTransferUtilBenchmark.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/{storage => }/files/utils/FileTransferUtilBenchmark.java (91%) diff --git a/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java b/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/files/utils/FileTransferUtilBenchmark.java similarity index 91% rename from disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java rename to disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/files/utils/FileTransferUtilBenchmark.java index aa4ccdf39..a9fb7ad5e 100644 --- a/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/FileTransferUtilBenchmark.java +++ b/disk-buffering/src/jmh/java/io/opentelemetry/contrib/disk/buffering/internal/files/utils/FileTransferUtilBenchmark.java @@ -3,8 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; +package io.opentelemetry.contrib.disk.buffering.internal.files.utils; +import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.FileTransferUtil; import java.io.File; import java.io.FileInputStream; import java.io.IOException; From e727b9f0d5c57f0b0cc26563c5c4167b558775db Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 11:42:24 +0200 Subject: [PATCH 198/209] Fixing formatting --- .../contrib/disk/buffering/MetricDiskExporter.java | 10 ++-------- .../buffering/internal/exporters/DiskExporter.java | 3 +-- .../mapping/common/BaseProtoSignalsDataMapper.java | 3 ++- .../disk/buffering/internal/storage/FolderManager.java | 3 +-- .../buffering/internal/storage/files/ReadableFile.java | 5 +---- .../buffering/internal/storage/files/WritableFile.java | 5 +---- .../buffering/internal/storage/FolderManagerTest.java | 8 ++------ .../internal/storage/files/ReadableFileTest.java | 4 +--- .../internal/storage/files/WritableFileTest.java | 4 +--- 9 files changed, 12 insertions(+), 33 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java index 7ddd5b524..face0f679 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java @@ -47,19 +47,13 @@ public static MetricDiskExporter create( // This is used for testing purposes. public static MetricDiskExporter create( - MetricExporter wrapped, - File rootDir, - StorageConfiguration configuration, - StorageClock clock) + MetricExporter wrapped, File rootDir, StorageConfiguration configuration, StorageClock clock) throws IOException { return new MetricDiskExporter(wrapped, rootDir, configuration, clock); } private MetricDiskExporter( - MetricExporter wrapped, - File rootDir, - StorageConfiguration configuration, - StorageClock clock) + MetricExporter wrapped, File rootDir, StorageConfiguration configuration, StorageClock clock) throws IOException { this.wrapped = wrapped; diskExporter = diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java index f86641364..da7fc4a83 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/exporters/DiskExporter.java @@ -37,8 +37,7 @@ public DiskExporter( throws IOException { validateConfiguration(configuration); this.storage = - new Storage( - new FolderManager(getSignalFolder(rootDir, folderName), configuration, clock)); + new Storage(new FolderManager(getSignalFolder(rootDir, folderName), configuration, clock)); this.serializer = serializer; this.exportFunction = exportFunction; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java index c754aa612..ef263c53d 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/mapping/common/BaseProtoSignalsDataMapper.java @@ -70,7 +70,8 @@ protected io.opentelemetry.proto.resource.v1.Resource resourceToProto(Resource r protected Resource protoToResource( io.opentelemetry.proto.resource.v1.Resource protoResource, String schemaUrl) { - return ResourceMapper.getInstance().mapToSdk(protoResource, schemaUrl.isEmpty() ? null : schemaUrl); + return ResourceMapper.getInstance() + .mapToSdk(protoResource, schemaUrl.isEmpty() ? null : schemaUrl); } protected InstrumentationScopeInfo protoToInstrumentationScopeInfo( diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java index ab7af193a..1411aa73c 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManager.java @@ -49,8 +49,7 @@ public synchronized WritableFile createWritableFile() throws IOException { } } File file = new File(folder, String.valueOf(systemCurrentTimeMillis)); - currentWritableFile = - new WritableFile(file, systemCurrentTimeMillis, configuration, clock); + currentWritableFile = new WritableFile(file, systemCurrentTimeMillis, configuration, clock); return currentWritableFile; } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 1c51fd397..9f9cb5998 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -35,10 +35,7 @@ public final class ReadableFile extends StorageFile { @Nullable private ReadResult unconsumedResult; public ReadableFile( - File file, - long createdTimeMillis, - StorageClock clock, - StorageConfiguration configuration) + File file, long createdTimeMillis, StorageClock clock, StorageConfiguration configuration) throws IOException { this( file, diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java index b9e491094..5cfc0c705 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFile.java @@ -23,10 +23,7 @@ public final class WritableFile extends StorageFile { private int size; public WritableFile( - File file, - long createdTimeMillis, - StorageConfiguration configuration, - StorageClock clock) + File file, long createdTimeMillis, StorageConfiguration configuration, StorageClock clock) throws IOException { super(file); this.configuration = configuration; diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java index 8c27b2097..bfd6fed20 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/FolderManagerTest.java @@ -80,9 +80,7 @@ public void closeCurrentlyWritableFile_whenItIsReadyToBeRead_anNoOtherReadableFi WritableFile writableFile = folderManager.createWritableFile(); writableFile.append(new byte[3]); - doReturn(createdFileTime + MIN_FILE_AGE_FOR_READ_MILLIS) - .when(clock) - .now(); + doReturn(createdFileTime + MIN_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); ReadableFile readableFile = folderManager.getReadableFile(); @@ -225,9 +223,7 @@ public void provideNullFileForRead_whenReadableFilesAreExpired() throws IOExcept File expiredReadableFile1 = new File(rootDir, String.valueOf(creationReferenceTime - 1)); File expiredReadableFile2 = new File(rootDir, String.valueOf(creationReferenceTime - 10)); createFiles(expiredReadableFile1, expiredReadableFile2); - doReturn(creationReferenceTime + MAX_FILE_AGE_FOR_READ_MILLIS) - .when(clock) - .now(); + doReturn(creationReferenceTime + MAX_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); assertNull(folderManager.getReadableFile()); } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java index b8272381c..4c4056ba7 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFileTest.java @@ -197,9 +197,7 @@ public void whenNoMoreLinesAvailableToRead_deleteOriginalFile_close_and_returnNo whenReadingAfterTheConfiguredReadingTimeExpired_deleteOriginalFile_close_and_returnFileExpiredException() throws IOException { readableFile.readAndProcess(bytes -> true); - doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS) - .when(clock) - .now(); + doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_READ_MILLIS).when(clock).now(); assertEquals(ReadableResult.FAILED, readableFile.readAndProcess(bytes -> true)); diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 9b5959f84..9dda0d264 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -89,9 +89,7 @@ public void whenAppendingData_andNotEnoughSpaceIsAvailable_closeAndReturnFailed( @Test public void whenAppendingData_andHasExpired_closeAndReturnExpiredStatus() throws IOException { writableFile.append(new byte[2]); - doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_WRITE_MILLIS) - .when(clock) - .now(); + doReturn(CREATED_TIME_MILLIS + MAX_FILE_AGE_FOR_WRITE_MILLIS).when(clock).now(); assertEquals(WritableResult.FAILED, writableFile.append(new byte[1])); From d40d829848e0ec043ce28aa7c815c456fc8e1143 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Wed, 12 Jul 2023 11:46:31 +0200 Subject: [PATCH 199/209] Fixing md links --- disk-buffering/CONTRIBUTING.md | 4 ++-- disk-buffering/README.md | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/disk-buffering/CONTRIBUTING.md b/disk-buffering/CONTRIBUTING.md index 47d08e9fa..a53f488b6 100644 --- a/disk-buffering/CONTRIBUTING.md +++ b/disk-buffering/CONTRIBUTING.md @@ -1,8 +1,8 @@ # Contributor Guide Each one of the three exporters provided by this -tool ([LogRecordDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java), [MetricDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java) -and [SpanDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java)) +tool ([LogRecordDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java), [MetricDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java) +and [SpanDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java)) is responsible of performing 2 actions, `write` and `read/delegate`, the `write` one happens automatically as a set of signals are provided from the processor, while the `read/delegate` one has to be triggered manually by the consumer of this library as explained in the [README](README.md). diff --git a/disk-buffering/README.md b/disk-buffering/README.md index 6c2617b20..9684faa1a 100644 --- a/disk-buffering/README.md +++ b/disk-buffering/README.md @@ -12,7 +12,7 @@ stored data. achieved, under [Reading data](#reading-data). > For a more detailed information on how the whole process works, take a look at -the [CONTRIBUTING](CONTRIBUTING.md) file. +> the [CONTRIBUTING](CONTRIBUTING.md) file. ## Configuration @@ -29,7 +29,7 @@ The configurable parameters are provided **per exporter**, the available ones ar considered stale and will be removed when new files are created. No more data will be read from a file past this time. * An instance - of [TemporaryFileProvider](src/main/java/io/opentelemetry/contrib/disk/buffering/storage/files/TemporaryFileProvider.java), + of [TemporaryFileProvider](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/files/TemporaryFileProvider.java), defaults to calling `File.createTempFile`. This provider will be used when reading from the disk in order create a temporary file from which each line (batch of signals) will be read and sequentially get removed from the original cache file right after the data has been successfully @@ -43,11 +43,11 @@ In order to use it, you need to wrap your own exporter with a new instance of the ones provided in here: * For a LogRecordExporter, it must be wrapped within - a [LogRecordDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/LogRecordDiskExporter.java). + a [LogRecordDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/LogRecordDiskExporter.java). * For a MetricExporter, it must be wrapped within - a [MetricDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/MetricDiskExporter.java). + a [MetricDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/MetricDiskExporter.java). * For a SpanExporter, it must be wrapped within - a [SpanDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/exporters/SpanDiskExporter.java). + a [SpanDiskExporter](src/main/java/io/opentelemetry/contrib/disk/buffering/SpanDiskExporter.java). Each wrapper will need the following when instantiating them: @@ -55,7 +55,7 @@ Each wrapper will need the following when instantiating them: * A File instance of the root directory where all the data is going to be written. The same root dir can be used for all the wrappers, since each will create their own folder inside it. * An instance - of [StorageConfiguration](src/main/java/io/opentelemetry/contrib/disk/buffering/storage/StorageConfiguration.java) + of [StorageConfiguration](src/main/java/io/opentelemetry/contrib/disk/buffering/internal/StorageConfiguration.java) with the desired parameters. You can create one with default values by calling `StorageConfiguration.getDefault()`. From b733c9abbb84545a947cf3d7d68739b5e3019e85 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 09:39:11 +0200 Subject: [PATCH 200/209] Removing usage of buffered input stream in ReadableFile --- .../disk/buffering/internal/storage/files/ReadableFile.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 9f9cb5998..e1fec4de0 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -12,7 +12,6 @@ import io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.FileTransferUtil; import io.opentelemetry.contrib.disk.buffering.internal.storage.responses.ReadableResult; import io.opentelemetry.contrib.disk.buffering.internal.storage.utils.StorageClock; -import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -140,7 +139,7 @@ public synchronized void close() throws IOException { } private static void copyFile(File from, File to) throws IOException { - try (InputStream in = new BufferedInputStream(new FileInputStream(from)); + try (InputStream in = new FileInputStream(from); OutputStream out = new FileOutputStream(to, false)) { byte[] buffer = new byte[1024]; From 8acf8b27753f042246296662c44b654afdcc306e Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 10:55:47 +0200 Subject: [PATCH 201/209] Adding animalsniffer check for Android level 24 api support check --- disk-buffering/build.gradle.kts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/disk-buffering/build.gradle.kts b/disk-buffering/build.gradle.kts index 107229b5c..abfb000eb 100644 --- a/disk-buffering/build.gradle.kts +++ b/disk-buffering/build.gradle.kts @@ -1,7 +1,10 @@ +import ru.vyarus.gradle.plugin.animalsniffer.AnimalSniffer + plugins { id("otel.java-conventions") id("otel.publish-conventions") id("me.champeau.jmh") version "0.7.1" + id("ru.vyarus.animalsniffer") version "1.7.1" } description = "Exporter implementations that store signals on disk" @@ -19,10 +22,25 @@ dependencies { implementation("io.opentelemetry.proto:opentelemetry-proto:0.20.0-alpha") compileOnly("com.google.auto.value:auto-value-annotations:$autovalueVersion") annotationProcessor("com.google.auto.value:auto-value:$autovalueVersion") + signature("com.toasttab.android:gummy-bears-api-24:0.5.1@signature") testImplementation("org.mockito:mockito-inline:4.11.0") testImplementation("io.opentelemetry:opentelemetry-sdk-testing") } +animalsniffer { + sourceSets = listOf(java.sourceSets.main.get()) +} + +// Always having declared output makes this task properly participate in tasks up-to-date checks +tasks.withType { + reports.text.required.set(true) +} + +// Attaching animalsniffer check to the compilation process. +tasks.named("classes").configure { + finalizedBy("animalsnifferMain") +} + jmh { warmupIterations.set(0) fork.set(2) From 80b266a94712b6f6baf60685f15d4a0b2ea43072 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:04:00 +0200 Subject: [PATCH 202/209] Removing lazy init for serializers --- .../serializers/LogRecordDataSerializer.java | 10 +++------- .../serializers/MetricDataSerializer.java | 10 +++------- .../serialization/serializers/SignalSerializer.java | 4 ++-- .../serialization/serializers/SpanDataSerializer.java | 8 ++------ 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index 6ca3ca151..7b99e00e7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -13,18 +13,14 @@ import java.io.IOException; import java.util.Collection; import java.util.List; -import javax.annotation.Nullable; public final class LogRecordDataSerializer implements SignalSerializer { - @Nullable private static LogRecordDataSerializer instance; + private static final LogRecordDataSerializer INSTANCE = new LogRecordDataSerializer(); private LogRecordDataSerializer() {} - static LogRecordDataSerializer get() { - if (instance == null) { - instance = new LogRecordDataSerializer(); - } - return instance; + static LogRecordDataSerializer getInstance() { + return INSTANCE; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index c1544aa52..996f0e0cf 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -13,18 +13,14 @@ import java.io.IOException; import java.util.Collection; import java.util.List; -import javax.annotation.Nullable; public final class MetricDataSerializer implements SignalSerializer { - @Nullable private static MetricDataSerializer instance; + private static final MetricDataSerializer INSTANCE = new MetricDataSerializer(); private MetricDataSerializer() {} - static MetricDataSerializer get() { - if (instance == null) { - instance = new MetricDataSerializer(); - } - return instance; + static MetricDataSerializer getInstance() { + return INSTANCE; } @Override diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java index a049f1730..fa1692e8b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java @@ -15,11 +15,11 @@ static SpanDataSerializer ofSpans() { } static MetricDataSerializer ofMetrics() { - return MetricDataSerializer.get(); + return MetricDataSerializer.getInstance(); } static LogRecordDataSerializer ofLogs() { - return LogRecordDataSerializer.get(); + return LogRecordDataSerializer.getInstance(); } byte[] serialize(Collection items); diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index 037e9869c..70640013a 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -13,18 +13,14 @@ import java.io.IOException; import java.util.Collection; import java.util.List; -import javax.annotation.Nullable; public final class SpanDataSerializer implements SignalSerializer { - @Nullable private static SpanDataSerializer instance; + private static final SpanDataSerializer INSTANCE = new SpanDataSerializer(); private SpanDataSerializer() {} static SpanDataSerializer get() { - if (instance == null) { - instance = new SpanDataSerializer(); - } - return instance; + return INSTANCE; } @Override From 7236f4140e369f8f458df8235786a85752eb0cc5 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:04:20 +0200 Subject: [PATCH 203/209] Renaming singleton getter --- .../internal/serialization/serializers/SignalSerializer.java | 2 +- .../internal/serialization/serializers/SpanDataSerializer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java index fa1692e8b..40c307bf6 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SignalSerializer.java @@ -11,7 +11,7 @@ public interface SignalSerializer { static SpanDataSerializer ofSpans() { - return SpanDataSerializer.get(); + return SpanDataSerializer.getInstance(); } static MetricDataSerializer ofMetrics() { diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index 70640013a..c37f4d76e 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -19,7 +19,7 @@ public final class SpanDataSerializer implements SignalSerializer { private SpanDataSerializer() {} - static SpanDataSerializer get() { + static SpanDataSerializer getInstance() { return INSTANCE; } From 9d365d7c031cf927ff4850fe1ff68b866c8bb38e Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:05:21 +0200 Subject: [PATCH 204/209] Replacing exception type when serializing --- .../serialization/serializers/LogRecordDataSerializer.java | 2 +- .../serialization/serializers/MetricDataSerializer.java | 2 +- .../internal/serialization/serializers/SpanDataSerializer.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java index 7b99e00e7..6d0451ef7 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/LogRecordDataSerializer.java @@ -30,7 +30,7 @@ public byte[] serialize(Collection logRecordData) { proto.writeDelimitedTo(out); return out.toByteArray(); } catch (IOException e) { - throw new IllegalArgumentException(e); + throw new IllegalStateException(e); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java index 996f0e0cf..9e5722fbd 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/MetricDataSerializer.java @@ -30,7 +30,7 @@ public byte[] serialize(Collection metricData) { proto.writeDelimitedTo(out); return out.toByteArray(); } catch (IOException e) { - throw new IllegalArgumentException(e); + throw new IllegalStateException(e); } } diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java index c37f4d76e..1dc02034b 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/serialization/serializers/SpanDataSerializer.java @@ -30,7 +30,7 @@ public byte[] serialize(Collection spanData) { proto.writeDelimitedTo(out); return out.toByteArray(); } catch (IOException e) { - throw new IllegalArgumentException(e); + throw new IllegalStateException(e); } } From a8f668dfae499250ab4724c623e88e1a25ab6c20 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:08:15 +0200 Subject: [PATCH 205/209] Removing unnecessary param for FileOutputStream constructor --- .../disk/buffering/internal/storage/files/ReadableFile.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index e1fec4de0..1473956ee 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -140,7 +140,7 @@ public synchronized void close() throws IOException { private static void copyFile(File from, File to) throws IOException { try (InputStream in = new FileInputStream(from); - OutputStream out = new FileOutputStream(to, false)) { + OutputStream out = new FileOutputStream(to)) { byte[] buffer = new byte[1024]; int lengthRead; From ba57501da6fe8fc67a14a5045fe7b9958e308dd9 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:09:57 +0200 Subject: [PATCH 206/209] Removing unused Constants class --- .../internal/storage/files/utils/Constants.java | 17 ----------------- .../storage/files/WritableFileTest.java | 5 +++-- 2 files changed, 3 insertions(+), 19 deletions(-) delete mode 100644 disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java deleted file mode 100644 index 9c97e76e1..000000000 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/utils/Constants.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils; - -import java.nio.charset.StandardCharsets; - -public final class Constants { - - public static final byte[] NEW_LINE_BYTES = - System.lineSeparator().getBytes(StandardCharsets.UTF_8); - public static final int NEW_LINE_BYTES_SIZE = NEW_LINE_BYTES.length; - - private Constants() {} -} diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java index 9dda0d264..8e037c236 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/WritableFileTest.java @@ -7,8 +7,6 @@ import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_AGE_FOR_WRITE_MILLIS; import static io.opentelemetry.contrib.disk.buffering.internal.storage.TestData.MAX_FILE_SIZE; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES; -import static io.opentelemetry.contrib.disk.buffering.internal.storage.files.utils.Constants.NEW_LINE_BYTES_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -33,6 +31,9 @@ class WritableFileTest { private StorageClock clock; private WritableFile writableFile; private static final long CREATED_TIME_MILLIS = 1000L; + private static final byte[] NEW_LINE_BYTES = + System.lineSeparator().getBytes(StandardCharsets.UTF_8); + private static final int NEW_LINE_BYTES_SIZE = NEW_LINE_BYTES.length; @BeforeEach public void setUp() throws IOException { From c712d25cb099f80e171c4ff8a4a2ccb3de14e0d5 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:11:17 +0200 Subject: [PATCH 207/209] Replacing "line" by "item" wording in Storage.java --- .../disk/buffering/internal/storage/Storage.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java index f0617c071..f56f1f159 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/Storage.java @@ -27,16 +27,16 @@ public Storage(FolderManager folderManager) { } /** - * Attempts to write a line into a writable file. + * Attempts to write an item into a writable file. * - * @param line - The data that would be appended to the file. + * @param item - The data that would be appended to the file. * @throws IOException If an unexpected error happens. */ - public boolean write(byte[] line) throws IOException { - return write(line, 1); + public boolean write(byte[] item) throws IOException { + return write(item, 1); } - private boolean write(byte[] line, int attemptNumber) throws IOException { + private boolean write(byte[] item, int attemptNumber) throws IOException { if (isClosed.get()) { return false; } @@ -46,17 +46,17 @@ private boolean write(byte[] line, int attemptNumber) throws IOException { if (writableFile == null) { writableFile = folderManager.createWritableFile(); } - WritableResult result = writableFile.append(line); + WritableResult result = writableFile.append(item); if (result != WritableResult.SUCCEEDED) { // Retry with new file writableFile = null; - return write(line, ++attemptNumber); + return write(item, ++attemptNumber); } return true; } /** - * Attempts to read a line from a ready-to-read file. + * Attempts to read an item from a ready-to-read file. * * @param processing Is passed over to {@link ReadableFile#readAndProcess(Function)}. * @throws IOException If an unexpected error happens. From 60ac5c0b66fb303ce1de6b3d5c922ddbe1f34157 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:18:09 +0200 Subject: [PATCH 208/209] Adding docs to ReadableFile --- .../buffering/internal/storage/files/ReadableFile.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 1473956ee..96440e615 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -22,6 +22,15 @@ import java.util.function.Function; import javax.annotation.Nullable; +/** + * Reads from a file and updates it in parallel in order to avoid re-reading the same items later. + * The way it does so is by creating a temporary file where all the contents are added during the + * instantiation of this class. Then, the contents are read from the temporary file, after an item + * has been read from the temporary file, the original file gets updated to remove the recently read + * data. + * + *

More information on the overall storage process in the CONTRIBUTING.md file. + */ public final class ReadableFile extends StorageFile { private final int originalFileSize; private final StreamReader reader; From ad26fb21178e4859918873bdc8e1910919dba007 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Thu, 13 Jul 2023 11:21:29 +0200 Subject: [PATCH 209/209] Adding docs to ReadableFile.copyFile --- .../disk/buffering/internal/storage/files/ReadableFile.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java index 96440e615..f38e1392f 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/internal/storage/files/ReadableFile.java @@ -147,6 +147,10 @@ public synchronized void close() throws IOException { } } + /** + * This is needed instead of using Files.copy in order to keep it compatible with Android api < + * 26. + */ private static void copyFile(File from, File to) throws IOException { try (InputStream in = new FileInputStream(from); OutputStream out = new FileOutputStream(to)) {