""" Rados modle-based integration tests """ import contextlib import logging log = logging.getLogger(__name__) @contextlib.contextmanager def task(ctx, config): """ For each combination of namespace and name_length, create objects with name length on entry. On exit, verify that the objects still exist, can be deleted, and then don't exist. Usage:: create_verify_lfn_objects.py: pool: default: 'data' prefix: default: '' namespace: [] default: [''] num_objects: [] default: 10 name_length: [] default: [400] """ pool = config.get('pool', 'data') num_objects = config.get('num_objects', 10) name_length = config.get('name_length', [400]) namespace = config.get('namespace', [None]) prefix = config.get('prefix', None) manager = ctx.managers['ceph'] objects = [] for l in name_length: for ns in namespace: def object_name(i): nslength = 0 if namespace is not '': nslength = len(namespace) numstr = str(i) fillerlen = l - nslength - len(prefix) - len(numstr) assert fillerlen >= 0 return prefix + ('a'*fillerlen) + numstr objects += [(ns, object_name(i)) for i in range(num_objects)] for ns, name in objects: err = manager.do_put( pool, name, '/etc/resolv.conf', namespace=ns) log.info("err is " + str(err)) assert err == 0 try: yield finally: log.info('ceph_verify_lfn_objects verifying...') for ns, name in objects: err = manager.do_get( pool, name, namespace=ns) log.info("err is " + str(err)) assert err == 0 log.info('ceph_verify_lfn_objects deleting...') for ns, name in objects: err = manager.do_rm( pool, name, namespace=ns) log.info("err is " + str(err)) assert err == 0 log.info('ceph_verify_lfn_objects verifying absent...') for ns, name in objects: err = manager.do_get( pool, name, namespace=ns) log.info("err is " + str(err)) assert err != 0