From 8e1a44433e60a0cbbe383763632de785c16c601d Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 15 Jan 2022 12:33:30 +0800 Subject: [PATCH 1/9] Fixed All Flaky Tests --- .../datamodeling/encryption/DynamoDBEncryptorTest.java | 8 +++++--- .../internal/AttributeValueMarshallerTest.java | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java index 6ec4aefd..77684b6c 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java @@ -198,15 +198,17 @@ public void ensureEncryptedAttributesUnmodified() throws GeneralSecurityExceptio Map encryptedAttributes = encryptor.encryptAllFieldsExcept( Collections.unmodifiableMap(attribs), context, "hashKey", "rangeKey", "version"); - String encryptedString = encryptedAttributes.toString(); + HashMap beforeDecryption = new HashMap<>(); + for (HashMap.Entry entry: encryptedAttributes.entrySet()) { + beforeDecryption.put(entry.getKey(), entry.getValue()); + } encryptor.decryptAllFieldsExcept( Collections.unmodifiableMap(encryptedAttributes), context, "hashKey", "rangeKey", "version"); - - assertEquals(encryptedString, encryptedAttributes.toString()); + assertTrue(beforeDecryption.equals(encryptedAttributes)); } @Test(expectedExceptions = SignatureException.class) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java index 523a1958..c407e786 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java @@ -266,9 +266,10 @@ public void testSimpleMapWithNull() { marshall(av); Assert.fail("Unexpected success"); } catch (final NullPointerException npe) { - Assert.assertEquals( - "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}", - npe.getMessage()); + String expected_v1 = "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; + String expected_v2 = "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; + boolean flag = ((expected_v1.equals(npe.getMessage())) || (expected_v2.equals(npe.getMessage()))); + Assert.assertTrue(flag); } } From f13b093379fccd8efe3625ef5050451ad8a95083 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 16 Jan 2022 12:06:10 +0800 Subject: [PATCH 2/9] Refactored Code Changes --- .../encryption/DynamoDBEncryptorTest.java | 8 +++----- .../internal/AttributeValueMarshallerTest.java | 14 +++++++++++--- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java index 77684b6c..b653997e 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java @@ -198,17 +198,15 @@ public void ensureEncryptedAttributesUnmodified() throws GeneralSecurityExceptio Map encryptedAttributes = encryptor.encryptAllFieldsExcept( Collections.unmodifiableMap(attribs), context, "hashKey", "rangeKey", "version"); - HashMap beforeDecryption = new HashMap<>(); - for (HashMap.Entry entry: encryptedAttributes.entrySet()) { - beforeDecryption.put(entry.getKey(), entry.getValue()); - } + HashMap beforeDecryption = new HashMap<>(encryptedAttributes); encryptor.decryptAllFieldsExcept( Collections.unmodifiableMap(encryptedAttributes), context, "hashKey", "rangeKey", "version"); - assertTrue(beforeDecryption.equals(encryptedAttributes)); + + assertEquals(beforeDecryption, encryptedAttributes); } @Test(expectedExceptions = SignatureException.class) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java index c407e786..5c7cb1a6 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java @@ -266,10 +266,18 @@ public void testSimpleMapWithNull() { marshall(av); Assert.fail("Unexpected success"); } catch (final NullPointerException npe) { - String expected_v1 = "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; - String expected_v2 = "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; - boolean flag = ((expected_v1.equals(npe.getMessage())) || (expected_v2.equals(npe.getMessage()))); + // Map entries may permute under nondeterministic JAVA API + String npeMessage = npe.getMessage(); + String common = "Encountered null map value for key NullKeyValue while marshalling attribute value"; + String permutation1 = common + " {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; + String permutation2 = common + " {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; + boolean flag = ((permutation1.equals(npeMessage)) || (permutation2.equals(npeMessage))); Assert.assertTrue(flag); + /** + Assert.assertEquals( + "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}", + npe.getMessage()); + */ } } From 3cb795b050b730a75d1c93dba6e74d103d801fec Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 16 Jan 2022 12:14:00 +0800 Subject: [PATCH 3/9] Deleted Unused Code --- .../datamodeling/internal/AttributeValueMarshallerTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java index 5c7cb1a6..ba690b22 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java @@ -273,11 +273,6 @@ public void testSimpleMapWithNull() { String permutation2 = common + " {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; boolean flag = ((permutation1.equals(npeMessage)) || (permutation2.equals(npeMessage))); Assert.assertTrue(flag); - /** - Assert.assertEquals( - "Encountered null map value for key NullKeyValue while marshalling attribute value {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}", - npe.getMessage()); - */ } } From 687a1b6b51948dd9b5849b87fc739f6d8d513cc0 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 17 Jan 2022 15:02:07 +0800 Subject: [PATCH 4/9] Refactor --- .../datamodeling/internal/AttributeValueMarshallerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java index ba690b22..7ad04f9e 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java @@ -266,7 +266,7 @@ public void testSimpleMapWithNull() { marshall(av); Assert.fail("Unexpected success"); } catch (final NullPointerException npe) { - // Map entries may permute under nondeterministic JAVA API + // Map entries may permute under nondeterministic Java API String npeMessage = npe.getMessage(); String common = "Encountered null map value for key NullKeyValue while marshalling attribute value"; String permutation1 = common + " {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; From 385f72fd021d9c69805e318512a2935869ea4cfe Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Jan 2022 13:50:07 +0800 Subject: [PATCH 5/9] Refactor --- .../internal/AttributeValueMarshallerTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java index 7ad04f9e..f3904a32 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java @@ -266,13 +266,12 @@ public void testSimpleMapWithNull() { marshall(av); Assert.fail("Unexpected success"); } catch (final NullPointerException npe) { - // Map entries may permute under nondeterministic Java API + // Map entries may permute under nondeterministic JAVA API String npeMessage = npe.getMessage(); String common = "Encountered null map value for key NullKeyValue while marshalling attribute value"; - String permutation1 = common + " {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; - String permutation2 = common + " {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; - boolean flag = ((permutation1.equals(npeMessage)) || (permutation2.equals(npeMessage))); - Assert.assertTrue(flag); + String case1 = common + " {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; + String case2 = common + " {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; + Assert.assertTrue((case1.equals(npeMessage)) || (case2.equals(npeMessage))); } } From b3258220be8b1bde25d866e08facc0e610a92a2e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Jan 2022 14:19:49 +0800 Subject: [PATCH 6/9] Refactor --- .../internal/AttributeValueMarshallerTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java index f3904a32..904624e4 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshallerTest.java @@ -266,12 +266,12 @@ public void testSimpleMapWithNull() { marshall(av); Assert.fail("Unexpected success"); } catch (final NullPointerException npe) { - // Map entries may permute under nondeterministic JAVA API + // Map entries may permute under nondeterministic Java API String npeMessage = npe.getMessage(); - String common = "Encountered null map value for key NullKeyValue while marshalling attribute value"; - String case1 = common + " {M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; - String case2 = common + " {M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; - Assert.assertTrue((case1.equals(npeMessage)) || (case2.equals(npeMessage))); + String common = "Encountered null map value for key NullKeyValue while marshalling attribute value "; + String case1 = common + "{M: {KeyValue={S: ValueValue,}, NullKeyValue=null},}"; + String case2 = common + "{M: {NullKeyValue=null, KeyValue={S: ValueValue,}},}"; + Assert.assertTrue(case1.equals(npeMessage) || case2.equals(npeMessage)); } } From 67dcb1f0a0e875a8145ab44025f66a077c1db9de Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Jan 2022 14:21:41 +0800 Subject: [PATCH 7/9] Refactor --- .../datamodeling/encryption/DynamoDBEncryptorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java index b653997e..d76c2b08 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java @@ -198,7 +198,7 @@ public void ensureEncryptedAttributesUnmodified() throws GeneralSecurityExceptio Map encryptedAttributes = encryptor.encryptAllFieldsExcept( Collections.unmodifiableMap(attribs), context, "hashKey", "rangeKey", "version"); - HashMap beforeDecryption = new HashMap<>(encryptedAttributes); + Map beforeDecryption = new HashMap<>(encryptedAttributes); encryptor.decryptAllFieldsExcept( Collections.unmodifiableMap(encryptedAttributes), context, From 072c95e8d67fd218802e002c9ca85bd7001c0ced Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 23 Jan 2022 15:05:43 +0800 Subject: [PATCH 8/9] Refactor --- .../datamodeling/encryption/DynamoDBEncryptorTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java index d76c2b08..c3b43fe3 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java @@ -46,6 +46,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.TreeMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -198,15 +199,16 @@ public void ensureEncryptedAttributesUnmodified() throws GeneralSecurityExceptio Map encryptedAttributes = encryptor.encryptAllFieldsExcept( Collections.unmodifiableMap(attribs), context, "hashKey", "rangeKey", "version"); - Map beforeDecryption = new HashMap<>(encryptedAttributes); + String beforeDecryption = (new TreeMap<>(encryptedAttributes)).toString(); encryptor.decryptAllFieldsExcept( Collections.unmodifiableMap(encryptedAttributes), context, "hashKey", "rangeKey", "version"); + String afterDecryption = (new TreeMap<>(encryptedAttributes)).toString(); - assertEquals(beforeDecryption, encryptedAttributes); + assertEquals(beforeDecryption, afterDecryption); } @Test(expectedExceptions = SignatureException.class) From 2c45d1fee6fe6c78d5443cdc0f1bdd6ff93642a4 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 23 Jan 2022 23:26:45 +0800 Subject: [PATCH 9/9] Refactored Changes after Peer Review --- .../datamodeling/encryption/DynamoDBEncryptorTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java index c3b43fe3..32a22993 100644 --- a/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java +++ b/sdk1/src/test/java/com/amazonaws/services/dynamodbv2/datamodeling/encryption/DynamoDBEncryptorTest.java @@ -199,16 +199,15 @@ public void ensureEncryptedAttributesUnmodified() throws GeneralSecurityExceptio Map encryptedAttributes = encryptor.encryptAllFieldsExcept( Collections.unmodifiableMap(attribs), context, "hashKey", "rangeKey", "version"); - String beforeDecryption = (new TreeMap<>(encryptedAttributes)).toString(); + String encryptedString = new TreeMap<>(encryptedAttributes).toString(); encryptor.decryptAllFieldsExcept( Collections.unmodifiableMap(encryptedAttributes), context, "hashKey", "rangeKey", "version"); - String afterDecryption = (new TreeMap<>(encryptedAttributes)).toString(); - assertEquals(beforeDecryption, afterDecryption); + assertEquals(encryptedString, new TreeMap<>(encryptedAttributes).toString()); } @Test(expectedExceptions = SignatureException.class)