Skip to content

Commit

Permalink
add unit test for systemd circus+chaussette and timezone link
Browse files Browse the repository at this point in the history
  • Loading branch information
dotmobo committed Sep 6, 2016
1 parent d443234 commit 0ccfbb8
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 0 deletions.
46 changes: 46 additions & 0 deletions tests/test_require_circus.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,22 @@ def test_upstart(self, upload_template, is_systemd):
.find("template_dir='lib_path/templates'") > 0)
self.assertTrue(str(upload_template.call_args).find("user='root'") > 0)

@patch('fabric.api.sudo', return_value=Mock())
@patch('fabtools.files.is_dir', return_value=True)
@patch('fabtools.files.upload_template', return_value=Mock())
def test_upstart_systemd(self, upload_template, is_systemd, mock_reload_daemon):
upstart()

self.assertTrue(upload_template.called)
self.assertTrue(
str(upload_template.call_args).find("'circus.service.tpl'") > 0)
self.assertTrue(
str(upload_template.call_args).find("'/etc/systemd/system/circus.service'") > 0)
self.assertTrue(str(upload_template.call_args)
.find("template_dir='lib_path/templates'") > 0)
self.assertTrue(str(upload_template.call_args).find("user='root'") > 0)
self.assertTrue(mock_reload_daemon.called)

@patch('fabtools.files.is_dir', return_value=False)
@patch('fabric.api.settings', return_value=Mock())
@patch('fabric.api.sudo', return_value='running')
Expand Down Expand Up @@ -156,3 +172,33 @@ def test_app_reload(self, api_sudo, api_settings, is_systemd):
self.assertTrue(api_sudo.called)
self.assertEqual(api_sudo.call_args, call('start circus'))
self.assertFalse(api_settings.called)

@patch('fabtools.files.is_dir', return_value=True)
@patch('fabric.api.settings', return_value=Mock())
@patch('fabric.api.sudo', return_value='active')
def test_app_reload_systemd(self, api_sudo, api_settings, is_systemd):

api_settings.return_value.__exit__ = Mock()
api_settings.return_value.__enter__ = Mock()

# test if running
app_reload()

self.assertTrue(api_sudo.called)
self.assertEqual(api_sudo.call_args_list, [call('systemctl is-active circus.service'), call(
'circusctl reloadconfig'), call('circusctl restart application_name')])

self.assertTrue(api_settings.called)
self.assertEqual(
api_settings.call_args, call(sudo_user='remote_owner'))

# test if not running
api_sudo.return_value = 'inactive'
api_sudo.called = False
api_settings.called = False

app_reload()

self.assertTrue(api_sudo.called)
self.assertEqual(api_sudo.call_args, call('systemctl start circus.service'))
self.assertFalse(api_settings.called)
97 changes: 97 additions & 0 deletions tests/test_require_nginx.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,38 @@ def test_nginx_start(self, service_start, is_running, is_systemd):
nginx_start()
self.assertTrue(service_start.called)

@patch('fabtools.files.is_dir', return_value=True)
@patch('fabric.api.sudo', return_value="inactive")
@patch('fabtools.systemd.start', return_value=Mock())
def test_nginx_start_systemd(self, service_start, is_active, is_systemd):
# is_running False + Force start to false
env.nginx_force_start = False
nginx_start()
self.assertFalse(service_start.called)
# is_running False + No force start option
del env['nginx_force_start']
nginx_start()
self.assertFalse(service_start.called)
# is_running False + Force start to True
env.nginx_force_start = True
nginx_start()
self.assertTrue(service_start.called)

is_active.return_value = "active"

# is_running True + Force start to false
env.nginx_force_start = False
nginx_start()
self.assertTrue(service_start.called)
# is_running True + No force start option
del env['nginx_force_start']
nginx_start()
self.assertTrue(service_start.called)
# is_running True + Force start to True
env.nginx_force_start = True
nginx_start()
self.assertTrue(service_start.called)

@patch('fabtools.files.is_dir', return_value=False)
@patch('fabtools.service.is_running', return_value=True)
@patch('fabtools.service.start', return_value=Mock())
Expand Down Expand Up @@ -106,6 +138,33 @@ def test_nginx_reload(self, reload, start, is_running, is_systemd):
self.assertTrue(start.called)
self.assertEqual(start.call_args, call('nginx'))

@patch('fabtools.files.is_dir', return_value=True)
@patch('fabric.api.sudo', return_value="active")
@patch('fabtools.systemd.start', return_value=Mock())
@patch('fabtools.systemd.reload', return_value=Mock())
def test_nginx_reload_systemd(self, reload, start, is_active, is_systemd):
# Nginx run
nginx_reload()
self.assertTrue(reload.called)
self.assertEqual(reload.call_args, call('nginx'))
self.assertTrue(is_active.called)
self.assertFalse(start.called)
# Nginx stopped
is_active.return_value = "inactive"
reload.called = False
is_active.called = False
start.called = False
nginx_reload()
self.assertTrue(is_active.called)
self.assertFalse(reload.called)
self.assertFalse(start.called)
# Force reload
env.nginx_force_start = True
nginx_reload()
self.assertTrue(is_active.called)
self.assertFalse(reload.called)
self.assertTrue(start.called)
self.assertEqual(start.call_args, call('nginx'))

@patch('fabtools.files.is_dir', return_value=False)
@patch('fabtools.service.is_running', return_value=True)
Expand Down Expand Up @@ -134,6 +193,33 @@ def test_nginx_restart(self, restart, start, is_running, is_systemd):
self.assertTrue(start.called)
self.assertEqual(start.call_args, call('nginx'))

@patch('fabtools.files.is_dir', return_value=True)
@patch('fabric.api.sudo', return_value="active")
@patch('fabtools.systemd.start', return_value=Mock())
@patch('fabtools.systemd.restart', return_value=Mock())
def test_nginx_restart_systemd(self, restart, start, is_active, is_systemd):
# Nginx run
nginx_restart()
self.assertTrue(is_active.called)
self.assertFalse(start.called)
self.assertTrue(restart.called)
# Nginx stopped
is_active.return_value = "inactive"
restart.called = False
is_active.called = False
start.called = False
nginx_restart()
self.assertFalse(restart.called)
self.assertTrue(is_active.called)
self.assertFalse(start.called)
# Force reload
env.nginx_force_start = True
nginx_restart()
self.assertFalse(restart.called)
self.assertTrue(is_active.called)
self.assertTrue(start.called)
self.assertEqual(start.call_args, call('nginx'))

@patch('fabtools.files.is_dir', return_value=False)
@patch('fabtools.service.is_running', return_value=True)
def test_nginx_started(self, is_running, is_systemd):
Expand All @@ -145,6 +231,17 @@ def test_nginx_started(self, is_running, is_systemd):
self.assertTrue(is_running.called)
self.assertEqual(res, False)

@patch('fabtools.files.is_dir', return_value=True)
@patch('fabric.api.sudo', return_value="active")
def test_nginx_started_systemd(self, is_active, is_systemd):
res = nginx_started()
self.assertTrue(is_active.called)
self.assertEqual(res, True)
is_active.return_value = "inactive"
res = nginx_started()
self.assertTrue(is_active.called)
self.assertEqual(res, False)

@patch('fabric.contrib.project.rsync_project', return_value=Mock())
def test_web_static_files(self, rsync_project):
web_static_files()
Expand Down
18 changes: 18 additions & 0 deletions tests/test_require_system.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,24 @@ def test_set_timezone(self, api_sudo, distrib_id, is_link):
self.assertEqual(api_sudo.call_args, call(
'cp -f /usr/share/zoneinfo/mytimezone /etc/localtime'))

@patch('fabtools.files.is_link', return_value=True)
@patch('fabtools.system.distrib_id', return_value='Notsupported')
@patch('fabric.api.sudo', return_value=Mock())
def test_set_timezone_link(self, api_sudo, distrib_id, is_link):
set_timezone()
# test error
self.assertTrue(distrib_id.called)
self.assertFalse(api_sudo.called)

# test if it works
distrib_id.return_value = 'Ubuntu'
set_timezone()
self.assertTrue(distrib_id.called)
self.assertTrue(api_sudo.called)

self.assertEqual(api_sudo.call_args, call(
'ln -sf /usr/share/zoneinfo/mytimezone /etc/localtime'))

@patch('fabric.api.sudo', return_value=Mock())
def test_permissions(self, api_sudo):
permissions()
Expand Down

0 comments on commit 0ccfbb8

Please sign in to comment.