blob: 2556bcfb05e10fc55f57d1b8981462da458b712a [file] [log] [blame]
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +00001import pytest
2import json
Oleksii Zhurbae0668ae2017-10-27 23:58:18 +00003import os
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +00004from cvp_checks import utils
5
6
7@pytest.mark.parametrize(
8 "group",
Oleksii Zhurbae0668ae2017-10-27 23:58:18 +00009 utils.get_groups(os.path.basename(__file__))
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +000010)
11def test_check_package_versions(local_salt_client, group):
Oleksii Zhurbae0668ae2017-10-27 23:58:18 +000012 if "skipped" in group:
13 pytest.skip("skipped in config")
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +000014 output = local_salt_client.cmd(group, 'lowpkg.list_pkgs', expr_form='pcre')
15
16 if len(output.keys()) < 2:
17 pytest.skip("Nothing to compare - only 1 node")
18
19 nodes = []
20 pkts_data = []
21 my_set = set()
22
23 for node in output:
24 nodes.append(node)
25 my_set.update(output[node].keys())
26
27 for deb in my_set:
28 diff = []
29 row = []
30 for node in nodes:
31 if deb in output[node].keys():
32 diff.append(output[node][deb])
33 row.append("{}: {}".format(node, output[node][deb]))
34 else:
35 row.append("{}: No package".format(node))
36 if diff.count(diff[0]) < len(nodes):
37 row.sort()
38 row.insert(0, deb)
39 pkts_data.append(row)
40 assert len(pkts_data) <= 1, \
41 "Several problems found for {0} group: {1}".format(
42 group, json.dumps(pkts_data, indent=4))
43
44
45@pytest.mark.parametrize(
46 "group",
Oleksii Zhurbae0668ae2017-10-27 23:58:18 +000047 utils.get_groups(os.path.basename(__file__))
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +000048)
49def test_check_module_versions(local_salt_client, group):
Oleksii Zhurbae0668ae2017-10-27 23:58:18 +000050 if "skipped" in group:
51 pytest.skip("skipped in config")
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +000052 pre_check = local_salt_client.cmd(
53 group, 'cmd.run', ['dpkg -l | grep "python-pip "'], expr_form='pcre')
54 if pre_check.values().count('') > 0:
55 pytest.skip("pip is not installed on one or more nodes")
56 if len(pre_check.keys()) < 2:
57 pytest.skip("Nothing to compare - only 1 node")
58 output = local_salt_client.cmd(group, 'pip.freeze', expr_form='pcre')
59
60 nodes = []
61 pkts_data = []
62 my_set = set()
63
64 for node in output:
65 nodes.append(node)
66 my_set.update([x.split("=")[0] for x in output[node]])
67 output[node] = dict([x.split("==") for x in output[node]])
68
69 for deb in my_set:
70 diff = []
71 row = []
72 for node in nodes:
73 if deb in output[node].keys():
74 diff.append(output[node][deb])
75 row.append("{}: {}".format(node, output[node][deb]))
76 else:
77 row.append("{}: No module".format(node))
78 if diff.count(diff[0]) < len(nodes):
79 row.sort()
80 row.insert(0, deb)
81 pkts_data.append(row)
82 assert len(pkts_data) <= 1, \
83 "Several problems found for {0} group: {1}".format(
84 group, json.dumps(pkts_data, indent=4))