|
8 | 8 | import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; |
9 | 9 | import static org.assertj.core.api.Assertions.assertThat; |
10 | 10 |
|
| 11 | +import io.opentelemetry.api.common.Attributes; |
11 | 12 | import java.util.Arrays; |
12 | 13 | import java.util.Collection; |
13 | 14 | import java.util.Collections; |
@@ -212,4 +213,37 @@ void testSchemaUrlMerge_entities_different_url() { |
212 | 213 | "one"); |
213 | 214 | assertThat(result).isEqualTo(null); |
214 | 215 | } |
| 216 | + |
| 217 | + @Test |
| 218 | + void testRawAttributeMerge_no_entities() { |
| 219 | + // When no entities are present all attributes are merged. |
| 220 | + RawAttributeMergeResult result = |
| 221 | + EntityUtil.mergeRawAttributes( |
| 222 | + Attributes.builder().put("a", 1).put("b", 1).build(), |
| 223 | + Attributes.builder().put("b", 2).put("c", 2).build(), |
| 224 | + Collections.emptyList()); |
| 225 | + assertThat(result.getConflicts()).isEmpty(); |
| 226 | + assertThat(result.getAttributes()) |
| 227 | + .hasSize(3) |
| 228 | + .containsEntry("a", 1) |
| 229 | + .containsEntry("b", 2) |
| 230 | + .containsEntry("c", 2); |
| 231 | + } |
| 232 | + |
| 233 | + @Test |
| 234 | + void testRawAttributeMerge_entity_with_conflict() { |
| 235 | + // When an entity conflicts with incoming raw attributes, we need to call out that conflict |
| 236 | + // so resource merge logic can remove the entity from resource. |
| 237 | + RawAttributeMergeResult result = |
| 238 | + EntityUtil.mergeRawAttributes( |
| 239 | + Attributes.builder().put("a", 1).put("b", 1).build(), |
| 240 | + Attributes.builder().put("b", 2).put("c", 2).build(), |
| 241 | + Arrays.asList(Entity.builder("c").withId(id -> id.put("c", 1)).build())); |
| 242 | + assertThat(result.getConflicts()).satisfiesExactly(e -> assertThat(e).hasType("c")); |
| 243 | + assertThat(result.getAttributes()) |
| 244 | + .hasSize(3) |
| 245 | + .containsEntry("a", 1) |
| 246 | + .containsEntry("b", 2) |
| 247 | + .containsEntry("c", 2); |
| 248 | + } |
215 | 249 | } |
0 commit comments