← Back to team overview

nagios-charmers team mailing list archive

[Merge] ~aieri/hw-health-charm:oo-rewrite-functest-removal into hw-health-charm:oo-rewrite-integration

 

Andrea Ieri has proposed merging ~aieri/hw-health-charm:oo-rewrite-functest-removal into hw-health-charm:oo-rewrite-integration with ~aieri/hw-health-charm:oo-rewrite-cleanup2 as a prerequisite.

Requested reviews:
  Canonical IS Reviewers (canonical-is-reviewers)

For more details, see:
https://code.launchpad.net/~aieri/hw-health-charm/+git/hw-health-charm/+merge/364761

Part 7 of the superseded MR#364694
-- 
Your team Nagios Charm developers is subscribed to branch hw-health-charm:oo-rewrite-integration.
diff --git a/src/tests/functional/test_hwhealth.py b/src/tests/functional/test_hwhealth.py
index bf905c1..dc31368 100644
--- a/src/tests/functional/test_hwhealth.py
+++ b/src/tests/functional/test_hwhealth.py
@@ -181,3 +181,58 @@ async def test_stats(tools, deployed_unit, file_stat):
             assert test_stat['gid'] == tool.TOOLS_GID
             assert test_stat['uid'] == tool.TOOLS_UID
             assert test_stat['mode'] == oct(tool.TOOLS_MODE)
+
+
+async def test_removal(tools, model, deploy_app, file_stat):
+    '''Remove the unit, test that all files have been cleaned up'''
+    hw_health_app_name = deploy_app.name
+    await deploy_app.remove()
+    await model.block_until(
+        lambda: hw_health_app_name not in model.applications
+    )
+    # Since we've removed the hw-health app, we can't target it anymore, we
+    # need to find the principal unit
+    for unit in model.units.values():
+        if unit.entity_id.startswith('ubuntu'):
+            ubuntu_unit = unit
+    for tool in tools:
+        # Have we removed the nrpe check cfg?
+        nrpecfg_path = os.path.join(nrpecfg_dir,
+                                    'check_{}.cfg'.format(tool._shortname))
+        print('Checking {}'.format(nrpecfg_path))
+        with pytest.raises(RuntimeError):
+            await file_stat(nrpecfg_path, ubuntu_unit)
+
+        # Have we removed the nrpe check script?
+        nrpescript_path = os.path.join(tool.NRPE_PLUGINS_DIR,
+                                       tool._nrpe_script)
+        print('Checking {}'.format(nrpescript_path))
+        with pytest.raises(RuntimeError):
+            await file_stat(nrpescript_path, ubuntu_unit)
+        if isinstance(tool, classes.IpmiTool):
+            # Have we removed sudo rights for running freeipmi commands?
+            sudoer_path = os.path.join(tool.SUDOERS_DIR, tool._sudoer_file)
+            print('Checking {}'.format(sudoer_path))
+            with pytest.raises(RuntimeError):
+                await file_stat(sudoer_path, ubuntu_unit)
+        elif isinstance(tool, classes.VendorTool):
+            # Have we removed the cronjob script helper?
+            cronjob_path = os.path.join(tool.NRPE_PLUGINS_DIR,
+                                        tool._cronjob_script)
+            print('Checking {}'.format(cronjob_path))
+            with pytest.raises(RuntimeError):
+                await file_stat(cronjob_path, ubuntu_unit)
+
+            # Have we removed the cronjob itself?
+            cronjob_path = os.path.join(tool.CROND_DIR, tool._shortname)
+            print('Checking {}'.format(cronjob_path))
+            with pytest.raises(RuntimeError):
+                await file_stat(cronjob_path, ubuntu_unit)
+
+            if not isinstance(tool, classes.MdadmTool):
+                # /sbin/mdadm will not be removed, but the vendor binaries
+                # should have been
+                bin_path = os.path.join(tool.TOOLS_DIR, tool._shortname)
+                print('Checking {}'.format(bin_path))
+                with pytest.raises(RuntimeError):
+                    await file_stat(bin_path, ubuntu_unit)

Follow ups