def main(): import argparse parser = argparse.ArgumentParser( description="Run development servers", epilog=EPILOG, formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument('--app-name', help="Pyramid app name in configfile") parser.add_argument('config_uri', help="path to configfile") parser.add_argument('--clear', action="store_true", help="Clear existing data") parser.add_argument('--init', action="store_true", help="Init database") parser.add_argument('--load', action="store_true", help="Load test set") parser.add_argument('--datadir', default='/tmp/clincoded', help="path to datadir") args = parser.parse_args() logging.basicConfig() # Loading app will have configured from config file. Reconfigure here: logging.getLogger('clincoded').setLevel(logging.DEBUG) from clincoded.tests import elasticsearch_fixture, postgresql_fixture from contentbase.elasticsearch import create_mapping datadir = os.path.abspath(args.datadir) pgdata = os.path.join(datadir, 'pgdata') esdata = os.path.join(datadir, 'esdata') if args.clear: for dirname in [pgdata, esdata]: if os.path.exists(dirname): shutil.rmtree(dirname) if args.init: postgresql_fixture.initdb(pgdata, echo=True) postgres = postgresql_fixture.server_process(pgdata, echo=True) elasticsearch = elasticsearch_fixture.server_process(esdata, echo=True) processes = [postgres, elasticsearch] @atexit.register def cleanup_process(): for process in processes: if process.poll() is None: process.terminate() for process in processes: try: for line in process.stdout: sys.stdout.write(line.decode('utf-8')) except IOError: pass process.wait() if args.init: app = get_app(args.config_uri, args.app_name) create_mapping.run(app) if args.load: from webtest import TestApp environ = { 'HTTP_ACCEPT': 'application/json', 'REMOTE_USER': '******', } testapp = TestApp(app, environ) from clincoded.loadxl import load_all from pkg_resources import resource_filename inserts = resource_filename('clincoded', 'tests/data/inserts/') docsdir = [resource_filename('clincoded', 'tests/data/documents/')] load_all(testapp, inserts, docsdir) print('Started. ^C to exit.') stdouts = [p.stdout for p in processes] # Ugly should probably use threads instead while True: readable, writable, err = select.select(stdouts, [], stdouts, 5) for stdout in readable: for line in iter(stdout.readline, b''): sys.stdout.write(line.decode('utf-8')) if err: for stdout in err: for line in iter(stdout.readline, b''): sys.stdout.write(line.decode('utf-8')) break
def teardown(app, dbapi_conn): from contentbase.elasticsearch import create_mapping create_mapping.run(app) cursor = dbapi_conn.cursor() cursor.execute("""TRUNCATE resources, transactions CASCADE;""") cursor.close()
def app(app_settings): from .. import test_indexing from contentbase.elasticsearch import create_mapping for app in test_indexing.app(app_settings): create_mapping.run(app) yield app
def app(app_settings): from .. import test_indexing from contentbase.elasticsearch import create_mapping for app in test_indexing.app(app_settings): create_mapping.run(app) yield app
def main(): import argparse parser = argparse.ArgumentParser( description="Run development servers", epilog=EPILOG, formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument('--app-name', help="Pyramid app name in configfile") parser.add_argument('config_uri', help="path to configfile") parser.add_argument('--clear', action="store_true", help="Clear existing data") parser.add_argument('--init', action="store_true", help="Init database") parser.add_argument('--load', action="store_true", help="Load test set") parser.add_argument('--datadir', default='/tmp/clincoded', help="path to datadir") args = parser.parse_args() logging.basicConfig() # Loading app will have configured from config file. Reconfigure here: logging.getLogger('clincoded').setLevel(logging.DEBUG) from clincoded.tests import elasticsearch_fixture, postgresql_fixture from contentbase.elasticsearch import create_mapping datadir = os.path.abspath(args.datadir) pgdata = os.path.join(datadir, 'pgdata') esdata = os.path.join(datadir, 'esdata') if args.clear: for dirname in [pgdata, esdata]: if os.path.exists(dirname): shutil.rmtree(dirname) if args.init: postgresql_fixture.initdb(pgdata, echo=True) postgres = postgresql_fixture.server_process(pgdata, echo=True) elasticsearch = elasticsearch_fixture.server_process(esdata, echo=True) processes = [postgres, elasticsearch] @atexit.register def cleanup_process(): for process in processes: if process.poll() is None: process.terminate() for process in processes: try: for line in process.stdout: sys.stdout.write(line.decode('utf-8')) except IOError: pass process.wait() if args.init: app = get_app(args.config_uri, args.app_name) create_mapping.run(app) if args.load: from webtest import TestApp environ = { 'HTTP_ACCEPT': 'application/json', 'REMOTE_USER': '******', } testapp = TestApp(app, environ) from clincoded.loadxl import load_all from pkg_resources import resource_filename inserts = resource_filename('clincoded', 'tests/data/inserts/') docsdir = [resource_filename('clincoded', 'tests/data/documents/')] load_all(testapp, inserts, docsdir) print('Started. ^C to exit.') stdouts = [p.stdout for p in processes] # Ugly should probably use threads instead while True: readable, writable, err = select.select(stdouts, [], stdouts, 5) for stdout in readable: for line in iter(stdout.readline, b''): sys.stdout.write(line.decode('utf-8')) if err: for stdout in err: for line in iter(stdout.readline, b''): sys.stdout.write(line.decode('utf-8')) break