コード例 #1
0
ファイル: test_cli.py プロジェクト: gchenfly/lbry-sdk
async def get_logger(argv, **conf_options):
    # loggly requires loop, so we do this in async function

    logger = logging.getLogger('test-root-logger')
    temp_dir = tempfile.mkdtemp()
    temp_config = os.path.join(temp_dir, 'settings.yml')

    try:
        # create a config (to be loaded on startup)
        _conf = Config.create_from_arguments(
            SimpleNamespace(config=temp_config))
        with _conf.update_config():
            for opt_name, opt_value in conf_options.items():
                setattr(_conf, opt_name, opt_value)

        # do what happens on startup
        argv.extend(['--data-dir', temp_dir])
        argv.extend(['--wallet-dir', temp_dir])
        argv.extend(['--config', temp_config])
        parser = cli.get_argument_parser()
        args, command_args = parser.parse_known_args(argv)
        conf: Config = Config.create_from_arguments(args)
        setup_logging(logger, args, conf)
        yield logger

    finally:
        shutil.rmtree(temp_dir, ignore_errors=True)
        for mod in cli.LOG_MODULES:
            log = logger.getChild(mod)
            log.setLevel(logging.NOTSET)
            while log.handlers:
                h = log.handlers[0]
                log.removeHandler(log.handlers[0])
                h.close()
コード例 #2
0
    async def __call__(self, title, *command):
        parser = get_argument_parser()
        args, command_args = parser.parse_known_args(command)

        api_method_name = args.api_method_name
        parsed = docopt(args.doc, command_args)
        kwargs = set_kwargs(parsed)
        for k, v in kwargs.items():
            if v and isinstance(v, str) and (v[0], v[-1]) == ('"', '"'):
                kwargs[k] = v[1:-1]
        params = json.dumps({"method": api_method_name, "params": kwargs})

        method = getattr(self.test.daemon, f'jsonrpc_{api_method_name}')
        result = method(**kwargs)
        if asyncio.iscoroutine(result):
            result = await result
        output = jsonrpc_dumps_pretty(result, ledger=self.test.daemon.ledger)
        self.examples.setdefault(api_method_name, []).append({
            'title':
            title,
            'curl':
            f"curl -d'{params}' http://localhost:5279/",
            'lbrynet':
            'lbrynet ' + ' '.join(command),
            'python':
            f'requests.post("http://localhost:5279", json={params}).json()',
            'output':
            output.strip()
        })
        return json.loads(output)['result']
コード例 #3
0
ファイル: test_cli.py プロジェクト: y1027/lbry-sdk
 def setup(argv):
     parser = cli.get_argument_parser()
     args, command_args = parser.parse_known_args(argv)
     conf = Config.create_from_arguments(args)
     conf.data_dir = '/tmp'
     setup_logging(args, conf, logger)
コード例 #4
0
 def setup(argv):
     parser = cli.get_argument_parser()
     args, command_args = parser.parse_known_args(argv)
     loop = asyncio.get_event_loop()
     conf = Config.create_from_arguments(args)
     cli.setup_logging(args, conf, loop)