guestperf: Add test result data into report

The migration result data is not included in the guestperf
report information; include the result as a report entry
so the developer can check whether the migration was successful
after running guestperf.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Message-ID: <6303400c2983ffe5647f07caa6406f00ceae4581.1739530098.git.yong.huang@smartx.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
Hyman Huang 2025-02-14 18:55:26 +08:00 committed by Fabiano Rosas
parent 45f34156e4
commit 5984870e02
2 changed files with 28 additions and 2 deletions

View file

@ -24,7 +24,7 @@ import sys
import time import time
from guestperf.progress import Progress, ProgressStats from guestperf.progress import Progress, ProgressStats
from guestperf.report import Report from guestperf.report import Report, ReportResult
from guestperf.timings import TimingRecord, Timings from guestperf.timings import TimingRecord, Timings
sys.path.append(os.path.join(os.path.dirname(__file__), sys.path.append(os.path.join(os.path.dirname(__file__),
@ -276,7 +276,11 @@ class Engine(object):
src_vcpu_time.extend(self._vcpu_timing(src_pid, src_threads)) src_vcpu_time.extend(self._vcpu_timing(src_pid, src_threads))
sleep_secs -= 1 sleep_secs -= 1
return [progress_history, src_qemu_time, src_vcpu_time] result = ReportResult()
if progress._status == "completed" and not paused:
result = ReportResult(True)
return [progress_history, src_qemu_time, src_vcpu_time, result]
if self._verbose and (loop % 20) == 0: if self._verbose and (loop % 20) == 0:
print("Iter %d: remain %5dMB of %5dMB (total %5dMB @ %5dMb/sec)" % ( print("Iter %d: remain %5dMB of %5dMB (total %5dMB @ %5dMb/sec)" % (
@ -490,6 +494,7 @@ class Engine(object):
progress_history = ret[0] progress_history = ret[0]
qemu_timings = ret[1] qemu_timings = ret[1]
vcpu_timings = ret[2] vcpu_timings = ret[2]
result = ret[3]
if uri[0:5] == "unix:" and os.path.exists(uri[5:]): if uri[0:5] == "unix:" and os.path.exists(uri[5:]):
os.remove(uri[5:]) os.remove(uri[5:])
@ -509,6 +514,7 @@ class Engine(object):
Timings(self._get_timings(src) + self._get_timings(dst)), Timings(self._get_timings(src) + self._get_timings(dst)),
Timings(qemu_timings), Timings(qemu_timings),
Timings(vcpu_timings), Timings(vcpu_timings),
result,
self._binary, self._dst_host, self._kernel, self._binary, self._dst_host, self._kernel,
self._initrd, self._transport, self._sleep) self._initrd, self._transport, self._sleep)
except Exception as e: except Exception as e:

View file

@ -24,6 +24,22 @@ from guestperf.scenario import Scenario
from guestperf.progress import Progress from guestperf.progress import Progress
from guestperf.timings import Timings from guestperf.timings import Timings
class ReportResult(object):
def __init__(self, success=False):
self._success = success
def serialize(self):
return {
"success": self._success,
}
@classmethod
def deserialize(cls, data):
return cls(
data["success"])
class Report(object): class Report(object):
def __init__(self, def __init__(self,
@ -33,6 +49,7 @@ class Report(object):
guest_timings, guest_timings,
qemu_timings, qemu_timings,
vcpu_timings, vcpu_timings,
result,
binary, binary,
dst_host, dst_host,
kernel, kernel,
@ -46,6 +63,7 @@ class Report(object):
self._guest_timings = guest_timings self._guest_timings = guest_timings
self._qemu_timings = qemu_timings self._qemu_timings = qemu_timings
self._vcpu_timings = vcpu_timings self._vcpu_timings = vcpu_timings
self._result = result
self._binary = binary self._binary = binary
self._dst_host = dst_host self._dst_host = dst_host
self._kernel = kernel self._kernel = kernel
@ -61,6 +79,7 @@ class Report(object):
"guest_timings": self._guest_timings.serialize(), "guest_timings": self._guest_timings.serialize(),
"qemu_timings": self._qemu_timings.serialize(), "qemu_timings": self._qemu_timings.serialize(),
"vcpu_timings": self._vcpu_timings.serialize(), "vcpu_timings": self._vcpu_timings.serialize(),
"result": self._result.serialize(),
"binary": self._binary, "binary": self._binary,
"dst_host": self._dst_host, "dst_host": self._dst_host,
"kernel": self._kernel, "kernel": self._kernel,
@ -78,6 +97,7 @@ class Report(object):
Timings.deserialize(data["guest_timings"]), Timings.deserialize(data["guest_timings"]),
Timings.deserialize(data["qemu_timings"]), Timings.deserialize(data["qemu_timings"]),
Timings.deserialize(data["vcpu_timings"]), Timings.deserialize(data["vcpu_timings"]),
ReportResult.deserialize(data["result"]),
data["binary"], data["binary"],
data["dst_host"], data["dst_host"],
data["kernel"], data["kernel"],