Ejemplo n.º 1
0
def test_run_test_matrix(do_tests, runner, continue_on_fail, result, expected):
    dt = do_tests.DoTests({}, {}, continue_on_fail=continue_on_fail)
    with mock.patch.multiple(do_tests, pytest_runner=mock.DEFAULT, shell_runner=mock.DEFAULT) as mock_rs:
        mock_r = mock_rs[runner + '_runner']
        mock_r.runner.return_value = result
        assert dt.run_test(sentinel.ssh, {runner: sentinel.path}, sentinel.config, sentinel.var) is expected
        assert mock_r.runner.called
Ejemplo n.º 2
0
def test_init_tests(do_tests, Config):
    image = Config({
        'tests': {
            'tests_list': ['test']
        }
    })
    env = Config({})
    dt = do_tests.DoTests(image, env)
    assert dt.tests_list == ['test']
Ejemplo n.º 3
0
def test_open_shell_no_ssh_config(do_tests):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
    }
    dt = do_tests.DoTests(image, env)
    with pytest.raises(do_tests.TestError):
        dt.open_shell(None, 'reason')
Ejemplo n.º 4
0
def test_report(do_tests, mock_env, mock_image):
    dt = do_tests.DoTests(mock_image, mock_env)
    prep_os = mock.MagicMock()
    mock_status = {
        'was_removed': False,
        'preexisted': False,
        'deletable': False,
        'id': 'some_id',
        'name': 'some_name'
    }
    prep_os.image_status.return_value = mock_status
    prep_os.instance_status.return_value = mock_status
    prep_os.keypair_status.return_value = mock_status
    dt.report(prep_os)
Ejemplo n.º 5
0
def test_wait_port_no_port(do_tests):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'tests_list': [],
        }
    }
    dt = do_tests.DoTests(image, env)
    mock_prep_os = mock.MagicMock()
    assert dt.wait_port(mock_prep_os) is False
Ejemplo n.º 6
0
def test_get_port_timeout_uses_default(do_tests):
    env = {
        'nova': {
            'flavor': 'some flavor'
        },
    }
    image = {
        'tests': {
            'tests_list': [],
            'wait_for_port': 22
        }
    }
    dt = do_tests.DoTests(image, env)
    mock_prep_os = mock.MagicMock()
    dt.wait_port(mock_prep_os)
    assert mock_prep_os.wait_for_port.call_args == mock.call(22, 61)  # magical constant!
Ejemplo n.º 7
0
def test_process_shell_only(do_tests, capsys):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'wait_for_port': 22,
            'tests_list': [{'pytest': sentinel.path1}, {'shell': sentinel.path2}]
        }
    }
    with mock.patch.object(do_tests.prepare_os, "PrepOS"):
        with mock.patch.object(do_tests.DoTests, "open_shell", return_value=sentinel.result):
            dt = do_tests.DoTests(image, env)
            assert dt.process(shell_only=True, shell_on_errors=False) == sentinel.result
Ejemplo n.º 8
0
def test_check_if_keep_stuff_after_fail_code_coverage(do_tests, kins, kimg):
    env = {
        'nova': {
            'flavor': 'some flavor'
        },
    }
    image = {
        'tests': {
            'tests_list': [],
            'wait_for_port': 22
        }
    }
    dt = do_tests.DoTests(image, env)
    dt.keep_failed_instance = kins
    dt.keep_failed_image = kimg
    dt.check_if_keep_stuff_after_fail(mock.MagicMock())
Ejemplo n.º 9
0
def test_run_all_tests(do_tests, result, Config):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'wait_for_port': 22,
            'tests_list': [{'pytest': sentinel.path1}, {'pytest': sentinel.path2}]
        }
    }
    with mock.patch.object(do_tests.DoTests, "run_test", return_value=result):
        dt = do_tests.DoTests(Config(image), Config(env))
        dt.ssh = mock.MagicMock()
        assert dt.run_all_tests(mock.MagicMock()) is result
Ejemplo n.º 10
0
def test_process_minimal(do_tests, port, capsys):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'wait_for_port': port,
            'tests_list': []
        }
    }
    dt = do_tests.DoTests(image, env)
    with mock.patch.object(do_tests.prepare_os, "PrepOS"):
        assert dt.process(False, False) is True
    assert 'passed' in capsys.readouterr()[0]
Ejemplo n.º 11
0
def test_wait_port_good(do_tests, Config):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'tests_list': [],
            'wait_for_port': 22,
            'port_wait_timeout': 180
        }
    }
    dt = do_tests.DoTests(Config(image), Config(env))
    mock_prep_os = mock.MagicMock()
    assert dt.wait_port(mock_prep_os) is True
    assert mock_prep_os.wait_for_port.call_args == mock.call(22, 180)
Ejemplo n.º 12
0
def test_get_port_timeout_uses_img(do_tests, Config):
    env = {
        'nova': {
            'flavor': 'some flavor'
        },
    }
    image = {
        'tests': {
            'tests_list': [],
            'wait_for_port': 22,
            'port_wait_timeout': 42
        }
    }
    dt = do_tests.DoTests(Config(image), Config(env))
    mock_prep_os = mock.MagicMock()
    dt.wait_port(mock_prep_os)
    assert mock_prep_os.wait_for_port.call_args == mock.call(22, 42)
Ejemplo n.º 13
0
def test_init_ssh_with_data(do_tests):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'tests_list': [],
            'ssh': {
                'username': '******'
            }
        }
    }
    dt = do_tests.DoTests(image, env)
    dt.init_ssh(mock.MagicMock())
    assert dt.ssh is not None
Ejemplo n.º 14
0
def test_wait_port_timeout(do_tests):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'tests_list': [],
            'wait_for_port': 42
        }
    }
    dt = do_tests.DoTests(image, env)
    mock_prep_os = mock.MagicMock()
    mock_prep_os.wait_for_port.return_value = False
    with pytest.raises(do_tests.PortWaitError):
        dt.wait_port(mock_prep_os)
Ejemplo n.º 15
0
def test_open_shell(do_tests, retval, keep):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'ssh': {'username': '******'},
            'wait_for_port': 22,
            'tests_list': [{'pytest': sentinel.path1}, {'pytest': sentinel.path2}]
        }
    }
    dt = do_tests.DoTests(image, env)
    mock_ssh = mock.MagicMock()
    mock_ssh.shell.return_value = retval
    dt.open_shell(mock_ssh, 'reason')
    assert dt.keep_failed_instance == keep
    assert 'exit 42' in mock_ssh.shell.call_args[0][1]
Ejemplo n.º 16
0
def test_process_with_tests(do_tests, capsys):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'wait_for_port': 22,
            'tests_list': [{'pytest': sentinel.path1}, {'shell': sentinel.path2}]
        }
    }
    dt = do_tests.DoTests(image, env)
    with mock.patch.multiple(do_tests, pytest_runner=mock.DEFAULT, shell_runner=mock.DEFAULT):
        with mock.patch.object(do_tests.prepare_os, "PrepOS") as mock_prep_os_class:
            mock_prep_os = mock.MagicMock()
            mock_enter = mock.MagicMock()
            mock_enter.__enter__.return_value = mock_prep_os
            mock_prep_os_class.return_value = mock_enter
            assert dt.process(False, False) is True
Ejemplo n.º 17
0
def refactor_test_process_port_timeout(do_tests):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'wait_for_port': 22,
            'tests_list': []
        }
    }
    dt = do_tests.DoTests(image, env)
    with mock.patch.object(do_tests.prepare_os, "PrepOS") as mock_prep_os_class:
        mock_prep_os = mock.MagicMock()
        mock_prep_os.wait_for_port.return_value = False
        mock_enter = mock.MagicMock()
        mock_enter.__enter__.return_value = mock_prep_os
        mock_prep_os_class.return_value = mock_enter
        with pytest.raises(do_tests.TestError):
            dt.process(False, False)
Ejemplo n.º 18
0
def test_process_all_tests_fail(do_tests, capsys, Config):
    env = {
        'nova': {
            'flavor': 'some flavor'
        }
    }
    image = {
        'tests': {
            'wait_for_port': 22,
            'tests_list': [{'pytest': sentinel.path1}, {'pytest': sentinel.path2}]
        }
    }
    dt = do_tests.DoTests(Config(image), Config(env))
    dt.ssh = mock.MagicMock()
    with mock.patch.object(do_tests.pytest_runner, "runner") as runner:
        runner.side_effect = [False, ValueError("Shouldn't be called")]
        with mock.patch.object(do_tests.prepare_os, "PrepOS") as mock_prep_os_class:
            mock_prep_os = mock.MagicMock()
            mock_enter = mock.MagicMock()
            mock_enter.__enter__.return_value = mock_prep_os
            mock_prep_os_class.return_value = mock_enter
            assert dt.process(False, False) is False
            assert runner.call_count == 1
Ejemplo n.º 19
0
def test_run_test_bad_config(do_tests):
    dt = do_tests.DoTests({}, {})
    with pytest.raises(do_tests.BadTestConfigError):
        dt.run_test(sentinel.ssh, {'one': 1, 'two': 2}, sentinel.config, sentinel.env)
Ejemplo n.º 20
0
def test_make_env_vars(do_tests, Config, os_env, img, tenv, combined):
    img_cfg = Config({'tests': {'environment_variables': img}})
    tenv_cfg = Config({'tests': {'environment_variables': tenv}})
    with mock.patch.object(do_tests.os, "environ", os_env):
        dt = do_tests.DoTests(img_cfg, tenv_cfg)
        assert dt.environment_variables == combined
Ejemplo n.º 21
0
def test_init_no_override(do_tests):
    image = {}
    dt = do_tests.DoTests(image, {}, image_uuid=sentinel.uuid)
    assert dt.tests_list == []
    assert dt.delete_image is False
    assert dt.override_image_uuid == sentinel.uuid
Ejemplo n.º 22
0
def test_run_test_bad_runner(do_tests):
    dt = do_tests.DoTests({}, {})
    with pytest.raises(do_tests.BadTestConfigError):
        dt.run_test(sentinel.ssh, {'badrunner': 1}, sentinel.config, sentinel.env)
Ejemplo n.º 23
0
def test_run_test_duplicate_runner(do_tests):
    dt = do_tests.DoTests({}, {})
    with pytest.raises(do_tests.BadTestConfigError):
        dt.run_test(sentinel.ssh, {'pytest': 1, 'shell': 2}, sentinel.config, sentinel.env)
Ejemplo n.º 24
0
def test_init_no_tests(do_tests):
    image = {}
    env = {}
    dt = do_tests.DoTests(image, env)
    assert dt.tests_list == []