def test_perform_maintenance_partial_sla_failure(self, mock_check_sla, mock_start_maintenance, mock_drain_hosts, mock_operate_on_hosts, mock_complete_maintenance): mock_callback = mock.Mock() failed_host = 'us-west-001.example.com' mock_check_sla.return_value = set([failed_host]) drained_hosts = set(TEST_HOSTNAMES) - set([failed_host]) maintenance = HostMaintenance(DEFAULT_CLUSTER, 'quiet') with temporary_file() as fp: with group_by_rack(): maintenance.perform_maintenance( TEST_HOSTNAMES, callback=mock_callback, grouping_function='by_rack', output_file=fp.name) with open(fp.name, 'r') as fpr: content = fpr.read() assert failed_host in content mock_start_maintenance.assert_called_once_with(TEST_HOSTNAMES) assert mock_check_sla.call_count == 1 assert mock_drain_hosts.call_count == 1 assert mock_drain_hosts.call_args_list == [mock.call(Hosts(drained_hosts))] assert mock_operate_on_hosts.call_count == 1 assert mock_operate_on_hosts.call_args_list == [ mock.call(Hosts(drained_hosts), mock_callback)] assert mock_complete_maintenance.call_count == 2 assert mock_complete_maintenance.call_args_list == [ mock.call(Hosts(set([failed_host]))), mock.call(Hosts(drained_hosts))]
def test_perform_maintenance(self, mock_check_sla, mock_start_maintenance, mock_drain_hosts): mock_check_sla.return_value = set() mock_start_maintenance.return_value = TEST_HOSTNAMES maintenance = HostMaintenance(DEFAULT_CLUSTER, 'quiet') maintenance.perform_maintenance(TEST_HOSTNAMES) mock_start_maintenance.assert_called_once_with(TEST_HOSTNAMES) assert mock_check_sla.call_count == 3 assert mock_drain_hosts.call_count == 3 assert mock_drain_hosts.call_args_list == [ mock.call(Hosts(set([hostname]))) for hostname in TEST_HOSTNAMES]
def test_perform_maintenance_partial_sla_failure(self, mock_check_sla, mock_start_maintenance, mock_drain_hosts): failed_host = 'us-west-001.example.com' mock_check_sla.return_value = set([failed_host]) mock_start_maintenance.return_value = TEST_HOSTNAMES drained_hosts = set(TEST_HOSTNAMES) - set([failed_host]) maintenance = HostMaintenance(DEFAULT_CLUSTER, 'quiet') with temporary_file() as fp: with group_by_rack(): drained = maintenance.perform_maintenance( TEST_HOSTNAMES, grouping_function='by_rack', output_file=fp.name) with open(fp.name, 'r') as fpr: content = fpr.read() assert failed_host in content mock_start_maintenance.assert_called_once_with(TEST_HOSTNAMES) assert len(drained) == 2 assert failed_host not in drained assert mock_check_sla.call_count == 1 assert mock_drain_hosts.call_count == 1 assert mock_drain_hosts.call_args_list == [mock.call(Hosts(drained_hosts))]
def test_perform_maintenance(self, mock_operate_on_hosts, mock_check_sla, mock_start_maintenance, mock_drain_hosts): mock_callback = mock.Mock() mock_check_sla.return_value = set() mock_start_maintenance.return_value = TEST_HOSTNAMES drain_hosts_results = [set() for _ in TEST_HOSTNAMES] drain_hosts_results[0] = set([TEST_HOSTNAMES[0]]) def drain_hosts_result(*args): return drain_hosts_results.pop(0) mock_drain_hosts.side_effect = drain_hosts_result maintenance = HostMaintenance(DEFAULT_CLUSTER, 'quiet') maintenance.perform_maintenance(TEST_HOSTNAMES, callback=mock_callback) mock_start_maintenance.assert_called_once_with(TEST_HOSTNAMES) assert mock_check_sla.call_count == 3 assert mock_drain_hosts.call_count == 3 assert mock_drain_hosts.call_args_list == [ mock.call(Hosts(set([hostname]))) for hostname in TEST_HOSTNAMES] assert mock_operate_on_hosts.call_count == 3 assert mock_operate_on_hosts.call_args_list == [mock.call(set(), mock_callback)] + [ mock.call(set([hostname]), mock_callback) for hostname in TEST_HOSTNAMES[1:]]