Esempio n. 1
0
    def test_find_arg(self):
        argv = [u'progname', u'-hej', u'hopp', u'-alone', u'--bara', u'bra', u'-flera', u'arg', u'till', u'denna']
        
        r = CommandLineParser.find_arg_index(u'finns_Ej', argv)
        self.assertEqual((-1,-1, None), r)

        r = CommandLineParser.find_arg_index(u'HEJ', argv)
        self.assertEqual((1,2, [u'hopp']), r)

        r = CommandLineParser.find_arg_index(u'flera', argv)
        self.assertEqual((6, 9, [u'arg', u'till', u'denna']), r)

        cmd = CommandLineParser(argv)
        self.assertEqual(u'hopp', cmd.get_arg(u'hej'))
        self.assertEqual([u'arg', u'till', u'denna'], cmd.get_args(u'flera'))
        self.assertEqual(u'arg', cmd.get_arg(u'flera'))
class TraceMockup:
    def __init__(self, argv:[str]):
        trace(0, argv)
        self.args = CommandLineParser(argv)
        self.mxver = int(self.args.get_arg('mxver', '0'))
        if self.mxver == 6:
            self.help_file = 'trace-help.output'
            self.display_file = 'trace-display.output'
            self.print_file = 'trace-print-6x.output'
        elif self.mxver == 7:
            self.help_file = 'trace-help-7.x.output'
            self.display_file = 'trace-display-7.x.output'
            self.print_file = 'trace-print-6x.output' # TODO, change to 7 
        else:
            raise ValueError("Unknown MX-One version " + str(self.mxver))

        display_args = self.args.display
        print_args = self.args.print_args

        if self.args.help:
            self.print_help()
        elif not display_args is None:
            self.print_display()
        elif not print_args is None:
            self.print_print(print_args)
        else:
            print_str("args: " + " ".join(sys.argv[1:]))
            pass

    def print_help(self):
        sys.stdout.write(self.readfile(self.help_file))

    def print_display(self):
        disp_str = self.readfile(self.display_file)
        cc = self.args.get_arg('call-count', 0)
        if int(cc) < 3:
            sys.stdout.write(disp_str)
            return disp_str

        # add MADEUP as extra module

        key = 'State: idle/free'
        has_found = False
        for line in disp_str.splitlines():
            if not has_found and line.endswith(key):
                print_str(line[:len(line)-len(key)] + 'State: stopped     , Stored:     75, Size per lim: 5000')
                print_str(' First: 2019-01-22 16:16:01 (CET) Last: 2019-01-22 16:16:19 (CET)')
                print_str(' Type     : unit-trace      , Rotating: on , Textlevel: normal')
                print_str(' Lim no   :   1, Unit no: 4711, Unit name: MADEUP')
                print_str(' Time mark: 2019-01-22 16:16:32 (CET), by user: mxone_admin')
                print_str(' Trace stopped by : command (manually stopped)')
                has_found = True
            else:        
                print_str(line)

    def readfile(self, file:str) -> str:
        try:
            with open(file, 'r', encoding='iso-8859-1') as f:
                return str(f.read())
        except IOError:
            pass
        with open(os.path.join("tests", file), 'r', encoding='iso-8859-1') as f:
            return str(f.read())

    def print_print(self, arg:str) -> str:
        n = -1
        try:
            n = int(arg)
        except:
            raise ValueError("Should print individ-id: '" + arg + "'")
        disp_str = self.readfile(self.print_file)
        unit_name = ''
        if n == 1:
            unit_name = 'SIPLP' # don't change
        elif n == 3: # CMP
            unit_name = 'CMP'
        elif n == 4: # RMP
            unit_name = 'RMP'
        else:
            raise ValueError("trace-mockup can only print 1-SIPLP/3:CMP/4:RMP")

        ouput = disp_str.replace(' Trace ind:  1', ' Trace ind:  ' + str(n))
        ouput = ouput.replace(' Unit name: SIPLP', ' Unit name: ' + unit_name)
        sys.stdout.write(ouput)
        return ouput

    def parse_command_line(self, argv:[str]) -> None:
        self.args = {}
        i=1
        while i < len(argv):
            if argv[i][0] == "-":
                arg = argv[i].lstrip("-").rstrip().lower()
                val = None
                i=i+1
                if i < len(argv) and argv[i][0] != "-":
                    val = argv[i]
                    i = i + 1
                self.args[arg] = val