mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 09:23:56 +00:00
9942ea9319
* Ensure rh_service not used on CloudLinux 7 Add CloudLinux to RHEL-derived distros excluded from rh_service use in osrelease >= 7 * Fix binary search and replace (#32542) * Don't return None from eval_master (#32555) Raise an exception instead. Because eval master if returns should return a tuple. * redact passwords and hashes from user.present updates Fixes #32381 * Better log message on minion restart if master couldn't be reached. (#32576) * Revert PR #32480 and apply #32314 with fixes / documentation (#32558) * Revert "Fix loop in maint.flo" This reverts commit 5196cd6a6e5db3c7b1a47b1740881bbd3e87ea3d. * Revert "Clear VCS fsbackend and git_pillar locks on master start" This reverts commit 7e3caa9bae1ac4de62db9924374e35a8b826937e. * Revert "Add functions to remove VCS fsbackend update locks and git_pillar update/checkout locks" This reverts commit 4c2db32419022501eae2a695ec488693e043d189. * prevent eternal gitfs lock due to process crash * Use salt.utils.fopen() instead of open() * Make pid locking work for more than just gitfs Also, make logging more descriptive, to aid in troubleshooting. * Add git_pillar_global_lock config option default value * Document proper usage of {gitfs,git_pillar}_global_lock * Fix comments value in salt.states.pkgrepo example (#32604) 'comments' option adds '#' automatically. Example contains `#http://mirror.centos.org/centos/$releasever/os/$basearch/` string which becomes prefixed with '##' in generated file. * alphabetize directories for dynamic modules (#32599) Also add engines and proxy minions to the list. * Expand on the open-source vs open-core FAQ * Language clarification. * Fix some mistakes in the salt-ssh thin shell script (#32583) * [[ is bash, not compatible with /bin/sh * check if python command exists before calling it * Deprecate 'user' and 'group' in state cmd (#32613) * Remove unused 'group' argument * Fix unit testing of cmd.mod_run_check without group arg * Deprecate 'user/group' in cmd.run * Deprecate 'user'/'group' in cmd.script * Deprecate 'user' in cmd.wait * Deprecate 'user'/'group' in cmd.wait_script * Fix mod_run_check without 'group' * Push deprecation back one release * Fix mac_service and mac_system modules (#32587) * Fix mac_service module * Add integration tests for new functions * Start will not enable the service beforehand * Remove unused variables
232 lines
6.8 KiB
Python
232 lines
6.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
integration tests for mac_service
|
|
'''
|
|
|
|
# Import python libs
|
|
from __future__ import absolute_import, print_function
|
|
|
|
# Import Salt Testing libs
|
|
from salttesting.helpers import ensure_in_syspath, destructiveTest
|
|
ensure_in_syspath('../../')
|
|
|
|
# Import salt libs
|
|
import integration
|
|
import salt.utils
|
|
|
|
|
|
class MacServiceModuleTest(integration.ModuleCase):
|
|
'''
|
|
Validate the mac_service module
|
|
'''
|
|
SERVICE_NAME = 'com.apple.apsd'
|
|
SERVICE_ENABLED = False
|
|
|
|
def setUp(self):
|
|
'''
|
|
Get current settings
|
|
'''
|
|
if not salt.utils.is_darwin():
|
|
self.skipTest('Test only available on Mac OS X')
|
|
|
|
if not salt.utils.which('launchctl'):
|
|
self.skipTest('Test requires launchctl binary')
|
|
|
|
if not salt.utils.which('plutil'):
|
|
self.skipTest('Test requires plutil binary')
|
|
|
|
if salt.utils.get_uid(salt.utils.get_user()) != 0:
|
|
self.skipTest('Test requires root')
|
|
|
|
self.SERVICE_ENABLED = self.run_function('service.enabled',
|
|
[self.SERVICE_NAME])
|
|
|
|
def tearDown(self):
|
|
'''
|
|
Reset to original settings
|
|
'''
|
|
if self.SERVICE_ENABLED:
|
|
self.run_function('service.start', [self.SERVICE_NAME])
|
|
else:
|
|
self.run_function('service.stop', [self.SERVICE_NAME])
|
|
|
|
def test_show(self):
|
|
'''
|
|
Test service.show
|
|
'''
|
|
# Existing Service
|
|
service_info = self.run_function('service.show', [self.SERVICE_NAME])
|
|
self.assertIsInstance(service_info, dict)
|
|
self.assertEqual(service_info['plist']['Label'], self.SERVICE_NAME)
|
|
|
|
# Missing Service
|
|
self.assertIn(
|
|
'Service not found',
|
|
self.run_function('service.show', ['spongebob']))
|
|
|
|
def test_launchctl(self):
|
|
'''
|
|
Test service.launchctl
|
|
'''
|
|
# Expected Functionality
|
|
self.assertTrue(
|
|
self.run_function('service.launchctl', ['error', 'bootstrap', 64]))
|
|
self.assertEqual(
|
|
self.run_function('service.launchctl',
|
|
['error', 'bootstrap', 64],
|
|
return_stdout=True),
|
|
'64: unknown error code')
|
|
|
|
# Raise an error
|
|
self.assertIn(
|
|
' Failed to error service',
|
|
self.run_function('service.launchctl', ['error']))
|
|
|
|
def test_list(self):
|
|
'''
|
|
Test service.list
|
|
'''
|
|
# Expected Functionality
|
|
self.assertIn('PID', self.run_function('service.list'))
|
|
self.assertIn(
|
|
'{',
|
|
self.run_function('service.list', ['com.apple.coreservicesd']))
|
|
|
|
# Service not found
|
|
self.assertIn(
|
|
'Service not found',
|
|
self.run_function('service.list', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_enable(self):
|
|
'''
|
|
Test service.enable
|
|
'''
|
|
self.assertTrue(
|
|
self.run_function('service.enable', [self.SERVICE_NAME]))
|
|
|
|
self.assertIn(
|
|
'Service not found',
|
|
self.run_function('service.enable', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_disable(self):
|
|
'''
|
|
Test service.disable
|
|
'''
|
|
self.assertTrue(
|
|
self.run_function('service.disable', [self.SERVICE_NAME]))
|
|
|
|
self.assertIn(
|
|
'Service not found',
|
|
self.run_function('service.disable', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_start(self):
|
|
'''
|
|
Test service.start
|
|
Test service.stop
|
|
Test service.status
|
|
'''
|
|
self.assertTrue(self.run_function('service.start', [self.SERVICE_NAME]))
|
|
|
|
self.assertIn(
|
|
'Service not found',
|
|
self.run_function('service.start', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_stop(self):
|
|
'''
|
|
Test service.stop
|
|
'''
|
|
self.assertTrue(self.run_function('service.stop', [self.SERVICE_NAME]))
|
|
|
|
self.assertIn(
|
|
'Service not found',
|
|
self.run_function('service.stop', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_status(self):
|
|
'''
|
|
Test service.status
|
|
'''
|
|
# A running service
|
|
self.assertTrue(self.run_function('service.start', [self.SERVICE_NAME]))
|
|
self.assertTrue(
|
|
self.run_function('service.status', [self.SERVICE_NAME]).isdigit())
|
|
|
|
# A stopped service
|
|
self.assertTrue(self.run_function('service.stop', [self.SERVICE_NAME]))
|
|
self.assertEqual(
|
|
'',
|
|
self.run_function('service.status', [self.SERVICE_NAME]))
|
|
|
|
# Service not found
|
|
self.assertEqual('', self.run_function('service.status', ['spongebob']))
|
|
|
|
def test_available(self):
|
|
'''
|
|
Test service.available
|
|
'''
|
|
self.assertTrue(
|
|
self.run_function('service.available', [self.SERVICE_NAME]))
|
|
self.assertFalse(self.run_function('service.available', ['spongebob']))
|
|
|
|
def test_missing(self):
|
|
'''
|
|
Test service.missing
|
|
'''
|
|
self.assertFalse(self.run_function('service.missing', [self.SERVICE_NAME]))
|
|
self.assertTrue(self.run_function('service.missing', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_enabled(self):
|
|
'''
|
|
Test service.enabled
|
|
'''
|
|
self.assertTrue(self.run_function('service.start', [self.SERVICE_NAME]))
|
|
self.assertTrue(
|
|
self.run_function('service.enabled', [self.SERVICE_NAME]))
|
|
|
|
self.assertTrue(self.run_function('service.stop', [self.SERVICE_NAME]))
|
|
self.assertFalse(
|
|
self.run_function('service.enabled', [self.SERVICE_NAME]))
|
|
|
|
self.assertFalse(self.run_function('service.enabled', ['spongebob']))
|
|
|
|
@destructiveTest
|
|
def test_disabled(self):
|
|
'''
|
|
Test service.disabled
|
|
'''
|
|
self.assertTrue(self.run_function('service.start', [self.SERVICE_NAME]))
|
|
self.assertFalse(
|
|
self.run_function('service.disabled', [self.SERVICE_NAME]))
|
|
|
|
self.assertTrue(self.run_function('service.stop', [self.SERVICE_NAME]))
|
|
self.assertTrue(
|
|
self.run_function('service.disabled', [self.SERVICE_NAME]))
|
|
|
|
self.assertTrue(self.run_function('service.disabled', ['spongebob']))
|
|
|
|
def test_get_all(self):
|
|
'''
|
|
Test service.get_all
|
|
'''
|
|
services = self.run_function('service.get_all')
|
|
self.assertIsInstance(services, list)
|
|
self.assertIn(self.SERVICE_NAME, services)
|
|
|
|
def test_get_enabled(self):
|
|
'''
|
|
Test service.get_enabled
|
|
'''
|
|
services = self.run_function('service.get_enabled')
|
|
self.assertIsInstance(services, list)
|
|
self.assertIn('com.apple.coreservicesd', services)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from integration import run_tests
|
|
run_tests(MacServiceModuleTest)
|