Esempio n. 1
0
    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()
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 def __init__(self):
     engine = create_test_engine()
     self.model_manager = ModelManager(engine)
Esempio n. 6
0
 def __init__(self):
     self.engine = create_test_engine()
     self.model_manager = ModelManager(self.engine)
     self.inventory_config = (
         InventoryConfig(gcp_api_mocks.ORGANIZATION_ID, '', {}, '', {}))
Esempio n. 7
0
 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
Esempio n. 9
0
 def setUp(self):
     self.engine, self.dbfile = create_test_engine_with_file()
     self.model_manager = ModelManager(self.engine)
Esempio n. 10
0
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')