qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

report.py (3307B)


      1 #
      2 # Migration test output result reporting
      3 #
      4 # Copyright (c) 2016 Red Hat, Inc.
      5 #
      6 # This library is free software; you can redistribute it and/or
      7 # modify it under the terms of the GNU Lesser General Public
      8 # License as published by the Free Software Foundation; either
      9 # version 2.1 of the License, or (at your option) any later version.
     10 #
     11 # This library is distributed in the hope that it will be useful,
     12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 # Lesser General Public License for more details.
     15 #
     16 # You should have received a copy of the GNU Lesser General Public
     17 # License along with this library; if not, see <http://www.gnu.org/licenses/>.
     18 #
     19 
     20 import json
     21 
     22 from guestperf.hardware import Hardware
     23 from guestperf.scenario import Scenario
     24 from guestperf.progress import Progress
     25 from guestperf.timings import Timings
     26 
     27 class Report(object):
     28 
     29     def __init__(self,
     30                  hardware,
     31                  scenario,
     32                  progress_history,
     33                  guest_timings,
     34                  qemu_timings,
     35                  vcpu_timings,
     36                  binary,
     37                  dst_host,
     38                  kernel,
     39                  initrd,
     40                  transport,
     41                  sleep):
     42 
     43         self._hardware = hardware
     44         self._scenario = scenario
     45         self._progress_history = progress_history
     46         self._guest_timings = guest_timings
     47         self._qemu_timings = qemu_timings
     48         self._vcpu_timings = vcpu_timings
     49         self._binary = binary
     50         self._dst_host = dst_host
     51         self._kernel = kernel
     52         self._initrd = initrd
     53         self._transport = transport
     54         self._sleep = sleep
     55 
     56     def serialize(self):
     57         return {
     58             "hardware": self._hardware.serialize(),
     59             "scenario": self._scenario.serialize(),
     60             "progress_history": [progress.serialize() for progress in self._progress_history],
     61             "guest_timings": self._guest_timings.serialize(),
     62             "qemu_timings": self._qemu_timings.serialize(),
     63             "vcpu_timings": self._vcpu_timings.serialize(),
     64             "binary": self._binary,
     65             "dst_host": self._dst_host,
     66             "kernel": self._kernel,
     67             "initrd": self._initrd,
     68             "transport": self._transport,
     69             "sleep": self._sleep,
     70         }
     71 
     72     @classmethod
     73     def deserialize(cls, data):
     74         return cls(
     75             Hardware.deserialize(data["hardware"]),
     76             Scenario.deserialize(data["scenario"]),
     77             [Progress.deserialize(record) for record in data["progress_history"]],
     78             Timings.deserialize(data["guest_timings"]),
     79             Timings.deserialize(data["qemu_timings"]),
     80             Timings.deserialize(data["vcpu_timings"]),
     81             data["binary"],
     82             data["dst_host"],
     83             data["kernel"],
     84             data["initrd"],
     85             data["transport"],
     86             data["sleep"])
     87 
     88     def to_json(self):
     89         return json.dumps(self.serialize(), indent=4)
     90 
     91     @classmethod
     92     def from_json(cls, data):
     93         return cls.deserialize(json.loads(data))
     94 
     95     @classmethod
     96     def from_json_file(cls, filename):
     97         with open(filename, "r") as fh:
     98             return cls.deserialize(json.load(fh))