def test_parse_db_settings_with_multi_tenancy(self):
     settings = {'edware.db.echo': 'False',
                 'edware.db.dummyTenant.echo': 'True',
                 'edware.db.schema_name': 'myname',
                 'edware.db.dummyTenant.schema_name': 'dummySchema',
                 'edware.db.dummyTenant.url': 'sqlite:///:memory:',
                 'edware.db.dummyTenant.state_code': 'NC',
                 'edware.db.aTenant.url': 'sqlite:///:memory:',
                 'edware.db.aTenant.state_code': 'AB',
                 'edware.db.bTenant.url': 'sqlite:///:memory:',
                 'edware.db.bTenant.state_code': 'AB',
                 'edware.db.bTenant.echo': 'True',
                 'ignoreMe': 'setting',
                 'dummy': 'other settings'}
     initialize_db(EdCoreDBConnection, settings)
     self.assertEquals(len(get_data_source_names()), 3)
     self.assertIn('edware.db.dummyTenant', get_data_source_names())
     self.assertIn('edware.db.aTenant', get_data_source_names())
     self.assertIn('edware.db.bTenant', get_data_source_names())
     dbUtil = component.queryUtility(IDbUtil, 'edware.db.dummyTenant')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_engine().echo, True)
     self.assertEqual(dbUtil.get_metadata().schema, settings['edware.db.dummyTenant.schema_name'])
     self.assertEqual(dbUtil.get_engine().url.database, ':memory:')
     dbUtil = component.queryUtility(IDbUtil, 'edware.db.aTenant')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_engine().echo, False)
     self.assertEqual(dbUtil.get_metadata().schema, settings['edware.db.schema_name'])
     self.assertEqual(dbUtil.get_engine().url.database, ':memory:')
     dbUtil = component.queryUtility(IDbUtil, 'edware.db.bTenant')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_engine().echo, True)
     self.assertEqual(dbUtil.get_metadata().schema, settings['edware.db.schema_name'])
     self.assertEqual(dbUtil.get_engine().url.database, ':memory:')
 def test_initialize_db_without_tenants(self):
     settings = {'edware_stats.db.schema_name': 'dummySchema',
                 'edware_stats.db.url': 'sqlite:///:memory:'}
     initialize_db(StatsDBConnection, settings)
     self.assertEquals(len(get_data_source_names()), 1)
     self.assertIn('edware_stats.db', get_data_source_names())
     dbUtil = component.queryUtility(IDbUtil, 'edware_stats.db')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_metadata().schema, settings['edware_stats.db.schema_name'])
Esempio n. 3
0
 def test_initialize_db_without_tenants(self):
     settings = {
         'edware_stats.db.schema_name': 'dummySchema',
         'edware_stats.db.url': 'sqlite:///:memory:'
     }
     initialize_db(StatsDBConnection, settings)
     self.assertEquals(len(get_data_source_names()), 1)
     self.assertIn('edware_stats.db', get_data_source_names())
     dbUtil = component.queryUtility(IDbUtil, 'edware_stats.db')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_metadata().schema,
                      settings['edware_stats.db.schema_name'])
Esempio n. 4
0
 def test_parse_db_settings_with_multi_tenancy(self):
     settings = {
         'edware.db.echo': 'False',
         'edware.db.dummyTenant.echo': 'True',
         'edware.db.schema_name': 'myname',
         'edware.db.dummyTenant.schema_name': 'dummySchema',
         'edware.db.dummyTenant.url': 'sqlite:///:memory:',
         'edware.db.dummyTenant.state_code': 'NC',
         'edware.db.aTenant.url': 'sqlite:///:memory:',
         'edware.db.aTenant.state_code': 'AB',
         'edware.db.bTenant.url': 'sqlite:///:memory:',
         'edware.db.bTenant.state_code': 'AB',
         'edware.db.bTenant.echo': 'True',
         'ignoreMe': 'setting',
         'dummy': 'other settings'
     }
     initialize_db(EdCoreDBConnection, settings)
     self.assertEquals(len(get_data_source_names()), 3)
     self.assertIn('edware.db.dummyTenant', get_data_source_names())
     self.assertIn('edware.db.aTenant', get_data_source_names())
     self.assertIn('edware.db.bTenant', get_data_source_names())
     dbUtil = component.queryUtility(IDbUtil, 'edware.db.dummyTenant')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_engine().echo, True)
     self.assertEqual(dbUtil.get_metadata().schema,
                      settings['edware.db.dummyTenant.schema_name'])
     self.assertEqual(dbUtil.get_engine().url.database, ':memory:')
     dbUtil = component.queryUtility(IDbUtil, 'edware.db.aTenant')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_engine().echo, False)
     self.assertEqual(dbUtil.get_metadata().schema,
                      settings['edware.db.schema_name'])
     self.assertEqual(dbUtil.get_engine().url.database, ':memory:')
     dbUtil = component.queryUtility(IDbUtil, 'edware.db.bTenant')
     self.assertIsNotNone(dbUtil)
     self.assertEqual(dbUtil.get_engine().echo, True)
     self.assertEqual(dbUtil.get_metadata().schema,
                      settings['edware.db.schema_name'])
     self.assertEqual(dbUtil.get_engine().url.database, ':memory:')
Esempio n. 5
0
def main(config_file, resource_dir, tenant_to_update, state_code, state_name, update_year):
    '''
    Imports data from csv
    '''
    config = configparser.ConfigParser()
    config.read(config_file)

    initialize_db(EdCoreDBConnection, config['app:main'])
    for tenant in get_data_source_names():
        if tenant_to_update in tenant:
            delete_data(tenant)
            import_csv_dir(resource_dir, tenant)
            load_fact_asmt_outcome(tenant)
            update_state(tenant, state_code, state_name)
            if update_year:
                update_aca_year(tenant)
Esempio n. 6
0
def check_datasource(request):
    '''
    GET request that executes a Select 1 and returns status of 200 if database returns results

    :param request:  Pyramid request object
    '''
    error_msg = ''
    try:
        results = None
        for datasource_name in get_data_source_names():
            with DBConnection(name=datasource_name) as connector:
                query = select([1])
                results = connector.get_result(query)
    except Exception as e:
        error_msg = str(e)
        results = None

    if results and len(results) > 0:
        return HTTPOk()
    logger.error("Heartbeat failed at database connection. %s", error_msg)
    return HTTPServerError()
Esempio n. 7
0
def check_datasource(request):
    '''
    GET request that executes a Select 1 and returns status of 200 if database returns results

    :param request:  Pyramid request object
    '''
    error_msg = ''
    try:
        results = None
        for datasource_name in get_data_source_names():
            with DBConnection(name=datasource_name) as connector:
                query = select([1])
                results = connector.get_result(query)
    except Exception as e:
        error_msg = str(e)
        results = None

    if results and len(results) > 0:
        return HTTPOk()
    logger.error("Heartbeat failed at database connection. %s", error_msg)
    return HTTPServerError()
Esempio n. 8
0
def main(config_file, tenant_to_update, out_dir, verbose, raw, item, asmt_guid=None):
    """
    Imports data from csv
    """
    config = configparser.ConfigParser()
    config.read(config_file)

    initialize_db(EdCoreDBConnection, config['app:main'])
    for tenant in get_data_source_names():
        if tenant_to_update in tenant:
            # Get necessary meta-data
            state_code = get_state_code(tenant)
            assessments = get_all_assessments(tenant, asmt_guid)

            if item:
                # Create item pools for each assessment
                create_item_pools(assessments)

            # Build files for each assessment
            for asmt in assessments:
                students = get_students_for_assessment(tenant, asmt['guid'])
                generate_data_files(out_dir, state_code, asmt, students, verbose, raw, item)
 def tearDownClass(cls):
     for name in get_data_source_names():
         component.provideUtility(None, IDbUtil, name=name)
Esempio n. 10
0
 def cleanUp(self):
     for name in get_data_source_names():
         component.provideUtility(None, IDbUtil, name=name)
Esempio n. 11
0
 def test_initialize_db_with_no_config(self):
     settings = {}
     initialize_db(StatsDBConnection, settings)
     self.assertEquals(len(get_data_source_names()), 0)
 def cleanUp(self):
     for name in get_data_source_names():
         component.provideUtility(None, IDbUtil, name=name)
 def test_initialize_db_with_no_config(self):
     settings = {}
     initialize_db(StatsDBConnection, settings)
     self.assertEquals(len(get_data_source_names()), 0)
Esempio n. 14
0
 def tearDownClass(cls):
     for name in get_data_source_names():
         component.provideUtility(None, IDbUtil, name=name)