mirror of
https://git.yoctoproject.org/poky
synced 2026-03-28 19:02:22 +01:00
After the changes to improve this test, we keep seeing image testing ssh failures, particularly on mips. It looks like part of the problem is that on a loaded system, 5s is too short for mips to reliably establish an ssh connection. I've seen logs where it keeps timing out and fails to work, then the debug code successfully uses ssh later after everything else fails. Change the timings/retries to give slow platforms enough time to respond. (From OE-Core rev: 5158ceb4179ec53e396a57068714aea7d81e3f59) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit ba64ccf3ad6e40461219b72d60eb0fe5cb38fddd) Signed-off-by: Steve Sakoman <steve@sakoman.com>
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
#
|
|
# Copyright OpenEmbedded Contributors
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
import time
|
|
import signal
|
|
|
|
from oeqa.runtime.case import OERuntimeTestCase
|
|
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=5)
|
|
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(30)
|
|
continue
|
|
else:
|
|
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))
|