def __init__(self, forseti_config_file_path, forseti_db_connect_string, endpoint): """Initialize. Args: forseti_config_file_path (str): Path to Forseti configuration file forseti_db_connect_string (str): Forseti database string endpoint (str): server endpoint """ super(ServiceConfig, self).__init__() self.thread_pool = ThreadPool() # Enable pool_pre_ping to ensure that disconnected or errored # connections are dropped and recreated before use. self.engine = create_engine(forseti_db_connect_string, pool_recycle=3600, pool_pre_ping=True) self.model_manager = ModelManager(self.engine) self.sessionmaker = db.create_scoped_sessionmaker(self.engine) self.endpoint = endpoint self.forseti_config_file_path = forseti_config_file_path self.inventory_config = None self.scanner_config = None self.notifier_config = None self.global_config = None self.forseti_config = None self.update_lock = threading.RLock()
def __init__(self): self.engine = create_test_engine() self.model_manager = ModelManager(self.engine) self.sessionmaker = db.create_scoped_sessionmaker(self.engine) self.workers = ThreadPool(10) self.inventory_config = InventoryConfig(gcp_api_mocks.ORGANIZATION_ID, '', {}, '', {}) self.inventory_config.set_service_config(self)
def __init__(self, engine): self.engine = engine self.model_manager = ModelManager(self.engine) self.sessionmaker = db.create_scoped_sessionmaker(self.engine) self.workers = ThreadPool(1) self.inventory_config = InventoryConfig( None, '', {}, 0, {'enabled': False}, ['folders/1032', 'projects/1041']) self.inventory_config.set_service_config(self)
def __init__(self, engine): self.engine = engine self.model_manager = ModelManager(self.engine) self.sessionmaker = db.create_scoped_sessionmaker(self.engine) self.workers = ThreadPool(1) self.inventory_config = InventoryConfig( gcp_api_mocks.ORGANIZATION_ID, '', {}, 0, { 'enabled': True, 'gcs_path': 'gs://test-bucket' }) self.inventory_config.set_service_config(self)
def __init__(self): engine = create_test_engine() self.model_manager = ModelManager(engine)
def __init__(self): self.engine = create_test_engine() self.model_manager = ModelManager(self.engine) self.inventory_config = ( InventoryConfig(gcp_api_mocks.ORGANIZATION_ID, '', {}, '', {}))
def __init__(self, db_connect_string): engine = create_engine(db_connect_string, echo=False) self.model_manager = ModelManager(engine)
def __init__(self, inventory_config): self.engine = create_test_engine() self.model_manager = ModelManager(self.engine) self.inventory_config = inventory_config
def setUp(self): self.engine, self.dbfile = create_test_engine_with_file() self.model_manager = ModelManager(self.engine)
class ModelManagerTest(ForsetiTestCase): """Test for dao.ModelManager create/delete/list.""" def setUp(self): self.engine, self.dbfile = create_test_engine_with_file() self.model_manager = ModelManager(self.engine) def tearDown(self): os.unlink(self.dbfile) def test_create_get_delete_one_model(self): """Start with no models, create one, delete it again.""" self.assertEqual(0, len(self.model_manager.models()), 'Expecting no models to exist') handle = self.model_manager.create(name='test_model') self.assertEqual([handle], [m.handle for m in self.model_manager.models()], 'Expecting the created model to be listed') self.model_manager.delete(handle) self.assertEqual(0, len(self.model_manager.models()), 'Expecting no models to exist after deletion') def test_create_get_delete_multiple_models(self): """Start with no models, create multiple, delete them again.""" self.assertEqual(0, len(self.model_manager.models()), 'Expecting no models to exist') handles = [] num_models = 32 for i in range(num_models): handles.append(self.model_manager.create(name=str(i))) self.assertEqual(set(handles), set([m.handle for m in self.model_manager.models()]), 'Expecting the created models to be listed') self.assertEqual(len(handles), num_models) for i in range(num_models): self.model_manager.delete(handles[i]) self.assertEqual(0, len(self.model_manager.models()), 'Expecting no models to exist after deletion') @unittest.skip("Concurrent access leads to memory corruption.") def test_concurrent_access(self): """Start with no models, create multiple, delete them again, concurrent. """ num_threads = 4 thread_pool = ThreadPool(num_threads) def test_func(x): """Create, get, delete models.""" for i in range(32): handle = self.model_manager.create(name='%s-%s' % (x, i)) self.assertTrue( handle in [m.handle for m in self.model_manager.models()]) self.model_manager.delete(handle) self.assertTrue( handle not in [m.handle for m in self.model_manager.models()]) return True for x in range(num_threads): thread_pool.add_func(test_func, x) thread_pool.join() self.assertTrue( len(self.model_manager.models()) == 0, 'Expecting no models to stick around')