diff --git a/.github/workflows/ci_test_vector_java.yml b/.github/workflows/ci_test_vector_java.yml index ff839527e4..5fcf6e15b1 100644 --- a/.github/workflows/ci_test_vector_java.yml +++ b/.github/workflows/ci_test_vector_java.yml @@ -26,6 +26,7 @@ on: jobs: testJava: strategy: + fail-fast: false matrix: library: [TestVectors] java-version: [8, 11, 17, 19] diff --git a/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/datamodeling/encryption/providers/CachingMostRecentProviderTests.java b/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/datamodeling/encryption/providers/CachingMostRecentProviderTests.java index ee82d1b012..32cfb1fbec 100644 --- a/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/datamodeling/encryption/providers/CachingMostRecentProviderTests.java +++ b/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/datamodeling/encryption/providers/CachingMostRecentProviderTests.java @@ -190,8 +190,9 @@ public void testSingleVersion() throws InterruptedException { 0, store.getVersionFromMaterialDescription(eMat2.getMaterialDescription()) ); - // Let the TTL be exceeded - Thread.sleep(500); + // Let the TTL be exceeded; sleep must be > TTL (500ms) to reliably + // land in the grace period and trigger a cache refresh. + Thread.sleep(700); final EncryptionMaterials eMat3 = prov.getEncryptionMaterials(ctx); assertEquals(2, methodCalls.size()); assertEquals(1, (int) methodCalls.getOrDefault("query", 0)); // To find current version @@ -356,8 +357,9 @@ public void testTwoVersions() throws InterruptedException { "Expected no calls but was " + methodCalls.toString(), methodCalls.isEmpty() ); - // Let the TTL be exceeded - Thread.sleep(500); + // Let the TTL be exceeded; sleep must be > TTL (500ms) to reliably + // land in the grace period and trigger a cache refresh. + Thread.sleep(700); final EncryptionMaterials eMat3 = prov.getEncryptionMaterials(ctx); assertEquals(1, (int) methodCalls.getOrDefault("query", 0)); // To find current version @@ -512,8 +514,9 @@ public void testSingleVersionTwoMaterials() throws InterruptedException { store.getVersionFromMaterialDescription(eMat2_2.getMaterialDescription()) ); - // Let the TTL be exceeded - Thread.sleep(500); + // Let the TTL be exceeded; sleep must be > TTL (500ms) to reliably + // land in the grace period and trigger a cache refresh. + Thread.sleep(700); final EncryptionMaterials eMat3_1 = prov.getEncryptionMaterials(ctx1); assertEquals(2, methodCalls.size()); assertEquals(1, (int) methodCalls.get("query")); // To find current version diff --git a/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/mapper/integration/ScanITCase.java b/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/mapper/integration/ScanITCase.java index 2f9a423399..5c2d240061 100644 --- a/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/mapper/integration/ScanITCase.java +++ b/DynamoDbEncryption/runtimes/java/src/test/sdkv1/com/amazonaws/services/dynamodbv2/mapper/integration/ScanITCase.java @@ -237,8 +237,17 @@ public void testParallelScanExceptionHandling() { assertNotNull(ase.getErrorCode()); assertNotNull(ase.getErrorType()); assertNotNull(ase.getMessage()); + } catch (java.util.concurrent.RejectedExecutionException e) { + // This is expected when the thread pool shuts down after the first + // segment fails with AmazonServiceException, causing the second + // segment's task to be rejected. } catch (Exception e) { - fail("Should have seen the AmazonServiceException"); + fail( + "Should have seen AmazonServiceException or RejectedExecutionException, but got: " + + e.getClass().getName() + + ": " + + e.getMessage() + ); } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/ExampleUtils.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/ExampleUtils.java new file mode 100644 index 0000000000..4377ec1459 --- /dev/null +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/ExampleUtils.java @@ -0,0 +1,32 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +package software.amazon.cryptography.examples; + +import java.util.concurrent.ThreadLocalRandom; + +/** + * Shared utilities for examples. The TEST_SUFFIX provides a unique suffix + * per JVM process so that parallel CI matrix jobs (different Java versions / OS) + * do not overwrite each other's items in the shared DynamoDB test table. + * + * Each example uses a hardcoded partition key like "rawEcdhKeyringItem". + * In CI, multiple JVMs run in parallel against the same table. Without + * isolation, one JVM can overwrite another's item, causing decrypt failures. + * By appending a random suffix, each JVM writes to its own partition key + * (e.g., "rawEcdhKeyringItem-482913") while keeping cross-example reads + * working within the same JVM. + */ +public class ExampleUtils { + + private static final String TEST_SUFFIX = String.valueOf( + ThreadLocalRandom.current().nextInt(100000, 999999) + ); + + /** + * Returns a partition key value unique to this JVM process. + * Example: "rawEcdhKeyringItem" becomes "rawEcdhKeyringItem-482913" + */ + public static String uniquePk(String base) { + return base + "-" + TEST_SUFFIX; + } +} diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/clientsupplier/ClientSupplierExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/clientsupplier/ClientSupplierExample.java index 7d75d2f9b2..0e34c8cbfc 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/clientsupplier/ClientSupplierExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/clientsupplier/ClientSupplierExample.java @@ -15,6 +15,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsMrkDiscoveryMultiKeyringInput; @@ -166,7 +167,10 @@ public static void ClientSupplierPutItemGetItem( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("clientSupplierItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("clientSupplierItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -191,7 +195,10 @@ public static void ClientSupplierPutItemGetItem( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("clientSupplierItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("clientSupplierItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); @@ -289,7 +296,10 @@ public static void ClientSupplierPutItemGetItem( new HashMap<>(); onlyReplicaKeyKeyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkMultiKeyringItem")) + .build() ); onlyReplicaKeyKeyToGet.put( "sort_key", diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/EnhancedPutGetExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/EnhancedPutGetExample.java index 3474b3094b..b3655011b1 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/EnhancedPutGetExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/EnhancedPutGetExample.java @@ -17,6 +17,8 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.CreateDynamoDbEncryptionInterceptorInput; import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.DynamoDbEnhancedClientEncryption; import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.DynamoDbEnhancedTableEncryptionConfig; +import software.amazon.cryptography.examples.ExampleUtils; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsMrkMultiKeyringInput; @@ -153,7 +155,7 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // The item will be encrypted client-side according to your // configuration above before it is sent to DynamoDb. final SimpleClass4 item = new SimpleClass4(); - item.setPartitionKey("EnhancedPutGetExample"); + item.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample")); item.setSortKey(0); item.setAttribute1("encrypt and sign me!"); item.setAttribute2("sign me!"); @@ -167,7 +169,7 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // original item. final Key key = Key .builder() - .partitionValue("EnhancedPutGetExample") + .partitionValue(ExampleUtils.uniquePk("EnhancedPutGetExample")) .sortValue(0) .build(); @@ -181,7 +183,8 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // retrieve the same record via a Query PageIterable items = table.query( - QueryConditional.keyEqualTo(k -> k.partitionValue("EnhancedPutGetExample") + QueryConditional.keyEqualTo(k -> + k.partitionValue(ExampleUtils.uniquePk("EnhancedPutGetExample")) ) ); List itemList = new ArrayList(); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/LombokPutGetExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/LombokPutGetExample.java index 4eff731ad1..8125eca64b 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/LombokPutGetExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/LombokPutGetExample.java @@ -27,6 +27,8 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.DynamoDbEnhancedClientEncryption; import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.DynamoDbEnhancedTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.itemencryptor.DynamoDbItemEncryptor; +import software.amazon.cryptography.examples.ExampleUtils; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsMrkMultiKeyringInput; @@ -163,7 +165,7 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // configuration above before it is sent to DynamoDb. final SimpleViaLombok.SimpleViaLombokBuilder itemBuilder = SimpleViaLombok.builder(); - itemBuilder.partitionKey("LombokPutGetExample"); + itemBuilder.partitionKey(ExampleUtils.uniquePk("LombokPutGetExample")); itemBuilder.sortKey(0); itemBuilder.attribute1("encrypt and sign me!"); itemBuilder.attribute2("sign me!"); @@ -176,7 +178,7 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // original item. final Key key = Key .builder() - .partitionValue("LombokPutGetExample") + .partitionValue(ExampleUtils.uniquePk("LombokPutGetExample")) .sortValue(0) .build(); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/SingleTableExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/SingleTableExample.java index c0657017c0..44e7503412 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/SingleTableExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/SingleTableExample.java @@ -16,6 +16,8 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.CreateDynamoDbEncryptionInterceptorInput; import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.DynamoDbEnhancedClientEncryption; import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.DynamoDbEnhancedTableEncryptionConfig; +import software.amazon.cryptography.examples.ExampleUtils; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsMrkMultiKeyringInput; @@ -168,21 +170,21 @@ public static void TransactWriteItems(String kmsKeyId, String ddbTableName) { // The item will be encrypted client-side according to your // configuration above before it is sent to DynamoDb. final SimpleClass item1 = new SimpleClass(); - item1.setPartitionKey("EnhancedPutGetExample1"); + item1.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample1")); item1.setSortKey(0); item1.setAttribute1("item1 encrypt and sign me!"); item1.setAttribute2("item1 sign me!"); item1.setAttribute3("item1 ignore me!"); final SimpleClass2 item2 = new SimpleClass2(); - item2.setPartitionKey("EnhancedPutGetExample2"); + item2.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample2")); item2.setSortKey(0); item2.setAttribute4("item2 encrypt and sign me!"); item2.setAttribute5("item2 sign me!"); item2.setAttribute3("item2 ignore me!"); final SimpleClass3 item3 = new SimpleClass3(); - item3.setPartitionKey("EnhancedPutGetExample3"); + item3.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample3")); item3.setSortKey(0); item3.setAttribute6("item3 encrypt and sign me!"); item3.setAttribute2("item3 sign me!"); @@ -202,15 +204,15 @@ public static void TransactWriteItems(String kmsKeyId, String ddbTableName) { // The item will be decrypted client-side, and you will get back the // original item. final SimpleClass key1 = new SimpleClass(); - key1.setPartitionKey("EnhancedPutGetExample1"); + key1.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample1")); key1.setSortKey(0); final SimpleClass2 key2 = new SimpleClass2(); - key2.setPartitionKey("EnhancedPutGetExample2"); + key2.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample2")); key2.setSortKey(0); final SimpleClass3 key3 = new SimpleClass3(); - key3.setPartitionKey("EnhancedPutGetExample3"); + key3.setPartitionKey(ExampleUtils.uniquePk("EnhancedPutGetExample3")); key3.setSortKey(0); final TransactGetItemsEnhancedRequest getRequest = diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/TableSchemaBuilderPutGetExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/TableSchemaBuilderPutGetExample.java index 2ec8e61675..bae39f12ce 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/TableSchemaBuilderPutGetExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/enhanced/TableSchemaBuilderPutGetExample.java @@ -31,6 +31,8 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.enhancedclient.SignOnlyTag; import software.amazon.cryptography.dbencryptionsdk.dynamodb.itemencryptor.DynamoDbItemEncryptor; import software.amazon.cryptography.examples.ConfigUtils; +import software.amazon.cryptography.examples.ExampleUtils; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsMrkMultiKeyringInput; @@ -212,7 +214,9 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // The item will be encrypted client-side according to your // configuration above before it is sent to DynamoDb. final SimpleClass item = new SimpleClass(); - item.setPartitionKey("TableSchemaBuilderPutGetExample"); + item.setPartitionKey( + ExampleUtils.uniquePk("TableSchemaBuilderPutGetExample") + ); item.setSortKey(0); item.setAttribute1("encrypt and sign me!"); item.setAttribute2("sign me!"); @@ -224,7 +228,7 @@ public static void PutItemGetItem(String kmsKeyId, String ddbTableName) { // original item. final Key key = Key .builder() - .partitionValue("TableSchemaBuilderPutGetExample") + .partitionValue(ExampleUtils.uniquePk("TableSchemaBuilderPutGetExample")) .sortValue(0) .build(); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsEcdhKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsEcdhKeyringExample.java index bb9978d4db..022cabe7c4 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsEcdhKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsEcdhKeyringExample.java @@ -40,6 +40,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsEcdhKeyringInput; @@ -339,7 +340,10 @@ private static void GetItemWithKeyring( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsEcdhKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); @@ -456,7 +460,10 @@ private static void PutGetItemWithKeyring( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("awsKmsEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsEcdhKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -481,7 +488,10 @@ private static void PutGetItemWithKeyring( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsEcdhKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsRsaKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsRsaKeyringExample.java index cd02dd4595..fe6f296075 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsRsaKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/KmsRsaKeyringExample.java @@ -29,6 +29,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsRsaKeyringInput; @@ -201,7 +202,10 @@ public static void KmsRsaKeyringGetItemPutItem( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("awsKmsRsaKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsRsaKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -226,7 +230,10 @@ public static void KmsRsaKeyringGetItemPutItem( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsRsaKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsRsaKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MrkDiscoveryMultiKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MrkDiscoveryMultiKeyringExample.java index 7f896876c3..4e85104c97 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MrkDiscoveryMultiKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MrkDiscoveryMultiKeyringExample.java @@ -16,6 +16,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsMrkDiscoveryMultiKeyringInput; @@ -157,7 +158,10 @@ public static void MultiMrkDiscoveryKeyringGetItemPutItem( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkDiscoveryMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkDiscoveryMultiKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -250,7 +254,10 @@ public static void MultiMrkDiscoveryKeyringGetItemPutItem( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkDiscoveryMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkDiscoveryMultiKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiKeyringExample.java index 635f637c23..df74814793 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiKeyringExample.java @@ -21,6 +21,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.AesWrappingAlg; @@ -203,7 +204,10 @@ public static void MultiKeyringGetItemPutItem( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("multiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("multiKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -230,7 +234,10 @@ public static void MultiKeyringGetItemPutItem( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("multiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("multiKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); @@ -298,7 +305,10 @@ public static void MultiKeyringGetItemPutItem( new HashMap<>(); onlyAesKeyringKeyToGet.put( "partition_key", - AttributeValue.builder().s("multiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("multiKeyringItem")) + .build() ); onlyAesKeyringKeyToGet.put( "sort_key", diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiMrkKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiMrkKeyringExample.java index 3024a67397..c918c504d7 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiMrkKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/MultiMrkKeyringExample.java @@ -17,6 +17,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateAwsKmsKeyringInput; @@ -187,7 +188,10 @@ public static void MultiMrkKeyringGetItemPutItem( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkMultiKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -214,7 +218,10 @@ public static void MultiMrkKeyringGetItemPutItem( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkMultiKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); @@ -296,7 +303,10 @@ public static void MultiMrkKeyringGetItemPutItem( new HashMap<>(); onlyReplicaKeyKeyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkMultiKeyringItem")) + .build() ); onlyReplicaKeyKeyToGet.put( "sort_key", @@ -378,7 +388,10 @@ public static void MultiMrkKeyringGetItemPutItem( final HashMap onlySrkKeyToGet = new HashMap<>(); onlySrkKeyToGet.put( "partition_key", - AttributeValue.builder().s("awsKmsMrkMultiKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("awsKmsMrkMultiKeyringItem")) + .build() ); onlySrkKeyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawAesKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawAesKeyringExample.java index 5ef15b1f1b..9a4bb445a8 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawAesKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawAesKeyringExample.java @@ -18,6 +18,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.AesWrappingAlg; @@ -156,7 +157,10 @@ public static void RawAesKeyringGetItemPutItem( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("rawAesKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawAesKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -181,7 +185,10 @@ public static void RawAesKeyringGetItemPutItem( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("rawAesKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawAesKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawEcdhKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawEcdhKeyringExample.java index 97fbac6f0c..2fc2ecb84b 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawEcdhKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawEcdhKeyringExample.java @@ -44,6 +44,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateRawEcdhKeyringInput; @@ -438,7 +439,10 @@ public static void PutGetExampleWithKeyring( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("rawEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawEcdhKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -463,7 +467,10 @@ public static void PutGetExampleWithKeyring( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("rawEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawEcdhKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); @@ -575,7 +582,10 @@ public static void PutExampleWithKeyring( final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("rawEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawEcdhKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -685,7 +695,10 @@ public static void GetExampleWithKeyring( final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("rawEcdhKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawEcdhKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawRsaKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawRsaKeyringExample.java index e5b9e608e3..a577918e1c 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawRsaKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/main/java/software/amazon/cryptography/examples/keyring/RawRsaKeyringExample.java @@ -29,6 +29,7 @@ import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig; import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction; +import software.amazon.cryptography.examples.ExampleUtils; import software.amazon.cryptography.materialproviders.IKeyring; import software.amazon.cryptography.materialproviders.MaterialProviders; import software.amazon.cryptography.materialproviders.model.CreateRawRsaKeyringInput; @@ -210,7 +211,10 @@ public static void RawRsaKeyringGetItemPutItem(String ddbTableName) { final HashMap item = new HashMap<>(); item.put( "partition_key", - AttributeValue.builder().s("rawRsaKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawRsaKeyringItem")) + .build() ); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put( @@ -235,7 +239,10 @@ public static void RawRsaKeyringGetItemPutItem(String ddbTableName) { final HashMap keyToGet = new HashMap<>(); keyToGet.put( "partition_key", - AttributeValue.builder().s("rawRsaKeyringItem").build() + AttributeValue + .builder() + .s(ExampleUtils.uniquePk("rawRsaKeyringItem")) + .build() ); keyToGet.put("sort_key", AttributeValue.builder().n("0").build()); diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/TestUtils.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/TestUtils.java index c43b994542..583859e9bc 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/TestUtils.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/TestUtils.java @@ -42,6 +42,20 @@ public class TestUtils { public static final String TEST_DDB_TABLE_NAME = "DynamoDbEncryptionInterceptorTestTable"; + /** + * Deletes a test item using the standard table schema (partition_key S, sort_key N). + * Use this for items written by examples that use ExampleUtils.uniquePk(). + */ + public static void cleanUpExampleItem(final String partitionKeyBase) { + cleanUpDDBItem( + TEST_DDB_TABLE_NAME, + "partition_key", + "sort_key", + ExampleUtils.uniquePk(partitionKeyBase), + "0" + ); + } + /** * Deletes an item from a DynamoDB table. * diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/clientsupplier/TestClientSupplierExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/clientsupplier/TestClientSupplierExample.java index 6c7a4069ed..6040d44572 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/clientsupplier/TestClientSupplierExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/clientsupplier/TestClientSupplierExample.java @@ -2,9 +2,11 @@ import java.util.Collections; import java.util.List; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.awssdk.regions.Region; import software.amazon.cryptography.examples.TestUtils; +import software.amazon.cryptography.examples.keyring.MultiMrkKeyringExample; public class TestClientSupplierExample { @@ -15,6 +17,16 @@ public void TestClientSupplierExample() { ); List regions = Collections.singletonList(Region.EU_WEST_1.id()); + // ClientSupplierExample reads an item written by MultiMrkKeyringExample + // (partition_key = "awsKmsMrkMultiKeyringItem") to demonstrate discovery + // decryption with a client supplier. Ensure that item exists first. + MultiMrkKeyringExample.MultiMrkKeyringGetItemPutItem( + TestUtils.TEST_DDB_TABLE_NAME, + TestUtils.TEST_MRK_KEY_ID, + TestUtils.TEST_KMS_KEY_ID, + TestUtils.TEST_MRK_REPLICA_KEY_ID_US_EAST_1 + ); + ClientSupplierExample.ClientSupplierPutItemGetItem( TestUtils.TEST_DDB_TABLE_NAME, // Note that we pass in an MRK in us-east-1... @@ -24,4 +36,10 @@ public void TestClientSupplierExample() { regions ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("clientSupplierItem"); + TestUtils.cleanUpExampleItem("awsKmsMrkMultiKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestEnhancedPutGetExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestEnhancedPutGetExample.java index 0bf211d424..a6eb3cb522 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestEnhancedPutGetExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestEnhancedPutGetExample.java @@ -1,5 +1,6 @@ package software.amazon.cryptography.examples.enhanced; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -28,4 +29,11 @@ public void TestTableSchemaBuilderPutGet() { TestUtils.TEST_DDB_TABLE_NAME ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("EnhancedPutGetExample"); + TestUtils.cleanUpExampleItem("LombokPutGetExample"); + TestUtils.cleanUpExampleItem("TableSchemaBuilderPutGetExample"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestSingleTableExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestSingleTableExample.java index 7b64a049f9..10e1c94974 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestSingleTableExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/enhanced/TestSingleTableExample.java @@ -1,5 +1,6 @@ package software.amazon.cryptography.examples.enhanced; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -12,4 +13,11 @@ public void TestEnhancedSingleTable() { TestUtils.TEST_DDB_TABLE_NAME ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("EnhancedPutGetExample1"); + TestUtils.cleanUpExampleItem("EnhancedPutGetExample2"); + TestUtils.cleanUpExampleItem("EnhancedPutGetExample3"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsEcdhKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsEcdhKeyringExample.java index 7495261af3..259dc1adf7 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsEcdhKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsEcdhKeyringExample.java @@ -5,6 +5,7 @@ import static software.amazon.cryptography.examples.keyring.KmsEcdhKeyringExample.shouldGetNewPublicKeys; import static software.amazon.cryptography.examples.keyring.KmsEcdhKeyringExample.writePublicKeyPemForEccKey; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -35,7 +36,7 @@ public void TestKmsEcdhKeyringExampleStatic() { ); } - @Test + @Test(dependsOnMethods = { "TestKmsEcdhKeyringExampleStatic" }) public void TestKmsEcdhKeyringExampleDiscovery() { // In this example you do not need to provide the recipient ECC Public Key. // On initialization, the keyring will call KMS:getPublicKey on the configured @@ -46,4 +47,9 @@ public void TestKmsEcdhKeyringExampleDiscovery() { TestUtils.TEST_KMS_ECDH_KEY_ID_P256_RECIPIENT ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("awsKmsEcdhKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsRsaKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsRsaKeyringExample.java index 9f0156d9d3..f5de14e739 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsRsaKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestKmsRsaKeyringExample.java @@ -3,6 +3,7 @@ import static software.amazon.cryptography.examples.keyring.KmsRsaKeyringExample.shouldGetNewPublicKey; import static software.amazon.cryptography.examples.keyring.KmsRsaKeyringExample.writePublicKeyPemForRsaKey; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -22,4 +23,9 @@ public void TestKmsRsaKeyringExample() { TestUtils.TEST_KMS_RSA_KEY_ID ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("awsKmsRsaKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkDiscoveryMultiKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkDiscoveryMultiKeyringExample.java index ceace75fa3..e1f3a539f9 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkDiscoveryMultiKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkDiscoveryMultiKeyringExample.java @@ -2,6 +2,7 @@ import java.util.Collections; import java.util.List; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -21,4 +22,9 @@ public void TestMrkDiscoveryMultiKeyringExample() { regions ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("awsKmsMrkDiscoveryMultiKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkMultiKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkMultiKeyringExample.java index c4f313ac4b..d8f9b45961 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkMultiKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMrkMultiKeyringExample.java @@ -1,5 +1,6 @@ package software.amazon.cryptography.examples.keyring; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -14,4 +15,9 @@ public void TestMrkMultiKeyringExample() { TestUtils.TEST_MRK_REPLICA_KEY_ID_US_EAST_1 ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("awsKmsMrkMultiKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMultiKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMultiKeyringExample.java index 0c54c4a89d..d96f61e847 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMultiKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestMultiKeyringExample.java @@ -1,6 +1,7 @@ package software.amazon.cryptography.examples.keyring; import java.nio.ByteBuffer; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -17,4 +18,9 @@ public void TestMultiKeyringExample() { aesKeyBytes ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("multiKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawAesKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawAesKeyringExample.java index 4f31ef9a7c..0440129eb9 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawAesKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawAesKeyringExample.java @@ -1,6 +1,7 @@ package software.amazon.cryptography.examples.keyring; import java.nio.ByteBuffer; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -16,4 +17,9 @@ public void TestRawAesKeyringExample() { aesKeyBytes ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("rawAesKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawEcdhKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawEcdhKeyringExample.java index a6ee1aff65..3c09c7b577 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawEcdhKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawEcdhKeyringExample.java @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; import java.security.spec.ECGenParameterSpec; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; import software.amazon.cryptography.primitives.model.ECDHCurveSpec; @@ -80,4 +81,9 @@ public void TestDiscoveryRawEcdhKeyringExample() { ECDHCurveSpec.ECC_NIST_P256 ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("rawEcdhKeyringItem"); + } } diff --git a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawRsaKeyringExample.java b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawRsaKeyringExample.java index 5baea772c2..919857b9b0 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawRsaKeyringExample.java +++ b/Examples/runtimes/java/DynamoDbEncryption/src/test/java/software/amazon/cryptography/examples/keyring/TestRawRsaKeyringExample.java @@ -1,5 +1,6 @@ package software.amazon.cryptography.examples.keyring; +import org.testng.annotations.AfterTest; import org.testng.annotations.Test; import software.amazon.cryptography.examples.TestUtils; @@ -19,4 +20,9 @@ public void TestRawRsaKeyringExample() { TestUtils.TEST_DDB_TABLE_NAME ); } + + @AfterTest + public void cleanup() { + TestUtils.cleanUpExampleItem("rawRsaKeyringItem"); + } }