Completed
Push — master ( 719867...30d2f4 )
by Ionel Cristian
01:05
created

test_parse_elasticsearch_storage()   B

Complexity

Conditions 7

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 7
dl 0
loc 7
rs 7.3333
c 2
b 0
f 0
1
import distutils.spawn
2
import subprocess
3
import argparse
4
5
import pytest
6
from pytest import mark
7
8
from pytest_benchmark.utils import clonefunc
9
from pytest_benchmark.utils import get_commit_info
10
from pytest_benchmark.utils import parse_warmup
11
from pytest_benchmark.utils import parse_columns
12
from pytest_benchmark.utils import get_project_name
13
from pytest_benchmark.utils import parse_elasticsearch_storage
14
15
pytest_plugins = 'pytester',
16
17
f1 = lambda a: a
18
19
20
def f2(a):
21
    return a
22
23
24
@mark.parametrize('f', [f1, f2])
25
def test_clonefunc(f):
26
    assert clonefunc(f)(1) == f(1)
27
    assert clonefunc(f)(1) == f(1)
28
29
30
def test_clonefunc_not_function():
31
    assert clonefunc(1) == 1
32
33
34
@mark.parametrize('scm', ['git', 'hg'])
35
def test_get_commit_info(scm, testdir):
36
    if not distutils.spawn.find_executable(scm):
37
        pytest.skip("%r not availabe on $PATH")
38
    subprocess.check_call([scm, 'init', '.'])
39
    if scm == 'git':
40
        subprocess.check_call('git config user.email [email protected]'.split())
41
        subprocess.check_call('git config user.name you'.split())
42
    else:
43
        testdir.tmpdir.join('.hg', 'hgrc').write("""
44
[ui]
45
username = you <[email protected]>
46
""")
47
48
    testdir.makepyfile('asdf')
49
    subprocess.check_call([scm, 'add', 'test_get_commit_info.py'])
50
    subprocess.check_call([scm, 'commit', '-m', 'asdf'])
51
    out = get_commit_info()
52
53
    assert out.get('dirty') == False
54
    assert 'id' in out
55
56
    testdir.makepyfile('sadf')
57
    out = get_commit_info()
58
59
    assert out.get('dirty') == True
60
    assert 'id' in out
61
62
63
def test_parse_warmup():
64
    assert parse_warmup('yes') == True
65
    assert parse_warmup('on') == True
66
    assert parse_warmup('true') == True
67
    assert parse_warmup('off') == False
68
    assert parse_warmup('off') == False
69
    assert parse_warmup('no') == False
70
    assert parse_warmup('') == True
71
    assert parse_warmup('auto') in [True, False]
72
73
74
def test_parse_columns():
75
    assert parse_columns('min,max') == ['min', 'max']
76
    assert parse_columns('MIN, max  ') == ['min', 'max']
77
    with pytest.raises(argparse.ArgumentTypeError):
78
        parse_columns('min,max,x')
79
80
81
@mark.parametrize('scm', [None, 'git', 'hg'])
82
@mark.parametrize('set_remote', [True, False])
83
def test_get_project_name(scm, set_remote, testdir):
84
    if scm is None:
85
        assert get_project_name().startswith("test_get_project_name")
86
        return
87
    if not distutils.spawn.find_executable(scm):
88
        pytest.skip("%r not availabe on $PATH")
89
    subprocess.check_call([scm, 'init', '.'])
90
    if scm == 'git' and set_remote:
91
        subprocess.check_call('git config  remote.origin.url https://example.com/pytest_benchmark_repo.git'.split())
92
    elif scm == 'hg'and set_remote:
93
        testdir.tmpdir.join('.hg', 'hgrc').write("[ui]\n"
94
            "username = you <[email protected]>\n"
95
            "[paths]\n"
96
            "default = https://example.com/pytest_benchmark_repo\n"
97
                                                 )
98
    if set_remote:
99
        assert get_project_name() == "pytest_benchmark_repo"
100
    else:
101
        # use directory name if remote branch is not set
102
        assert get_project_name().startswith("test_get_project_name")
103
104
105
def test_parse_elasticsearch_storage():
106
    assert parse_elasticsearch_storage("http://localhost:9200") == (["http://localhost:9200"], "benchmark", "benchmark", "pytest-benchmark")
107
    assert parse_elasticsearch_storage("http://localhost:9200/benchmark2") == (["http://localhost:9200"], "benchmark2", "benchmark", "pytest-benchmark")
108
    assert parse_elasticsearch_storage("http://localhost:9200/benchmark2/benchmark2") == (["http://localhost:9200"], "benchmark2", "benchmark2", "pytest-benchmark")
109
    assert parse_elasticsearch_storage("http://host1:9200,host2:9200") == (["http://host1:9200", "http://host2:9200"], "benchmark", "benchmark", "pytest-benchmark")
110
    assert parse_elasticsearch_storage("http://host1:9200,host2:9200/benchmark2") == (["http://host1:9200", "http://host2:9200"], "benchmark2", "benchmark", "pytest-benchmark")
111
    assert parse_elasticsearch_storage("http://localhost:9200/benchmark2/benchmark2?project_name=project_name") == (["http://localhost:9200"], "benchmark2", "benchmark2", "project_name")
112