コード例 #1
0
def get(ctx: click.core.Context, filename: str, dir: str, to_usb: bool, convert: bool, merge: bool, debug: bool):
    """
    引数に指定したファイルを取得します。省略した場合は新たに取得します。
    """
    # for debug
    if debug:
        log.set_level(log.Level.DEBUG)

    p = __get_params(ctx)

    if to_usb:
        if convert or merge:
            log.w("USB出力時は--convert, --mergeオプションは無視されます.")
        p.remote_dist_dir = os.path.join(p.usb_dir, dir)
    else:
        p.local_dist_dir = os.path.join(os.getcwd(), dir)

    # execute command
    files = None
    ret = True
    try:
        if filename is None:
            files = remote.RemoteLogger(p).get_log(to_usb)
        else:
            files = remote.RemoteLogger(p).move_log(filename, to_usb)

        if convert and not to_usb and files is not None:
            cp = conv.ConvertParams()
            cp.script_path = p.convert_rule
            for f in files:
                cp.log_path = f
                ret, out_dir = conv.Converter(cp).exec()
                ret &= ret
                if merge and not (out_dir is None):
                    ret &= mrg.Merge().exec(os.path.join(out_dir, p.merge_dir))

    except IOError as e:
        ret = False
        click.echo(e.args)
    except Exception as e:
        ret = False
        click.echo(e.args)

    # finished
    if not files is None and ret:
        click.echo("正常に終了しました。")
    else:
        click.echo("失敗しました。")
コード例 #2
0
ファイル: auto.py プロジェクト: ujiro99/auto_logger
    def start(self):
        """
        Executes all logging process.
        :return: Result of getting remote log. True: success | False: fail
        :rtype: bool
        """
        # create log directory
        self.params.local_dist_dir = self.create_dir()

        # get console log
        self.start_script_cmd()

        # get remote log
        remote_logger = remote.RemoteLogger(self.params)
        ls = remote_logger.get_log()
        if ls is None: return False

        # convert log
        p = convert.ConvertParams()
        p.script_path = self.params.convert_rule
        p.log_path = os.path.join(self.params.local_dist_dir,
                                  remote_logger.filename)
        ret = convert.Converter(p).exec()

        return ret
コード例 #3
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_get_log__usb_not_exists(self):
        p = logger.params.LogParam()
        p.host_name = '[email protected]'
        p.shell = 'ssh'
        p.log_cmd = 'log_to_rom'
        p.log_extension = 'tar.gz'
        p.remote_log_dir = '/root'
        p.usb_dir = '/mnt/USB1'
        p.remote_dist_dir = p.usb_dir

        ret = remote.RemoteLogger(p).get_log(to_usb=True)

        self.assertIsNone(ret)
コード例 #4
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_get_log__usb(self):
        p = logger.params.LogParam()
        p.host_name = '[email protected]'
        p.shell = 'ssh'
        p.log_cmd = 'log_to_rom'
        p.log_extension = 'tar.gz'
        p.remote_log_dir = '/root'
        p.usb_dir = USB_DIR
        p.remote_dist_dir = p.usb_dir

        ret = remote.RemoteLogger(p).get_log(to_usb=True)

        df = os.path.join(MNT_USB, os.path.basename(ret[0]))
        self.assertTrue(os.path.exists(df))
コード例 #5
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_move_log__move_failed(self):
        p = logger.params.LogParam()
        p.read_ini()

        r = remote.RemoteLogger(p)
        r._RemoteLogger__connect = MagicMock()
        r._RemoteLogger__disconnect = MagicMock()
        r._RemoteLogger__get_file_list = MagicMock(return_value=[None, 'test'])
        r._RemoteLogger__send = MagicMock()

        filename = "testdata"
        ret = r.move_log(filename)

        self.assertEqual(ret, None)
コード例 #6
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_get_log__dir(self):
        p = logger.params.LogParam()
        p.host_name = '[email protected]'
        p.shell = 'ssh'
        p.log_cmd = 'log_to_rom'
        p.log_extension = 'tar.gz'
        p.remote_log_dir = '/root'
        p.remote_dist_dir = '/mnt/log'
        p.local_src_dir = '.'
        p.local_dist_dir = os.path.join(TestRemoteLogger.local_dist_dir, "000")

        ret = remote.RemoteLogger(p).get_log()

        self.assertTrue(os.path.exists(ret[0]))
        os.remove(ret[0])
コード例 #7
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_move_log__not_found(self):
        os.chdir("tests")
        p = logger.params.LogParam()
        p.read_ini()
        os.chdir("..")
        p.remote_log_dir = "/mnt/log"
        p.local_src_dir = os.getcwd()
        p.local_dist_dir = TestRemoteLogger.local_dist_dir
        remote.RemoteLogger.TIMEOUT_MOVE = 1

        filename = "testdata"
        r = remote.RemoteLogger(p)
        ret = r.move_log(filename)

        self.assertEqual(ret, None)
コード例 #8
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_clear_log_with_buffer(self):
        files = ["5.tar.gz", "6.tar.gz"]
        for f in files:
            with open(f, "w") as fd:
                fd.write("")

        os.chdir("./tests")
        p = logger.params.LogParam()
        p.read_ini()
        p.remote_log_dir = "/mnt/log"

        remote.RemoteLogger(p).clear_log(buffer=True)

        os.chdir("..")
        for f in files:
            self.assertFalse(os.path.exists(f))
コード例 #9
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_move_log__usb_not_exists(self):
        os.chdir("tests")
        p = logger.params.LogParam()
        p.read_ini()
        os.chdir("..")
        p.remote_log_dir = "/mnt/log"
        p.usb_dir = '/mnt/USB1'
        p.remote_dist_dir = p.usb_dir

        # exec
        filename = "test_move_log__usb_not_exists"
        fd = open(filename, "w")
        fd.close()
        ret = remote.RemoteLogger(p).move_log(filename, to_usb=True)

        self.assertIsNone(ret)
コード例 #10
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_list_log(self):
        files = ["1.tar.gz", "2.tar.gz"]
        for f in files:
            with open(f, "w") as fd:
                fd.write("")

        os.chdir("./tests")
        p = logger.params.LogParam()
        p.read_ini()
        p.remote_log_dir = "/mnt/log"
        remote_logger = remote.RemoteLogger(p)
        ls = remote_logger.list_log()
        self.assertEqual(ls, files)

        os.chdir("..")
        for f in files:
            os.remove(f)
コード例 #11
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_move_log__usb_and_dir(self):
        os.chdir("tests")
        p = logger.params.LogParam()
        p.read_ini()
        os.chdir("..")
        p.remote_log_dir = "/mnt/log"
        p.usb_dir = USB_DIR
        p.remote_dist_dir = os.path.join(p.usb_dir, "003")

        # exec
        filename = "testfile_test_move_log__usb_and_dir"
        fd = open(filename, "w")
        fd.close()
        remote.RemoteLogger(p).move_log(filename, to_usb=True)

        df = os.path.join(MNT_USB, "003", filename)
        self.assertTrue(os.path.exists(df))
コード例 #12
0
def ls(ctx: click.core.Context, debug: bool):
    """
    Remoteに保存されたログファイルの一覧を取得します。
    """
    if debug:
        log.set_level(log.Level.DEBUG)
    else:
        log.set_level(log.Level.WARN)

    p = __get_params(ctx)

    try:
        for f in remote.RemoteLogger(p).list_log():
            click.echo(f)

    except IOError as e:
        click.echo(e.args)
    except Exception as e:
        click.echo(e.args)
コード例 #13
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_get_log__timeout(self):
        params = logger.params.LogParam()
        params.log_extension = "tar.gz"
        remote_logger = remote.RemoteLogger(params)
        remote.RemoteLogger.TIMEOUT_LOGGING = 0.5

        p = pexpect.spawn()
        p.expect = MagicMock()
        p.sendline = MagicMock()
        p.match = MagicMock()
        p.terminate = MagicMock()
        p.before = None
        p.after = None
        array = [MagicMock()]
        p.match.groups = MagicMock(return_value=array)
        sentinel = "__tmp__.%s" % params.log_extension
        array[0].decode = MagicMock(return_value=sentinel)

        ret = remote_logger.get_log()
        self.assertEqual(ret, None)
コード例 #14
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_move_log__dir(self):
        os.chdir("tests")
        p = logger.params.LogParam()
        p.read_ini()
        os.chdir("..")
        p.remote_log_dir = "/mnt/log"
        p.local_src_dir = os.getcwd()
        p.local_dist_dir = os.path.join(TestRemoteLogger.local_dist_dir, "002")

        # create src file, and dist directory
        filename = "testdata"
        f = open(os.path.join(os.getcwd(), filename), "w")
        f.close()

        # exec
        ret = remote.RemoteLogger(p).move_log(filename)

        for f in ret:
            self.assertTrue(os.path.exists(f))
            os.remove(f)
コード例 #15
0
def clear(ctx: click.core.Context, buffer: str, debug: bool):
    """
    Remoteに保存されたログファイルをすべて削除します。

    \b
    ※注意: 削除時の確認はしません。削除したファイルの復元はできません。
    """
    if debug:
        log.set_level(log.Level.DEBUG)
    else:
        log.set_level(log.Level.WARN)

    p = __get_params(ctx)

    try:
        remote.RemoteLogger(p).clear_log(buffer)

    except IOError as e:
        click.echo(e.args)
    except Exception as e:
        click.echo(e.args)

    click.echo("%s のログを削除しました。" % p.remote_log_dir)
コード例 #16
0
ファイル: test_remote.py プロジェクト: ujiro99/auto_logger
    def test_move_log__glob(self):
        os.chdir("tests")
        p = logger.params.LogParam()
        p.read_ini()
        os.chdir("..")
        p.remote_log_dir = "/mnt/log"
        p.local_src_dir = os.getcwd()
        p.local_dist_dir = TestRemoteLogger.local_dist_dir

        # create src file, and dist directory
        filename = "testdata"
        f = open(os.path.join(os.getcwd(), filename + '1'), "w")
        f.close()
        f = open(os.path.join(os.getcwd(), filename + '2'), "w")
        f.close()

        # exec
        ret = remote.RemoteLogger(p).move_log(filename + '*')
        self.assertTrue(len(ret) == 2)
        self.assertTrue(ret[0])
        self.assertTrue(ret[1])
        os.remove(ret[0])
        os.remove(ret[1])