Skip to content

Commit 82fbb98

Browse files
committed
fix test and coverage
added equals and hashcode for SpanDecorationProbe
1 parent 1365f7b commit 82fbb98

3 files changed

Lines changed: 107 additions & 13 deletions

File tree

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/agent/DebuggerProductChangesListener.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,35 +156,25 @@ public void commit(PollingRateHinter pollingRateHinter) {
156156

157157
static class DefinitionBuilder {
158158
private final Collection<ProbeDefinition> definitions = new ArrayList<>();
159-
private int triggerProbeCount = 0;
160-
private int metricProbeCount = 0;
161-
private int logProbeCount = 0;
162-
private int spanProbeCount = 0;
163-
private int spanDecorationProbeCount = 0;
164159

165160
void add(MetricProbe probe) {
166161
definitions.add(probe);
167-
metricProbeCount++;
168162
}
169163

170164
void add(LogProbe probe) {
171165
definitions.add(probe);
172-
logProbeCount++;
173166
}
174167

175168
void add(SpanProbe probe) {
176169
definitions.add(probe);
177-
spanProbeCount++;
178170
}
179171

180172
void add(TriggerProbe probe) {
181173
definitions.add(probe);
182-
triggerProbeCount++;
183174
}
184175

185176
void add(SpanDecorationProbe probe) {
186177
definitions.add(probe);
187-
spanDecorationProbeCount++;
188178
}
189179

190180
void addAll(Collection<ProbeDefinition> newDefinitions) {

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/SpanDecorationProbe.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,20 @@ public TagValue getValue() {
8484
public String toString() {
8585
return "Tag{" + "name='" + name + '\'' + ", value=" + value + '}';
8686
}
87+
88+
@Generated
89+
@Override
90+
public boolean equals(Object o) {
91+
if (o == null || getClass() != o.getClass()) return false;
92+
Tag tag = (Tag) o;
93+
return Objects.equals(name, tag.name) && Objects.equals(value, tag.value);
94+
}
95+
96+
@Generated
97+
@Override
98+
public int hashCode() {
99+
return Objects.hash(name, value);
100+
}
87101
}
88102

89103
public static class Decoration {
@@ -108,6 +122,20 @@ public List<Tag> getTags() {
108122
public String toString() {
109123
return "Decoration{" + "when=" + when + ", tags=" + tags + '}';
110124
}
125+
126+
@Generated
127+
@Override
128+
public boolean equals(Object o) {
129+
if (o == null || getClass() != o.getClass()) return false;
130+
Decoration that = (Decoration) o;
131+
return Objects.equals(when, that.when) && Objects.equals(tags, that.tags);
132+
}
133+
134+
@Generated
135+
@Override
136+
public int hashCode() {
137+
return Objects.hash(when, tags);
138+
}
111139
}
112140

113141
private final TargetSpan targetSpan;

dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/DebuggerProductChangesListenerTest.java

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@
1515
import com.datadog.debugger.probe.ProbeDefinition;
1616
import com.datadog.debugger.probe.SpanDecorationProbe;
1717
import com.datadog.debugger.probe.SpanProbe;
18+
import com.datadog.debugger.probe.TriggerProbe;
19+
import com.datadog.debugger.probe.Where;
1820
import datadog.remoteconfig.state.ParsedConfigKey;
1921
import datadog.trace.api.Config;
22+
import datadog.trace.bootstrap.debugger.ProbeId;
2023
import java.io.IOException;
2124
import java.nio.charset.StandardCharsets;
2225
import java.util.Arrays;
@@ -129,6 +132,9 @@ public void testMultipleSingleProbesConfigurations() {
129132
MetricProbe metricProbe = createMetricProbe(UUID.randomUUID().toString());
130133
LogProbe logProbe = createLogProbe(UUID.randomUUID().toString());
131134
SpanProbe spanProbe = createSpanProbe(UUID.randomUUID().toString());
135+
SpanDecorationProbe spanDecorationProbe =
136+
createSpanDecorationProbe(UUID.randomUUID().toString());
137+
TriggerProbe triggerProbe = createTriggerProbe(UUID.randomUUID().toString());
132138

133139
acceptMetricProbe(listener, metricProbe);
134140
listener.commit(NOOP);
@@ -142,16 +148,40 @@ public void testMultipleSingleProbesConfigurations() {
142148
listener.commit(NOOP);
143149
assertDefinitions(acceptor.getDefinitions(), metricProbe, logProbe, spanProbe);
144150

151+
acceptSpanDecorationProbe(listener, spanDecorationProbe);
152+
listener.commit(NOOP);
153+
assertDefinitions(
154+
acceptor.getDefinitions(), metricProbe, logProbe, spanProbe, spanDecorationProbe);
155+
156+
acceptTriggerProbe(listener, triggerProbe);
157+
listener.commit(NOOP);
158+
assertDefinitions(
159+
acceptor.getDefinitions(),
160+
metricProbe,
161+
logProbe,
162+
spanProbe,
163+
spanDecorationProbe,
164+
triggerProbe);
165+
145166
removeMetricProbe(listener, metricProbe);
146167
listener.commit(NOOP);
147-
assertDefinitions(acceptor.getDefinitions(), logProbe, spanProbe);
168+
assertDefinitions(
169+
acceptor.getDefinitions(), logProbe, spanProbe, spanDecorationProbe, triggerProbe);
148170

149171
removeLogProbe(listener, logProbe);
150172
listener.commit(NOOP);
151-
assertDefinitions(acceptor.getDefinitions(), spanProbe);
173+
assertDefinitions(acceptor.getDefinitions(), spanProbe, spanDecorationProbe, triggerProbe);
152174

153175
removeSpanProbe(listener, spanProbe);
154176
listener.commit(NOOP);
177+
assertDefinitions(acceptor.getDefinitions(), spanDecorationProbe, triggerProbe);
178+
179+
removeSpanDecorationProbe(listener, spanDecorationProbe);
180+
listener.commit(NOOP);
181+
assertDefinitions(acceptor.getDefinitions(), triggerProbe);
182+
183+
removeTriggerProbe(listener, triggerProbe);
184+
listener.commit(NOOP);
155185
assertTrue(acceptor.getDefinitions().isEmpty());
156186
}
157187

@@ -166,13 +196,17 @@ public void testMergeConfigWithSingleProbe() {
166196
MetricProbe metricProbe = createMetricProbe("345");
167197
LogProbe logProbe = createLogProbe("567");
168198
SpanProbe spanProbe = createSpanProbe("890");
199+
SpanDecorationProbe spanDecorationProbe = createSpanDecorationProbe("891");
200+
TriggerProbe triggerProbe = createTriggerProbe("892");
169201

170202
Configuration config =
171203
Configuration.builder()
172204
.setService(SERVICE_NAME)
173205
.add(metricProbe)
174206
.add(logProbe)
175207
.add(spanProbe)
208+
.add(spanDecorationProbe)
209+
.add(triggerProbe)
176210
.add(new LogProbe.Sampling(3.0))
177211
.addDenyList(createFilteredList())
178212
.build();
@@ -181,7 +215,13 @@ public void testMergeConfigWithSingleProbe() {
181215
acceptConfig(listener, config, UUID.randomUUID().toString());
182216
listener.commit(NOOP);
183217
assertDefinitions(
184-
acceptor.getDefinitions(), logProbeWithSnapshot, metricProbe, logProbe, spanProbe);
218+
acceptor.getDefinitions(),
219+
logProbeWithSnapshot,
220+
metricProbe,
221+
logProbe,
222+
spanProbe,
223+
spanDecorationProbe,
224+
triggerProbe);
185225
}
186226

187227
@Test
@@ -248,6 +288,12 @@ byte[] toContent(SpanDecorationProbe probe) {
248288
.getBytes(StandardCharsets.UTF_8);
249289
}
250290

291+
byte[] toContent(TriggerProbe probe) {
292+
return DebuggerProductChangesListener.Adapter.TRIGGER_PROBE_JSON_ADAPTER
293+
.toJson(probe)
294+
.getBytes(StandardCharsets.UTF_8);
295+
}
296+
251297
void acceptConfig(
252298
DebuggerProductChangesListener listener, Configuration config, String configId) {
253299
assertDoesNotThrow(() -> listener.accept(createConfigKey(configId), toContent(config), NOOP));
@@ -289,10 +335,28 @@ void acceptSpanDecorationProbe(
289335
createConfigKey("spanDecorationProbe_" + probe.getId()), toContent(probe), NOOP));
290336
}
291337

338+
void acceptTriggerProbe(DebuggerProductChangesListener listener, TriggerProbe probe) {
339+
assertDoesNotThrow(
340+
() ->
341+
listener.accept(
342+
createConfigKey("triggerProbe_" + probe.getId()), toContent(probe), NOOP));
343+
}
344+
292345
void removeSpanProbe(DebuggerProductChangesListener listener, SpanProbe probe) {
293346
assertDoesNotThrow(() -> listener.remove(createConfigKey("spanProbe_" + probe.getId()), NOOP));
294347
}
295348

349+
void removeSpanDecorationProbe(
350+
DebuggerProductChangesListener listener, SpanDecorationProbe probe) {
351+
assertDoesNotThrow(
352+
() -> listener.remove(createConfigKey("spanDecorationProbe_" + probe.getId()), NOOP));
353+
}
354+
355+
void removeTriggerProbe(DebuggerProductChangesListener listener, TriggerProbe probe) {
356+
assertDoesNotThrow(
357+
() -> listener.remove(createConfigKey("triggerProbe_" + probe.getId()), NOOP));
358+
}
359+
296360
LogProbe createLogProbeWithSnapshot(String id) {
297361
return LogProbe.builder()
298362
.probeId(id, 0)
@@ -325,6 +389,18 @@ SpanProbe createSpanProbe(String id) {
325389
.build();
326390
}
327391

392+
SpanDecorationProbe createSpanDecorationProbe(String id) {
393+
return SpanDecorationProbe.builder()
394+
.probeId(id, 0)
395+
.where(null, null, null, 1966, "src/main/java/java/lang/String.java")
396+
.targetSpan(SpanDecorationProbe.TargetSpan.ACTIVE)
397+
.build();
398+
}
399+
400+
TriggerProbe createTriggerProbe(String id) {
401+
return new TriggerProbe(new ProbeId(id, 0), Where.of("java.lang.String", "indexOf", null));
402+
}
403+
328404
Configuration.FilterList createFilteredList() {
329405
return new Configuration.FilterList(
330406
Collections.singletonList("datadog"), Collections.singletonList("class1"));

0 commit comments

Comments
 (0)