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)
Esempio n. 2
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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)
Esempio n. 11
0
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
Esempio n. 14
0
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'])
Esempio n. 15
0
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)
Esempio n. 16
0
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)