Blob Blame History Raw
From 9fbeeed4e43dc37800de3c3f0cf6f7520dc31ccf Mon Sep 17 00:00:00 2001
From: Tomas Jelinek <tojeline@redhat.com>
Date: Mon, 20 Jan 2020 12:34:55 +0100
Subject: [PATCH] tests: update for pacemaker-2.0.3-4

---
 pcs_test/tier0/test_resource.py | 59 +++++++++++++-------------
 pcs_test/tier0/test_stonith.py  | 75 +++++++++++++++++----------------
 pcs_test/tools/assertions.py    | 24 +++++++++--
 3 files changed, 88 insertions(+), 70 deletions(-)

diff --git a/pcs_test/tier0/test_resource.py b/pcs_test/tier0/test_resource.py
index b8b85dd2..45d98dff 100644
--- a/pcs_test/tier0/test_resource.py
+++ b/pcs_test/tier0/test_resource.py
@@ -10,6 +10,7 @@ from pcs_test.tier0.cib_resource.common import ResourceTest
 from pcs_test.tools.assertions import (
     ac,
     AssertPcsMixin,
+    assert_pcs_status,
 )
 from pcs_test.tools.bin_mock import get_mock_settings
 from pcs_test.tools.cib import get_assert_pcs_effect_mixin
@@ -953,11 +954,11 @@ monitor interval=20 (A-monitor-interval-20)
         o,r = pcs(temp_cib, "resource status")
         assert r == 0
         if PCMK_2_0_3_PLUS:
-            ac(o,"""\
+            assert_pcs_status(o,"""\
   * Resource Group: AGroup:
-    * A1\t(ocf::heartbeat:Dummy):\t Stopped
-    * A2\t(ocf::heartbeat:Dummy):\t Stopped
-    * A3\t(ocf::heartbeat:Dummy):\t Stopped
+    * A1\t(ocf::heartbeat:Dummy):\tStopped
+    * A2\t(ocf::heartbeat:Dummy):\tStopped
+    * A3\t(ocf::heartbeat:Dummy):\tStopped
 """)
         else:
             ac(o,"""\
@@ -1208,19 +1209,19 @@ monitor interval=20 (A-monitor-interval-20)
         output, returnVal = pcs(temp_cib, "resource")
         assert returnVal == 0
         if PCMK_2_0_3_PLUS:
-            ac(output, """\
-  * F\t(ocf::heartbeat:Dummy):\t Stopped
-  * G\t(ocf::heartbeat:Dummy):\t Stopped
-  * H\t(ocf::heartbeat:Dummy):\t Stopped
+            assert_pcs_status(output, """\
+  * F\t(ocf::heartbeat:Dummy):\tStopped
+  * G\t(ocf::heartbeat:Dummy):\tStopped
+  * H\t(ocf::heartbeat:Dummy):\tStopped
   * Resource Group: RGA:
-    * A\t(ocf::heartbeat:Dummy):\t Stopped
-    * B\t(ocf::heartbeat:Dummy):\t Stopped
-    * C\t(ocf::heartbeat:Dummy):\t Stopped
-    * E\t(ocf::heartbeat:Dummy):\t Stopped
-    * D\t(ocf::heartbeat:Dummy):\t Stopped
-    * K\t(ocf::heartbeat:Dummy):\t Stopped
-    * J\t(ocf::heartbeat:Dummy):\t Stopped
-    * I\t(ocf::heartbeat:Dummy):\t Stopped
+    * A\t(ocf::heartbeat:Dummy):\tStopped
+    * B\t(ocf::heartbeat:Dummy):\tStopped
+    * C\t(ocf::heartbeat:Dummy):\tStopped
+    * E\t(ocf::heartbeat:Dummy):\tStopped
+    * D\t(ocf::heartbeat:Dummy):\tStopped
+    * K\t(ocf::heartbeat:Dummy):\tStopped
+    * J\t(ocf::heartbeat:Dummy):\tStopped
+    * I\t(ocf::heartbeat:Dummy):\tStopped
 """)
         else:
             ac(output, """\
@@ -2004,9 +2005,9 @@ monitor interval=20 (A-monitor-interval-20)
 
         o,r = pcs(temp_cib, "resource")
         if PCMK_2_0_3_PLUS:
-            ac(o,"""\
+            assert_pcs_status(o,"""\
   * Resource Group: AG:
-    * D1\t(ocf::heartbeat:Dummy):\t Stopped
+    * D1\t(ocf::heartbeat:Dummy):\tStopped
   * Clone Set: D0-clone [D0]:
 """)
         else:
@@ -2348,10 +2349,10 @@ monitor interval=20 (A-monitor-interval-20)
         o,r = pcs(temp_cib, "resource status")
         assert r == 0
         if PCMK_2_0_3_PLUS:
-            ac(o,"""\
+            assert_pcs_status(o,"""\
   * Resource Group: DGroup:
-    * D1\t(ocf::heartbeat:Dummy):\t Stopped
-    * D2\t(ocf::heartbeat:Dummy):\t Stopped
+    * D1\t(ocf::heartbeat:Dummy):\tStopped
+    * D2\t(ocf::heartbeat:Dummy):\tStopped
 """)
         else:
             ac(o,"""\
@@ -3560,12 +3561,12 @@ Error: role must be: Stopped, Started, Slave or Master (use --force to override)
         assert retVal == 0
         output, retVal = pcs(temp_cib, "resource status")
         if PCMK_2_0_3_PLUS:
-            ac(output, outdent(
+            assert_pcs_status(output, outdent(
                 """\
                   * Resource Group: dummies:
-                    * dummy1\t(ocf::heartbeat:Dummy):\t Stopped
-                    * dummy2\t(ocf::heartbeat:Dummy):\t Stopped
-                    * dummy3\t(ocf::heartbeat:Dummy):\t Stopped
+                    * dummy1\t(ocf::heartbeat:Dummy):\tStopped
+                    * dummy2\t(ocf::heartbeat:Dummy):\tStopped
+                    * dummy3\t(ocf::heartbeat:Dummy):\tStopped
                 """
             ))
         else:
@@ -3652,12 +3653,12 @@ Error: role must be: Stopped, Started, Slave or Master (use --force to override)
         assert retVal == 0
         output, retVal = pcs(temp_cib, "resource status")
         if PCMK_2_0_3_PLUS:
-            ac(output, outdent(
+            assert_pcs_status(output, outdent(
                 """\
                   * Resource Group: dummies:
-                    * dummy1\t(ocf::heartbeat:Dummy):\t Stopped
-                    * dummy2\t(ocf::heartbeat:Dummy):\t Stopped
-                    * dummy3\t(ocf::heartbeat:Dummy):\t Stopped
+                    * dummy1\t(ocf::heartbeat:Dummy):\tStopped
+                    * dummy2\t(ocf::heartbeat:Dummy):\tStopped
+                    * dummy3\t(ocf::heartbeat:Dummy):\tStopped
                 """
             ))
         else:
diff --git a/pcs_test/tier0/test_stonith.py b/pcs_test/tier0/test_stonith.py
index 46938e75..097a79b9 100644
--- a/pcs_test/tier0/test_stonith.py
+++ b/pcs_test/tier0/test_stonith.py
@@ -517,13 +517,13 @@ class StonithTest(TestCase, AssertPcsMixin):
         if PCMK_2_0_3_PLUS:
             self.assert_pcs_success("stonith", outdent(
                 """\
-                  * n1-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n2-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n1-apc1\t(stonith:fence_apc):\t Stopped
-                  * n1-apc2\t(stonith:fence_apc):\t Stopped
-                  * n2-apc1\t(stonith:fence_apc):\t Stopped
-                  * n2-apc2\t(stonith:fence_apc):\t Stopped
-                  * n2-apc3\t(stonith:fence_apc):\t Stopped
+                  * n1-ipmi\t(stonith:fence_apc):\tStopped
+                  * n2-ipmi\t(stonith:fence_apc):\tStopped
+                  * n1-apc1\t(stonith:fence_apc):\tStopped
+                  * n1-apc2\t(stonith:fence_apc):\tStopped
+                  * n2-apc1\t(stonith:fence_apc):\tStopped
+                  * n2-apc2\t(stonith:fence_apc):\tStopped
+                  * n2-apc3\t(stonith:fence_apc):\tStopped
                  Target: rh7-1
                    Level 1 - n1-ipmi
                    Level 2 - n1-apc1,n1-apc2,n2-apc2
@@ -531,7 +531,7 @@ class StonithTest(TestCase, AssertPcsMixin):
                    Level 1 - n2-ipmi
                    Level 2 - n2-apc1,n2-apc2,n2-apc3
                 """
-            ))
+            ), despace=True)
         else:
             self.assert_pcs_success("stonith", outdent(
                 """\
@@ -559,12 +559,12 @@ class StonithTest(TestCase, AssertPcsMixin):
         if PCMK_2_0_3_PLUS:
             self.assert_pcs_success("stonith", outdent(
                 """\
-                  * n1-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n2-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n1-apc1\t(stonith:fence_apc):\t Stopped
-                  * n1-apc2\t(stonith:fence_apc):\t Stopped
-                  * n2-apc1\t(stonith:fence_apc):\t Stopped
-                  * n2-apc3\t(stonith:fence_apc):\t Stopped
+                  * n1-ipmi\t(stonith:fence_apc):\tStopped
+                  * n2-ipmi\t(stonith:fence_apc):\tStopped
+                  * n1-apc1\t(stonith:fence_apc):\tStopped
+                  * n1-apc2\t(stonith:fence_apc):\tStopped
+                  * n2-apc1\t(stonith:fence_apc):\tStopped
+                  * n2-apc3\t(stonith:fence_apc):\tStopped
                  Target: rh7-1
                    Level 1 - n1-ipmi
                    Level 2 - n1-apc1,n1-apc2
@@ -572,7 +572,7 @@ class StonithTest(TestCase, AssertPcsMixin):
                    Level 1 - n2-ipmi
                    Level 2 - n2-apc1,n2-apc3
                 """
-            ))
+            ), despace=True)
         else:
             self.assert_pcs_success("stonith", outdent(
                 """\
@@ -599,11 +599,11 @@ class StonithTest(TestCase, AssertPcsMixin):
         if PCMK_2_0_3_PLUS:
             self.assert_pcs_success("stonith", outdent(
                 """\
-                  * n1-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n2-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n1-apc1\t(stonith:fence_apc):\t Stopped
-                  * n1-apc2\t(stonith:fence_apc):\t Stopped
-                  * n2-apc3\t(stonith:fence_apc):\t Stopped
+                  * n1-ipmi\t(stonith:fence_apc):\tStopped
+                  * n2-ipmi\t(stonith:fence_apc):\tStopped
+                  * n1-apc1\t(stonith:fence_apc):\tStopped
+                  * n1-apc2\t(stonith:fence_apc):\tStopped
+                  * n2-apc3\t(stonith:fence_apc):\tStopped
                  Target: rh7-1
                    Level 1 - n1-ipmi
                    Level 2 - n1-apc1,n1-apc2
@@ -611,7 +611,7 @@ class StonithTest(TestCase, AssertPcsMixin):
                    Level 1 - n2-ipmi
                    Level 2 - n2-apc3
                 """
-            ))
+            ), despace=True)
         else:
             self.assert_pcs_success("stonith", outdent(
                 """\
@@ -637,17 +637,17 @@ class StonithTest(TestCase, AssertPcsMixin):
         if PCMK_2_0_3_PLUS:
             self.assert_pcs_success("stonith", outdent(
                 """\
-                  * n1-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n2-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n1-apc1\t(stonith:fence_apc):\t Stopped
-                  * n1-apc2\t(stonith:fence_apc):\t Stopped
+                  * n1-ipmi\t(stonith:fence_apc):\tStopped
+                  * n2-ipmi\t(stonith:fence_apc):\tStopped
+                  * n1-apc1\t(stonith:fence_apc):\tStopped
+                  * n1-apc2\t(stonith:fence_apc):\tStopped
                  Target: rh7-1
                    Level 1 - n1-ipmi
                    Level 2 - n1-apc1,n1-apc2
                  Target: rh7-2
                    Level 1 - n2-ipmi
                 """
-            ))
+            ), despace=True)
         else:
             self.assert_pcs_success("stonith", outdent(
                 """\
@@ -671,16 +671,16 @@ class StonithTest(TestCase, AssertPcsMixin):
         if PCMK_2_0_3_PLUS:
             self.assert_pcs_success("stonith", outdent(
                 """\
-                  * n1-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n2-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n1-apc2\t(stonith:fence_apc):\t Stopped
+                  * n1-ipmi\t(stonith:fence_apc):\tStopped
+                  * n2-ipmi\t(stonith:fence_apc):\tStopped
+                  * n1-apc2\t(stonith:fence_apc):\tStopped
                  Target: rh7-1
                    Level 1 - n1-ipmi
                    Level 2 - n1-apc2
                  Target: rh7-2
                    Level 1 - n2-ipmi
                 """
-            ))
+            ), despace=True)
         else:
             self.assert_pcs_success("stonith", outdent(
                 """\
@@ -704,14 +704,14 @@ class StonithTest(TestCase, AssertPcsMixin):
         if PCMK_2_0_3_PLUS:
             self.assert_pcs_success("stonith", outdent(
                 """\
-                  * n1-ipmi\t(stonith:fence_apc):\t Stopped
-                  * n2-ipmi\t(stonith:fence_apc):\t Stopped
+                  * n1-ipmi\t(stonith:fence_apc):\tStopped
+                  * n2-ipmi\t(stonith:fence_apc):\tStopped
                  Target: rh7-1
                    Level 1 - n1-ipmi
                  Target: rh7-2
                    Level 1 - n2-ipmi
                 """
-            ))
+            ), despace=True)
         else:
             self.assert_pcs_success("stonith", outdent(
                 """\
@@ -1219,9 +1219,9 @@ class LevelConfig(LevelTestsBase):
         if PCMK_2_0_3_PLUS:
             result = outdent(
                 """\
-                  * F1\t(stonith:fence_apc):\t Stopped
-                  * F2\t(stonith:fence_apc):\t Stopped
-                  * F3\t(stonith:fence_apc):\t Stopped
+                  * F1\t(stonith:fence_apc):\tStopped
+                  * F2\t(stonith:fence_apc):\tStopped
+                  * F3\t(stonith:fence_apc):\tStopped
                 """
             )
         else:
@@ -1234,7 +1234,8 @@ class LevelConfig(LevelTestsBase):
             )
         self.assert_pcs_success(
             "stonith",
-            result + "\n".join(indent(self.config_lines, 1)) + "\n"
+            result + "\n".join(indent(self.config_lines, 1)) + "\n",
+            despace=True
         )
         self.pcs_runner.mock_settings["corosync_conf_file"] = rc(
             "corosync.conf"
diff --git a/pcs_test/tools/assertions.py b/pcs_test/tools/assertions.py
index db8f4df5..a2b7b4ac 100644
--- a/pcs_test/tools/assertions.py
+++ b/pcs_test/tools/assertions.py
@@ -59,7 +59,8 @@ class AssertPcsMixin:
                 )
 
     def assert_pcs_success(
-        self, command, stdout_full=None, stdout_start=None, stdout_regexp=None
+        self, command, stdout_full=None, stdout_start=None, stdout_regexp=None,
+        despace=False
     ):
         full = stdout_full
         if (
@@ -75,7 +76,8 @@ class AssertPcsMixin:
             stdout_full=full,
             stdout_start=stdout_start,
             stdout_regexp=stdout_regexp,
-            returncode=0
+            returncode=0,
+            despace=despace,
         )
 
     def assert_pcs_fail(
@@ -99,7 +101,7 @@ class AssertPcsMixin:
 
     def assert_pcs_result(
         self, command, stdout_full=None, stdout_start=None, stdout_regexp=None,
-        returncode=0
+        returncode=0, despace=False
     ):
         msg = (
             "Please specify exactly one: stdout_start or stdout_full or"
@@ -162,7 +164,11 @@ class AssertPcsMixin:
                 )
         else:
             expected_full = self.__prepare_output(stdout_full)
-            if stdout != expected_full:
+            if (
+                (despace and _despace(stdout) != _despace(expected_full))
+                or
+                (not despace and stdout != expected_full)
+            ):
                 self.assertEqual(
                     stdout,
                     expected_full,
@@ -386,3 +392,13 @@ def __report_item_equal(real_report_item, report_item_info):
             )
         )
     )
+
+def assert_pcs_status(status1, status2):
+    if _despace(status1) != _despace(status2):
+        raise AssertionError(
+            "strings not equal:\n{0}".format(prepare_diff(status1, status2))
+        )
+
+def _despace(string):
+    # ignore whitespace changes between various pacemaker versions
+    return re.sub(r"[ \t]+", " ", string)
-- 
2.20.1