From 9afb51ad3956a3887f2f073ddc6177a1b64b5db6 Mon Sep 17 00:00:00 2001 From: sravani-revuri Date: Thu, 6 Aug 2026 12:40:44 +0530 Subject: [PATCH 1/4] HDDS-15761. Create test for OMMXBean --- .../apache/hadoop/ozone/om/OMMXBeanTests.java | 70 +++++++++++++++++++ .../org/apache/ozone/test/NonHATests.java | 7 ++ 2 files changed, 77 insertions(+) create mode 100644 hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java new file mode 100644 index 000000000000..38dafb7c0238 --- /dev/null +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.ozone.om; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.lang.management.ManagementFactory; +import javax.management.MBeanServer; +import javax.management.ObjectName; +import org.apache.ozone.test.NonHATests; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; + +/** + * Test cases for the JMX management interface for OM information. + */ +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public abstract class OMMXBeanTests implements NonHATests.TestCase { + + private OzoneManager om; + private MBeanServer mbs; + + @BeforeAll + void init() { + om = cluster().getOzoneManager(); + mbs = ManagementFactory.getPlatformMBeanServer(); + } + + @Test + public void testOMMXBean() throws Exception { + ObjectName bean = new ObjectName( + "Hadoop:service=OzoneManager," + + "name=OzoneManagerInfo," + + "component=ServerRuntime"); + + String namespace = (String) mbs.getAttribute(bean, "Namespace"); + assertEquals(om.getNamespace(), namespace); + + String rpcPort = (String) mbs.getAttribute(bean, "RpcPort"); + assertEquals(om.getRpcPort(), rpcPort); + + String hostname = (String) mbs.getAttribute(bean, "Hostname"); + assertEquals(om.getHostname(), hostname); + + String ratisLogDirectory = (String) mbs.getAttribute(bean, "RatisLogDirectory"); + assertEquals(om.getRatisLogDirectory(), ratisLogDirectory); + + String rocksDbDirectory = (String) mbs.getAttribute(bean, "RocksDbDirectory"); + assertEquals(om.getRocksDbDirectory(), rocksDbDirectory); + + String ratisEvents = (String) mbs.getAttribute(bean, "RatisEvents"); + assertEquals(om.getRatisEvents(), ratisEvents); + } +} diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java b/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java index b034bb21de83..53f419f0251f 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java @@ -46,6 +46,7 @@ import org.apache.hadoop.ozone.om.TestListKeys; import org.apache.hadoop.ozone.om.TestListKeysWithFSO; import org.apache.hadoop.ozone.om.TestListStatus; +import org.apache.hadoop.ozone.om.OMMXBeanTests; import org.apache.hadoop.ozone.om.TestObjectStore; import org.apache.hadoop.ozone.om.TestObjectStoreWithFSO; import org.apache.hadoop.ozone.om.TestObjectStoreWithLegacyFS; @@ -173,6 +174,12 @@ public MiniOzoneCluster cluster() { } } + @Nested + class OMMXBean extends OMMXBeanTests { + @Override + public MiniOzoneCluster cluster() { return getCluster(); } + } + @Nested class SCMNodeManagerMXBean extends TestSCMNodeManagerMXBean { @Override From 341ef10cbc54ab22878825606a469a15f00e1c1c Mon Sep 17 00:00:00 2001 From: sravani-revuri Date: Thu, 6 Aug 2026 12:47:03 +0530 Subject: [PATCH 2/4] fixed checkstyle --- .../src/test/java/org/apache/ozone/test/NonHATests.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java b/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java index 53f419f0251f..12095ad756c6 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/ozone/test/NonHATests.java @@ -42,11 +42,11 @@ import org.apache.hadoop.ozone.client.rpc.TestDiscardPreallocatedBlocks; import org.apache.hadoop.ozone.client.rpc.TestOzoneClientMultipartUploadWithFSO; import org.apache.hadoop.ozone.client.rpc.TestOzoneRpcClientWithKeyLatestVersion; +import org.apache.hadoop.ozone.om.OMMXBeanTests; import org.apache.hadoop.ozone.om.TestBucketLayoutWithOlderClient; import org.apache.hadoop.ozone.om.TestListKeys; import org.apache.hadoop.ozone.om.TestListKeysWithFSO; import org.apache.hadoop.ozone.om.TestListStatus; -import org.apache.hadoop.ozone.om.OMMXBeanTests; import org.apache.hadoop.ozone.om.TestObjectStore; import org.apache.hadoop.ozone.om.TestObjectStoreWithFSO; import org.apache.hadoop.ozone.om.TestObjectStoreWithLegacyFS; @@ -177,7 +177,9 @@ public MiniOzoneCluster cluster() { @Nested class OMMXBean extends OMMXBeanTests { @Override - public MiniOzoneCluster cluster() { return getCluster(); } + public MiniOzoneCluster cluster() { + return getCluster(); + } } @Nested From 0e25709c3843d07b7f9d7d94b279f12a8fde5e00 Mon Sep 17 00:00:00 2001 From: sravani-revuri Date: Tue, 11 Aug 2026 11:52:08 +0530 Subject: [PATCH 3/4] added ratisroles check --- .../apache/hadoop/ozone/om/OMMXBeanTests.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java index 38dafb7c0238..92a30a6ba037 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java @@ -18,8 +18,12 @@ package org.apache.hadoop.ozone.om; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.lang.management.ManagementFactory; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import javax.management.MBeanServer; import javax.management.ObjectName; import org.apache.ozone.test.NonHATests; @@ -64,7 +68,20 @@ public void testOMMXBean() throws Exception { String rocksDbDirectory = (String) mbs.getAttribute(bean, "RocksDbDirectory"); assertEquals(om.getRocksDbDirectory(), rocksDbDirectory); + Object ratisRolesAttribute = mbs.getAttribute(bean, "RatisRoles"); + assertNotNull(ratisRolesAttribute); + assertEquals(om.getRatisRoles(), toRatisRolesList(ratisRolesAttribute)); + String ratisEvents = (String) mbs.getAttribute(bean, "RatisEvents"); assertEquals(om.getRatisEvents(), ratisEvents); } + + private static List> toRatisRolesList(Object ratisRolesAttribute) { + String[][] ratisRolesArray = (String[][]) ratisRolesAttribute; + List> ratisRoles = new ArrayList<>(); + for (String[] row : ratisRolesArray) { + ratisRoles.add(Arrays.asList(row)); + } + return ratisRoles; + } } From a6a03b15f78e47f77ec092c21bb55fd7ea365e68 Mon Sep 17 00:00:00 2001 From: sravani-revuri Date: Tue, 11 Aug 2026 12:29:40 +0530 Subject: [PATCH 4/4] changes --- .../apache/hadoop/ozone/om/OMMXBeanTests.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java index 92a30a6ba037..b821ac741937 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/OMMXBeanTests.java @@ -18,6 +18,7 @@ package org.apache.hadoop.ozone.om; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertNotNull; import java.lang.management.ManagementFactory; @@ -68,20 +69,20 @@ public void testOMMXBean() throws Exception { String rocksDbDirectory = (String) mbs.getAttribute(bean, "RocksDbDirectory"); assertEquals(om.getRocksDbDirectory(), rocksDbDirectory); - Object ratisRolesAttribute = mbs.getAttribute(bean, "RatisRoles"); - assertNotNull(ratisRolesAttribute); - assertEquals(om.getRatisRoles(), toRatisRolesList(ratisRolesAttribute)); + Object ratisRoles = mbs.getAttribute(bean, "RatisRoles"); + assertNotNull(ratisRoles); + assertEquals(om.getRatisRoles(), toRatisRolesList(ratisRoles)); String ratisEvents = (String) mbs.getAttribute(bean, "RatisEvents"); assertEquals(om.getRatisEvents(), ratisEvents); } - private static List> toRatisRolesList(Object ratisRolesAttribute) { - String[][] ratisRolesArray = (String[][]) ratisRolesAttribute; - List> ratisRoles = new ArrayList<>(); + private static List> toRatisRolesList(Object ratisRoles) { + String[][] ratisRolesArray = assertInstanceOf(String[][].class, ratisRoles); + List> ratisRolesList = new ArrayList<>(); for (String[] row : ratisRolesArray) { - ratisRoles.add(Arrays.asList(row)); + ratisRolesList.add(Arrays.asList(row)); } - return ratisRoles; + return ratisRolesList; } }