From 927401886ae5be5f3c8dd6d82f13363bba594396 Mon Sep 17 00:00:00 2001 From: slfan1989 <55643692+slfan1989@users.noreply.github.com> Date: Mon, 6 Mar 2023 23:26:53 +0800 Subject: [PATCH] HDFS-16934. TestDFSAdmin.testAllDatanodesReconfig regression (#5434) Contributed by Shilun Fan --- .../hadoop/hdfs/tools/TestDFSAdmin.java | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSAdmin.java index 9a87365eb2f..d81aebf3c2e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSAdmin.java @@ -90,6 +90,7 @@ import org.apache.hadoop.test.PathUtils; import org.apache.hadoop.util.Lists; import org.apache.hadoop.util.ToolRunner; +import org.assertj.core.api.Assertions; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -1238,36 +1239,38 @@ public class TestDFSAdmin { when(reconfigurationUtil.parseChangedProperties(any(Configuration.class), any(Configuration.class))).thenReturn(changes); - assertEquals(0, admin.startReconfiguration("datanode", "livenodes")); + int result = admin.startReconfiguration("datanode", "livenodes"); + Assertions.assertThat(result).isEqualTo(0); final List outsForStartReconf = new ArrayList<>(); final List errsForStartReconf = new ArrayList<>(); reconfigurationOutErrFormatter("startReconfiguration", "datanode", "livenodes", outsForStartReconf, errsForStartReconf); - assertEquals(3, outsForStartReconf.size()); - assertEquals(0, errsForStartReconf.size()); - assertTrue(outsForStartReconf.get(0).startsWith("Started reconfiguration task on node")); - assertTrue(outsForStartReconf.get(1).startsWith("Started reconfiguration task on node")); - assertEquals("Starting of reconfiguration task successful on 2 nodes, failed on 0 nodes.", - outsForStartReconf.get(2)); + String started = "Started reconfiguration task on node"; + String starting = + "Starting of reconfiguration task successful on 2 nodes, failed on 0 nodes."; + Assertions.assertThat(outsForStartReconf).hasSize(3); + Assertions.assertThat(errsForStartReconf).hasSize(0); + Assertions.assertThat(outsForStartReconf.get(0)).startsWith(started); + Assertions.assertThat(outsForStartReconf.get(1)).startsWith(started); + Assertions.assertThat(outsForStartReconf.get(2)).startsWith(starting); Thread.sleep(1000); final List outs = new ArrayList<>(); final List errs = new ArrayList<>(); awaitReconfigurationFinished("datanode", "livenodes", outs, errs); - assertEquals(9, outs.size()); - assertEquals(0, errs.size()); + Assertions.assertThat(outs).hasSize(9); + Assertions.assertThat(errs).hasSize(0); LOG.info("dfsadmin -status -livenodes output:"); outs.forEach(s -> LOG.info("{}", s)); - assertTrue(outs.get(0).startsWith("Reconfiguring status for node")); - assertTrue("SUCCESS: Changed property dfs.datanode.peer.stats.enabled".equals(outs.get(2)) - || "SUCCESS: Changed property dfs.datanode.peer.stats.enabled".equals(outs.get(1))); - assertTrue("\tFrom: \"false\"".equals(outs.get(3)) || "\tFrom: \"false\"".equals(outs.get(2))); - assertTrue("\tTo: \"true\"".equals(outs.get(4)) || "\tTo: \"true\"".equals(outs.get(3))); - assertEquals("SUCCESS: Changed property dfs.datanode.peer.stats.enabled", outs.get(5)); - assertEquals("\tFrom: \"false\"", outs.get(6)); - assertEquals("\tTo: \"true\"", outs.get(7)); - assertEquals("Retrieval of reconfiguration status successful on 2 nodes, failed on 0 nodes.", - outs.get(8)); - } + Assertions.assertThat(outs.get(0)).startsWith("Reconfiguring status for node"); + String success = "SUCCESS: Changed property dfs.datanode.peer.stats.enabled"; + String from = "\tFrom: \"false\""; + String to = "\tTo: \"true\""; + String retrieval = + "Retrieval of reconfiguration status successful on 2 nodes, failed on 0 nodes."; + + Assertions.assertThat(outs.subList(1, 5)).containsSubsequence(success, from, to); + Assertions.assertThat(outs.subList(5, 9)).containsSubsequence(success, from, to, retrieval); + } }