X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/28ee59dd643e4582ade1aa8fd6a788f0a4daf69e..c3238682a8867edfb3c052ca4d2d27b3926ad17a:/test/bdd/environment.py?ds=sidebyside diff --git a/test/bdd/environment.py b/test/bdd/environment.py index 90c75724..8847011a 100644 --- a/test/bdd/environment.py +++ b/test/bdd/environment.py @@ -14,10 +14,15 @@ userconfig = { 'BUILDDIR' : os.path.join(os.path.split(__file__)[0], "../../build"), 'REMOVE_TEMPLATE' : False, 'KEEP_TEST_DB' : False, + 'DB_HOST' : None, + 'DB_PORT' : None, + 'DB_USER' : None, + 'DB_PASS' : None, 'TEMPLATE_DB' : 'test_template_nominatim', 'TEST_DB' : 'test_nominatim', 'API_TEST_DB' : 'test_api_nominatim', 'TEST_SETTINGS_FILE' : '/tmp/nominatim_settings.php', + 'SERVER_MODULE_PATH' : None, 'PHPCOV' : False, # set to output directory to enable code coverage } @@ -30,18 +35,37 @@ class NominatimEnvironment(object): def __init__(self, config): self.build_dir = os.path.abspath(config['BUILDDIR']) self.src_dir = os.path.abspath(os.path.join(os.path.split(__file__)[0], "../..")) + self.db_host = config['DB_HOST'] + self.db_port = config['DB_PORT'] + self.db_user = config['DB_USER'] + self.db_pass = config['DB_PASS'] self.template_db = config['TEMPLATE_DB'] self.test_db = config['TEST_DB'] self.api_test_db = config['API_TEST_DB'] + self.server_module_path = config['SERVER_MODULE_PATH'] self.local_settings_file = config['TEST_SETTINGS_FILE'] self.reuse_template = not config['REMOVE_TEMPLATE'] self.keep_scenario_db = config['KEEP_TEST_DB'] self.code_coverage_path = config['PHPCOV'] self.code_coverage_id = 1 + self.test_env = None os.environ['NOMINATIM_SETTINGS'] = self.local_settings_file self.template_db_done = False + def connect_database(self, dbname): + dbargs = {'database': dbname} + if self.db_host: + dbargs['host'] = self.db_host + if self.db_port: + dbargs['port'] = self.db_port + if self.db_user: + dbargs['user'] = self.db_user + if self.db_pass: + dbargs['password'] = self.db_pass + conn = psycopg2.connect(**dbargs) + return conn + def next_code_coverage_file(self): fn = os.path.join(self.code_coverage_path, "%06d.cov" % self.code_coverage_id) self.code_coverage_id += 1 @@ -49,11 +73,28 @@ class NominatimEnvironment(object): return fn def write_nominatim_config(self, dbname): + dsn = 'pgsql:dbname={}{}{}{}{}'.format( + dbname, + (';host=' + self.db_host) if self.db_host else '', + (';port=' + self.db_port) if self.db_port else '', + (';user=' + self.db_user) if self.db_user else '', + (';password=' + self.db_pass) if self.db_pass else '' + ) + self.test_env = os.environ + self.test_env['NOMINATIM_DATABASE_DSN'] = dsn + self.test_env['NOMINATIM_FLATNODE_FILE'] = '' + self.test_env['NOMINATIM_IMPORT_STYLE'] = 'full' + self.test_env['NOMINATIM_USE_US_TIGER_DATA'] = 'yes' + f = open(self.local_settings_file, 'w') - f.write("