1234567891011121314151617181920212223242526272829303132333435363738 |
- #
- # Copyright OpenEmbedded Contributors
- #
- # SPDX-License-Identifier: MIT
- #
- import time
- import signal
- from oeqa.runtime.case import OERuntimeTestCase, run_network_serialdebug
- from oeqa.core.decorator.depends import OETestDepends
- from oeqa.runtime.decorator.package import OEHasPackage
- class SSHTest(OERuntimeTestCase):
- @OETestDepends(['ping.PingTest.test_ping'])
- @OEHasPackage(['dropbear', 'openssh-sshd'])
- def test_ssh(self):
- for i in range(5):
- status, output = self.target.run("uname -a", timeout=30)
- if status == 0:
- break
- elif status == 255 or status == -signal.SIGTERM:
- # ssh returns 255 only if a ssh error occurs. This could
- # be an issue with "Connection refused" because the port
- # isn't open yet, and this could check explicitly for that
- # here. However, let's keep it simple and just retry for
- # all errors a limited amount of times with a sleep to
- # give it time for the port to open.
- # We sometimes see -15 (SIGTERM) on slow emulation machines too, likely
- # from boot/init not being 100% complete, retry for these too.
- time.sleep(5)
- continue
- else:
- run_network_serialdebug(self.target.runner)
- self.fail("uname failed with \"%s\" (exit code %s)" % (output, status))
- if status != 0:
- self.fail("ssh failed with \"%s\" (exit code %s)" % (output, status))
|