def test_action_install_existent_suse(self, shell_mock): sys.modules['rpm'] = MagicMock() sys.modules['rpm'].TransactionSet.return_value = MagicMock() sys.modules['rpm'].TransactionSet.return_value.dbMatch.return_value = [{'name':'some_package'}] with Environment('/') as env: Package("some_package", ) self.assertFalse(shell_mock.mock_calls)
def test_action_delete(self, exists_mock, unlink_mock): exists_mock.return_value = True with Environment('/') as env: Link("/some_path", action = "delete" ) unlink_mock.assert_called_with("/some_path")
def test_action_create_symlink_clean_create(self, symlink_mock, lexists_mock): lexists_mock.return_value = False with Environment('/') as env: Link("/some_path", to="/a/b/link_to_path") symlink_mock.assert_called_with("/a/b/link_to_path", "/some_path")
def test_action_remove_rhel(self, shell_mock): with Environment('/') as env: Package("some_package", action="remove") shell_mock.assert_called_with([ '/usr/bin/yum', '-d', '0', '-e', '0', '-y', 'erase', 'some_package' ], logoutput=False, sudo=True)
def test_ensure_metadata(self, stat_mock, chmod_mock, chown_mock, getgrnam_mock, getpwnam_mock): """ Tests if _ensure_metadata changes owner, usergroup and permissions of file to proper values """ from resource_management.core.providers.system import _ensure_metadata class stat(): def __init__(self): self.st_mode = 0666 self.st_uid = 1 self.st_gid = 1 stat_mock.return_value = stat() getpwnam_mock.return_value = MagicMock() getpwnam_mock.return_value.pw_uid = 0 getgrnam_mock.return_value = MagicMock() getgrnam_mock.return_value.gr_gid = 0 with Environment('/') as env: _ensure_metadata('/directory/file', user='******', group='hdfs', mode=0777) stat_mock.assert_called_with('/directory/file') self.assertEqual(chmod_mock.call_count, 1) self.assertEqual(chown_mock.call_count, 1) getgrnam_mock.assert_called_once_with('hdfs') getpwnam_mock.assert_called_with('root') chmod_mock.reset_mock() chown_mock.reset_mock() getpwnam_mock.return_value = MagicMock() getpwnam_mock.return_value.pw_uid = 1 getgrnam_mock.return_value = MagicMock() getgrnam_mock.return_value.gr_gid = 1 with Environment('/') as env: _ensure_metadata('/directory/file', user='******', group='hdfs', mode=0777) self.assertEqual(chmod_mock.call_count, 1) chown_mock.assert_called_with('/directory/file', None, None)
def test_action_install_version_attr(self, shell_mock): shell_mock.return_value = (0,'') with Environment('/') as env: Package("some_package", version = "3.5.0", logoutput = False ) shell_mock.assert_called_with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', 'install', 'some_package-3.5.0'], logoutput=False, sudo=True)
def test_action_install_pattern_suse(self, shell_mock, call_mock): call_mock.side_effect=[(0, None), (0, "Loading repository data...\nReading installed packages...\n\nS | Name\n--+-----\n | Pack")] with Environment('/') as env: Package("some_package*", ) call_mock.assert_has_calls([call("installed_pkgs=`rpm -qa 'some_package*'` ; [ ! -z \"$installed_pkgs\" ]"), call("zypper --non-interactive search --type package --uninstalled-only --match-exact 'some_package*'")]) shell_mock.assert_called_with(['/usr/bin/zypper', '--quiet', 'install', '--auto-agree-with-licenses', '--no-confirm', 'some_package*'], logoutput=False, sudo=True)
def test_action_install_suse(self, shell_mock): sys.modules['rpm'] = MagicMock() sys.modules['rpm'].TransactionSet.return_value = MagicMock() sys.modules['rpm'].TransactionSet.return_value.dbMatch.return_value = [{'name':'some_packages'}] with Environment('/') as env: Package("some_package", ) shell_mock.assert_called_with(['/usr/bin/zypper', '--quiet', 'install', '--auto-agree-with-licenses', '--no-confirm', 'some_package'], logoutput=False, sudo=True)
def test_action_install_use_repos_rhel(self, shell_mock): with Environment('/') as env: Package("some_package", use_repos=['HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'] ) self.assertEquals(shell_mock.call_args[0][0], ['/usr/bin/yum', '-d', '0', '-e', '0', '-y', 'install', '--disablerepo=', '--enablerepo=HDP-UTILS-2.2.0.1-885,HDP-2.2.0.1-885', 'some_package'])
def test_action_install_pattern_rhel(self, shell_mock): sys.modules['rpm'] = MagicMock() sys.modules['rpm'].TransactionSet.return_value = MagicMock() sys.modules['rpm'].TransactionSet.return_value.dbMatch.return_value = [{'name':'some_packag'}] with Environment('/') as env: Package("some_package*", ) shell_mock.assert_called_with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', 'install', 'some_package*'], logoutput=False, sudo=True)
def test_action_install_suse(self, shell_mock, call_mock): call_mock.return_value = (1, None) with Environment('/') as env: Package("some_package", ) call_mock.assert_called_with('rpm -q --quiet some_package') shell_mock.assert_called_with( "/usr/bin/zypper --quiet install --auto-agree-with-licenses --no-confirm some_package" )
def test_action_install_debian(self, shell_mock, call_mock): call_mock.return_value = (1, None) with Environment('/') as env: Package("some_package", ) call_mock.assert_called_with( 'dpkg --get-selections some_package | grep -v deinstall') shell_mock.assert_called_with( "/usr/bin/apt-get --assume-yes install some_package")
def test_action_install_pattern_suse(self, shell_mock): sys.modules['rpm'] = MagicMock() sys.modules['rpm'].TransactionSet.return_value = MagicMock() sys.modules['rpm'].TransactionSet.return_value.dbMatch.return_value = [{'name':'some_packagetest'}] with Environment('/') as env: Package("some_package*", ) self.assertEqual(shell_mock.call_count, 0, "shell.checked_call shouldn't be called")
def test_action_remove_nodeps_suse(self, shell_mock): shell_mock.return_value = (0, '') with Environment('/') as env: Package("some_package", action = "remove", logoutput = False, ignore_dependencies = True ) shell_mock.assert_called_with(['rpm', '-e', '--nodeps', 'some_package'], logoutput=False, sudo=True)
def test_delete_directory(self, isdir_mock, os_path_exists_mock, rmtree_mock): os_path_exists_mock.return_value = True isdir_mock.return_value = True with Environment('/') as env: Directory('/a/b/c/d', action='delete') rmtree_mock.assert_called_with('/a/b/c/d')
def test_action_install_pattern_installed_rhel(self, shell_mock): sys.modules['yum'] = MagicMock() sys.modules['yum'].YumBase.return_value = MagicMock() sys.modules['yum'].YumBase.return_value.rpmdb = MagicMock() sys.modules['yum'].YumBase.return_value.rpmdb.simplePkgList.return_value = [('some_package_1_2_3',)] with Environment('/') as env: Package("some_package*", ) self.assertEqual(shell_mock.call_count, 0, "shell.checked_call shouldn't be called")
def test_action_remove_suse(self, shell_mock): with Environment('/') as env: Package("some_package", action="remove") shell_mock.assert_called_with([ '/usr/bin/zypper', '--quiet', 'remove', '--no-confirm', 'some_package' ], logoutput=False, sudo=True)
def test_action_remove_nodeps_ubuntu(self, shell_mock): shell_mock.return_value = (0, '') with Environment('/') as env: Package("some-package", action = "remove", logoutput = False, ignore_dependencies = True ) shell_mock.assert_called_with(['/usr/bin/dpkg', '--remove', '--ignore-depends', 'some-package', 'some-package'], logoutput=False, sudo=True)
def test_action_install_debian(self, shell_mock, call_mock): call_mock.return_value = (1, None) with Environment('/') as env: Package("some_package", ) call_mock.assert_called_with( 'dpkg --get-selections some_package | grep -v deinstall') shell_mock.assert_called_with( "env DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get -q -o Dpkg::Options::='--force-confdef' --force-yes --assume-yes install some_package" )
def test_inline_template(self): """ Testing InlineTemplate """ with Environment("/base") as env: template = InlineTemplate("{{test_arg1}} template content", [], test_arg1 = "test") content = template.get_content() self.assertEqual(u'test template content', content)
def test_action_create_nonexistent(self, getpwnam_mock, popen_mock): subproc_mock = MagicMock() subproc_mock.returncode = 0 popen_mock.return_value = subproc_mock getpwnam_mock.return_value = None with Environment('/') as env: user = User("mapred", action = "create", shell = "/bin/bash") popen_mock.assert_called_with(['/bin/bash', '--login', '-c', 'useradd -m -s /bin/bash mapred'], shell=False, preexec_fn=None, stderr=-2, stdout=-1, env=None, cwd=None) self.assertEqual(popen_mock.call_count, 1)
def test_action_install_ubuntu(self, shell_mock, call_mock): call_mock.side_effect = [(1, ''), (0, '')] shell_mock.return_value = (0, '') with Environment('/') as env: Package("some_package", logoutput = False ) call_mock.assert_has_calls([call("dpkg --get-selections | grep -v deinstall | awk '{print $1}' | grep ^some-package$")]) shell_mock.assert_has_call([call(['/usr/bin/apt-get', '-q', '-o', 'Dpkg::Options::=--force-confdef', '--allow-unauthenticated', '--assume-yes', 'install', 'some-package'], logoutput=False, sudo=True, env={'DEBIAN_FRONTEND': 'noninteractive'})])
def test_action_install_ubuntu(self, shell_mock, call_mock): call_mock.side_effect = [(1, None), (0, None)] with Environment('/') as env: Package("some_package", ) call_mock.assert_has_calls([call("dpkg --get-selections | grep -v deinstall | awk '{print $1}' | grep ^some-package$"), call(['/usr/bin/apt-get', '-q', '-o', 'Dpkg::Options::=--force-confdef', '--allow-unauthenticated', '--assume-yes', 'install', 'some-package'], logoutput=False, sudo=True, env={'DEBIAN_FRONTEND': 'noninteractive'})]) self.assertEqual(shell_mock.call_count, 0, "shell.checked_call shouldn't be called")
def test_action_install_use_repos_rhel(self, shell_mock): shell_mock.return_value = (0,'') with Environment('/') as env: Package("some_package", use_repos={'HDP-UTILS-2.2.0.1-885': 'ambari-hdp-1', 'HDP-2.2.0.1-885': 'ambari-hdp-1'}, logoutput = False ) self.assertEquals(shell_mock.call_args[0][0], ['/usr/bin/yum', '-d', '0', '-e', '0', '-y', 'install', '--disablerepo=*', '--enablerepo=HDP-2.2.0.1-885,HDP-UTILS-2.2.0.1-885', 'some_package'])
def test_action_create_hardlink_clean_create(self, link_mock, lexists_mock, exists_mock, isdir_mock): lexists_mock.return_value = False exists_mock.return_value = True isdir_mock.return_value = False with Environment('/') as env: Link("/some_path", hard=True, to="/a/b/link_to_path") link_mock.assert_called_with("/a/b/link_to_path", "/some_path")
def test_action_create_relink(self, symlink_mock, unlink_mock, islink_mock, lexists_mock, realmock): lexists_mock.return_value = True realmock.return_value = "/old_to_link_path" islink_mock.return_value = True with Environment('/') as env: Link("/some_path", to="/a/b/link_to_path") unlink_mock.assert_called_with("/some_path") symlink_mock.assert_called_with("/a/b/link_to_path", "/some_path")
def test_action_remove_suse(self, shell_mock): shell_mock.return_value = (0, '') sys.modules['rpm'] = MagicMock() sys.modules['rpm'].TransactionSet.return_value = MagicMock() sys.modules['rpm'].TransactionSet.return_value.dbMatch.return_value = [{'name':'some_package'}] with Environment('/') as env: Package("some_package", action = "remove", logoutput = False ) shell_mock.assert_called_with(['/usr/bin/zypper', '--quiet', 'remove', '--no-confirm', 'some_package'], logoutput=False, sudo=True)
def test_action_install_rhel(self, shell_mock, call_mock): call_mock.return_value = (1, None) with Environment('/') as env: #Package("some_package", #) #yuan Package("mongo-10gen-server", ) #end yuan call_mock.assert_called_with('rpm -q --quiet mongo-10gen-server') shell_mock.assert_called_with( "/usr/bin/yum -d 0 -e 0 -y install mongo-10gen-server")
def test_action_install_regex_ubuntu(self, shell_mock, call_mock): call_mock.side_effect = [(0, None)] with Environment('/') as env: Package("some_package.*", ) call_mock.assert_has_calls([ call( "dpkg --get-selections | grep -v deinstall | awk '{print $1}' | grep ^some-package.*$" ) ]) self.assertEqual(shell_mock.call_count, 0, "shell.checked_call shouldn't be called")
def test_action_create_nonexistent(self, getpwnam_mock, popen_mock): subproc_mock = MagicMock() subproc_mock.returncode = 0 subproc_mock.stdout.readline = MagicMock(side_effect = ['OK']) popen_mock.return_value = subproc_mock getpwnam_mock.return_value = None with Environment('/') as env: user = User("mapred", action = "create", shell = "/bin/bash") popen_mock.assert_called_with(['/bin/bash', '--login', '--noprofile', '-c', "ambari-sudo.sh PATH=/bin -H -E useradd -m -s /bin/bash mapred"], shell=False, preexec_fn=None, stderr=-2, stdout=5, env={'PATH': '/bin'}, bufsize=1, cwd=None, close_fds=True) self.assertEqual(popen_mock.call_count, 1)