Пример #1
0
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)
Пример #2
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)
Пример #3
0
def test_create_service_principal(mocked_auth_create):
    mocked_auth_create.return_value = MagicMock()
    secrets = secrets_provider.provide_secrets_via_service_principal()

    create(secrets)

    mocked_auth_create.assert_called_once_with(secrets)
Пример #4
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)
Пример #5
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)
Пример #7
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)
Пример #8
0
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)
Пример #9
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)
Пример #10
0
def test_create_service_principal_with_auth_error(mocked_auth_create):
    secrets = secrets_provider.provide_secrets_via_service_principal()
    inner_exception = MagicMock()
    mocked_auth_create.side_effect = \
        AuthenticationError("Auth error", inner_exception)

    with pytest.raises(InterruptExecution) as _:
        with auth(secrets) as _:
            pass
Пример #11
0
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
Пример #12
0
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
Пример #13
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)
Пример #14
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)
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)
Пример #17
0
def test_resolve_cloud_env_by_name_default():
    data = secrets_provider.provide_secrets_via_service_principal()
    result = cloud.get_or_raise(data.get("azure_cloud")) \
        .endpoints.resource_manager

    assert result == AZURE_PUBLIC_CLOUD.endpoints.resource_manager
Пример #18
0
def test_create_service_principal():
    secrets = secrets_provider.provide_secrets_via_service_principal()

    with pytest.raises(InterruptExecution) as exception:
        create(secrets)