Example #1
0
    def _logging_reset(self):
        """
        Logging reset
        """

        # Go
        # Ouch, this hack disable console logs (zzzz), status invocation now flush nothing...
        if self.vars and "action" in self.vars and self.vars["action"] in [
                "status", "reload", "stop"
        ]:
            logger.debug(
                "Bypassing switch to logfile due to 'status|reload|stop' action"
            )
        else:
            logger.debug(
                "Switching to logfile, you will lost console logs now")

            for h in logging.root.handlers:
                h.close()

            SolBase.logging_init(
                log_level=self._loglevel,
                force_reset=True,
                log_to_file=self.v_log_to_file,
                log_to_syslog=self.v_log_to_syslog,
                log_to_syslog_facility=self.v_log_to_syslog_facility,
                log_to_console=self.v_log_to_console,
            )
Example #2
0
    def setUp(self):
        """
        Setup (called before each test)
        """

        SolBase._reset()

        # Check
        self.assertFalse(SolBase._voodoo_initialized)
        self.assertFalse(SolBase._logging_initialized)

        # Initialize without logging
        SolBase.voodoo_init(init_logging=False)
        self.assertTrue(SolBase._voodoo_initialized)
        self.assertFalse(SolBase._logging_initialized)

        # Re-call => logging must kick in
        SolBase.voodoo_init()
        self.assertTrue(SolBase._voodoo_initialized)
        self.assertTrue(SolBase._logging_initialized)
        SolBase.logging_init("INFO", True)

        # Init
        self.lastMessage = None
        self.onLogCallCount = 0
Example #3
0
    def test_syslog(self):
        """
        Test
        """

        # Syslog is enabled by default
        SolBase.logging_init("INFO", True, log_callback=self._on_log)
        SolBase.set_compo_name("COMPO_XXX")

        # Emit a log
        self.onLogCallCount = 0
        logger.info("TEST LOG 888")

        self.assertEqual(self.onLogCallCount, 1)
        self.assertIsNotNone(self.lastMessage)
        self.assertGreaterEqual(self.lastMessage.find("TEST LOG 888"), 0)
        self.assertGreaterEqual(self.lastMessage.find("COMPO_XXX:"), 0)
        self.assertGreaterEqual(self.lastMessage.find("| COMPO_XXX |"), 0)
        self.assertGreaterEqual(
            self.lastMessage.find(SolBase.get_machine_name() + " |"), 0)
        logger.info("Received ==> %s", repr(self.lastMessage))

        # Emit a log (str)
        self.onLogCallCount = 0
        logger.info(repr(u"BUF\u001B\u0BD9\U0001A10D\u1501FUB"))

        self.assertEqual(self.onLogCallCount, 1)
        self.assertIsNotNone(self.lastMessage)
        self.assertGreaterEqual(self.lastMessage.find("BUF"), 0)
        self.assertGreaterEqual(self.lastMessage.find("FUB"), 0)
        self.assertGreaterEqual(self.lastMessage.find("COMPO_XXX:"), 0)
        self.assertGreaterEqual(self.lastMessage.find("| COMPO_XXX |"), 0)
        self.assertGreaterEqual(
            self.lastMessage.find(SolBase.get_machine_name() + " |"), 0)
        logger.info("Received ==> %s", repr(self.lastMessage))
Example #4
0
    def tearDown(self):
        """
        Setup (called on destroy)
        """

        SolBase.logging_init(log_level='DEBUG', force_reset=True)
        Meters.write_to_logger()
        SolBase.logging_init(log_level='INFO', force_reset=True)
Example #5
0
    def test_log_to_file_time_file_seconds(self):
        """
        Test
        """

        log_file = "/tmp/pythonsol_unittest.log"

        # Clean
        if FileUtility.is_file_exist(log_file):
            os.remove(log_file)
        for f in glob.glob("/tmp/pythonsol_unittest.log.*"):
            os.remove(f)

        # Init
        SolBase.logging_init(log_level="INFO",
                             log_to_file=log_file,
                             log_to_console=True,
                             log_to_syslog=False,
                             log_callback=self._on_log,
                             force_reset=True,
                             log_to_file_mode="time_file_seconds")
        SolBase.set_compo_name("COMPO_XXX")

        # Emit a log
        logger.info("TEST LOG 888")

        # Emit a log (str)
        logger.info(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB")

        # Check the file
        buf = FileUtility.file_to_textbuffer(log_file, "utf-8")

        self.assertIsNotNone(buf)
        self.assertGreaterEqual(buf.find("TEST LOG 888"), 0)

        self.assertGreaterEqual(buf.find("BUF "), 0)
        self.assertGreaterEqual(buf.find(" FUB"), 0)
        self.assertGreaterEqual(
            buf.find(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB"), 0)

        # Wait 5 sec
        for i in range(0, 10):
            SolBase.sleep(1100)
            logger.info("Log i=%s", i)

        # Emit a log
        logger.info("TEST LOG 999")

        # We should have "pythonsol_unittest.log.*" but no more than 7
        f_count = 0
        for f in glob.glob("/tmp/pythonsol_unittest.log.*"):
            logger.info("Found %s", f)
            f_count += 1
        self.assertGreater(f_count, 0)
        self.assertLessEqual(f_count, 7)

        # Reset
        SolBase.logging_init("INFO", True)
Example #6
0
    def test_log_to_file(self):
        """
        Test
        """

        log_file = "/tmp/pythonsol_unittest.log"

        # Clean
        if FileUtility.is_file_exist(log_file):
            os.remove(log_file)

        # Init
        SolBase.logging_init(log_level="INFO",
                             log_to_file=log_file,
                             log_to_console=True,
                             log_to_syslog=False,
                             log_callback=self._on_log,
                             force_reset=True)
        SolBase.set_compo_name("COMPO_XXX")

        # Emit a log
        logger.info("TEST LOG 888")

        # Emit a log (str)
        logger.info(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB")

        # Check the file
        buf = FileUtility.file_to_textbuffer(log_file, "utf-8")

        self.assertIsNotNone(buf)
        self.assertGreaterEqual(buf.find("TEST LOG 888"), 0)

        self.assertGreaterEqual(buf.find("BUF "), 0)
        self.assertGreaterEqual(buf.find(" FUB"), 0)
        self.assertGreaterEqual(
            buf.find(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB"), 0)

        # Simulate a log rotate : kick the file and touch it
        os.remove(log_file)
        FileUtility.append_text_to_file(log_file,
                                        "TOTO\n",
                                        "utf-8",
                                        overwrite=False)

        # Re-emit
        logger.info("TEST LOG 999")

        buf = FileUtility.file_to_textbuffer(log_file, "utf-8")

        self.assertIsNotNone(buf)
        self.assertGreaterEqual(buf.find("TOTO"), 0)
        self.assertGreaterEqual(buf.find("TEST LOG 999"), 0)
Example #7
0
    def test_log_to_file_with_filter_greenlet(self):
        """
        Test
        """

        log_file = "/tmp/pythonsol_unittest.log"

        # Clean
        if FileUtility.is_file_exist(log_file):
            os.remove(log_file)

        # Init
        SolBase.logging_init(log_level="INFO",
                             log_to_file=log_file,
                             log_to_console=True,
                             log_to_syslog=False,
                             log_callback=self._on_log,
                             force_reset=True)
        SolBase.set_compo_name("COMPO_XXX")

        # Go
        g1 = gevent.spawn(self._run_filter, "ip001")
        g2 = gevent.spawn(self._run_filter, "ip002")
        gevent.joinall([g1, g2])

        # Re-read and check
        buf = FileUtility.file_to_textbuffer(log_file, "utf-8")

        self.assertGreaterEqual(buf.find("TEST LOG ip_addr=ip001"), 0)
        self.assertGreaterEqual(buf.find("TEST LOG ip_addr=ip002"), 0)

        # Via regex
        for r, b in [
            ["TEST LOG ip_addr=ip001 | k_ip:ip001 z_value:ip001", True],
            ["TEST LOG ip_addr=ip002 | k_ip:ip002 z_value:ip002", True],
            ["TEST LOG ip_addr=ip001 | k_ip:ip002", False],
            ["TEST LOG ip_addr=ip002 | k_ip:ip001", False],
        ]:
            idx = buf.find(r)
            if b:
                self.assertLess(0, idx, r)
            else:
                self.assertGreaterEqual(0, idx, r)
Example #8
0
    def test_initfromfile(self):
        """
        Test
        """

        # Conf
        cf = dirname(abspath(__file__)) + os.sep + "logging.conf"

        # Default
        SolBase.logging_init("INFO", True)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "INFO")

        # Load from file
        SolBase.logging_initfromfile(cf, False)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "INFO")

        SolBase.logging_initfromfile(cf, True)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "DEBUG")
Example #9
0
    def test_logging_init(self):
        """
        Test
        """

        SolBase.logging_init("INFO", True)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "INFO")

        SolBase.logging_init("DEBUG", False)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "INFO")

        SolBase.logging_init("DEBUG", True)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "DEBUG")

        SolBase.logging_init("INFO", True)
        self.assertEqual(
            logging.getLevelName(logging.getLogger().getEffectiveLevel()),
            "INFO")
Example #10
0
import logging
import sys

from pysolbase.SolBase import SolBase

SolBase.logging_init("INFO")
logger = logging.getLogger(__name__)

sys.stdout = open('/tmp/log.txt', 'a')
print('hey')
logger.info("hey2")
print("hey3")

SolBase.logging_init("INFO", True)
print('pd1')
logger.info("pd2")
print("pd2")
Example #11
0
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
# ===============================================================================
"""

import logging

from pysolbase.FileUtility import FileUtility
from pysolbase.SolBase import SolBase

from pysoltcp.tcpserver.basefactory.TcpServerClientContextAbstractFactory import TcpServerClientContextAbstractFactory
from pysoltcp.tcpserver.clientcontext.TcpServerClientContextFactory import TcpServerClientContextFactory

SolBase.logging_init()
logger = logging.getLogger(__name__)


class TcpServerConfig(object):
    """
    tcpserver configuration.
    If ssl is NOT enable, it is better that calls to sslCertificate/ssl_key_file should not happen.
    """
    def __init__(self):
        """
        Constructor.
        """

        logger.debug("TcpServerConfig : Constructor called")
Example #12
0
# Imports
import logging
import unittest

from gevent import Greenlet
from gevent.event import Event
from pymysql import ProgrammingError
from pysolbase.SolBase import SolBase
from pysolmeters.AtomicInt import AtomicIntSafe
from pysolmeters.Meters import Meters

from pysolmysql.Mysql.MysqlApi import MysqlApi

logger = logging.getLogger(__name__)
SolBase.voodoo_init()
SolBase.logging_init(log_level='INFO', force_reset=True)


# noinspection PyBroadException,SqlNoDataSourceInspection,SqlResolve
class TestMysqlApi(unittest.TestCase):
    """
    Test description
    """

    AR_CREATE_TABLES = [
        """CREATE TABLE `t1` (
          `server_id` VARCHAR(255) NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        """,
        """CREATE TABLE `t2` (
          `server_id` VARCHAR(255) NOT NULL