Package yakumo ::
Module smoketest
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import argparse
20 from contextlib import contextmanager
21 import logging
22 import os
23 import os.path
24 import random
25 import sys
26
27 import os_client_config
28
29 from yakumo import Client, utils
30
31
32 __all__ = ('c', 'LOG', 'cleaner', 'get_random_str', 'test',
33 'show_test_summary')
34
35 SOURCE = "abcdefghijklmnopqrstuvwxyz" \
36 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
37 "0123456789"
38
39 TEST_LOGS = []
40
41 ENVIRONMENT_VARIABLES = {
42 'os_cloud': 'OS_CLOUD',
43 'os_cert': 'OS_CERT',
44 'os_cacert': 'OS_CACERT',
45 'os_region_name': 'OS_REGION_NAME',
46 'os_interface': 'OS_INTERFACE',
47 'os_key': 'OS_KEY',
48 'os_auth_type': 'OS_AUTH_TYPE',
49 }
50
51
52 kwargs = {dest: os.environ.get(env)
53 for dest, env in ENVIRONMENT_VARIABLES.items()}
54 parser = argparse.ArgumentParser()
55 cloud_config = os_client_config.OpenStackConfig()
56 cloud_config.register_argparse_arguments(parser, sys.argv)
57 for opt in parser._actions:
58 if opt.dest in ENVIRONMENT_VARIABLES:
59 opt.metavar = ENVIRONMENT_VARIABLES[opt.dest]
60 parser.set_defaults(timeout=None, insecure=False, **kwargs)
61 options = parser.parse_args()
62 c = Client(**options.__dict__)
63
64 LOG = logging.getLogger(os.path.basename(sys.argv[0]))
65 LOG.setLevel(logging.DEBUG)
66 ch = logging.StreamHandler()
67 ch.setLevel(logging.DEBUG)
68 formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
69 ch.setFormatter(formatter)
70 LOG.addHandler(ch)
71
72
73 @contextmanager
74 -def cleaner(resource):
75 try:
76 yield resource
77 except Exception as e:
78 LOG.exception("Error occured: %s", e)
79 TEST_LOGS.append((str(e), False))
80 finally:
81 if hasattr(resource, 'name'):
82 LOG.info("Delete %s", resource.name)
83 else:
84 LOG.info("Delete %s", resource.get_id())
85 resource.delete()
86 LOG.debug("waiting for deleted")
87 resource.wait_for_finished()
88
91 return prefix + "-" + "".join(random.sample(SOURCE, 10))
92
93
94 -def test(label, condition):
100
103 _ok = 0
104 _ng = 0
105 for label, condition in TEST_LOGS:
106 if condition:
107 _ok += 1
108 else:
109 _ng += 1
110 LOG.info("Test results: OK=%s, NG=%s" % (_ok, _ng))
111 for label, condition in TEST_LOGS:
112 if not condition:
113 LOG.debug("NG: %s" % label)
114