def make(self, *args, **kw): if not self._config.mock_enabled: return None if self._info: return self._info if self._failed: raise Exception('Not invoking failed mock!') bspec_dfl = BucketSpec('default', 'couchbase') mock = CouchbaseMock([bspec_dfl], self._config.mockpath, self._config.mockurl, replicas=2, nodes=4) try: mock.start() except: self._failed = True raise info = ClusterInformation() info.bucket_name = "default" info.port = mock.rest_port info.host = "127.0.0.1" info.admin_username = "******" info.admin_password = "******" info.mock = mock self._info = info return info
def make(self, *args, **kw): if not self._config.mock_enabled: return None if self._info: return self._info bspec_dfl = BucketSpec('default', 'couchbase') bspec_sasl = BucketSpec('default_sasl', 'couchbase', 'secret') mock = CouchbaseMock([bspec_dfl, bspec_sasl], self._config.mockpath, self._config.mockurl, replicas=2, nodes=4) mock.start() info = ClusterInformation() info.bucket_prefix = "default" info.bucket_password = "******" info.port = mock.rest_port info.host = "127.0.0.1" info.admin_username = "******" info.admin_password = "******" info.extra_buckets = True info.mock = mock self._info = info return info
def _setup_mock(self, mockpath, mockurl): bspec_dfl = BucketSpec('default', 'couchbase') bspec_sasl = BucketSpec('default_sasl', 'couchbase', 'secret') self.mock = CouchbaseMock([bspec_dfl, bspec_sasl], mockpath, mockurl, replicas=2, nodes=4) self.mock.start() self.bucket_prefix = "default" self.bucket_password = "******" self.port = self.mock.rest_port self.host = "127.0.0.1" self.username = "******" self.password = "******" self.extra_buckets = True
class CouchbaseTestCase(unittest.TestCase): @classmethod def _setup_mock(self, mockpath, mockurl): bspec_dfl = BucketSpec('default', 'couchbase') bspec_sasl = BucketSpec('default_sasl', 'couchbase', 'secret') self.mock = CouchbaseMock([bspec_dfl, bspec_sasl], mockpath, mockurl, replicas=2, nodes=4) self.mock.start() self.bucket_prefix = "default" self.bucket_password = "******" self.port = self.mock.rest_port self.host = "127.0.0.1" self.username = "******" self.password = "******" self.extra_buckets = True @classmethod def setupClass(self): config = ConfigParser() config.read(CONFIG_FILE) self.host = config.get('node-1', 'host') self.port = config.getint('node-1', 'port') self.username = config.get('node-1', 'username') self.password = config.get('node-1', 'password') self.bucket_prefix = config.get('node-1', 'bucket_prefix') self.bucket_password = config.get('node-1', 'bucket_password') self.nosleep = os.environ.get('PYCBC_TESTS_NOSLEEP', False) self.extra_buckets = bool(int(config.get('node-1', 'extra_buckets'))) self.mock = None if config.has_option("mock", "enabled"): if config.getboolean("mock", "enabled"): mockpath = config.get("mock", "path") if config.has_option("mock", "url"): mockurl = config.get("mock", "url") else: mockurl = None self._setup_mock(mockpath, mockurl) @classmethod def teardownClass(self): if self.mock: self.mock.stop() self.mock = None def setUp(self): if not hasattr(self, 'assertIsInstance'): def tmp(self, a, *bases): self.assertTrue(isinstance(a, bases)) self.assertIsInstance = types.MethodType(tmp, self) if not hasattr(self, 'assertIsNone'): def tmp(self, a): self.assertTrue(a is None) self.assertIsNone = types.MethodType(tmp, self) self._key_counter = 0 def get_sasl_params(self): if not self.bucket_password: return None ret = self.make_connargs() ret = { 'password' : self.bucket_password, 'bucket' : self.bucket_prefix } if self.extra_buckets: ret['bucket'] += "_sasl" return ret def skipUnlessSasl(self): sasl_params = self.get_sasl_params() if not sasl_params: raise SkipTest("No SASL buckets configured") def skipLcbMin(self, vstr): """ Test requires a libcouchbase version of at least vstr. This may be a hex number (e.g. 0x020007) or a string (e.g. "2.0.7") """ if isinstance(vstr, basestring): components = vstr.split('.') hexstr = "0x" for comp in components: if len(comp) > 2: raise ValueError("Version component cannot be larger than 99") hexstr += "{0:02}".format(int(comp)) vernum = int(hexstr, 16) else: vernum = vstr components = [] # Get the display for x in range(0, 3): comp = (vernum & 0xff << (x*8)) >> x*8 comp = "{0:x}".format(comp) components = [comp] + components vstr = ".".join(components) rtstr, rtnum = Connection.lcb_version() if rtnum < vernum: raise SkipTest(("Test requires {0} to run (have {1})") .format(vstr, rtstr)) def tearDown(self): pass def skipIfMock(self): if self.mock: raise SkipTest("Test not supported on Mock") def skipUnlessMock(self): if not self.mock: raise SkipTest("Test requires CouchbaseMock") def make_connargs(self, **overrides): ret = { 'host' : self.host, 'port' : self.port, 'username' : self.username, 'password' : self.password, 'bucket' : self.bucket_prefix } ret.update(overrides) return ret def slowTest(self): if self.nosleep: raise SkipTest("Skipping slow/sleep-based test") def make_connection(self, **kwargs): return Connection(**self.make_connargs(**kwargs)) def make_admin_connection(self): return Admin(self.username, self.password, self.host, self.port) def gen_key(self, prefix=None): if not prefix: prefix = "python-couchbase-key_" ret = "{0}{1}".format(prefix, self._key_counter) self._key_counter += 1 return ret def gen_key_list(self, amount=5, prefix=None): ret = [ self.gen_key(prefix) for x in range(amount) ] return ret def gen_kv_dict(self, amount=5, prefix=None): ret = {} keys = self.gen_key_list(amount=amount, prefix=prefix) for k in keys: ret[k] = "Value_For_" + k return ret
class CouchbaseTestCase(unittest.TestCase): @classmethod def _setup_mock(self, mockpath, mockurl): bspec_dfl = BucketSpec('default', 'couchbase') bspec_sasl = BucketSpec('default_sasl', 'couchbase', 'secret') self.mock = CouchbaseMock([bspec_dfl, bspec_sasl], mockpath, mockurl, replicas=2, nodes=4) self.mock.start() self.bucket_prefix = "default" self.bucket_password = "******" self.port = self.mock.rest_port self.host = "127.0.0.1" self.username = "******" self.password = "******" self.extra_buckets = True @classmethod def setupClass(self): config = ConfigParser() config.read(CONFIG_FILE) self.host = config.get('node-1', 'host') self.port = config.getint('node-1', 'port') self.username = config.get('node-1', 'username') self.password = config.get('node-1', 'password') self.bucket_prefix = config.get('node-1', 'bucket_prefix') self.bucket_password = config.get('node-1', 'bucket_password') self.nosleep = os.environ.get('PYCBC_TESTS_NOSLEEP', False) self.extra_buckets = bool(int(config.get('node-1', 'extra_buckets'))) self.mock = None if config.has_option("mock", "enabled"): if config.getboolean("mock", "enabled"): mockpath = config.get("mock", "path") if config.has_option("mock", "url"): mockurl = config.get("mock", "url") else: mockurl = None self._setup_mock(mockpath, mockurl) def setUp(self): if not hasattr(self, 'assertIsInstance'): def tmp(self, a, *bases): self.assertTrue(isinstance(a, bases)) self.assertIsInstance = types.MethodType(tmp, self) if not hasattr(self, 'assertIsNone'): def tmp(self, a): self.assertTrue(a is None) self.assertIsNone = types.MethodType(tmp, self) self._key_counter = 0 def get_sasl_params(self): if not self.bucket_password: return None ret = self.make_connargs() ret = { 'password' : self.bucket_password, 'bucket' : self.bucket_prefix } if self.extra_buckets: ret['bucket'] += "_sasl" return ret def skipUnlessSasl(self): sasl_params = self.get_sasl_params() if not sasl_params: raise SkipTest("No SASL buckets configured") def skipLcbMin(self, vstr): """ Test requires a libcouchbase version of at least vstr. This may be a hex number (e.g. 0x020007) or a string (e.g. "2.0.7") """ if isinstance(vstr, basestring): components = vstr.split('.') hexstr = "0x" for comp in components: if len(comp) > 2: raise ValueError("Version component cannot be larger than 99") hexstr += "{0:02}".format(int(comp)) vernum = int(hexstr, 16) else: vernum = vstr components = [] # Get the display for x in range(0, 3): comp = (vernum & 0xff << (x*8)) >> x*8 comp = "{0:x}".format(comp) components = [comp] + components vstr = ".".join(components) rtstr, rtnum = Connection.lcb_version() if rtnum < vernum: raise SkipTest(("Test requires {0} to run (have {1})") .format(vstr, rtstr)) def tearDown(self): pass def skipIfMock(self): if self.mock: raise SkipTest("Test not supported on Mock") def skipUnlessMock(self): if not self.mock: raise SkipTest("Test requires CouchbaseMock") def make_connargs(self, **overrides): ret = { 'host' : self.host, 'port' : self.port, 'username' : self.username, 'password' : self.password, 'bucket' : self.bucket_prefix } ret.update(overrides) return ret def slowTest(self): if self.nosleep: raise SkipTest("Skipping slow/sleep-based test") def make_connection(self, **kwargs): return Connection(**self.make_connargs(**kwargs)) def make_admin_connection(self): return Admin(self.username, self.password, self.host, self.port) def gen_key(self, prefix=None): if not prefix: prefix = "python-couchbase-key_" ret = "{0}{1}".format(prefix, self._key_counter) self._key_counter += 1 return ret def gen_key_list(self, amount=5, prefix=None): ret = [ self.gen_key(prefix) for x in range(amount) ] return ret def gen_kv_dict(self, amount=5, prefix=None): ret = {} keys = self.gen_key_list(amount=amount, prefix=prefix) for k in keys: ret[k] = "Value_For_" + k return ret