forked from open-telemetry/opentelemetry-java
-
Notifications
You must be signed in to change notification settings - Fork 1
/
PassThroughPropagatorTest.java
95 lines (78 loc) · 3 KB
/
PassThroughPropagatorTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.extension.incubator.propagation;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.entry;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapGetter;
import io.opentelemetry.context.propagation.TextMapPropagator;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import org.junit.jupiter.api.Test;
class PassThroughPropagatorTest {
private static final TextMapPropagator propagator =
PassThroughPropagator.create("animal", "food");
private static final TextMapGetter<Map<String, String>> getter =
new TextMapGetter<Map<String, String>>() {
@Override
public Iterable<String> keys(Map<String, String> carrier) {
return carrier.keySet();
}
@Nullable
@Override
public String get(Map<String, String> carrier, String key) {
return carrier.get(key);
}
};
@Test
void propagates() {
Map<String, String> incoming = new HashMap<>();
incoming.put("animal", "cat");
incoming.put("food", "pizza");
incoming.put("country", "japan");
Context context = propagator.extract(Context.root(), incoming, getter);
Map<String, String> outgoing = new HashMap<>();
propagator.inject(context, outgoing, Map::put);
assertThat(outgoing).containsOnly(entry("animal", "cat"), entry("food", "pizza"));
}
@Test
void noFields() {
TextMapPropagator propagator = PassThroughPropagator.create();
Map<String, String> incoming = new HashMap<>();
incoming.put("animal", "cat");
incoming.put("food", "pizza");
incoming.put("country", "japan");
Context context = propagator.extract(Context.root(), incoming, getter);
Map<String, String> outgoing = new HashMap<>();
propagator.inject(context, outgoing, Map::put);
assertThat(outgoing).isEmpty();
}
@Test
void emptyMap() {
Map<String, String> incoming = new HashMap<>();
Context context = propagator.extract(Context.root(), incoming, getter);
Map<String, String> outgoing = new HashMap<>();
propagator.inject(context, outgoing, Map::put);
assertThat(outgoing).isEmpty();
}
@Test
void nullFields() {
assertThatThrownBy(() -> PassThroughPropagator.create((String[]) null))
.isInstanceOf(NullPointerException.class)
.hasMessageContaining("fields");
assertThatThrownBy(() -> PassThroughPropagator.create((Iterable<String>) null))
.isInstanceOf(NullPointerException.class)
.hasMessageContaining("fields");
assertThatThrownBy(() -> PassThroughPropagator.create("cat", null))
.isInstanceOf(NullPointerException.class)
.hasMessageContaining("field");
}
@Test
void toString_Valid() {
assertThat(propagator.toString()).isEqualTo("PassThroughPropagator{fields=[animal, food]}");
}
}