Ejemplo n.º 1
0
def configure_log(enable_packet_debug=False,
                  enable_world_debug=False,
                  enable_generator_debug=False,
                  disable_chunk_debug=False) -> None:
    log_file_name = 'server.log'
    backup_count = 10
    max_bytes = 1  # MB

    import os

    def remove_file(path: str):
        try:
            os.remove(path)
        except FileNotFoundError:
            pass

    remove_file(log_file_name)
    for i in range(backup_count):
        remove_file('{}.{}'.format(log_file_name, i + 1))

    from logging.handlers import RotatingFileHandler
    stream = logging.StreamHandler()
    stream.setLevel(logging.INFO)
    file = RotatingFileHandler(log_file_name,
                               mode='w',
                               maxBytes=int(max_bytes * 1024 * 1024),
                               backupCount=backup_count,
                               encoding='utf-8')
    file.setLevel(logging.DEBUG)
    logging.basicConfig(level=logging.INFO, handlers=(stream, file))

    levels = {}
    if enable_packet_debug:
        levels['pyminehub.raknet.protocol'] = logging.DEBUG
        levels['pyminehub.raknet.session'] = logging.DEBUG
        levels['pyminehub.mcpe.network.handler'] = logging.DEBUG
        levels['pyminehub.mcpe.network.queue'] = logging.DEBUG
        levels['pyminehub.raknet.sending'] = logging.DEBUG
    if enable_world_debug:
        levels['pyminehub.mcpe.world.server'] = logging.DEBUG
    if enable_generator_debug:
        levels['pyminehub.mcpe.plugin.default.generator'] = logging.DEBUG

    if len(levels) > 0:
        from pyminehub.config import set_config
        set_config(max_log_length=None)
        for name, level in levels.items():
            logging.getLogger(name).setLevel(level)

    if disable_chunk_debug:

        def log_filter(record) -> bool:
            packet_str = str(record.args[0])
            return not packet_str.startswith(
                'EventFullChunkLoaded') and not packet_str.startswith(
                    'ActionRequestChunk')

        logging.getLogger('pyminehub.mcpe.world.server').addFilter(log_filter)
Ejemplo n.º 2
0
 def setUp(self):
     set_config(spawn_mob=False, player_spawn_position=(0, 0, 0))
     loop = asyncio.new_event_loop()
     asyncio.set_event_loop(loop)
     registry = CommandRegistry()
     registry.register_command_processor(CommandProcessor())
     store = MockDataStore()
     proxy = run_world(store, PluginLoader('', registry))
     self._handler = MCPEServerHandler(proxy, registry)
Ejemplo n.º 3
0
    def setUp(self) -> None:
        if self._testMethodName not in type(self).__dict__:
            self.skipTest('This test is defined in super class.')

        set_config(spawn_mob=False, clock_time=-4800, game_mode='CREATIVE')
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        self._world = run(MockDataStore(), get_plugin_loader())
        self._players = []
Ejemplo n.º 4
0
 def setUp(self) -> None:
     set_config(server_guid=1326711636852997873)
     super().setUp()
Ejemplo n.º 5
0
 def setUp(self) -> None:
     set_config(spawn_mob=False, clock_time=-4800)
     loop = asyncio.new_event_loop()
     asyncio.set_event_loop(loop)
     self._world = run(MockDataStore(), get_plugin_loader())
     self._players = []