def setUp(self): super(TestMeta0PrefixMapping, self).setUp() self.account = "test_prefixmapping" self.reference = "prefixmapping-" + random_str(4) self.meta0_client = Meta0Client(self.conf) self.mapping = Meta0PrefixMapping(self.meta0_client, logger=self.logger)
def _take_action(self, parsed_args): import subprocess from oio.directory.meta0 import Meta0Client from oio.common.json import json self.logger.debug("Checking the directory bootstrap.") # Get an official dump from the proxy, check its size m0 = Meta0Client({"namespace": self.app.options.ns}) prefixes = m0.list() if len(prefixes) != CID_PREFIX_COUNT: raise ValueError('Found %d entries in meta0, expected %d' % (len(prefixes), CID_PREFIX_COUNT)) self.logger.info("The proxy serves a full meta0 dump.") # contact each M0 to perform a check: any "get" command will # fail if the meta0 is not complete. Unfortunately we just have # oio-meta0-client to target a specific service. for _, host, port, _ in self.filter_services(self.catalog, 'meta0'): url = '%s:%d' % (host, port) res = subprocess.check_output( ['oio-meta0-client', url, 'get', '0000']) self.logger.info(res) self.logger.info("All meta0 services are complete.") # contact each meta0 to check that all the dumps are identical dump0 = None first = None for _, host, port, _ in self.filter_services(self.catalog, 'meta0'): url = '%s:%d' % (host, port) dump = subprocess.check_output(['oio-meta0-client', url, 'list']) if dump0 is None: dump0 = dump first = url elif dump0 != dump: raise ValueError('The dump returned by meta0 %s differs from ' 'the dump returned by %s' % (url, first)) self.logger.info("All meta0 services serve the same base.") # Check all the meta1 are concerned reverse_dump = set() for _, v in iteritems(json.loads(dump0)): for url in v: reverse_dump.add(url) m1 = { ':'.join((descr[1], str(descr[2]))) for descr in self.filter_services(self.catalog, 'meta1') } if m1 != reverse_dump: raise ValueError('Meta1 used but not visible: %s, ' 'meta1 visible but not used: %s' % (reverse_dump - m1, m1 - reverse_dump)) self.logger.info("All meta1 services have been assigned.") yield ('OK', None)
def _take_action(self, parsed_args): import subprocess from oio.directory.meta0 import Meta0Client from oio.common.json import json self.logger.debug("Checking the directory bootstrap.") # Get an official dump from the proxy, check its size m0 = Meta0Client({"namespace": self.app.options.ns}) prefixes = m0.list() assert len(prefixes) == 65536 self.logger.info("The proxy serves a full meta0 dump.") # contact each M0 to perform a check: any "get" command will # fail if the meta0 is not complete. Unfortunately we just have # oio-meta0-client to target a specific service. for t, i, p, s in self.filter_services(self.catalog, 'meta0'): url = '%s:%d' % (i, p) res = subprocess.check_output( ['oio-meta0-client', url, 'get', '0000']) self.logger.info(res) self.logger.info("All meta0 services are complete.") # contact each meta0 to check that all the dumps are identical dump0 = None for t, i, p, s in self.filter_services(self.catalog, 'meta0'): url = '%s:%d' % (i, p) dump = subprocess.check_output(['oio-meta0-client', url, 'list']) if dump0 is None: dump0 = dump else: assert dump0 == dump self.logger.info("All meta0 services serve the same base.") # Check all the meta1 are concerned reverse_dump = set() for _, v in iteritems(json.loads(dump0)): for url in v: reverse_dump.add(url) m1 = list(self.filter_services(self.catalog, 'meta1')) # FIXME(FVE): this check does not guarantee items are the same assert len(m1) == len(reverse_dump) self.logger.info("All meta1 services have been assigned.") yield ('OK', None)
def setUp(self): super(TestPrefixMapping, self).setUp() self.cs_client = FakeConscienceClient() self.m0_client = Meta0Client({'namespace': self.ns})
def meta0(self): if not self._meta0: from oio.directory.meta0 import Meta0Client self._meta0 = Meta0Client(self.conf, pool_manager=self.pool_manager) return self._meta0
def meta0(self): if not self._meta0: self._meta0 = Meta0Client(self.conf, session=self.session) return self._meta0
def meta0(self): if not self._meta0: from oio.directory.meta0 import Meta0Client self._meta0 = Meta0Client(self.conf) return self._meta0