[Spice-devel] [spice v1 6/8] tests: migrate: add option for hostname change
Uri Lublin
uril at redhat.com
Wed Oct 30 16:46:54 UTC 2019
Hi Victor,
On 10/7/19 3:19 PM, Victor Toso wrote:
> From: Victor Toso <me at victortoso.com>
>
> This is used in the migrate message and being able to tweak it allows
> clients from different machines to test this local migration test.
>
> Example of usage:
> ./migrate.py --hostname 192.168.122.1 --wait-user-connect
>
> In a VM with access to 192.168.122.1:
> remote-viewer spice://192.168.122.1:5911
>
> Signed-off-by: Victor Toso <victortoso at redhat.com>
> ---
> tests/migrate.py | 23 ++++++++++++++---------
> 1 file changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/tests/migrate.py b/tests/migrate.py
> index 742c9fab..2f8b3fbb 100755
> --- a/tests/migrate.py
> +++ b/tests/migrate.py
> @@ -20,7 +20,7 @@ Will leave a log file, migrate_test.log, in current directory.
> # and repeat:
> # active wait until it's active
> # active client_migrate_info
> -# active migrate tcp:localhost:9000
> +# active migrate tcp:$hostname:9000
I think the migrate command itself can keep the "localhost"
(Not too important, but shows that the migration itself is on a single
host.)
See also below for the same
> # _wait for event of quit
> # active stop, active<->passive
> #
> @@ -57,6 +57,8 @@ def get_args():
> parser.add_argument('--qemu', dest='qemu', default='../../qemu/x86_64-softmmu/qemu-system-x86_64')
> parser.add_argument('--log_filename', dest='log_filename', default='migrate.log')
> parser.add_argument('--image', dest='image', default='')
> + parser.add_argument("--hostname", dest='hostname', default='localhost',
> + help="Set hostname used in migration message (default: localhost")
This is to be used together with --wait-user-connect, right ?
Consider adding a check for it (can be a separate patch).
> parser.add_argument('--client', dest='client', default='none', choices=['spicy', 'remote-viewer', 'none'],
> help="Automatically lunch one of supported clients or none (default)")
> parser.add_argument('--vdagent', dest="vdagent", action='store_true', default=False,
> @@ -115,10 +117,10 @@ def start_qemu(qemu_exec, image, spice_port, qmp_filename, incoming_port=None, w
> proc.incoming_port = incoming_port
> return proc
>
> -def start_client(client, spice_port):
> - client_cmd = "spicy --uri spice://localhost:%s" % (spice_port)
> +def start_client(client, hostname, spice_port):
> + client_cmd = "spicy --uri spice://%s:%s" % (hostname, spice_port)
> if client == "remote-viewer":
> - client_cmd = "remote-viewer spice://localhost:%s" % (spice_port)
> + client_cmd = "remote-viewer spice://%s:%s" % (hostname, spice_port)
If the script starts it, then both server and client are on the same
(localhost) machine.
>
> return Popen(client_cmd.split(), executable=client)
>
> @@ -151,7 +153,7 @@ class Migrator(object):
> migration_count = 0
>
> def __init__(self, log, client, qemu_exec, image, monitor_files,
> - spice_ports, migration_port, vdagent):
> + spice_ports, migration_port, vdagent, hostname):
> self.client = client if client != "none" else None
> self.log = log
> self.qemu_exec = qemu_exec
> @@ -160,6 +162,7 @@ class Migrator(object):
> self.monitor_files = monitor_files
> self.spice_ports = spice_ports
> self.vdagent = vdagent
> + self.hostname = hostname
>
> self.active = start_qemu(qemu_exec=qemu_exec, image=image, spice_port=spice_ports[0],
> qmp_filename=monitor_files[0], with_agent=self.vdagent)
> @@ -189,7 +192,9 @@ class Migrator(object):
> wait_active(self.target.qmp, False)
> if not self.connected_client:
> if self.client:
> - self.connected_client = start_client(client=self.client, spice_port=self.spice_ports[0])
> + self.connected_client = start_client(client = self.client,
> + hostname = self.hostname,
> + spice_port = self.spice_ports[0])
>
> if wait_for_user_input:
> print "waiting for Enter to start migrations"
> @@ -201,11 +206,11 @@ class Migrator(object):
>
> self.active.qmp.cmd('client_migrate_info', {
> 'protocol' : 'spice',
> - 'hostname' : 'localhost',
> + 'hostname' : self.hostname,
I think this is the important code.
> 'port' : self.target.spice_port
> })
> self.active.qmp.cmd('migrate', {
> - 'uri': 'tcp:localhost:%s' % self.migration_port
> + 'uri': 'tcp:%s:%s' % (self.hostname, self.migration_port)
Here, it can be left 'localhost'
Uri.
> })
> wait_active(self.active.qmp, False)
> wait_active(self.target.qmp, True)
> @@ -239,7 +244,7 @@ def main():
> migrator = Migrator(client=args.client, qemu_exec=args.qemu_exec,
> image=args.image, log=log, monitor_files=[args.qmp1, args.qmp2],
> migration_port=args.migrate_port, spice_ports=[args.spice_port1,
> - args.spice_port2], vdagent=args.vdagent)
> + args.spice_port2], vdagent=args.vdagent, hostname=args.hostname)
> atexit.register(cleanup, migrator)
> counter = 0
> while args.counter == 0 or counter < args.counter:
>
More information about the Spice-devel
mailing list