Skip to content

Commit fdbfe49

Browse files
author
Ayushi Ahjolia
committed
feat(plugin): Add result accessor to OperationEndInfo
1 parent c520dad commit fdbfe49

7 files changed

Lines changed: 433 additions & 33 deletions

File tree

‎otel-plugin/src/test/java/software/amazon/lambda/durable/otel/ExecutionOtelPluginTest.java‎

Lines changed: 126 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,18 @@ void defaultConstructor_usesGlobalSdkTracerProviderDirectly() {
7575
defaultPlugin.onOperationStart(
7676
new OperationInfo("op-1", "step", "STEP", "Step", null, Instant.now(), null, null, false));
7777
defaultPlugin.onOperationEnd(new OperationEndInfo(
78-
"op-1", "step", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
78+
"op-1",
79+
"step",
80+
"STEP",
81+
"Step",
82+
null,
83+
Instant.now(),
84+
Instant.now(),
85+
"SUCCEEDED",
86+
null,
87+
false,
88+
null,
89+
null));
7990
defaultPlugin.onInvocationEnd(
8091
new InvocationEndInfo("req-1", "arn:exec1", true, InvocationStatus.SUCCEEDED, null));
8192

@@ -230,7 +241,18 @@ void operationSpan_carriesAttemptNumberAtEnd() {
230241
plugin.onOperationStart(
231242
new OperationInfo("op-1", "flaky", "STEP", "Step", null, Instant.now(), null, null, false));
232243
plugin.onOperationEnd(new OperationEndInfo(
233-
"op-1", "flaky", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", 3, false, null));
244+
"op-1",
245+
"flaky",
246+
"STEP",
247+
"Step",
248+
null,
249+
Instant.now(),
250+
Instant.now(),
251+
"SUCCEEDED",
252+
3,
253+
false,
254+
null,
255+
null));
234256
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
235257

236258
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "flaky");
@@ -247,7 +269,18 @@ void continuationOperationSpan_carriesAttemptNumber() {
247269
plugin.onInvocationStart(new InvocationInfo("req-2", ARN, false, Instant.now()));
248270
// No matching onOperationStart in this invocation — continuation branch.
249271
plugin.onOperationEnd(new OperationEndInfo(
250-
"op-1", "flaky", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", 2, false, null));
272+
"op-1",
273+
"flaky",
274+
"STEP",
275+
"Step",
276+
null,
277+
Instant.now(),
278+
Instant.now(),
279+
"SUCCEEDED",
280+
2,
281+
false,
282+
null,
283+
null));
251284
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
252285

253286
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "flaky");
@@ -266,7 +299,7 @@ void operationSpan_startsAtOperationStartTimestamp() {
266299
plugin.onInvocationStart(new InvocationInfo("req-1", ARN, true, Instant.now()));
267300
plugin.onOperationStart(new OperationInfo("op-1", "step-a", "STEP", "Step", null, opStart, null, null, false));
268301
plugin.onOperationEnd(new OperationEndInfo(
269-
"op-1", "step-a", "STEP", "Step", null, opStart, opEnd, "SUCCEEDED", null, false, null));
302+
"op-1", "step-a", "STEP", "Step", null, opStart, opEnd, "SUCCEEDED", null, false, null, null));
270303
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
271304

272305
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "step-a");
@@ -282,7 +315,18 @@ void operationSpan_parentedToWorkflow_linkedToInvocation() {
282315
plugin.onOperationStart(
283316
new OperationInfo("op-1", "step-a", "STEP", "Step", null, Instant.now(), null, null, false));
284317
plugin.onOperationEnd(new OperationEndInfo(
285-
"op-1", "step-a", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
318+
"op-1",
319+
"step-a",
320+
"STEP",
321+
"Step",
322+
null,
323+
Instant.now(),
324+
Instant.now(),
325+
"SUCCEEDED",
326+
null,
327+
false,
328+
null,
329+
null));
286330
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
287331

288332
var spans = spanExporter.getFinishedSpanItems();
@@ -310,7 +354,18 @@ void attemptSpan_childOfOperation_linkedToInvocation() {
310354
plugin.onUserFunctionEnd(new UserFunctionEndInfo(
311355
"op-1", "compute", "STEP", "Step", null, Instant.now(), Instant.now(), false, 1, true, null));
312356
plugin.onOperationEnd(new OperationEndInfo(
313-
"op-1", "compute", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
357+
"op-1",
358+
"compute",
359+
"STEP",
360+
"Step",
361+
null,
362+
Instant.now(),
363+
Instant.now(),
364+
"SUCCEEDED",
365+
null,
366+
false,
367+
null,
368+
null));
314369
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
315370

316371
var spans = spanExporter.getFinishedSpanItems();
@@ -350,6 +405,7 @@ void childOperation_parentedToParentOperationSpan() {
350405
"SUCCEEDED",
351406
null,
352407
false,
408+
null,
353409
null));
354410
plugin.onOperationEnd(new OperationEndInfo(
355411
"op-parent",
@@ -362,6 +418,7 @@ void childOperation_parentedToParentOperationSpan() {
362418
"SUCCEEDED",
363419
null,
364420
false,
421+
null,
365422
null));
366423
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
367424

@@ -424,7 +481,18 @@ void operationSuccess_setsOkOnOperationSpan() {
424481
plugin.onOperationStart(
425482
new OperationInfo("op-1", "step-ok", "STEP", "Step", null, Instant.now(), null, null, false));
426483
plugin.onOperationEnd(new OperationEndInfo(
427-
"op-1", "step-ok", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
484+
"op-1",
485+
"step-ok",
486+
"STEP",
487+
"Step",
488+
null,
489+
Instant.now(),
490+
Instant.now(),
491+
"SUCCEEDED",
492+
null,
493+
false,
494+
null,
495+
null));
428496
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
429497

430498
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "step-ok");
@@ -450,6 +518,7 @@ void operationEnd_withNonSuccessStatusAndNoError_leavesOperationSpanUnset() {
450518
"CANCELLED",
451519
null,
452520
false,
521+
null,
453522
null));
454523
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
455524

@@ -473,6 +542,7 @@ void operationEnd_withoutStart_nonSuccessStatusAndNoError_leavesContinuationSpan
473542
"TIMED_OUT",
474543
null,
475544
false,
545+
null,
476546
null));
477547
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
478548

@@ -488,7 +558,18 @@ void operationEnd_withNullStatusAndNoError_setsOkOnOperationSpan() {
488558
plugin.onOperationStart(
489559
new OperationInfo("op-ctx", "my-ctx", "CONTEXT", null, null, Instant.now(), null, null, false));
490560
plugin.onOperationEnd(new OperationEndInfo(
491-
"op-ctx", "my-ctx", "CONTEXT", null, null, Instant.now(), Instant.now(), null, null, false, null));
561+
"op-ctx",
562+
"my-ctx",
563+
"CONTEXT",
564+
null,
565+
null,
566+
Instant.now(),
567+
Instant.now(),
568+
null,
569+
null,
570+
false,
571+
null,
572+
null));
492573
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
493574

494575
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "my-ctx");
@@ -528,7 +609,18 @@ void operationOpenedThenCompletedNextInvocation_exportedOnceOnOperationEnd() {
528609
// Invocation 2: the operation completes → materialized once via onOperationEnd, linked to this invocation.
529610
plugin.onInvocationStart(new InvocationInfo("req-2", ARN, false, Instant.now()));
530611
plugin.onOperationEnd(new OperationEndInfo(
531-
"op-1", "my-wait", "WAIT", "Wait", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
612+
"op-1",
613+
"my-wait",
614+
"WAIT",
615+
"Wait",
616+
null,
617+
Instant.now(),
618+
Instant.now(),
619+
"SUCCEEDED",
620+
null,
621+
false,
622+
null,
623+
null));
532624
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
533625

534626
var spans = spanExporter.getFinishedSpanItems();
@@ -550,7 +642,18 @@ void allSpansShareTraceId_acrossInvocations() {
550642
plugin.onOperationStart(
551643
new OperationInfo("op-1", "step-1", "STEP", "Step", null, Instant.now(), null, null, false));
552644
plugin.onOperationEnd(new OperationEndInfo(
553-
"op-1", "step-1", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
645+
"op-1",
646+
"step-1",
647+
"STEP",
648+
"Step",
649+
null,
650+
Instant.now(),
651+
Instant.now(),
652+
"SUCCEEDED",
653+
null,
654+
false,
655+
null,
656+
null));
554657
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.PENDING, null));
555658
var firstTraceId = spanExporter.getFinishedSpanItems().get(0).getTraceId();
556659
spanExporter.reset();
@@ -579,6 +682,7 @@ void operationEnd_withoutStart_createsContinuationSpanWithLink() {
579682
"SUCCEEDED",
580683
null,
581684
false,
685+
null,
582686
null));
583687
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
584688

@@ -650,7 +754,18 @@ void xrayExtraction_allSpansShareExtractedTraceId() {
650754
xrayPlugin.onOperationStart(
651755
new OperationInfo("op-1", "step-a", "STEP", "Step", null, Instant.now(), null, null, false));
652756
xrayPlugin.onOperationEnd(new OperationEndInfo(
653-
"op-1", "step-a", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
757+
"op-1",
758+
"step-a",
759+
"STEP",
760+
"Step",
761+
null,
762+
Instant.now(),
763+
Instant.now(),
764+
"SUCCEEDED",
765+
null,
766+
false,
767+
null,
768+
null));
654769
xrayPlugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
655770

656771
var spans = exporter.getFinishedSpanItems();

0 commit comments

Comments
 (0)