blob: 0b33e9faa8acfe712ed633465fa6922715d6505c [file] [log] [blame]
'''
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
'''
import subprocess
from mock.mock import MagicMock
from unittest import TestCase
from mock.mock import patch
import sys
from ambari_commons import OSCheck
from only_for_platform import get_platform, not_for_platform, only_for_platform, os_distro_value, PLATFORM_WINDOWS
from mock.mock import MagicMock, patch, ANY, Mock
with patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value)):
setup_agent = __import__('setupAgent')
class TestSetupAgent(TestCase):
@patch("sys.exit")
@patch("socket.socket")
def test_checkServerReachability(self, socket_mock, exit_mock):
ret = setup_agent.checkServerReachability("localhost", 8080)
self.assertTrue(socket_mock.called)
s = socket_mock.return_value
s.connect = MagicMock()
def side_effect():
raise Exception(1, "socket is closed")
s.connect.side_effect = side_effect
ret = setup_agent.checkServerReachability("localhost", 8080)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 1)
self.assertTrue("log" in ret)
pass
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'execOsCommand')
def test_configureAgent(self, execOsCommand_mock):
# Test if expected_hostname is passed
hostname = "test.hst"
setup_agent.configureAgent(hostname, "root")
cmdStr = str(execOsCommand_mock.call_args_list[0][0])
self.assertTrue(hostname in cmdStr)
pass
@not_for_platform(PLATFORM_WINDOWS)
@patch.object(setup_agent, 'execOsCommand')
@patch("os.environ")
@patch("subprocess.Popen")
@patch("time.sleep")
def test_runAgent(self, sleep_mock, popen_mock, environ_mock, execOsCommand_mock):
expected_hostname = "test.hst"
passphrase = "passphrase"
agent_status = MagicMock()
agent_status.returncode = 0
popen_mock.return_value = agent_status
execOsCommand_mock.return_value = {'log': 'log', 'exitstatus': 0}
# Test if expected_hostname is passed
ret = setup_agent.runAgent(passphrase, expected_hostname, "root", False)
cmdStr = str(popen_mock.call_args_list[0][0])
self.assertTrue(expected_hostname in cmdStr)
self.assertFalse('-v' in cmdStr)
self.assertEqual(ret["exitstatus"], 0)
self.assertTrue(sleep_mock.called)
self.assertEqual(execOsCommand_mock.call_count, 1)
execOsCommand_mock.reset_mock()
popen_mock.reset_mock()
sleep_mock.reset_mock()
# Test if verbose=True
ret = setup_agent.runAgent(passphrase, expected_hostname, "root", True)
self.assertTrue(expected_hostname in cmdStr)
cmdStr = str(popen_mock.call_args_list[0][0])
self.assertTrue('-v' in cmdStr)
self.assertEqual(ret["exitstatus"], 0)
self.assertTrue(sleep_mock.called)
self.assertEqual(execOsCommand_mock.call_count, 1)
execOsCommand_mock.reset_mock()
popen_mock.reset_mock()
sleep_mock.reset_mock()
# Key 'log' not found
execOsCommand_mock.return_value = {'log': 'log', 'exitstatus': 1}
ret = setup_agent.runAgent(passphrase, expected_hostname, "root", False)
cmdStr = str(popen_mock.call_args_list[0][0])
self.assertTrue(expected_hostname in cmdStr)
self.assertEqual(ret["exitstatus"], 0)
self.assertEqual(execOsCommand_mock.call_count, 3)
execOsCommand_mock.reset_mock()
popen_mock.reset_mock()
# Retcode id not 0
agent_status.returncode = 2
execOsCommand_mock.return_value = {'log': 'log', 'exitstatus': 2}
ret = setup_agent.runAgent(passphrase, expected_hostname, "root", False)
cmdStr = str(popen_mock.call_args_list[0][0])
self.assertTrue(expected_hostname in cmdStr)
self.assertEqual(ret["exitstatus"], 2)
execOsCommand_mock.reset_mock()
pass
@only_for_platform(PLATFORM_WINDOWS)
@patch.object(setup_agent, 'run_os_command')
@patch("os.environ")
@patch("time.sleep")
def test_runAgent(self, sleep_mock, environ_mock, run_os_command_mock):
expected_hostname = "test.hst"
passphrase = "passphrase"
run_os_command_mock.return_value = (0, "log", "")
# Test if expected_hostname is passed
ret = setup_agent.runAgent(passphrase, expected_hostname, "root", False)
self.assertEqual(run_os_command_mock.call_count, 1)
cmdStr = str(run_os_command_mock.call_args_list[0][0])
self.assertEqual(cmdStr, str((["cmd", "/c", "ambari-agent.cmd", "restart"],)))
self.assertFalse('-v' in cmdStr)
self.assertEqual(ret["exitstatus"], 0)
self.assertFalse(sleep_mock.called)
run_os_command_mock.reset_mock()
sleep_mock.reset_mock()
# Retry command
run_os_command_mock.side_effect = [(2, "log", "err"), (0, "log", "")]
ret = setup_agent.runAgent(passphrase, expected_hostname, "root", False)
self.assertEqual(run_os_command_mock.call_count, 2)
self.assertTrue("Retrying" in ret['log'][1])
self.assertEqual(ret["exitstatus"], 0)
self.assertTrue(sleep_mock.called)
pass
@not_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'getAvailableAgentPackageVersions')
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_initial_on_suse(self, findNearestAgentPackageVersion_method, is_ubuntu_family_method,
is_suse_family_method, getAvailableAgentPackageVersions_method):
getAvailableAgentPackageVersions_method.return_value = {"exitstatus": 0, "log": "1.1.1"}
is_suse_family_method.return_value = True
is_ubuntu_family_method.return_value = False
projectVersion = "1.1.1"
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["exitstatus"] == 1)
pass
@not_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'getAvailableAgentPackageVersions')
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_initial_on_ubuntu(self, findNearestAgentPackageVersion_method, is_ubuntu_family_method,
is_suse_family_method, getAvailableAgentPackageVersions_method):
getAvailableAgentPackageVersions_method.return_value = {"exitstatus": 0, "log": "1.1.1"}
is_suse_family_method.return_value = False
is_ubuntu_family_method.return_value = True
projectVersion = "1.1.1"
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["exitstatus"] == 1)
pass
@only_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'getAvailableAgentPackageVersions')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_initial_on_suse(self, findNearestAgentPackageVersion_method,
getAvailableAgentPackageVersions_method):
getAvailableAgentPackageVersions_method.return_value = {"exitstatus": 0, "log": "1.1.1"}
projectVersion = "1.1.1"
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["exitstatus"] == 1)
pass
@not_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_nearest_on_suse(self, findNearestAgentPackageVersion_method,
is_ubuntu_family_method,
is_suse_family_method):
is_suse_family_method.return_value = True
is_ubuntu_family_method.return_value = False
projectVersion = ""
nearest_version = projectVersion + "1.1.1"
findNearestAgentPackageVersion_method.return_value = {
"exitstatus": 0,
"log": [nearest_version, ""]
}
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["exitstatus"] == 1)
pass
@not_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_nearest_on_ubuntu(self, findNearestAgentPackageVersion_method,
is_ubuntu_family_method,
is_suse_family_method):
is_suse_family_method.return_value = False
is_ubuntu_family_method.return_value = True
projectVersion = ""
nearest_version = projectVersion + "1.1.1"
findNearestAgentPackageVersion_method.return_value = {
"exitstatus": 0,
"log": [nearest_version, ""]
}
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["exitstatus"] == 1)
pass
@only_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
@patch.object(setup_agent, 'getAvailableAgentPackageVersions')
def test_returned_optimal_version_is_nearest_on_windows(self, findNearestAgentPackageVersion_method,
getAvailableAgentPackageVersions_method):
projectVersion = ""
nearest_version = projectVersion + "1.1.1"
findNearestAgentPackageVersion_method.return_value = {
"exitstatus": 0,
"log": [nearest_version, ""]
}
getAvailableAgentPackageVersions_method.return_value = {"exitstatus": 0, "log": nearest_version}
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["exitstatus"] == 1)
pass
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'getAvailableAgentPackageVersions')
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_initial(self, findNearestAgentPackageVersion_method,
is_ubuntu_family_method,
is_suse_family_method, getAvailableAgentPackageVersions_method):
getAvailableAgentPackageVersions_method.return_value = {"exitstatus": 0, "log": "1.1.1"}
is_suse_family_method.return_value = False
is_ubuntu_family_method.return_value = False
projectVersion = "1.1.1"
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertTrue(result_version["log"] == projectVersion)
pass
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'getAvailableAgentPackageVersions')
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'findNearestAgentPackageVersion')
def test_returned_optimal_version_is_default(self, findNearestAgentPackageVersion_method,
is_ubuntu_family_method,
is_suse_family_method, getAvailableAgentPackageVersions_method):
getAvailableAgentPackageVersions_method.return_value = {"exitstatus": 0, "log": "1.1.1"}
is_suse_family_method.return_value = False
is_ubuntu_family_method.return_value = False
findNearestAgentPackageVersion_method.return_value = {
"exitstatus": 0,
"log": ["1.1.1.1", ""]
}
projectVersion = "1.1.2"
result_version = setup_agent.getOptimalVersion(projectVersion)
self.assertTrue(findNearestAgentPackageVersion_method.called)
self.assertEqual(result_version["exitstatus"], 1)
pass
@not_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(subprocess, 'Popen')
def test_execOsCommand(self, Popen_mock):
self.assertIsNone(setup_agent.execOsCommand("hostname -f"))
@only_for_platform(PLATFORM_WINDOWS)
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(subprocess, 'Popen')
def test_execOsCommand(self, Popen_mock):
p = MagicMock()
p.communicate.return_value = ("", "")
p.returncode = 0
Popen_mock.return_value = p
retval = setup_agent.execOsCommand("hostname -f")
self.assertEqual(retval["exitstatus"], 0)
pass
@patch("os.path.exists")
@patch.object(setup_agent, "get_ambari_repo_file_full_name")
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'checkVerbose')
@patch.object(setup_agent, 'isAgentPackageAlreadyInstalled')
@patch.object(setup_agent, 'runAgent')
@patch.object(setup_agent, 'configureAgent')
@patch.object(setup_agent, 'installAgent')
@patch('ambari_commons.OSCheck.is_suse_family')
@patch('ambari_commons.OSCheck.is_ubuntu_family')
@patch.object(setup_agent, 'getOptimalVersion')
@patch.object(setup_agent, 'checkServerReachability')
@patch("sys.exit")
@patch("os.path.dirname")
@patch("os.path.realpath")
def test_setup_agent_main(self, dirname_mock, realpath_mock, exit_mock, checkServerReachability_mock,
getOptimalVersion_mock, is_ubuntu_family_mock, is_suse_family_mock,
installAgent_mock, configureAgent_mock, runAgent_mock,
isAgentPackageAlreadyInstalled_mock, checkVerbose_mock,
get_ambari_repo_file_full_name_mock, os_path_exists_mock):
checkServerReachability_mock.return_value = {'log': 'log', 'exitstatus': 0}
installAgent_mock.return_value = {'log': 'log', 'exitstatus': 0}
configureAgent_mock.return_value = {'log': 'log', 'exitstatus': 0}
runAgent_mock.return_value = {'log': 'log', 'exitstatus': 0}
getOptimalVersion_mock.return_value = {'log': '1.1.2, 1.1.3, ', 'exitstatus': 1}
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertTrue(checkVerbose_mock.called)
self.assertFalse(exit_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 1)
self.assertTrue(getOptimalVersion_mock.called)
# A version of ambari-agent was installed or available in the repo file
exit_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
getOptimalVersion_mock.return_value = {'log': '1.1.1', 'exitstatus': 0}
isAgentPackageAlreadyInstalled_mock.return_value = False
is_suse_family_mock.return_value = True
is_ubuntu_family_mock.return_value = False
get_ambari_repo_file_full_name_mock.return_value = "Ambari_Repo_File"
def os_path_exists_side_effect(*args, **kwargs):
# Ambari repo file exists
if (args[0] == get_ambari_repo_file_full_name_mock()):
return True
else:
return False
os_path_exists_mock.side_effect = os_path_exists_side_effect
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue(getOptimalVersion_mock.called)
self.assertTrue(isAgentPackageAlreadyInstalled_mock.called)
self.assertTrue(installAgent_mock.called)
self.assertFalse(is_suse_family_mock.called)
self.assertFalse(is_ubuntu_family_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 0)
exit_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
isAgentPackageAlreadyInstalled_mock.reset_mock()
is_suse_family_mock.reset_mock()
is_ubuntu_family_mock.reset_mock()
installAgent_mock.reset_mock()
getOptimalVersion_mock.return_value = {'log': '', 'exitstatus': 0}
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue(getOptimalVersion_mock.called)
self.assertFalse(isAgentPackageAlreadyInstalled_mock.called)
self.assertFalse(is_suse_family_mock.called)
self.assertFalse(is_ubuntu_family_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 0)
exit_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
isAgentPackageAlreadyInstalled_mock.reset_mock()
is_suse_family_mock.reset_mock()
is_ubuntu_family_mock.reset_mock()
installAgent_mock.reset_mock()
is_suse_family_mock.return_value = False
is_ubuntu_family_mock.return_value = False
getOptimalVersion_mock.return_value = {'log': '1.1.1', 'exitstatus': 0}
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue(getOptimalVersion_mock.called)
self.assertTrue(isAgentPackageAlreadyInstalled_mock.called)
self.assertTrue(installAgent_mock.called)
self.assertFalse(is_suse_family_mock.called)
self.assertFalse(is_ubuntu_family_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 0)
exit_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
isAgentPackageAlreadyInstalled_mock.reset_mock()
exit_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
isAgentPackageAlreadyInstalled_mock.reset_mock()
is_suse_family_mock.reset_mock()
is_ubuntu_family_mock.reset_mock()
installAgent_mock.reset_mock()
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","{ambariVersion}","8080"))
self.assertTrue(getOptimalVersion_mock.called)
self.assertFalse(exit_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 0)
exit_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","null","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue(getOptimalVersion_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 0)
exit_mock.reset_mock()
is_suse_family_mock.return_value = False
is_ubuntu_family_mock.return_value = False
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","null","null"))
self.assertFalse(exit_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 0)
exit_mock.reset_mock()
#if "yum -y install --nogpgcheck ambari-agent" return not 0 result
installAgent_mock.return_value = {'log': 'log', 'exitstatus': 1}
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 1)
installAgent_mock.reset_mock()
exit_mock.reset_mock()
#if suse
is_suse_family_mock.return_value = True
is_ubuntu_family_mock.return_value = False
#if "zypper install -y ambari-agent" return not 0 result
installAgent_mock.return_value = {'log': 'log', 'exitstatus': 1}
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 1)
exit_mock.reset_mock()
#if ubuntu
is_suse_family_mock.return_value = False
is_ubuntu_family_mock.return_value = True
installAgent_mock.return_value = {'log': 'log', 'exitstatus': 1}
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 1)
# A version of ambari-agent was installed and ambari repo file was not found
exit_mock.reset_mock()
installAgent_mock.reset_mock()
getOptimalVersion_mock.reset_mock()
os_path_exists_mock.side_effect = None
os_path_exists_mock.return_value = False #ambari repo file was not found
getOptimalVersion_mock.return_value = {'log': '1.1.1', 'exitstatus': 0}
isAgentPackageAlreadyInstalled_mock.return_value = False
is_suse_family_mock.return_value = True
is_ubuntu_family_mock.return_value = False
get_ambari_repo_file_full_name_mock.return_value = "Ambari_Repo_File"
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue(getOptimalVersion_mock.called)
self.assertTrue(isAgentPackageAlreadyInstalled_mock.called)
self.assertFalse(installAgent_mock.called) # ambari repo file is missing, so installAgent() will not be called
self.assertFalse(is_suse_family_mock.called)
self.assertFalse(is_ubuntu_family_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 2) # ambari repo file not found error code
self.assertTrue(get_ambari_repo_file_full_name_mock() in ret["log"]) # ambari repo file not found message
# ambari-agent was not installed and ambari repo file was not found
exit_mock.reset_mock()
os_path_exists_mock.side_effect = None
os_path_exists_mock.return_value = False # ambari repo file not found
getOptimalVersion_mock.reset_mock()
isAgentPackageAlreadyInstalled_mock.reset_mock()
is_suse_family_mock.reset_mock()
is_ubuntu_family_mock.reset_mock()
installAgent_mock.reset_mock()
getOptimalVersion_mock.return_value = {'log': '', 'exitstatus': 1} #ambari-agent not installed
ret = setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
self.assertFalse(exit_mock.called)
self.assertTrue(getOptimalVersion_mock.called)
self.assertFalse(isAgentPackageAlreadyInstalled_mock.called)
self.assertFalse(is_suse_family_mock.called)
self.assertFalse(is_ubuntu_family_mock.called)
self.assertTrue("exitstatus" in ret)
self.assertEqual(ret["exitstatus"], 1)
self.assertTrue(get_ambari_repo_file_full_name_mock() in ret["log"]) # ambari repo file not found message
pass
@patch.object(setup_agent, 'execOsCommand')
def test_findNearestAgentPackageVersion(self, execOsCommand_mock):
setup_agent.findNearestAgentPackageVersion("1.1.1")
self.assertTrue(execOsCommand_mock.called)
execOsCommand_mock.reset_mock()
setup_agent.findNearestAgentPackageVersion("")
self.assertTrue(execOsCommand_mock.called)
pass
@patch.object(setup_agent, 'execOsCommand')
def test_isAgentPackageAlreadyInstalled(self, execOsCommand_mock):
execOsCommand_mock.return_value = {"exitstatus": 0, "log": "1.1.1"}
self.assertTrue(setup_agent.isAgentPackageAlreadyInstalled("1.1.1"))
self.assertTrue(execOsCommand_mock.called)
execOsCommand_mock.reset_mock()
execOsCommand_mock.return_value = {"exitstatus": 1, "log": "1.1.1"}
self.assertFalse(setup_agent.isAgentPackageAlreadyInstalled("1.1.1"))
self.assertTrue(execOsCommand_mock.called)
pass
@patch.object(setup_agent, 'execOsCommand')
def test_getAvailableAgentPackageVersions(self, execOsCommand_mock):
setup_agent.getAvailableAgentPackageVersions()
self.assertTrue(execOsCommand_mock.called)
pass
@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
@patch.object(setup_agent, 'execOsCommand')
def test_installAgent(self, execOsCommand_mock):
setup_agent.installAgent("1.1.1")
self.assertTrue(execOsCommand_mock.called)
pass