summaryrefslogtreecommitdiff
path: root/heat_cfntools/tests/test_cfn_helper.py
diff options
context:
space:
mode:
Diffstat (limited to 'heat_cfntools/tests/test_cfn_helper.py')
-rw-r--r--heat_cfntools/tests/test_cfn_helper.py211
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"}
}
}