shameersss1 commented on code in PR #6884:
URL: https://github.com/apache/hadoop/pull/6884#discussion_r1822613047


##########
hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3AClientSideEncryption.java:
##########
@@ -266,6 +272,211 @@ public void testEncryptionEnabledAndDisabledFS() throws 
Exception {
     }
   }
 
+  /**
+   * Test to check if unencrypted objects are read with V1 client 
compatibility.
+   * @throws IOException
+   * @throws Exception
+   */
+  @Test
+  public void testUnencryptedObjectReadWithV1CompatibilityConfig() throws 
Exception {
+    maybeSkipTest();
+    // initialize base s3 client.
+    Configuration conf = new Configuration(getConfiguration());
+    S3AFileSystem nonCseFs = createTestFileSystem(conf);
+    removeBaseAndBucketOverrides(getTestBucketName(conf),
+        conf,
+        S3_ENCRYPTION_ALGORITHM,
+        S3_ENCRYPTION_KEY,
+        SERVER_SIDE_ENCRYPTION_ALGORITHM,
+        SERVER_SIDE_ENCRYPTION_KEY);
+    nonCseFs.initialize(getFileSystem().getUri(), conf);
+
+    Path file = path(getMethodName());
+    // write unencrypted file
+    ContractTestUtils.writeDataset(nonCseFs, file, new byte[SMALL_FILE_SIZE],
+        SMALL_FILE_SIZE, SMALL_FILE_SIZE, true);
+
+    Configuration cseConf = new Configuration(getConfiguration());
+    cseConf.setBoolean(S3_ENCRYPTION_CSE_V1_COMPATIBILITY_ENABLED, true);
+    // create filesystem with cse enabled and v1 compatibility.
+    S3AFileSystem cseFs = createTestFileSystem(cseConf);
+    cseFs.initialize(getFileSystem().getUri(), cseConf);
+
+    // read unencrypted file. It should not throw any exception.
+    try (FSDataInputStream in = cseFs.open(file)) {
+      in.read(new byte[SMALL_FILE_SIZE]);
+    } finally {
+      // close the filesystem
+      nonCseFs.close();
+      cseFs.close();
+    }
+  }
+
+  /**
+   * Test to check if file name with suffix ".instruction" is ignored with V1 
compatibility.
+   * @throws IOException
+   */
+  @Test
+  public void testSkippingCSEInstructionFileWithV1Compatibility() throws 
IOException {

Review Comment:
   I agree with you have instruction file is causing too much 
confusion/difficulty. I think let's ignore instruction case for time being and 
document that having instruction is not supported.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to