diff options
Diffstat (limited to 'heat_cfntools/tests/test_cfn_helper.py')
-rw-r--r-- | heat_cfntools/tests/test_cfn_helper.py | 211 |
1 files changed, 186 insertions, 25 deletions
diff --git a/heat_cfntools/tests/test_cfn_helper.py b/heat_cfntools/tests/test_cfn_helper.py index 9a0d8e1..cc422f1 100644 --- a/heat_cfntools/tests/test_cfn_helper.py +++ b/heat_cfntools/tests/test_cfn_helper.py @@ -129,6 +129,8 @@ class TestPackages(MockPopenTestCase): class TestServicesHandler(MockPopenTestCase): def test_services_handler_systemd(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(True) # apply_services self.mock_cmd_run( ['su', 'root', '-c', '/bin/systemctl enable httpd.service'] @@ -205,6 +207,8 @@ class TestServicesHandler(MockPopenTestCase): self.m.VerifyAll() def test_services_handler_systemd_disabled(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(True) # apply_services self.mock_cmd_run( ['su', 'root', '-c', '/bin/systemctl disable httpd.service'] @@ -246,7 +250,11 @@ class TestServicesHandler(MockPopenTestCase): self.m.VerifyAll() - def test_services_handler_sysv(self): + def test_services_handler_sysv_service_chkconfig(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(False) + os.path.exists('/sbin/service').MultipleTimes().AndReturn(True) + os.path.exists('/sbin/chkconfig').MultipleTimes().AndReturn(True) # apply_services self.mock_cmd_run( ['su', 'root', '-c', '/sbin/chkconfig httpd on'] @@ -257,50 +265,118 @@ class TestServicesHandler(MockPopenTestCase): self.mock_cmd_run( ['su', 'root', '-c', '/sbin/service httpd start'] ).AndReturn(FakePOpen()) + + # monitor_services not running + self.mock_cmd_run( + ['su', 'root', '-c', '/sbin/service httpd status'] + ).AndReturn(FakePOpen(returncode=-1)) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/chkconfig mysqld on'] + ['su', 'root', '-c', '/sbin/service httpd start'] ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld status'] - ).AndReturn(FakePOpen(returncode=-1)) + ['su', 'root', '-c', '/bin/services_restarted'] + ).AndReturn(FakePOpen()) + + # monitor_services running self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld start'] + ['su', 'root', '-c', '/sbin/service httpd status'] ).AndReturn(FakePOpen()) - # monitor_services not running + self.m.ReplayAll() + + services = { + "sysvinit": { + "httpd": {"enabled": "true", "ensureRunning": "true"} + } + } + hooks = [ + cfn_helper.Hook( + 'hook1', + 'service.restarted', + 'Resources.resource1.Metadata', + 'root', + '/bin/services_restarted') + ] + sh = cfn_helper.ServicesHandler(services, 'resource1', hooks) + sh.apply_services() + # services not running + sh.monitor_services() + + # services running + sh.monitor_services() + + self.m.VerifyAll() + + def test_services_handler_sysv_disabled_service_chkconfig(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(False) + os.path.exists('/sbin/service').MultipleTimes().AndReturn(True) + os.path.exists('/sbin/chkconfig').MultipleTimes().AndReturn(True) + # apply_services + self.mock_cmd_run( + ['su', 'root', '-c', '/sbin/chkconfig httpd off'] + ).AndReturn(FakePOpen()) self.mock_cmd_run( ['su', 'root', '-c', '/sbin/service httpd status'] - ).AndReturn(FakePOpen(returncode=-1)) + ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service httpd start'] + ['su', 'root', '-c', '/sbin/service httpd stop'] ).AndReturn(FakePOpen()) + + self.m.ReplayAll() + + services = { + "sysvinit": { + "httpd": {"enabled": "false", "ensureRunning": "false"} + } + } + hooks = [ + cfn_helper.Hook( + 'hook1', + 'service.restarted', + 'Resources.resource1.Metadata', + 'root', + '/bin/services_restarted') + ] + sh = cfn_helper.ServicesHandler(services, 'resource1', hooks) + sh.apply_services() + + self.m.VerifyAll() + + def test_services_handler_sysv_systemctl(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(True) + # apply_services self.mock_cmd_run( - ['su', 'root', '-c', '/bin/services_restarted'] + ['su', 'root', '-c', '/bin/systemctl enable httpd.service'] ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld status'] + ['su', 'root', '-c', '/bin/systemctl status httpd.service'] ).AndReturn(FakePOpen(returncode=-1)) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld start'] + ['su', 'root', '-c', '/bin/systemctl start httpd.service'] ).AndReturn(FakePOpen()) + + # monitor_services not running self.mock_cmd_run( - ['su', 'root', '-c', '/bin/services_restarted'] + ['su', 'root', '-c', '/bin/systemctl status httpd.service'] + ).AndReturn(FakePOpen(returncode=-1)) + self.mock_cmd_run( + ['su', 'root', '-c', '/bin/systemctl start httpd.service'] ).AndReturn(FakePOpen()) - - # monitor_services running self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service httpd status'] + ['su', 'root', '-c', '/bin/services_restarted'] ).AndReturn(FakePOpen()) + # monitor_services running self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld status'] + ['su', 'root', '-c', '/bin/systemctl status httpd.service'] ).AndReturn(FakePOpen()) self.m.ReplayAll() services = { "sysvinit": { - "mysqld": {"enabled": "true", "ensureRunning": "true"}, "httpd": {"enabled": "true", "ensureRunning": "true"} } } @@ -322,32 +398,117 @@ class TestServicesHandler(MockPopenTestCase): self.m.VerifyAll() - def test_services_handler_sysv_disabled(self): + def test_services_handler_sysv_disabled_systemctl(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(True) # apply_services self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/chkconfig httpd off'] + ['su', 'root', '-c', '/bin/systemctl disable httpd.service'] ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service httpd status'] + ['su', 'root', '-c', '/bin/systemctl status httpd.service'] ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service httpd stop'] + ['su', 'root', '-c', '/bin/systemctl stop httpd.service'] + ).AndReturn(FakePOpen()) + + self.m.ReplayAll() + + services = { + "sysvinit": { + "httpd": {"enabled": "false", "ensureRunning": "false"} + } + } + hooks = [ + cfn_helper.Hook( + 'hook1', + 'service.restarted', + 'Resources.resource1.Metadata', + 'root', + '/bin/services_restarted') + ] + sh = cfn_helper.ServicesHandler(services, 'resource1', hooks) + sh.apply_services() + + self.m.VerifyAll() + + def test_services_handler_sysv_service_updaterc(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(False) + os.path.exists('/sbin/service').MultipleTimes().AndReturn(False) + os.path.exists('/sbin/chkconfig').MultipleTimes().AndReturn(False) + # apply_services + self.mock_cmd_run( + ['su', 'root', '-c', '/usr/sbin/update-rc.d httpd enable'] + ).AndReturn(FakePOpen()) + self.mock_cmd_run( + ['su', 'root', '-c', '/usr/sbin/service httpd status'] + ).AndReturn(FakePOpen(returncode=-1)) + self.mock_cmd_run( + ['su', 'root', '-c', '/usr/sbin/service httpd start'] + ).AndReturn(FakePOpen()) + + # monitor_services not running + self.mock_cmd_run( + ['su', 'root', '-c', '/usr/sbin/service httpd status'] + ).AndReturn(FakePOpen(returncode=-1)) + self.mock_cmd_run( + ['su', 'root', '-c', '/usr/sbin/service httpd start'] + ).AndReturn(FakePOpen()) + self.mock_cmd_run( + ['su', 'root', '-c', '/bin/services_restarted'] + ).AndReturn(FakePOpen()) + + # monitor_services running + self.mock_cmd_run( + ['su', 'root', '-c', '/usr/sbin/service httpd status'] ).AndReturn(FakePOpen()) + + self.m.ReplayAll() + + services = { + "sysvinit": { + "httpd": {"enabled": "true", "ensureRunning": "true"} + } + } + hooks = [ + cfn_helper.Hook( + 'hook1', + 'service.restarted', + 'Resources.resource1.Metadata', + 'root', + '/bin/services_restarted') + ] + sh = cfn_helper.ServicesHandler(services, 'resource1', hooks) + sh.apply_services() + # services not running + sh.monitor_services() + + # services running + sh.monitor_services() + + self.m.VerifyAll() + + def test_services_handler_sysv_disabled_service_updaterc(self): + self.m.StubOutWithMock(os.path, 'exists') + os.path.exists('/bin/systemctl').MultipleTimes().AndReturn(False) + os.path.exists('/sbin/service').MultipleTimes().AndReturn(False) + os.path.exists('/sbin/chkconfig').MultipleTimes().AndReturn(False) + # apply_services self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/chkconfig mysqld off'] + ['su', 'root', '-c', '/usr/sbin/update-rc.d httpd disable'] ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld status'] + ['su', 'root', '-c', '/usr/sbin/service httpd status'] ).AndReturn(FakePOpen()) self.mock_cmd_run( - ['su', 'root', '-c', '/sbin/service mysqld stop'] + ['su', 'root', '-c', '/usr/sbin/service httpd stop'] ).AndReturn(FakePOpen()) self.m.ReplayAll() services = { "sysvinit": { - "mysqld": {"enabled": "false", "ensureRunning": "false"}, "httpd": {"enabled": "false", "ensureRunning": "false"} } } |