adoroszlai commented on code in PR #7844:
URL: https://github.com/apache/ozone/pull/7844#discussion_r1948760834
##########
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java:
##########
@@ -228,10 +231,17 @@ abstract class OzoneRpcClientTests extends OzoneTestBase {
remoteGroupName, ACCESS, READ);
private static MessageDigest eTagProvider;
private static Set<OzoneClient> ozoneClients = new HashSet<>();
+ private static PrintStream old;
+ private static ByteArrayOutputStream baos;
@BeforeAll
- public static void initialize() throws NoSuchAlgorithmException {
+ public static void initialize() throws NoSuchAlgorithmException,
UnsupportedEncodingException {
eTagProvider = MessageDigest.getInstance(MD5_HASH);
+ System.setProperty("log4j.configurationFile", "auditlog.properties");
Review Comment:
Please use:
```java
AuditLogTestUtils.enableAuditLog();
```
##########
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java:
##########
@@ -1076,6 +1087,76 @@ public void testDeleteLinkedBucket() throws Exception {
store.deleteVolume(volumeName);
}
+ @Test
+ public void testDeleteAuditLog() throws Exception {
+ String volumeName = UUID.randomUUID().toString();
+ String bucketName = UUID.randomUUID().toString();
+
+ String value = "sample value";
+ store.createVolume(volumeName);
+ OzoneVolume volume = store.getVolume(volumeName);
+ volume.createBucket(bucketName);
+ OzoneBucket bucket = volume.getBucket(bucketName);
+
+ // create a three replica file
+ String keyName1 = "key1";
+ try (OzoneOutputStream out = bucket.createKey(keyName1,
+ value.getBytes(UTF_8).length, RATIS, THREE, new HashMap<>())) {
+ out.write(value.getBytes(UTF_8));
+ }
+
+ // create a EC replica file
+ String keyName2 = "key2";
+ ReplicationConfig replicationConfig = new
ECReplicationConfig("rs-3-2-1024k");
+ try (OzoneOutputStream out = bucket.createKey(keyName2,
+ value.getBytes(UTF_8).length, replicationConfig, new HashMap<>())) {
+ out.write(value.getBytes(UTF_8));
+ }
+
+ // create a directory and a file
+ String dirName = "dir1";
+ bucket.createDirectory(dirName);
+ String keyName3 = "key3";
+ try (OzoneOutputStream out = bucket.createFile(dirName + "/" + keyName3,
+ value.getBytes(UTF_8).length, RATIS, THREE, true, true)) {
+ out.write(value.getBytes(UTF_8));
+ }
+
+ // delete files and directory
+ bucket.deleteKey(keyName1);
+ bucket.deleteKey(keyName2);
+ bucket.deleteDirectory(dirName, true);
+
+ // create keys for deleteKeys case
+ String keyName4 = "key4";
+ try (OzoneOutputStream out = bucket.createFile(dirName + "/" + keyName4,
+ value.getBytes(UTF_8).length, RATIS, THREE, true, true)) {
+ out.write(value.getBytes(UTF_8));
+ }
+ String keyName5 = "key5";
+ try (OzoneOutputStream out = bucket.createFile(dirName + "/" + keyName5,
+ value.getBytes(UTF_8).length, replicationConfig, true, true)) {
+ out.write(value.getBytes(UTF_8));
+ }
+ List<String> keysToDelete = new ArrayList<>();
+ keysToDelete.add(dirName + "/" + keyName4);
+ keysToDelete.add(dirName + "/" + keyName5);
+ bucket.deleteKeys(keysToDelete);
+
+ String consoleOutput = baos.toString(UTF_8.toString());
+ assertTrue(consoleOutput.contains("op=DELETE_KEY {volume=" + volumeName +
", bucket=" + bucketName +
+ ", key=key1, dataSize=" + value.getBytes(UTF_8).length + ",
replicationConfig=RATIS/THREE"));
Review Comment:
Please use `assertThat(...).contains(...)` for better message when the
assertion fails.
##########
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java:
##########
@@ -1076,6 +1087,76 @@ public void testDeleteLinkedBucket() throws Exception {
store.deleteVolume(volumeName);
}
+ @Test
+ public void testDeleteAuditLog() throws Exception {
+ String volumeName = UUID.randomUUID().toString();
+ String bucketName = UUID.randomUUID().toString();
+
+ String value = "sample value";
+ store.createVolume(volumeName);
+ OzoneVolume volume = store.getVolume(volumeName);
+ volume.createBucket(bucketName);
+ OzoneBucket bucket = volume.getBucket(bucketName);
+
+ // create a three replica file
+ String keyName1 = "key1";
+ try (OzoneOutputStream out = bucket.createKey(keyName1,
+ value.getBytes(UTF_8).length, RATIS, THREE, new HashMap<>())) {
+ out.write(value.getBytes(UTF_8));
+ }
Review Comment:
Please use `TestDataUtil#createKey`.
##########
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java:
##########
@@ -1076,6 +1087,76 @@ public void testDeleteLinkedBucket() throws Exception {
store.deleteVolume(volumeName);
}
+ @Test
+ public void testDeleteAuditLog() throws Exception {
+ String volumeName = UUID.randomUUID().toString();
+ String bucketName = UUID.randomUUID().toString();
+
+ String value = "sample value";
+ store.createVolume(volumeName);
+ OzoneVolume volume = store.getVolume(volumeName);
+ volume.createBucket(bucketName);
+ OzoneBucket bucket = volume.getBucket(bucketName);
+
+ // create a three replica file
+ String keyName1 = "key1";
+ try (OzoneOutputStream out = bucket.createKey(keyName1,
+ value.getBytes(UTF_8).length, RATIS, THREE, new HashMap<>())) {
+ out.write(value.getBytes(UTF_8));
+ }
+
+ // create a EC replica file
+ String keyName2 = "key2";
+ ReplicationConfig replicationConfig = new
ECReplicationConfig("rs-3-2-1024k");
+ try (OzoneOutputStream out = bucket.createKey(keyName2,
+ value.getBytes(UTF_8).length, replicationConfig, new HashMap<>())) {
+ out.write(value.getBytes(UTF_8));
+ }
+
+ // create a directory and a file
+ String dirName = "dir1";
+ bucket.createDirectory(dirName);
+ String keyName3 = "key3";
+ try (OzoneOutputStream out = bucket.createFile(dirName + "/" + keyName3,
+ value.getBytes(UTF_8).length, RATIS, THREE, true, true)) {
+ out.write(value.getBytes(UTF_8));
+ }
+
+ // delete files and directory
+ bucket.deleteKey(keyName1);
+ bucket.deleteKey(keyName2);
+ bucket.deleteDirectory(dirName, true);
+
+ // create keys for deleteKeys case
+ String keyName4 = "key4";
+ try (OzoneOutputStream out = bucket.createFile(dirName + "/" + keyName4,
+ value.getBytes(UTF_8).length, RATIS, THREE, true, true)) {
+ out.write(value.getBytes(UTF_8));
+ }
+ String keyName5 = "key5";
+ try (OzoneOutputStream out = bucket.createFile(dirName + "/" + keyName5,
+ value.getBytes(UTF_8).length, replicationConfig, true, true)) {
+ out.write(value.getBytes(UTF_8));
+ }
+ List<String> keysToDelete = new ArrayList<>();
+ keysToDelete.add(dirName + "/" + keyName4);
+ keysToDelete.add(dirName + "/" + keyName5);
+ bucket.deleteKeys(keysToDelete);
+
+ String consoleOutput = baos.toString(UTF_8.toString());
+ assertTrue(consoleOutput.contains("op=DELETE_KEY {volume=" + volumeName +
", bucket=" + bucketName +
+ ", key=key1, dataSize=" + value.getBytes(UTF_8).length + ",
replicationConfig=RATIS/THREE"));
+ assertTrue(consoleOutput.contains("op=DELETE_KEY {volume=" + volumeName +
", bucket=" + bucketName +
+ ", key=key2, dataSize=" + value.getBytes(UTF_8).length + ",
replicationConfig=EC{rs-3-2-1024k}"));
Review Comment:
Please store `value.getBytes(UTF_8).length` and reuse.
##########
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java:
##########
@@ -228,10 +231,17 @@ abstract class OzoneRpcClientTests extends OzoneTestBase {
remoteGroupName, ACCESS, READ);
private static MessageDigest eTagProvider;
private static Set<OzoneClient> ozoneClients = new HashSet<>();
+ private static PrintStream old;
+ private static ByteArrayOutputStream baos;
@BeforeAll
- public static void initialize() throws NoSuchAlgorithmException {
+ public static void initialize() throws NoSuchAlgorithmException,
UnsupportedEncodingException {
eTagProvider = MessageDigest.getInstance(MD5_HASH);
+ System.setProperty("log4j.configurationFile", "auditlog.properties");
+ old = System.out;
+ baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos, true, UTF_8.toString());
+ System.setOut(ps);
Review Comment:
Please use `GenericTestUtils#captureOut()`.
##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java:
##########
@@ -346,8 +352,18 @@ protected OmKeyInfo getOmKeyInfo(
* Add key info to audit map for DeleteKeys request.
*/
protected static void addDeletedKeys(Map<String, String> auditMap,
- List<String> deletedKeys, List<String> unDeletedKeys) {
- auditMap.put(DELETED_KEYS_LIST, String.join(",", deletedKeys));
+ List<OmKeyInfo> deletedKeyInfos, List<String> unDeletedKeys) {
+ StringBuffer keys = new StringBuffer();
Review Comment:
Use `StringBuilder` for local variable (thread-safety not required).
--
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]