tests/migration: Tweek auto converge limits check

Thomas found an autoconverge test failure where the
migration completed before the autoconverge had kicked in.

To try and avoid this again:
  a) Reduce the usleep in test_migrate_auto_converge
    so that it should exit quicker when autoconverge kicks in
  b) Make the loop exit immediately rather than have the sleep
     when it does start autoconverge, otherwise the autoconverge
     might succeed during the sleep.
  c) Reduce inc_pct so auto converge happens more slowly
  d) Reduce the max-bandwidth in migrate_ensure_non_converge
    to make the ensure more ensure.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20230306152612.52291-1-dgilbert@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Dr. David Alan Gilbert 2023-03-06 15:26:12 +00:00 committed by Thomas Huth
parent 29c8a9e31a
commit 1bfc8dde50

View File

@ -408,8 +408,8 @@ static void migrate_set_parameter_str(QTestState *who, const char *parameter,
static void migrate_ensure_non_converge(QTestState *who)
{
/* Can't converge with 1ms downtime + 30 mbs bandwidth limit */
migrate_set_parameter_int(who, "max-bandwidth", 30 * 1000 * 1000);
/* Can't converge with 1ms downtime + 3 mbs bandwidth limit */
migrate_set_parameter_int(who, "max-bandwidth", 3 * 1000 * 1000);
migrate_set_parameter_int(who, "downtime-limit", 1);
}
@ -1808,7 +1808,7 @@ static void test_migrate_auto_converge(void)
* E.g., with 1Gb/s bandwith migration may pass without throttling,
* so we need to decrease a bandwidth.
*/
const int64_t init_pct = 5, inc_pct = 50, max_pct = 95;
const int64_t init_pct = 5, inc_pct = 25, max_pct = 95;
if (test_migrate_start(&from, &to, uri, &args)) {
return;
@ -1835,13 +1835,16 @@ static void test_migrate_auto_converge(void)
/* Wait for throttling begins */
percentage = 0;
while (percentage == 0) {
do {
percentage = read_migrate_property_int(from, "cpu-throttle-percentage");
usleep(100);
if (percentage != 0) {
break;
}
usleep(20);
g_assert_false(got_stop);
}
/* The first percentage of throttling should be equal to init_pct */
g_assert_cmpint(percentage, ==, init_pct);
} while (true);
/* The first percentage of throttling should be at least init_pct */
g_assert_cmpint(percentage, >=, init_pct);
/* Now, when we tested that throttling works, let it converge */
migrate_ensure_converge(from);