コード例 #1
0
def main():
    """Process agent data.

    Args:
        None

    Returns:
        None

    """
    # Initialize key variables
    use_mysql = True
    global POOL
    global URL
    pool_timeout = 30
    pool_recycle = min(10, pool_timeout - 10)

    # Get configuration
    config = Config()

    # Define SQLAlchemy parameters from configuration
    pool_size = config.db_pool_size()
    max_overflow = config.db_max_overflow()

    # Create DB connection pool
    if use_mysql is True:
        URL = ('mysql+pymysql://{}:{}@{}/{}?charset=utf8mb4'.format(
            config.db_username(), config.db_password(), config.db_hostname(),
            config.db_name()))

        # Fix for multiprocessing on pools.
        # _add_engine_pidguard(QueuePool)

        # Add MySQL to the pool
        db_engine = create_engine(URL,
                                  echo=False,
                                  echo_pool=False,
                                  encoding='utf8',
                                  poolclass=QueuePool,
                                  max_overflow=max_overflow,
                                  pool_size=pool_size,
                                  pool_pre_ping=True,
                                  pool_recycle=pool_recycle,
                                  pool_timeout=pool_timeout)

        # Fix for multiprocessing on engines.
        # _add_engine_pidguard(db_engine)

        # Ensure connections are disposed before sharing engine.
        db_engine.dispose()

        # Create database session object
        POOL = scoped_session(
            sessionmaker(autoflush=True, autocommit=False, bind=db_engine))

    else:
        POOL = None
コード例 #2
0
ファイル: _check_database.py プロジェクト: bonnie-23/pattoo
def _mysql():
    """Create database tables.

    Args:
        None

    Returns:
        None

    """
    # Initialize key variables
    config = Config()
    pool_size = config.db_pool_size()
    max_overflow = config.db_max_overflow()

    # Add MySQL to the pool
    engine = create_engine(URL,
                           echo=True,
                           encoding='utf8',
                           max_overflow=max_overflow,
                           pool_size=pool_size,
                           pool_recycle=3600)

    # Try to create the database
    print('??: Attempting to Connect to configured database.')
    try:
        sql_string = ('''\
ALTER DATABASE {} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci\
'''.format(config.db_name()))
        engine.execute(sql_string)
    except:
        log_message = ('''\
ERROR: Cannot connect to database "{}" on server "{}". Verify database server \
is started. Verify database is created. Verify that the configured database \
authentication is correct.'''.format(config.db_name(), config.db_hostname()))
        log.log2die(20086, log_message)

    # Apply schemas
    print('OK: Database connected.')
    print('??: Attempting to create database tables.')
    BASE.metadata.create_all(engine)
    print('OK: Database tables created.')
コード例 #3
0
class TestConfiguration(unittest.TestCase):
    """Checks all functions and methods."""

    #########################################################################
    # General object setup
    #########################################################################

    config = ConfigPattoo()

    def test___init__(self):
        """Testing method init."""
        # Test
        pass

    def test_db_pool_size(self):
        """Testing method db_pool_size."""
        # Initialize key values
        expected = 10

        # Test
        result = self.config.db_pool_size()
        self.assertEqual(result, expected)

    def test_db_max_overflow(self):
        """Testing method db_max_overflow."""
        # Initialize key values
        expected = 20

        # Test
        result = self.config.db_max_overflow()
        self.assertEqual(result, expected)

    def test_db_hostname(self):
        """Testing method db_hostname."""
        # Initialize key values
        expected = 'localhost'

        # Test
        result = self.config.db_hostname()
        self.assertEqual(result, expected)

    def test_db_username(self):
        """Testing method db_username."""
        # Initialize key values
        expected = 'travis'

        # Test
        result = self.config.db_username()
        self.assertEqual(result, expected)

    def test_db_password(self):
        """Testing method db_password."""
        # Initialize key values
        if 'PATTOO_TRAVIS' in os.environ:
            expected = ''
        else:
            expected = 'K2nJ8kFdthEbuwXE'

        # Test
        result = self.config.db_password()
        self.assertEqual(result, expected)

    def test_db_name(self):
        """Testing method db_name."""
        # Initialize key values
        expected = 'pattoo_unittest'

        # Test
        result = self.config.db_name()
        self.assertEqual(result, expected)

    def test_daemon_directory(self):
        """Test pattoo_shared.Config inherited method daemon_directory."""
        # Nothing should happen. Directory exists in testing.
        _ = self.config.daemon_directory()

    def test_log_directory(self):
        """Test pattoo_shared.Config inherited method log_directory."""
        # Nothing should happen. Directory exists in testing.
        _ = self.config.log_directory()

    def test_log_file(self):
        """Test pattoo_shared.Config inherited method log_file."""
        # Initialize key values
        expected = '{1}{0}pattoo.log'.format(os.sep,
                                             self.config.log_directory())

        # Test
        result = self.config.log_file()
        self.assertEqual(result, expected)

    def test_log_file_api(self):
        """Test pattoo_shared.Config inherited method log_file_api."""
        # Initialize key values
        expected = '{1}{0}pattoo-api.log'.format(os.sep,
                                                 self.config.log_directory())

        # Test
        result = self.config.log_file_api()
        self.assertEqual(result, expected)

    def test_log_level(self):
        """Test pattoo_shared.Config inherited method log_level."""
        # Initialize key values
        expected = 'debug'

        # Test
        result = self.config.log_level()
        self.assertEqual(result, expected)

    def test_log_file_daemon(self):
        """Test pattoo_shared.Config inherited method log_file_daemon."""
        # Initialize key values
        expected = '{1}{0}pattoo-daemon.log'.format(
            os.sep, self.config.log_directory())

        # Test
        result = self.config.log_file_daemon()
        self.assertEqual(result, expected)

    def test_cache_directory(self):
        """Test pattoo_shared.Config inherited method cache_directory."""
        # Nothing should happen. Directory exists in testing.
        _ = self.config.cache_directory()

    def test_agent_cache_directory(self):
        """Test pattoo_shared.Config inherited method agent_cache_directory."""
        # Initialize key values
        agent_id = 123
        expected = '{1}{0}{2}'.format(os.sep, self.config.cache_directory(),
                                      agent_id)

        # Test
        result = self.config.agent_cache_directory(agent_id)
        self.assertEqual(result, expected)