Exemple #1
0
def do_rerun(args):
    serial = AsciiSerial(args.serial_port, baudrate=args.baudrate)
    handler = expect.Handler(serial)

    print('Restarting the Simba Xvisor guest.')

    serial.write(CTRL_X_Q)
    handler.send('')
    serial.flushInput()
    handler.expect('XVisor# ')
    time.sleep(0.1)
    handler.send('guest reset simba')
    handler.expect('XVisor# ')
    time.sleep(0.1)
    handler.send('guest kick simba')
    handler.expect('XVisor# ')
    time.sleep(0.1)
    handler.send('vserial bind simba/uart0')

    line = ''

    while line != SUCCESS:
        line = ''

        while not line.endswith('\n'):
            try:
                line += serial.read_byte().decode('ascii').strip('\r')
            except UnicodeDecodeError:
                pass

        line = line.replace('[simba/uart0] ', '').rstrip()
        print(line)
Exemple #2
0
def do_upload(args):
    serial = AsciiSerial(args.serial_port, baudrate=args.baudrate)
    handler = expect.Handler(serial)

    print('Entering the U-Boot... ')

    serial.write(CTRL_X_Q)
    handler.send('')
    serial.flushInput()
    handler.send('reset')
    handler.expect('Hit any key to stop autoboot:')
    handler.send('')
    handler.expect('U-Boot>')

    commands = [
        'setenv ipaddr 192.168.0.200', 'setenv serverip 192.168.0.4',
        'tftpboot 0x200000 uvmm.bin', 'tftpboot 0x800000 board.dtb',
        'tftpboot 0x2000000 udisk.img'
    ]

    for command in commands:
        handler.send(command)
        handler.expect('U-Boot>')

    handler.send('bootm 0x200000 0x2000000 0x800000')
    handler.expect('simba: Kicked')
Exemple #3
0
 def test_expect_return_value(self):
     """Verify the return value from the expect function.
     """
     foobar = expect.Handler(StringIO('barfoo'))
     match = foobar.expect(r'foo|bar')
     self.assertEqual(match, 'bar')
     match = foobar.expect(r'foo|bar')
     self.assertEqual(match, 'foo')
Exemple #4
0
 def test_eol(self):
     """End of line testing.
     """
     iostream = StringIO()
     handler = expect.Handler(iostream, eol='\r\n')
     handler.send('')
     self.assertEqual(iostream.getvalue(), '\r\n')
     handler.send('', send_eol=False)
     self.assertEqual(iostream.getvalue(), '\r\n')
Exemple #5
0
 def test_break_condition(self):
     """Verify that the expect function throws an exception
     when the break condition is met.
     """
     # The StringIO object returns '' when EOF is encountered.
     iostream = StringIO()
     handler = expect.Handler(iostream)
     with self.assertRaises(RuntimeError) as e:
         handler.expect(r'foo')
     print(e)
Exemple #6
0
def main():
    """Main function.

    """

    parser = argparse.ArgumentParser()

    # The default run script arguments.
    parser.add_argument("--port", default="/dev/arduino")
    parser.add_argument("--baudrate", type=int, default=38400)
    parser.add_argument("--timeout", type=int, default=10)
    parser.add_argument("--pattern")
    parser.add_argument("--pattern-success")
    parser.add_argument("--dtr", type=int, default=0)
    parser.add_argument("--rts", type=int, default=0)

    parser.add_argument('--server-ip-address',
                        default='192.168.0.7',
                        help='Server ip address.')
    args = parser.parse_args()

    dev_serial = serial.Serial(args.port, baudrate=args.baudrate, timeout=1.0)
    dev_serial.dtr = args.dtr
    dev_serial.rts = args.rts
    dev = expect.Handler(dev_serial, break_conditions=[])

    status = 0

    print()
    print("INFO: TIMEOUT = {}".format(args.timeout))
    print()

    try:
        test.test_udp(args.server_ip_address, dev, args.timeout)

        test.test_tcp(args.server_ip_address, dev, args.timeout)

        test.test_tcp_write_close(args.server_ip_address, dev, args.timeout)

        test.test_tcp_sizes(args.server_ip_address, dev, args.timeout)
    finally:
        print(dev.iostream.read(dev.iostream.in_waiting))

    try:
        report = dev.expect(args.pattern, timeout=args.timeout)
        print()
    except:
        print()
        status = 1
    else:
        if not re.match(args.pattern_success, report):
            status = 1

    print
    sys.exit(status)
Exemple #7
0
def main():
    """Main function.

    """

    parser = argparse.ArgumentParser()

    # The default run script arguments.
    parser.add_argument("--port", default="/dev/arduino")
    parser.add_argument("--baudrate", type=int, default=38400)
    parser.add_argument("--timeout", type=int, default=10)
    parser.add_argument("--pattern")
    parser.add_argument("--pattern-success")
    parser.add_argument("--dtr", type=int, default=0)
    parser.add_argument("--rts", type=int, default=0)

    parser.add_argument('--server-ip-address',
                        default='192.168.0.5',
                        help='Server ip address.')
    args = parser.parse_args()

    dev_serial = serial.Serial(args.port, baudrate=args.baudrate, timeout=1.0)
    # Boot from Flash.
    dev_serial.rts = 0
    # Hold the chip in reset.
    dev_serial.dtr = 1
    time.sleep(0.5)
    # Let go of the reset.
    dev_serial.dtr = 0
    dev = expect.Handler(dev_serial, break_conditions=[])

    status = 0

    print()
    print("INFO: TIMEOUT = {}".format(args.timeout))
    print()

    try:
        test.mosquitto(args.server_ip_address, dev, args.timeout)
    finally:
        print(dev.iostream.read(dev.iostream.in_waiting))

    try:
        report = dev.expect(args.pattern, timeout=args.timeout)
        print()
    except:
        print()
        status = 1
    else:
        if not re.match(args.pattern_success, report):
            status = 1

    print()
    sys.exit(status)
Exemple #8
0
def main():
    """Main function.

    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--port", default="/dev/arduino")
    parser.add_argument("--control-port")
    parser.add_argument("--baudrate", type=int, default=115200)
    parser.add_argument("--timeout", type=int, default=10)
    parser.add_argument("--pattern")
    parser.add_argument("--pattern-success")
    args = parser.parse_args()

    serial_connection = serial.Serial(args.port,
                                      baudrate=args.baudrate,
                                      timeout=1.0)

    # Set FAB low to boot from flash.
    if args.control_port:
        control_port_connection = serial.Serial(args.control_port)

        # Set RESET high.
        control_port_connection.rts = False

        control_port_connection.dtr = True
        time.sleep(0.01)

        # Toggle RESET.
        control_port_connection.rts = True
        time.sleep(0.005)
        control_port_connection.rts = False
        time.sleep(0.01)

    dev = expect.Handler(serial_connection, break_conditions=[])

    status = 0

    print
    print "INFO: TIMEOUT = {}".format(args.timeout)

    try:
        print
        report = dev.expect(args.pattern, timeout=args.timeout)
        print
    except:
        print
        status = 1
    else:
        if not re.match(args.pattern_success, report):
            status = 1

    print
    sys.exit(status)
Exemple #9
0
    def test_no_split(self):
        """Verify that the expect function can match over multiple lines.
        """
        class Handler(StringIo):

            INDATA = """
foo
bar
"""

        handler = expect.Handler(Handler(), split_pattern=None)
        handler.expect(r'foo\nbar')
Exemple #10
0
    def test_expect_timeout(self):
        """Test expect timeout functionality.
        """
        class Handler(object):
            def read(self, count=1):
                time.sleep(0.2)
                return "1"

        handler = expect.Handler(Handler())

        with self.assertRaises(expect.ExpectTimeoutError) as e:
            handler.expect(r"no match", timeout=0.1)
        print(e)
Exemple #11
0
def main():
    """Main function.

    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--port", default="/dev/arduino")
    parser.add_argument("--timeout", type=int, default=10)
    parser.add_argument("--pattern")
    parser.add_argument("--pattern-success")

    args = parser.parse_args()

    dev_serial = serial.Serial(args.port, timeout=3.0)
    dev = expect.Handler(dev_serial, break_conditions=[])

    # Wait for the board to start.
    sys.stdout.write("Waiting for the serial port '{}' to show up... ".format(
        args.port))
    attempt = 1
    while attempt < 20:
        try:
            serial.Serial(args.port, baudrate=38400).close()
            print("done.")
            break
        except:
            time.sleep(0.5)
            attempt += 1
    else:
        print("failed.")
        sys.exit(1)

    status = 0

    print("INFO: TIMEOUT = {}".format(args.timeout))
    print()

    try:
        report = dev.expect(args.pattern, timeout=args.timeout)
        print()
    except:
        print()
        status = 1
    else:
        if not re.match(args.pattern_success, report):
            status = 1

    print()
    sys.exit(status)
Exemple #12
0
    def test_uboot(self):
        """U-boot communication example.
        """
        class UBoot(StringIo):

            INDATA = """
Booting in 3 seconds...
Booting in 2 seconds...
u-boot> fatload mmc 0 0x3000000 uImage
u-boot> fatload mmc 0 0x2A00000 devicetree.dtb
u-boot> fatload mmc 0 0x2000000 uramdisk.image.gz
u-boot> bootm 0x3000000 0x2000000 0x2A00000
...
~ $
"""

            OUTDATA = """
fatload mmc 0 0x3000000 uImage
fatload mmc 0 0x2A00000 devicetree.dtb
fatload mmc 0 0x2000000 uramdisk.image.gz
bootm 0x3000000 0x2000000 0x2A00000
"""

        prompt = r'u-boot> '

        # create the handler object and start to communicate with u-boot
        uboot = expect.Handler(UBoot())
        uboot.expect(r'Booting in \d+ seconds...')
        uboot.send('')
        uboot.expect(prompt)
        uboot.send('fatload mmc 0 0x3000000 uImage')
        uboot.expect(prompt)
        uboot.send('fatload mmc 0 0x2A00000 devicetree.dtb')
        uboot.expect(prompt)
        uboot.send('fatload mmc 0 0x2000000 uramdisk.image.gz')
        uboot.expect(prompt)
        uboot.send('bootm 0x3000000 0x2000000 0x2A00000')
        uboot.expect(r'~ \$')
        self.assertEqual(uboot.iostream.out_stream.getvalue(), UBoot.OUTDATA)
        sys.stdout.flush()
Exemple #13
0
def main():
    """Main function.

    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--port", default="/dev/arduino")
    parser.add_argument("--baudrate", type=int, default=38400)
    parser.add_argument("--timeout", type=int, default=10)
    parser.add_argument("--pattern")
    parser.add_argument("--pattern-success")
    parser.add_argument("--dtr", type=int, default=0)
    parser.add_argument("--rts", type=int, default=0)
    args = parser.parse_args()

    dev_serial = serial.Serial(args.port, baudrate=args.baudrate, timeout=1.0)
    dev_serial.dtr = args.dtr
    dev_serial.rts = args.rts
    dev = expect.Handler(dev_serial, break_conditions=[])

    status = 0

    print
    print "INFO: TIMEOUT = {}".format(args.timeout)

    try:
        print
        report = dev.expect(args.pattern, timeout=args.timeout)
        print
    except:
        print
        status = 1
    else:
        if not re.match(args.pattern_success, report):
            status = 1

    print
    sys.exit(status)
Exemple #14
0
def main():
    """Main function.

    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--port", default="/dev/arduino")
    parser.add_argument("--baudrate", type=int, default=38400)
    parser.add_argument("--reset-mode",
                        type=str,
                        choices=["rts", "dtr", "none"],
                        default="none")
    parser.add_argument("--timeout", type=int, default=10)
    parser.add_argument("--pattern")
    parser.add_argument("--pattern-success")

    args = parser.parse_args()

    dev_serial = serial.Serial(args.port, baudrate=args.baudrate, timeout=1.0)
    if args.reset_mode == "rts":
        print("Reset via RTS")
        # Boot from Flash.
        dev_serial.dtr = 0
        # Hold the chip in reset.
        dev_serial.rts = 1
        time.sleep(0.5)
        # Let go of the reset.
        dev_serial.rts = 0
    elif args.reset_mode == "dtr":
        print("Reset via DTR")
        # Boot from Flash.
        dev_serial.rts = 0
        # Hold the chip in reset.
        dev_serial.dtr = 1
        time.sleep(0.5)
        # Let go of the reset.
        dev_serial.dtr = 0
    else:
        dev_serial.dtr = 0
        dev_serial.rts = 0

    dev = expect.Handler(dev_serial, break_conditions=[])

    status = 0

    print()
    print("INFO: TIMEOUT = {}".format(args.timeout))

    try:
        print()
        report = dev.expect(args.pattern, timeout=args.timeout)
        print()
    except:
        print()
        status = 1
    else:
        if args.pattern_success is not None and \
                not re.match(args.pattern_success, report):
            status = 1

    print()
    sys.exit(status)