]> git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/create_verify_lfn_objects.py
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / qa / tasks / create_verify_lfn_objects.py
1 """
2 Rados modle-based integration tests
3 """
4 import contextlib
5 import logging
6
7 log = logging.getLogger(__name__)
8
9 @contextlib.contextmanager
10 def task(ctx, config):
11 """
12 For each combination of namespace and name_length, create
13 <num_objects> objects with name length <name_length>
14 on entry. On exit, verify that the objects still exist, can
15 be deleted, and then don't exist.
16
17 Usage::
18
19 create_verify_lfn_objects.py:
20 pool: <pool_name> default: 'data'
21 prefix: <prefix> default: ''
22 namespace: [<namespace>] default: ['']
23 num_objects: [<num_objects>] default: 10
24 name_length: [<name_length>] default: [400]
25 """
26 pool = config.get('pool', 'data')
27 num_objects = config.get('num_objects', 10)
28 name_length = config.get('name_length', [400])
29 namespace = config.get('namespace', [None])
30 prefix = config.get('prefix', None)
31 manager = ctx.managers['ceph']
32
33 objects = []
34 for l in name_length:
35 for ns in namespace:
36 def object_name(i):
37 nslength = 0
38 if namespace is not '':
39 nslength = len(namespace)
40 numstr = str(i)
41 fillerlen = l - nslength - len(prefix) - len(numstr)
42 assert fillerlen >= 0
43 return prefix + ('a'*fillerlen) + numstr
44 objects += [(ns, object_name(i)) for i in range(num_objects)]
45
46 for ns, name in objects:
47 err = manager.do_put(
48 pool,
49 name,
50 '/etc/resolv.conf',
51 namespace=ns)
52 log.info("err is " + str(err))
53 assert err == 0
54
55 try:
56 yield
57 finally:
58 log.info('ceph_verify_lfn_objects verifying...')
59 for ns, name in objects:
60 err = manager.do_get(
61 pool,
62 name,
63 namespace=ns)
64 log.info("err is " + str(err))
65 assert err == 0
66
67 log.info('ceph_verify_lfn_objects deleting...')
68 for ns, name in objects:
69 err = manager.do_rm(
70 pool,
71 name,
72 namespace=ns)
73 log.info("err is " + str(err))
74 assert err == 0
75
76 log.info('ceph_verify_lfn_objects verifying absent...')
77 for ns, name in objects:
78 err = manager.do_get(
79 pool,
80 name,
81 namespace=ns)
82 log.info("err is " + str(err))
83 assert err != 0