Skip to content

Commit 70c49fd

Browse files
author
Ayushi Ahjolia
committed
feat(plugin): Add result accessor to OperationEndInfo
1 parent 2ff058a commit 70c49fd

7 files changed

Lines changed: 435 additions & 44 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, 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

@@ -229,7 +240,18 @@ void operationSpan_carriesAttemptNumberAtEnd() {
229240
plugin.onInvocationStart(new InvocationInfo("req-1", ARN, true, Instant.now()));
230241
plugin.onOperationStart(new OperationInfo("op-1", "flaky", "STEP", "Step", null, Instant.now(), null, false));
231242
plugin.onOperationEnd(new OperationEndInfo(
232-
"op-1", "flaky", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", 3, false, null));
243+
"op-1",
244+
"flaky",
245+
"STEP",
246+
"Step",
247+
null,
248+
Instant.now(),
249+
Instant.now(),
250+
"SUCCEEDED",
251+
3,
252+
false,
253+
null,
254+
null));
233255
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
234256

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

252285
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "flaky");
@@ -265,7 +298,7 @@ void operationSpan_startsAtOperationStartTimestamp() {
265298
plugin.onInvocationStart(new InvocationInfo("req-1", ARN, true, Instant.now()));
266299
plugin.onOperationStart(new OperationInfo("op-1", "step-a", "STEP", "Step", null, opStart, null, false));
267300
plugin.onOperationEnd(new OperationEndInfo(
268-
"op-1", "step-a", "STEP", "Step", null, opStart, opEnd, "SUCCEEDED", null, false, null));
301+
"op-1", "step-a", "STEP", "Step", null, opStart, opEnd, "SUCCEEDED", null, false, null, null));
269302
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
270303

271304
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "step-a");
@@ -280,7 +313,18 @@ void operationSpan_parentedToWorkflow_linkedToInvocation() {
280313
plugin.onInvocationStart(new InvocationInfo("req-1", ARN, true, Instant.now()));
281314
plugin.onOperationStart(new OperationInfo("op-1", "step-a", "STEP", "Step", null, Instant.now(), null, false));
282315
plugin.onOperationEnd(new OperationEndInfo(
283-
"op-1", "step-a", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
316+
"op-1",
317+
"step-a",
318+
"STEP",
319+
"Step",
320+
null,
321+
Instant.now(),
322+
Instant.now(),
323+
"SUCCEEDED",
324+
null,
325+
false,
326+
null,
327+
null));
284328
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
285329

286330
var spans = spanExporter.getFinishedSpanItems();
@@ -307,7 +351,18 @@ void attemptSpan_childOfOperation_linkedToInvocation() {
307351
plugin.onUserFunctionEnd(new UserFunctionEndInfo(
308352
"op-1", "compute", "STEP", "Step", null, Instant.now(), Instant.now(), false, 1, true, null));
309353
plugin.onOperationEnd(new OperationEndInfo(
310-
"op-1", "compute", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
354+
"op-1",
355+
"compute",
356+
"STEP",
357+
"Step",
358+
null,
359+
Instant.now(),
360+
Instant.now(),
361+
"SUCCEEDED",
362+
null,
363+
false,
364+
null,
365+
null));
311366
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
312367

313368
var spans = spanExporter.getFinishedSpanItems();
@@ -347,6 +402,7 @@ void childOperation_parentedToParentOperationSpan() {
347402
"SUCCEEDED",
348403
null,
349404
false,
405+
null,
350406
null));
351407
plugin.onOperationEnd(new OperationEndInfo(
352408
"op-parent",
@@ -359,6 +415,7 @@ void childOperation_parentedToParentOperationSpan() {
359415
"SUCCEEDED",
360416
null,
361417
false,
418+
null,
362419
null));
363420
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
364421

@@ -420,7 +477,18 @@ void operationSuccess_setsOkOnOperationSpan() {
420477
plugin.onInvocationStart(new InvocationInfo("req-1", ARN, true, Instant.now()));
421478
plugin.onOperationStart(new OperationInfo("op-1", "step-ok", "STEP", "Step", null, Instant.now(), null, false));
422479
plugin.onOperationEnd(new OperationEndInfo(
423-
"op-1", "step-ok", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
480+
"op-1",
481+
"step-ok",
482+
"STEP",
483+
"Step",
484+
null,
485+
Instant.now(),
486+
Instant.now(),
487+
"SUCCEEDED",
488+
null,
489+
false,
490+
null,
491+
null));
424492
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
425493

426494
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "step-ok");
@@ -446,6 +514,7 @@ void operationEnd_withNonSuccessStatusAndNoError_leavesOperationSpanUnset() {
446514
"CANCELLED",
447515
null,
448516
false,
517+
null,
449518
null));
450519
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
451520

@@ -469,6 +538,7 @@ void operationEnd_withoutStart_nonSuccessStatusAndNoError_leavesContinuationSpan
469538
"TIMED_OUT",
470539
null,
471540
false,
541+
null,
472542
null));
473543
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
474544

@@ -484,7 +554,18 @@ void operationEnd_withNullStatusAndNoError_setsOkOnOperationSpan() {
484554
plugin.onOperationStart(
485555
new OperationInfo("op-ctx", "my-ctx", "CONTEXT", null, null, Instant.now(), null, false));
486556
plugin.onOperationEnd(new OperationEndInfo(
487-
"op-ctx", "my-ctx", "CONTEXT", null, null, Instant.now(), Instant.now(), null, null, false, null));
557+
"op-ctx",
558+
"my-ctx",
559+
"CONTEXT",
560+
null,
561+
null,
562+
Instant.now(),
563+
Instant.now(),
564+
null,
565+
null,
566+
false,
567+
null,
568+
null));
488569
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
489570

490571
var operationSpan = spanByName(spanExporter.getFinishedSpanItems(), "my-ctx");
@@ -522,7 +603,18 @@ void operationOpenedThenCompletedNextInvocation_exportedOnceOnOperationEnd() {
522603
// Invocation 2: the operation completes → materialized once via onOperationEnd, linked to this invocation.
523604
plugin.onInvocationStart(new InvocationInfo("req-2", ARN, false, Instant.now()));
524605
plugin.onOperationEnd(new OperationEndInfo(
525-
"op-1", "my-wait", "WAIT", "Wait", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
606+
"op-1",
607+
"my-wait",
608+
"WAIT",
609+
"Wait",
610+
null,
611+
Instant.now(),
612+
Instant.now(),
613+
"SUCCEEDED",
614+
null,
615+
false,
616+
null,
617+
null));
526618
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
527619

528620
var spans = spanExporter.getFinishedSpanItems();
@@ -543,7 +635,18 @@ void allSpansShareTraceId_acrossInvocations() {
543635
plugin.onInvocationStart(new InvocationInfo("req-1", ARN, true, Instant.now()));
544636
plugin.onOperationStart(new OperationInfo("op-1", "step-1", "STEP", "Step", null, Instant.now(), null, false));
545637
plugin.onOperationEnd(new OperationEndInfo(
546-
"op-1", "step-1", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
638+
"op-1",
639+
"step-1",
640+
"STEP",
641+
"Step",
642+
null,
643+
Instant.now(),
644+
Instant.now(),
645+
"SUCCEEDED",
646+
null,
647+
false,
648+
null,
649+
null));
547650
plugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.PENDING, null));
548651
var firstTraceId = spanExporter.getFinishedSpanItems().get(0).getTraceId();
549652
spanExporter.reset();
@@ -572,6 +675,7 @@ void operationEnd_withoutStart_createsContinuationSpanWithLink() {
572675
"SUCCEEDED",
573676
null,
574677
false,
678+
null,
575679
null));
576680
plugin.onInvocationEnd(new InvocationEndInfo("req-2", ARN, false, InvocationStatus.SUCCEEDED, null));
577681

@@ -643,7 +747,18 @@ void xrayExtraction_allSpansShareExtractedTraceId() {
643747
xrayPlugin.onOperationStart(
644748
new OperationInfo("op-1", "step-a", "STEP", "Step", null, Instant.now(), null, false));
645749
xrayPlugin.onOperationEnd(new OperationEndInfo(
646-
"op-1", "step-a", "STEP", "Step", null, Instant.now(), Instant.now(), "SUCCEEDED", null, false, null));
750+
"op-1",
751+
"step-a",
752+
"STEP",
753+
"Step",
754+
null,
755+
Instant.now(),
756+
Instant.now(),
757+
"SUCCEEDED",
758+
null,
759+
false,
760+
null,
761+
null));
647762
xrayPlugin.onInvocationEnd(new InvocationEndInfo("req-1", ARN, true, InvocationStatus.SUCCEEDED, null));
648763

649764
var spans = exporter.getFinishedSpanItems();

0 commit comments

Comments
 (0)