@@ -102,7 +102,34 @@ public void budgets() {
102102 assertEquals (runs * LogProbe .NON_CAPTURING_PROBE_BUDGET , sink .highRate );
103103 }
104104
105+ @ Test
106+ public void budgetsOnLineProbes () {
107+ BudgetSink sink = new BudgetSink (getConfig (), mock (ProbeStatusSink .class ));
108+ DebuggerAgentHelper .injectSink (sink );
109+
110+ TracerAPI tracer =
111+ CoreTracer .builder ().idGenerationStrategy (IdGenerationStrategy .fromName ("random" )).build ();
112+ AgentTracer .registerIfAbsent (tracer );
113+ int runs = 100 ;
114+ for (int i = 0 ; i < runs ; i ++) {
115+ runTrace (tracer , true , 100 );
116+ }
117+ assertEquals (runs * LogProbe .CAPTURING_PROBE_BUDGET , sink .captures );
118+
119+ sink = new BudgetSink (getConfig (), mock (ProbeStatusSink .class ));
120+ DebuggerAgentHelper .injectSink (sink );
121+ runs = 1010 ;
122+ for (int i = 0 ; i < runs ; i ++) {
123+ runTrace (tracer , false , 100 );
124+ }
125+ assertEquals (runs * LogProbe .NON_CAPTURING_PROBE_BUDGET , sink .highRate );
126+ }
127+
105128 private void runTrace (TracerAPI tracer , boolean captureSnapshot ) {
129+ runTrace (tracer , captureSnapshot , null );
130+ }
131+
132+ private void runTrace (TracerAPI tracer , boolean captureSnapshot , Integer line ) {
106133 AgentSpan span = tracer .startSpan ("budget testing" , "test span" );
107134 span .setTag (Tags .PROPAGATED_DEBUG , "12345:1" );
108135 try (AgentScope scope = tracer .activateSpan (span , ScopeSource .MANUAL )) {
@@ -125,7 +152,11 @@ private void runTrace(TracerAPI tracer, boolean captureSnapshot) {
125152 int runs = budget + 20 ;
126153
127154 for (int i = 0 ; i < runs ; i ++) {
128- logProbe .commit (entryContext , exitContext , emptyList ());
155+ if (line == null ) {
156+ logProbe .commit (entryContext , exitContext , emptyList ());
157+ } else {
158+ logProbe .commit (entryContext , line );
159+ }
129160 }
130161 assertEquals (runs , span .getLocalRootSpan ().getTag (format ("_dd.ld.probe_id.%s" , logProbe .id )));
131162 }
0 commit comments