Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,22 @@
// SPDX-License-Identifier: Apache-2.0
package software.amazon.lambda.durable.testing;

import java.time.Duration;
import java.time.Instant;
import java.util.List;
import software.amazon.awssdk.services.lambda.model.CallbackDetails;
import software.amazon.awssdk.services.lambda.model.ChainedInvokeDetails;
import software.amazon.awssdk.services.lambda.model.ContextDetails;
import software.amazon.awssdk.services.lambda.model.ErrorObject;
import software.amazon.awssdk.services.lambda.model.Event;
import software.amazon.awssdk.services.lambda.model.ExecutionDetails;
import software.amazon.awssdk.services.lambda.model.Operation;
import software.amazon.awssdk.services.lambda.model.OperationStatus;
import software.amazon.awssdk.services.lambda.model.OperationType;
import software.amazon.awssdk.services.lambda.model.StepDetails;
import software.amazon.awssdk.services.lambda.model.WaitDetails;
import software.amazon.lambda.durable.TypeToken;
import software.amazon.lambda.durable.execution.ExecutionManager;
import software.amazon.lambda.durable.serde.SerDes;

/** Wrapper for AWS SDK Operation providing convenient access methods. */
Expand Down Expand Up @@ -50,6 +56,23 @@ public OperationType getType() {
return operation.type();
}

/** Returns the operation's subtype */
public String getSubtype() {
return operation.subType();
}

/** Returns true if the operation has completed (either succeeded or failed). */
public boolean isCompleted() {
return ExecutionManager.isTerminalStatus(operation.status());
}

/** Returns the duration of the operation */
public Duration getDuration() {
return Duration.between(
operation.startTimestamp(),
operation.endTimestamp() != null ? operation.endTimestamp() : Instant.now());
}

/** Returns the step details, or null if this is not a step operation. */
public StepDetails getStepDetails() {
return operation.stepDetails();
Expand All @@ -65,6 +88,21 @@ public CallbackDetails getCallbackDetails() {
return operation.callbackDetails();
}

/** Returns the chained invoke details, or null if this is not a chained invoke operation. */
public ChainedInvokeDetails getChainedInvokeDetails() {
return operation.chainedInvokeDetails();
}

/** Returns the context details, or null if this operation is not a context. */
public ContextDetails getContextDetails() {
return operation.contextDetails();
}

/** Returns the execution details, or null if this operation is not an EXECUTION operation. */
public ExecutionDetails getExecutionDetails() {
return operation.executionDetails();
}

/** Deserializes and returns the step result as the given type. */
public <T> T getStepResult(Class<T> type) {
return getStepResult(TypeToken.get(type));
Expand Down
Loading