Skip to content
Open
Show file tree
Hide file tree
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
@@ -0,0 +1,34 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package general;

import java.time.Duration;
import software.amazon.lambda.durable.DurableConfig;
import software.amazon.lambda.durable.DurableContext;
import software.amazon.lambda.durable.DurableHandler;
import software.amazon.lambda.durable.logging.LoggerConfig;

/** 11-1: Replay rejects an operation-type mismatch. */
public class ReplayOperationIdentity extends DurableHandler<Object, String> {

@Override
protected DurableConfig createConfiguration() {
return DurableConfig.builder()
.withLoggerConfig(LoggerConfig.withReplayLogging())
.build();
}

@Override
public String handleRequest(Object input, DurableContext context) {
if (context.isReplaying()) {
context.getLogger().info("DETERMINISM_REPLAY_CANARY");
return context.step("identity-slot", String.class, stepContext -> {
stepContext.getLogger().info("DETERMINISM_STEP_BODY_EXECUTED");
return "unexpected";
});
}

context.wait("identity-slot", Duration.ofSeconds(1));
return null;
}
}
67 changes: 67 additions & 0 deletions conformance-tests/template_general.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Durable Execution Conformance Test Examples - Java (General)

Parameters:
Architecture:
Type: String
Default: arm64
Description: Lambda Function Architecture
AllowedValues:
- x86_64
- arm64
JavaVersion:
Type: String
Default: 'java21'
Description: Java runtime version

Globals:
Function:
Timeout: 60
MemorySize: 512
Runtime:
Ref: JavaVersion
Architectures:
- Ref: Architecture
Comment thread
zhongkechen marked this conversation as resolved.
LoggingConfig:
LogFormat: JSON

Resources:
DurableFunctionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Policies:
- PolicyName: DurableExecutionPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- lambda:CheckpointDurableExecution
- lambda:GetDurableExecutionState
Resource: '*'

ReplayOperationIdentity:
Type: AWS::Serverless::Function
TestingMetadata:
TestDescription: ["11-1"]
Properties:
CodeUri: .
Handler: general.ReplayOperationIdentity
Description: Replay rejects an operation-type mismatch
Role:
Fn::GetAtt:
- DurableFunctionRole
- Arn
DurableConfig:
RetentionPeriodInDays: 7
ExecutionTimeout: 300
Loading