def test_redis(self): port = 6384 f = self.useFixture(redis.RedisDriver(port=port)) self.assertEqual("redis://localhost:%d" % port, os.getenv("PIFPAF_URL")) self.assertEqual(str(port), os.getenv("PIFPAF_REDIS_PORT")) self._run("redis-cli -p %d llen pifpaf" % f.port)
def test_redis_sentinel(self): port = 6385 f = self.useFixture(redis.RedisDriver(sentinel=True, port=port)) self.assertEqual("redis://localhost:%d" % port, os.getenv("PIFPAF_URL")) self.assertEqual(str(port), os.getenv("PIFPAF_REDIS_PORT")) self.assertEqual("6380", os.getenv("PIFPAF_REDIS_SENTINEL_PORT")) self._run("redis-cli -p %d sentinel master pifpaf" % f.sentinel_port)
def _setUp(self): super(GnocchiDriver, self)._setUp() try: shutil.copy(self.find_config_file("gnocchi/api-paste.ini"), self.tempdir) except RuntimeError: pass try: shutil.copy(self.find_config_file("gnocchi/policy.json"), self.tempdir) except RuntimeError: pass if self.indexer_url is None: pg = self.useFixture( postgresql.PostgreSQLDriver(port=self.indexer_port)) self.indexer_url = pg.url if self.storage_url is None: self.storage_url = "file://%s" % self.tempdir conffile = os.path.join(self.tempdir, "gnocchi.conf") storage_parsed = urlparse.urlparse(self.storage_url) storage_driver = storage_parsed.scheme if storage_driver == "s3": storage_config = { "s3_access_key_id": (urlparse.unquote(storage_parsed.username or "gnocchi")), "s3_secret_access_key": (urlparse.unquote(storage_parsed.password or "whatever")), "s3_endpoint_url": "http://%s:%s/%s" % ( storage_parsed.hostname, storage_parsed.port, storage_parsed.path, ) } elif storage_driver == "swift": storage_config = { "swift_authurl": "http://%s:%s%s" % ( storage_parsed.hostname, storage_parsed.port, storage_parsed.path, ), "swift_user": (urlparse.unquote(storage_parsed.username or "admin:admin")), "swift_key": (urlparse.unquote(storage_parsed.password or "admin")), } elif storage_driver == "ceph": storage_config = { "ceph_conffile": storage_parsed.path, } elif storage_driver == "redis": storage_config = { "redis_url": self.storage_url, } elif storage_driver == "file": storage_config = { "file_basepath": (storage_parsed.path or self.tempdir), } else: raise RuntimeError("Storage driver %s is not supported" % storage_driver) if self.coordination_driver == "redis": r = self.useFixture(redis.RedisDriver(port=self.coordination_port)) storage_config["coordination_url"] = r.url storage_config_string = "\n".join("%s = %s" % (k, v) for k, v in storage_config.items()) statsd_resource_id = str(uuid.uuid4()) with open(conffile, "w") as f: f.write("""[DEFAULT] debug = %s verbose = True [storage] driver = %s %s [metricd] metric_processing_delay = 1 metric_cleanup_delay = 1 [statsd] resource_id = %s creator = admin user_id = admin project_id = admin [indexer] url = %s""" % (self.debug, storage_driver, storage_config_string, statsd_resource_id, self.indexer_url)) self._exec(["gnocchi-upgrade", "--config-file=%s" % conffile]) c, _ = self._exec(["gnocchi-metricd", "--config-file=%s" % conffile], wait_for_line="metrics wait to be processed") c, _ = self._exec( ["gnocchi-statsd", "--config-file=%s" % conffile], wait_for_line=("(Resource .* already exists" "|Created resource )")) args = [ "uwsgi", "--http", "localhost:%d" % self.port, "--wsgi-file", spawn.find_executable("gnocchi-api"), "--master", "--die-on-term", "--lazy-apps", "--processes", "4", "--no-orphans", "--enable-threads", "--chdir", self.tempdir, "--add-header", "Connection: close", "--pyargv", "--config-file=%s" % conffile, ] virtual_env = os.getenv("VIRTUAL_ENV") if virtual_env is not None: args.extend(["-H", virtual_env]) c, _ = self._exec(args, wait_for_line="WSGI app 0 \(mountpoint=''\) ready") self.addCleanup(self._kill, c) self.http_url = "http://localhost:%d" % self.port self.putenv("GNOCCHI_PORT", str(self.port)) self.putenv("URL", "gnocchi://localhost:%d" % self.port) self.putenv("GNOCCHI_HTTP_URL", self.http_url) self.putenv("GNOCCHI_ENDPOINT", self.http_url, True) self.putenv("OS_AUTH_TYPE", "gnocchi-basic", True) self.putenv("GNOCCHI_STATSD_RESOURCE_ID", statsd_resource_id, True) self.putenv("GNOCCHI_USER", "admin", True)