Files
poky/meta/lib/oeqa/runtime/cases/ssh.py
Jon Mason 001eea1f7d oeqa/runtime/ssh: increase the number of attempts
Under high load, the ssh test is hitting the amount of retries.
Increase it to 20 to avoid this issue.  This would increase the maximum
failure time from 50 seconds (5 * 10) to 100 seconds.

(From OE-Core rev: c796438eec5dd6b4671b798f85506bc89ff402ab)

Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-08-22 16:17:41 +01:00

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(20):
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(5)
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))