def test_fill_disk(mocked_command_run, mocked_command_prepare_path, mocked_init_client, fetch): # arrange mocks mocked_command_prepare_path.return_value = '/root/burn/hard' machine = machine_provider.default() fetch.return_value = [machine] mocked_client = MagicMock(spec=ComputeManagementClient) mocked_init_client.return_value = mocked_client configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() duration = 60 # act fill_disk(filter="where name=='some_linux_machine'", duration=duration, size=1000, path='/root/burn/hard', configuration=configuration, secrets=secrets) # assert fetch.assert_called_with("where name=='some_linux_machine'", configuration, secrets) mocked_command_run.assert_called_with(machine['resourceGroup'], machine, parameters=ANY, client=mocked_client)
def test_burn_io(mocked_command_run, mocked_command_prepare, fetch_instances, fetch_vmss): # arrange mocks mocked_command_prepare.return_value = 'RunShellScript', 'burn_io.sh' scale_set = vmss_provider.provide_scale_set() scale_sets = [scale_set] instance = vmss_provider.provide_instance() instances = [instance] fetch_vmss.return_value = scale_sets fetch_instances.return_value = instances config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() # act burn_io(filter="where name=='some_random_instance'", duration=60, configuration=config, secrets=secrets) # assert fetch_vmss.assert_called_with("where name=='some_random_instance'", config, secrets) fetch_instances.assert_called_with(scale_set, None, config, secrets) mocked_command_run.assert_called_with( scale_set['resourceGroup'], instance, 120, { 'command_id': 'RunShellScript', 'script': ['burn_io.sh'], 'parameters': [{ 'name': 'duration', 'value': 60 }] }, secrets, config)
def test_burn_io(mocked_command_run, mocked_command_prepare, fetch): # arrange mocks mocked_command_prepare.return_value = 'RunShellScript', 'burn_io.sh' machine = machine_provider.provide_machine() machines = [machine] fetch.return_value = machines config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() # act burn_io(filter="where name=='some_linux_machine'", duration=60, configuration=config, secrets=secrets) # assert fetch.assert_called_with("where name=='some_linux_machine'", RES_TYPE_VM, secrets, config) mocked_command_prepare.assert_called_with(machine, 'burn_io') mocked_command_run.assert_called_with( machine['resourceGroup'], machine, 120, { 'command_id': 'RunShellScript', 'script': ['burn_io.sh'], 'parameters': [{ 'name': 'duration', 'value': 60 }] }, secrets, config)
def test_burn_io(mocked_command_run, mocked_init_client, fetch): # arrange mocks machine = machine_provider.default() machines = [machine] fetch.return_value = machines configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() mocked_client = MagicMock(spec=ComputeManagementClient) mocked_init_client.return_value = mocked_client duration = 60 # act burn_io(filter="where name=='some_linux_machine'", duration=duration, configuration=configuration, secrets=secrets) # assert fetch.assert_called_with("where name=='some_linux_machine'", configuration, secrets) mocked_command_run.assert_called_with(machine['resourceGroup'], machine, parameters=ANY, client=mocked_client)
def test_stress_cpu(mocked_command_run, mocked_init_client, mocked_instances, mocked_vmss): # arrange mocks scale_set = vmss_provider.provide_scale_set() scale_sets = [scale_set] instance = vmss_provider.provide_instance() instances = [instance] mocked_vmss.return_value = scale_sets mocked_instances.return_value = instances configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() duration = 60 client = MockComputeManagementClient() mocked_init_client.return_value = client # act stress_cpu(vmss_filter="where name=='some_random_instance'", duration=duration, configuration=configuration, secrets=secrets) # assert mocked_vmss.assert_called_with("where name=='some_random_instance'", configuration, secrets) mocked_instances.assert_called_with(scale_set, None, mocked_init_client.return_value) mocked_command_run.assert_called_with(scale_set['resourceGroup'], instance, parameters=ANY, client=client)
def test_unhappily_fill_disk(mocked_command_run, mocked_command_prepare_path, mocked_init_client, fetch_instances, fetch_vmss): # arrange mocks mocked_command_prepare_path.return_value = '/root/burn/hard' scale_set = vmss_provider.provide_scale_set() instance = vmss_provider.provide_instance() fetch_vmss.return_value = [scale_set] fetch_instances.return_value = [instance] configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() mocked_client = MockComputeManagementClient() mocked_init_client.return_value = mocked_client # act with pytest.raises(FailedActivity): fill_disk(vmss_filter="where name=='some_random_instance'", duration=60, size=1000, path='/root/burn/hard', configuration=configuration, secrets=secrets) # assert fetch_vmss.assert_called_with("where name=='some_random_instance'", configuration, secrets) fetch_instances.assert_called_with(scale_set, None, mocked_init_client.return_value)
def test_fill_disk(mocked_command_run, mocked_command_prepare_path, mocked_init_client, fetch_instances, fetch_vmss): # arrange mocks mocked_command_prepare_path.return_value = '/root/burn/hard' scale_set = vmss_provider.provide_scale_set() instance = vmss_provider.provide_instance() fetch_vmss.return_value = [scale_set] fetch_instances.return_value = [instance] configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() mocked_client = MockComputeManagementClient() mocked_init_client.return_value = mocked_client duration = 60 # act fill_disk(vmss_filter="where name=='some_random_instance'", duration=duration, size=1000, path='/root/burn/hard', configuration=configuration, secrets=secrets) # assert fetch_vmss.assert_called_with("where name=='some_random_instance'", configuration, secrets) fetch_instances.assert_called_with(scale_set, None, mocked_init_client.return_value) mocked_command_run.assert_called_with(scale_set['resourceGroup'], instance, parameters=ANY, client=mocked_client)
def test_network_latency(mocked_command_run, mocked_init_client, mocked_fetch_instances, mocked_fetch_vmss): # arrange mocks scale_set = vmss_provider.provide_scale_set() instance = vmss_provider.provide_instance() mocked_fetch_vmss.return_value = [scale_set] mocked_fetch_instances.return_value = [instance] configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() duration = 60 mocked_client = MockComputeManagementClient() mocked_init_client.return_value = mocked_client # act network_latency(vmss_filter="where name=='some_random_instance'", duration=duration, delay=200, jitter=50, configuration=configuration, secrets=secrets) # assert mocked_fetch_vmss.assert_called_with("where name=='some_random_instance'", configuration, secrets) mocked_fetch_instances.assert_called_with(scale_set, None, mocked_init_client.return_value) mocked_command_run.assert_called_with(scale_set['resourceGroup'], instance, parameters=ANY, client=mocked_client)
def test_create_query_with_empty_user_query(): config = config_provider.provide_default_config() resource_type = "virtualMachine" user_query = "" query_request = query.create_request(resource_type, user_query, config) assert query_request.query == "Resources | where type=~'{}' | sample 1".format( resource_type)
def test_sadly_fetch_empty_resources(mocked_graph_client): secrets = secrets_provider.provide_secrets_germany() config = config_provider.provide_default_config() mocked_graph_client.return_value.resources.return_value.data = graph_provider.empty( ) mocked_graph_client.return_value.api_version = '2019-04-01' with pytest.raises(FailedActivity): fetch_resources("", "Microsoft.Compute/virtualMachines", secrets, config)
def test_happily_fetch_resources(mocked_graph_client): secrets = secrets_provider.provide_secrets_germany() config = config_provider.provide_default_config() mocked_graph_client.return_value.resources.return_value.data = graph_provider.default( ) mocked_graph_client.return_value.api_version = '2019-04-01' resources = fetch_resources("", "Microsoft.Compute/virtualMachines", secrets, config) assert resources[0]['name'] == 'vmachine1'
def test_restart_one_machine(init, fetch): client = MagicMock() init.return_value = client fetch.return_value = [MACHINE_ALPHA] configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() f = "where resourceGroup=='myresourcegroup'" restart(f, configuration, secrets) fetch.assert_called_with(f, configuration, secrets) assert client.virtual_machines.begin_restart.call_count == 1
def test_stop_two_machines(init, fetch): client = MagicMock() init.return_value = client fetch.return_value = [MACHINE_ALPHA, MACHINE_BETA] configuration = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() f = "where resourceGroup=='myresourcegroup' | sample 2" stop(f, configuration, secrets) fetch.assert_called_with(f, configuration, secrets) assert client.virtual_machines.begin_power_off.call_count == 2
def test_happily_stop_webapp(init, fetch): config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_public() webapp = webapp_provider.default() client = MagicMock() init.return_value = client resource_list = [webapp] fetch.return_value = resource_list f = "where resourceGroup=~'rg'" stop(f, config, secrets) fetch.assert_called_with(f, config, secrets) client.web_apps.stop.assert_called_with(webapp['resourceGroup'], webapp['name'])
def test_fill_disk(mocked_command_run, mocked_command_prepare, mocked_command_prepare_path, fetch_instances, fetch_vmss): # arrange mocks mocked_command_prepare.return_value = 'RunShellScript', 'fill_disk.sh' mocked_command_prepare_path.return_value = '/root/burn/hard' scale_set = vmss_provider.provide_scale_set() scale_sets = [scale_set] instance = vmss_provider.provide_instance() instances = [instance] fetch_vmss.return_value = scale_sets fetch_instances.return_value = instances config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() # act fill_disk(filter="where name=='some_random_instance'", duration=60, timeout=60, size=1000, path='/root/burn/hard', configuration=config, secrets=secrets) # assert fetch_vmss.assert_called_with("where name=='some_random_instance'", config, secrets) fetch_instances.assert_called_with(scale_set, None, config, secrets) mocked_command_run.assert_called_with( scale_set['resourceGroup'], instance, 120, { 'command_id': 'RunShellScript', 'script': ['fill_disk.sh'], 'parameters': [{ 'name': "duration", 'value': 60 }, { 'name': "size", 'value': 1000 }, { 'name': "path", 'value': '/root/burn/hard' }] }, secrets, config)
def test_network_latency(mocked_command_run, mocked_command_prepare, fetch_instances, fetch_vmss): # arrange mocks mocked_command_prepare.return_value = 'RunShellScript', 'network_latency.sh' scale_set = vmss_provider.provide_scale_set() scale_sets = [scale_set] instance = vmss_provider.provide_instance() instances = [instance] fetch_vmss.return_value = scale_sets fetch_instances.return_value = instances config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() # act network_latency(filter="where name=='some_random_instance'", duration=60, timeout=60, delay=200, jitter=50, configuration=config, secrets=secrets) # assert fetch_vmss.assert_called_with("where name=='some_random_instance'", config, secrets) fetch_instances.assert_called_with(scale_set, None, config, secrets) mocked_command_prepare.assert_called_with(instance, 'network_latency') mocked_command_run.assert_called_with( scale_set['resourceGroup'], instance, 120, { 'command_id': 'RunShellScript', 'script': ['network_latency.sh'], 'parameters': [{ 'name': "duration", 'value': 60 }, { 'name': "delay", 'value': 200 }, { 'name': "jitter", 'value': 50 }] }, secrets, config)
def test_fill_disk(mocked_command_run, mocked_command_prepare_path, mocked_command_prepare, fetch): # arrange mocks mocked_command_prepare.return_value = 'RunShellScript', 'fill_disk.sh' mocked_command_prepare_path.return_value = '/root/burn/hard' machine = machine_provider.provide_machine() machines = [machine] fetch.return_value = machines config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() # act fill_disk(filter="where name=='some_linux_machine'", duration=60, timeout=60, size=1000, path='/root/burn/hard', configuration=config, secrets=secrets) # assert fetch.assert_called_with("where name=='some_linux_machine'", RES_TYPE_VM, secrets, config) mocked_command_prepare.assert_called_with(machine, 'fill_disk') mocked_command_run.assert_called_with( machine['resourceGroup'], machine, 120, { 'command_id': 'RunShellScript', 'script': ['fill_disk.sh'], 'parameters': [{ 'name': "duration", 'value': 60 }, { 'name': "size", 'value': 1000 }, { 'name': "path", 'value': '/root/burn/hard' }] }, secrets, config)
def test_network_latency(mocked_command_run, mocked_command_prepare, fetch): # arrange mocks mocked_command_prepare.return_value = 'RunShellScript', 'network_latency.sh' machine = machine_provider.provide_machine() machines = [machine] fetch.return_value = machines config = config_provider.provide_default_config() secrets = secrets_provider.provide_secrets_via_service_principal() # act network_latency(filter="where name=='some_linux_machine'", duration=60, delay=200, jitter=50, timeout=60, configuration=config, secrets=secrets) # assert fetch.assert_called_with("where name=='some_linux_machine'", RES_TYPE_VM, secrets, config) mocked_command_prepare.assert_called_with(machine, 'network_latency') mocked_command_run.assert_called_with( machine['resourceGroup'], machine, 120, { 'command_id': 'RunShellScript', 'script': ['network_latency.sh'], 'parameters': [{ 'name': "duration", 'value': 60 }, { 'name': "delay", 'value': 200 }, { 'name': "jitter", 'value': 50 }] }, secrets, config)