def test_warning_presto_version(self, mock_warn, mock_run): env.host = 'node1' env.roledefs['coordinator'] = ['node1'] env.roledefs['worker'] = ['node1'] old_version = '0.97' mock_run.return_value = old_version server.status() version_warning = 'Presto version is %s, version >= 0.%d required.'\ % (old_version, PRESTO_RPM_MIN_REQUIRED_VERSION) mock_warn.assert_called_with(version_warning) mock_run.return_value = 'No presto installed' env.host = 'node1' server.status() installation_warning = 'Presto is not installed.' mock_warn.assert_called_with(installation_warning) self.assertEqual( 'Server Status:\n\tnode1(IP: Unknown roles: coordinator, worker):' ' Not Running\n\t' + version_warning + '\nServer Status:\n\t' 'node1(IP: Unknown roles: coordinator, worker): Not Running\n\t' + installation_warning + '\n', self.test_stdout.getvalue() )
def test_status_from_each_node( self, mock_run_sql, mock_presto_installed, mock_get_presto_version, mock_execute, mock_presto_config): env.roledefs = { 'coordinator': ['Node1'], 'worker': ['Node1', 'Node2', 'Node3', 'Node4'], 'all': ['Node1', 'Node2', 'Node3', 'Node4'] } env.hosts = env.roledefs['all'] mock_get_presto_version.return_value = '0.97-SNAPSHOT' mock_run_sql.side_effect = [ [['select * from system.runtime.nodes']], [['hive'], ['system'], ['tpch']], [['http://active/statement', 'presto-main:0.97-SNAPSHOT', True]], [['http://inactive/stmt', 'presto-main:0.99-SNAPSHOT', False]], [[]], [['http://servrdown/statement', 'any', True]] ] mock_execute.side_effect = [{ 'Node1': ('IP1', True, ''), 'Node2': ('IP2', True, ''), 'Node3': ('IP3', True, ''), 'Node4': Exception('Timed out trying to connect to Node4') }] env.host = 'Node1' server.status() expected = self.read_file_output('/resources/server_status_out.txt') self.assertEqual( expected.splitlines(), self.test_stdout.getvalue().splitlines() )
def test_status_from_each_node( self, mock_get_presto_version, mock_run_sql, mock_execute): env.roledefs = { 'coordinator': ['Node1'], 'worker': ['Node1', 'Node2', 'Node3', 'Node4'], 'all': ['Node1', 'Node2', 'Node3', 'Node4'] } env.hosts = env.roledefs['all'] mock_get_presto_version.return_value = '0.97-SNAPSHOT' mock_run_sql.side_effect = [ [['select * from system.runtime.nodes']], [['hive'], ['system'], ['tpch']], [['http://active/statement', 'presto-main:0.97-SNAPSHOT', True]], [['http://inactive/stmt', 'presto-main:0.99-SNAPSHOT', False]], [[]], [['http://servrdown/statement', 'any', True]] ] mock_execute.side_effect = [{ 'Node1': ('IP1', True, ''), 'Node2': ('IP2', True, ''), 'Node3': ('IP3', True, ''), 'Node4': Exception('Timed out trying to connect to Node4') }] env.host = 'Node1' server.status() expected = self.read_file_output('/resources/server_status_out.txt') self.assertEqual( expected.splitlines(), self.test_stdout.getvalue().splitlines() )
def test_status_from_each_node(self, mock_run, mock_nodeinfo, mock_ext_ip, mock_server_up, mock_conninfo, mock_version): env.roledefs = { 'coordinator': ["Node1"], 'worker': ["Node1", "Node2", "Node3", "Node4"], 'all': ["Node1", "Node2", "Node3", "Node4"] } mock_ext_ip.side_effect = ["IP1", "IP2", "IP3", ""] mock_server_up.side_effect = [True, True, True, False] mock_nodeinfo.side_effect = [ [['http://active/statement', 'presto-main:0.97-SNAPSHOT', True]], [['http://inactive/stmt', 'presto-main:0.99-SNAPSHOT', False]], [[]], [['http://servrdown/statement', 'any', True]] ] mock_conninfo.side_effect = [[['hive'], ['system'], ['tpch']], [[]], [['any']], [['any']]] mock_version.return_value = '0.101' env.host = "Node1" server.status() env.host = "Node2" server.status() env.host = "Node3" server.status() env.host = "Node4" server.status() expected = self.read_file_output('/files/server_status_out.txt') self.assertEqual(sorted(expected), sorted(self.test_stdout.getvalue()))