* [PATCH] oeqa/runtime/ping: don't bother trying to ping localhost
@ 2024-11-14 17:43 Ross Burton
2024-11-18 8:51 ` [OE-core] " Mikko Rapeli
0 siblings, 1 reply; 2+ messages in thread
From: Ross Burton @ 2024-11-14 17:43 UTC (permalink / raw)
To: openembedded-core
If SLIRP is being used instead of TAP for networking to the guest then
the target IP will be localhost. There's no point in pinging localhost
to see if the target is up but whilst you'd think it is harmless, in
some containers ping doesn't actually have enough rights to work:
ping: socktype: SOCK_RAW
ping: socket: Operation not permitted
ping: => missing cap_net_raw+p capability or setuid?
Look at the target address and if it's localhost or 127.0.0.* return
immediately.
Signed-off-by: Ross Burton <ross.burton@arm.com>
---
meta/lib/oeqa/runtime/cases/ping.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/meta/lib/oeqa/runtime/cases/ping.py b/meta/lib/oeqa/runtime/cases/ping.py
index f72460e7f3f..bc543f6c41e 100644
--- a/meta/lib/oeqa/runtime/cases/ping.py
+++ b/meta/lib/oeqa/runtime/cases/ping.py
@@ -18,6 +18,13 @@ class PingTest(OERuntimeTestCase):
output = ''
count = 0
self.assertNotEqual(len(self.target.ip), 0, msg="No target IP address set")
+
+ # If the target IP is localhost (because user-space networking is being used),
+ # then there's no point in pinging it.
+ if self.target.ip.startswith("127.0.0.") or self.target.ip in ("localhost", "::1"):
+ print("runtime/ping: localhost detected, not pinging")
+ return
+
try:
while count < 5:
cmd = 'ping -c 1 %s' % self.target.ip
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [OE-core] [PATCH] oeqa/runtime/ping: don't bother trying to ping localhost
2024-11-14 17:43 [PATCH] oeqa/runtime/ping: don't bother trying to ping localhost Ross Burton
@ 2024-11-18 8:51 ` Mikko Rapeli
0 siblings, 0 replies; 2+ messages in thread
From: Mikko Rapeli @ 2024-11-18 8:51 UTC (permalink / raw)
To: ross.burton; +Cc: openembedded-core
Hi,
On Thu, Nov 14, 2024 at 05:43:36PM +0000, Ross Burton via lists.openembedded.org wrote:
> If SLIRP is being used instead of TAP for networking to the guest then
> the target IP will be localhost. There's no point in pinging localhost
> to see if the target is up but whilst you'd think it is harmless, in
> some containers ping doesn't actually have enough rights to work:
>
> ping: socktype: SOCK_RAW
> ping: socket: Operation not permitted
> ping: => missing cap_net_raw+p capability or setuid?
>
> Look at the target address and if it's localhost or 127.0.0.* return
> immediately.
>
> Signed-off-by: Ross Burton <ross.burton@arm.com>
> ---
> meta/lib/oeqa/runtime/cases/ping.py | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/meta/lib/oeqa/runtime/cases/ping.py b/meta/lib/oeqa/runtime/cases/ping.py
> index f72460e7f3f..bc543f6c41e 100644
> --- a/meta/lib/oeqa/runtime/cases/ping.py
> +++ b/meta/lib/oeqa/runtime/cases/ping.py
> @@ -18,6 +18,13 @@ class PingTest(OERuntimeTestCase):
> output = ''
> count = 0
> self.assertNotEqual(len(self.target.ip), 0, msg="No target IP address set")
> +
> + # If the target IP is localhost (because user-space networking is being used),
> + # then there's no point in pinging it.
> + if self.target.ip.startswith("127.0.0.") or self.target.ip in ("localhost", "::1"):
> + print("runtime/ping: localhost detected, not pinging")
> + return
> +
> try:
> while count < 5:
> cmd = 'ping -c 1 %s' % self.target.ip
I think this is the right thing to do and enables running these tests in kas container
for meta-arm.
I have seen some other odd ping test failures with meta-arm builds,
which may be related:
QMP connected to QEMU at 10/31/24 13:36:14 and took 0.58 seconds
QMP released QEMU at 10/31/24 13:36:14 and took 0.18 seconds from connect
Bitbake still alive (no events for 600s). Active tasks:
/home/builder/src/base/meta-arm/build/../poky/meta/recipes-core/images/core-image-base.bb:do_testimage
Test requires apt to be installed
Traceback (most recent call last):
File "/home/builder/src/base/meta-arm/poky/meta/lib/oeqa/runtime/cases/ping.py", line 30, in test_ping
sleep(1)
File "/home/builder/src/base/meta-arm/build/../poky/meta/lib/oeqa/core/decorator/oetimeout.py", line 18, in _timeoutHandler
raise OEQATimeoutError("Timed out after %s "
oeqa.core.exception.OEQATimeoutError: Timed out after 30 seconds of execution
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/builder/src/base/meta-arm/build/../poky/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f
return func(*args, **kwargs)
File "/home/builder/src/base/meta-arm/poky/meta/lib/oeqa/runtime/cases/ping.py", line 32, in test_ping
self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output))
AssertionError: Ping timeout error for address 127.0.0.1, count 0, output:
Then I also saw in one case that running "ping" host binary failed due to
command not found when it for sure was there on the host. I think leaked
cooker processes could have caused these and expected something to be in
build/tmp which had been removed.
While debugging into these, I stumbled on the non-cought RuntimeError exception
in testimage.bbclass which could explain the errors.
Just wanted to share these in case someone has seen similar odd things...
Cheers,
-Mikko
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-11-18 8:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-14 17:43 [PATCH] oeqa/runtime/ping: don't bother trying to ping localhost Ross Burton
2024-11-18 8:51 ` [OE-core] " Mikko Rapeli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox