GithubHelp home page GithubHelp logo

Comments (8)

Rahix avatar Rahix commented on August 16, 2024

Hi,

please run tbot/newbot with an additional -v flag to show channel communication and then post the log here. Keep in mind to censor hostname/username/passwords...

Without the log, it is very hard to guess where the problem lies.

One general hint: I recommend using the SSHConnector over the ParamikoConnector unless you have a good reason to use the latter. The SSHConnector usually has much less issues and the ParamikoConnector mostly still exists due to legacy reasons.

from tbot.

Adnan-Elhammoudi avatar Adnan-Elhammoudi commented on August 16, 2024

Hi,

the same issue has been applied with LocalHost, a board, and a board's Linux environment:

code:

import tbot
import json
from tbot.machine import connector, board, linux
from tbot.machine.linux.linux_shell import LinuxShell

class Device(connector.ConsoleConnector, board.Board):
    with open('config/config.json', 'r') as file:
        data = json.load(file)
        baudrate = data['DUT']['baudrate']
        serial_port = data['DUT']['serial_port']
        user_name = data['DUT']['username']
        pass_word = data['DUT']['password']
        login__prompt = data['DUT']['login_prompt']
        password__prompt = data['DUT']['password_prompt']
        file.close()

    def connect(self, mach):

        ch = mach.open_channel("picocom", "--quiet", "-b", str(Device.baudrate), "-r", "-l", Device.serial_port)
        return ch

class DeviceLinux(board.Connector, board.LinuxBootLogin, linux.Bash):

    login_prompt = Device.login__prompt 
    password_prompt = Device.password__prompt
    username = Device.user_name
    password = Device.pass_word
    login_delay = 5
    boot_timeout = 10

def register_machines(ctx):
    ctx.register(Device, tbot.role.Board)
    ctx.register(DeviceLinux, tbot.role.BoardLinux)

logs:

==================================================================== test session starts =====================================================================
platform linux -- Python 3.8.10, pytest-7.3.1, pluggy-1.0.0 -- /usr/bin/python3
cachedir: .pytest_cache
metadata: {'Python': '3.8.10', 'Platform': 'Linux-5.15.0-91-generic-x86_64-with-glibc2.29', 'Packages': {'pytest': '7.3.1', 'pluggy': '1.0.0'}, 'Plugins': {'metadata': '3.0.0', 'html': '4.1.1'}}
rootdir: /home/adnanelhammoudi/Documents/system-test
plugins: metadata-3.0.0, html-4.1.1
collected 3 items                                                                                                                                            

test_cases/test_connectivity.py::test_hardware_platform[x86_64] │   ├─[local] picocom --quiet -b 115200 -r -l /dev/ttyUSB2
FAILED
test_cases/test_connectivity.py::test_hardware_platform[x86] │   ├─[local] picocom --quiet -b 115200 -r -l /dev/ttyUSB2
FAILED
test_cases/test_connectivity.py::test_hardware_compatibility │   ├─[local] picocom --quiet -b 115200 -r -l /dev/ttyUSB2
^C

========================================================================== FAILURES ==========================================================================
_______________________________________________________________ test_hardware_platform[x86_64] _______________________________________________________________

architecte = 'x86_64'

    @pytest.mark.parametrize("architecte",[HARDWARE_PLATFORMS[0],HARDWARE_PLATFORMS[1]])
    def test_hardware_platform(architecte):
    
>              with tbot.ctx.request(tbot.role.BoardLinux) as lnx:

test_cases/test_connectivity.py:12: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/board.py:168: in from_context
    b = cx.enter_context(ctx.request(tbot.role.Board, exclusive=True))
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/connector/common.py:128: in from_context
    m = cx.enter_context(cls(lh))  # type: ignore
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/local/lib/python3.8/dist-packages/tbot/machine/machine.py:158: in __enter__
    self.ch = self._cx.enter_context(self._connect())
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/connector/common.py:133: in _connect
    with self.host.clone() as cloned, self.connect(cloned) as ch:
config/serial_local_config.py:45: in connect
    ch.read_until_prompt(prompt=Device.login__prompt, timeout = 5)
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:909: in read_until_prompt
    for new in self.read_iter(timeout=timeout):
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:420: in read_iter
    new = self._c.read(max_read, timeout_remaining)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tbot.machine.channel.subprocess.SubprocessChannelIO object at 0x7f7bcddea980>, n = 4096, timeout = 4.968235394000658

    def read(self, n: int, timeout: typing.Optional[float] = None) -> bytes:
        if not self.closed:
            # If the process is still running, wait for one byte or the timeout
            # to arrive.  We run select(2) in a loop to periodically (each
            # second) monitor whether the subprocess is still running.
    
            end_time = None if timeout is None else time.monotonic() + timeout
            while True:
                if end_time is None:
                    select_timeout = MIN_READ_WAIT
                else:
                    select_timeout = min(MIN_READ_WAIT, end_time - time.monotonic())
                    if select_timeout <= 0:
>                       raise TimeoutError()
E                       TimeoutError

/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/subprocess.py:81: TimeoutError
________________________________________________________________ test_hardware_platform[x86] _________________________________________________________________

architecte = 'x86'

    @pytest.mark.parametrize("architecte",[HARDWARE_PLATFORMS[0],HARDWARE_PLATFORMS[1]])
    def test_hardware_platform(architecte):
    
>              with tbot.ctx.request(tbot.role.BoardLinux) as lnx:

test_cases/test_connectivity.py:12: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/board.py:168: in from_context
    b = cx.enter_context(ctx.request(tbot.role.Board, exclusive=True))
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/connector/common.py:128: in from_context
    m = cx.enter_context(cls(lh))  # type: ignore
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/local/lib/python3.8/dist-packages/tbot/machine/machine.py:158: in __enter__
    self.ch = self._cx.enter_context(self._connect())
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/connector/common.py:133: in _connect
    with self.host.clone() as cloned, self.connect(cloned) as ch:
config/serial_local_config.py:45: in connect
    ch.read_until_prompt(prompt=Device.login__prompt, timeout = 5)
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:909: in read_until_prompt
    for new in self.read_iter(timeout=timeout):
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:420: in read_iter
    new = self._c.read(max_read, timeout_remaining)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tbot.machine.channel.subprocess.SubprocessChannelIO object at 0x7f7bcdc526c0>, n = 4096, timeout = 4.984200841994607

    def read(self, n: int, timeout: typing.Optional[float] = None) -> bytes:
        if not self.closed:
            # If the process is still running, wait for one byte or the timeout
            # to arrive.  We run select(2) in a loop to periodically (each
            # second) monitor whether the subprocess is still running.
    
            end_time = None if timeout is None else time.monotonic() + timeout
            while True:
                if end_time is None:
                    select_timeout = MIN_READ_WAIT
                else:
                    select_timeout = min(MIN_READ_WAIT, end_time - time.monotonic())
                    if select_timeout <= 0:
>                       raise TimeoutError()
E                       TimeoutError

/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/subprocess.py:81: TimeoutError
---------------------- Generated html report: file:///home/adnanelhammoudi/Documents/system-test/report.html ----------------------
================================================================== short test summary info ===================================================================
FAILED test_cases/test_connectivity.py::test_hardware_platform[x86_64] - TimeoutError
FAILED test_cases/test_connectivity.py::test_hardware_platform[x86] - TimeoutError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/subprocess.py:83: KeyboardInterrupt
(to show a full traceback on KeyboardInterrupt use --full-trace)
================================================================ 2 failed in 96.96s (0:01:36) ================================================================
adnanelhammoudi@DG-STATION22:~/Documents/system-test$ python3 -m pytest -vvs --tbot-config config.serial_local_config  --html=report.html
==================================================================== test session starts =====================================================================
platform linux -- Python 3.8.10, pytest-7.3.1, pluggy-1.0.0 -- /usr/bin/python3
cachedir: .pytest_cache
metadata: {'Python': '3.8.10', 'Platform': 'Linux-5.15.0-91-generic-x86_64-with-glibc2.29', 'Packages': {'pytest': '7.3.1', 'pluggy': '1.0.0'}, 'Plugins': {'metadata': '3.0.0', 'html': '4.1.1'}}
rootdir: /home/adnanelhammoudi/Documents/system-test
plugins: metadata-3.0.0, html-4.1.1
collected 3 items                                                                                                                                            

test_cases/test_connectivity.py::test_hardware_platform[x86_64] │   ├─[local] picocom --quiet -b 115200 -r -l /dev/ttyUSB2
│   ├─LINUX (device-linux)
FAILED
test_cases/test_connectivity.py::test_hardware_platform[x86] │   ├─[local] picocom --quiet -b 115200 -r -l /dev/ttyUSB2
│   ├─LINUX (device-linux)
FAILED
test_cases/test_connectivity.py::test_hardware_compatibility │   ├─[local] picocom --quiet -b 115200 -r -l /dev/ttyUSB2
│   ├─LINUX (device-linux)
FAILED

========================================================================== FAILURES ==========================================================================
_______________________________________________________________ test_hardware_platform[x86_64] _______________________________________________________________

architecte = 'x86_64'

    @pytest.mark.parametrize("architecte",[HARDWARE_PLATFORMS[0],HARDWARE_PLATFORMS[1]])
    def test_hardware_platform(architecte):
    
>              with tbot.ctx.request(tbot.role.BoardLinux) as lnx:

test_cases/test_connectivity.py:12: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/board.py:169: in from_context
    m = cx.enter_context(cls(b))  # type: ignore
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/local/lib/python3.8/dist-packages/tbot/machine/machine.py:163: in __enter__
    self._cx.enter_context(getattr(cls, "_init_machine")(self))
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/linux.py:150: in _init_machine
    self.ch.read_until_prompt(
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:909: in read_until_prompt
    for new in self.read_iter(timeout=timeout):
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:420: in read_iter
    new = self._c.read(max_read, timeout_remaining)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tbot.machine.channel.subprocess.SubprocessChannelIO object at 0x7f5513f2f840>, n = 4096, timeout = 9.99999977400148

    def read(self, n: int, timeout: typing.Optional[float] = None) -> bytes:
        if not self.closed:
            # If the process is still running, wait for one byte or the timeout
            # to arrive.  We run select(2) in a loop to periodically (each
            # second) monitor whether the subprocess is still running.
    
            end_time = None if timeout is None else time.monotonic() + timeout
            while True:
                if end_time is None:
                    select_timeout = MIN_READ_WAIT
                else:
                    select_timeout = min(MIN_READ_WAIT, end_time - time.monotonic())
                    if select_timeout <= 0:
>                       raise TimeoutError()
E                       TimeoutError

/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/subprocess.py:81: TimeoutError
________________________________________________________________ test_hardware_platform[x86] _________________________________________________________________

architecte = 'x86'

    @pytest.mark.parametrize("architecte",[HARDWARE_PLATFORMS[0],HARDWARE_PLATFORMS[1]])
    def test_hardware_platform(architecte):
    
>              with tbot.ctx.request(tbot.role.BoardLinux) as lnx:

test_cases/test_connectivity.py:12: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/board.py:169: in from_context
    m = cx.enter_context(cls(b))  # type: ignore
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/local/lib/python3.8/dist-packages/tbot/machine/machine.py:163: in __enter__
    self._cx.enter_context(getattr(cls, "_init_machine")(self))
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/linux.py:150: in _init_machine
    self.ch.read_until_prompt(
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:909: in read_until_prompt
    for new in self.read_iter(timeout=timeout):
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:420: in read_iter
    new = self._c.read(max_read, timeout_remaining)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tbot.machine.channel.subprocess.SubprocessChannelIO object at 0x7f5513daa980>, n = 4096, timeout = 9.999999380997906

    def read(self, n: int, timeout: typing.Optional[float] = None) -> bytes:
        if not self.closed:
            # If the process is still running, wait for one byte or the timeout
            # to arrive.  We run select(2) in a loop to periodically (each
            # second) monitor whether the subprocess is still running.
    
            end_time = None if timeout is None else time.monotonic() + timeout
            while True:
                if end_time is None:
                    select_timeout = MIN_READ_WAIT
                else:
                    select_timeout = min(MIN_READ_WAIT, end_time - time.monotonic())
                    if select_timeout <= 0:
>                       raise TimeoutError()
E                       TimeoutError

/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/subprocess.py:81: TimeoutError
________________________________________________________________ test_hardware_compatibility _________________________________________________________________

    def test_hardware_compatibility():
    
>       with tbot.ctx.request(tbot.role.BoardLinux ) as lnx:

test_cases/test_connectivity.py:21: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/context.py:360: in request
    instance.init(context=machine_class.from_context(self))
/usr/local/lib/python3.8/dist-packages/tbot/context.py:53: in init
    self._instance = self._cx.enter_context(context)
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/board.py:169: in from_context
    m = cx.enter_context(cls(b))  # type: ignore
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/local/lib/python3.8/dist-packages/tbot/machine/machine.py:163: in __enter__
    self._cx.enter_context(getattr(cls, "_init_machine")(self))
/usr/lib/python3.8/contextlib.py:425: in enter_context
    result = _cm_type.__enter__(cm)
/usr/lib/python3.8/contextlib.py:113: in __enter__
    return next(self.gen)
/usr/local/lib/python3.8/dist-packages/tbot/machine/board/linux.py:150: in _init_machine
    self.ch.read_until_prompt(
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:909: in read_until_prompt
    for new in self.read_iter(timeout=timeout):
/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/channel.py:420: in read_iter
    new = self._c.read(max_read, timeout_remaining)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tbot.machine.channel.subprocess.SubprocessChannelIO object at 0x7f5513d48340>, n = 4096, timeout = 9.999999854000635

    def read(self, n: int, timeout: typing.Optional[float] = None) -> bytes:
        if not self.closed:
            # If the process is still running, wait for one byte or the timeout
            # to arrive.  We run select(2) in a loop to periodically (each
            # second) monitor whether the subprocess is still running.
    
            end_time = None if timeout is None else time.monotonic() + timeout
            while True:
                if end_time is None:
                    select_timeout = MIN_READ_WAIT
                else:
                    select_timeout = min(MIN_READ_WAIT, end_time - time.monotonic())
                    if select_timeout <= 0:
>                       raise TimeoutError()
E                       TimeoutError

/usr/local/lib/python3.8/dist-packages/tbot/machine/channel/subprocess.py:81: TimeoutError
---------------------- Generated html report: file:///home/adnanelhammoudi/Documents/system-test/report.html ----------------------
================================================================== short test summary info ===================================================================
FAILED test_cases/test_connectivity.py::test_hardware_platform[x86_64] - TimeoutError
FAILED test_cases/test_connectivity.py::test_hardware_platform[x86] - TimeoutError
FAILED test_cases/test_connectivity.py::test_hardware_compatibility - TimeoutError
===================================================================== 3 failed in 31.11s =====================================================================

from tbot.

Adnan-Elhammoudi avatar Adnan-Elhammoudi commented on August 16, 2024

it works when I have changed login_prompt = "~#" to login_prompt = "" , I don't know why !

from tbot.

Rahix avatar Rahix commented on August 16, 2024

Hm, login_prompt = "" looks very wrong. However, please try

login_prompt = "~# "
#                 ^- notice the space here

from tbot.

Adnan-Elhammoudi avatar Adnan-Elhammoudi commented on August 16, 2024

I have tried with and without a space "~# " "~#" , the issue here is the login prompt does not show up when reading the stdout until pressing ENTER,

it hangs on the last log message from the kernel

image

from tbot.

Rahix avatar Rahix commented on August 16, 2024

Please provide some more context. Are you sure there isn't a login prompt somewhere between the kernel log messages during boot? Can you share a bit more of the bootlog maybe?

from tbot.

Adnan-Elhammoudi avatar Adnan-Elhammoudi commented on August 16, 2024

it has automatic login actually and it runs a script after, but i was trying to catch the console prompt to run the test using software abstract role.
I can't detected it until pressing enter, even manually I have to do so.
I have tried to send enter as control character after creating the channel directly in the physical board role but it does not works.

from tbot.

Adnan-Elhammoudi avatar Adnan-Elhammoudi commented on August 16, 2024

it seems working by passing none to the login prompt since it has automatic login

from tbot.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.