From: Cleber Rosa <crosa@redhat.com>
To: Beraldo Leal <bleal@redhat.com>
Cc: thuth@redhat.com, berrange@redhat.com, qemu-devel@nongnu.org,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>
Subject: Re: [PATCH] tests/avocado: starts PhoneServer upfront
Date: Fri, 11 Mar 2022 11:18:38 -0500 [thread overview]
Message-ID: <87wnh0xxlz.fsf@p50.localhost.localdomain> (raw)
In-Reply-To: <20220311150054.tfn4wtbzm6uhflcu@laptop.redhat>
Beraldo Leal <bleal@redhat.com> writes:
> On Fri, Mar 11, 2022 at 09:28:24AM -0500, Cleber Rosa wrote:
>>
>> Beraldo Leal <bleal@redhat.com> writes:
>>
>> > Race conditions can happen with the current code, because the port that
>> > was available might not be anymore by the time the server is started.
>> >
>> > By setting the port to 0, PhoneServer it will use the OS default
>> > behavior to get a free port, then we save this information so we can
>> > later configure the guest.
>> >
>> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
>> > Signed-off-by: Beraldo Leal <bleal@redhat.com>
>> > ---
>> > tests/avocado/avocado_qemu/__init__.py | 13 ++++++++-----
>> > 1 file changed, 8 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/tests/avocado/avocado_qemu/__init__.py b/tests/avocado/avocado_qemu/__init__.py
>> > index 9b056b5ce5..e830d04b84 100644
>> > --- a/tests/avocado/avocado_qemu/__init__.py
>> > +++ b/tests/avocado/avocado_qemu/__init__.py
>> > @@ -602,9 +602,8 @@ def prepare_cloudinit(self, ssh_pubkey=None):
>> > self.log.info('Preparing cloudinit image')
>> > try:
>> > cloudinit_iso = os.path.join(self.workdir, 'cloudinit.iso')
>> > - self.phone_home_port = network.find_free_port()
>> > - if not self.phone_home_port:
>> > - self.cancel('Failed to get a free port')
>> > + if not self.phone_server:
>> > + self.cancel('Failed to get port used by the PhoneServer.')
>>
>> Can you think of a condition where `self.phone_server` would not
>> evaluate to True? `network.find_free_port()` could return None, so this
>> check was valid. But now with `cloudinit.PhoneHomeServer`, I can not
>> see how we'd end up with a similar condition. Instantiating
>> `cloudinit.PhoneHomeServer` where a port can not be alloccated, AFAICT,
>> would raise a socket exception instead.
>
> Since this is a public method and could be called anytime before
> set_up_cloudinit(), I decided to keep the check just for safety reasons.
> Ideally, I would prefer not to have this dependency and add a new
> argument, but I didn't want to change the method signature since it
> would be required.
>
I'm not sure I follow your point. Let me try to rephrase mine, in case
I failed to communicate it: I can't see how "if not self.phone_server"
is a valid check given that it will either:
* Contain an instance with a port that is already allocated, OR
* Not get assigned if cloudinit.PhoneHomeServer() fails (and raises an
exception).
Instead of this check, it'd make sense to have a try/except block
protecting the PhoneHomeServer instantiation, and canceling the test if
it fails.
Or maybe you meant to check for self.phone_server.server_port instead?
Cheers,
- Cleber.
next prev parent reply other threads:[~2022-03-11 16:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-11 13:09 [PATCH] tests/avocado: starts PhoneServer upfront Beraldo Leal
2022-03-11 13:14 ` Daniel P. Berrangé
2022-03-11 14:28 ` Cleber Rosa
2022-03-11 15:00 ` Beraldo Leal
2022-03-11 16:18 ` Cleber Rosa [this message]
2022-03-11 16:48 ` Beraldo Leal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wnh0xxlz.fsf@p50.localhost.localdomain \
--to=crosa@redhat.com \
--cc=berrange@redhat.com \
--cc=bleal@redhat.com \
--cc=f4bug@amsat.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.