xref: /openbmc/qemu/tests/migration-stress/guestperf/timings.py (revision bdce9bc9179bd7b6f4e12c759dd3cd6794e26a6b)
1*212c1933SFabiano Rosas#
2*212c1933SFabiano Rosas# Migration test timing records
3*212c1933SFabiano Rosas#
4*212c1933SFabiano Rosas# Copyright (c) 2016 Red Hat, Inc.
5*212c1933SFabiano Rosas#
6*212c1933SFabiano Rosas# This library is free software; you can redistribute it and/or
7*212c1933SFabiano Rosas# modify it under the terms of the GNU Lesser General Public
8*212c1933SFabiano Rosas# License as published by the Free Software Foundation; either
9*212c1933SFabiano Rosas# version 2.1 of the License, or (at your option) any later version.
10*212c1933SFabiano Rosas#
11*212c1933SFabiano Rosas# This library is distributed in the hope that it will be useful,
12*212c1933SFabiano Rosas# but WITHOUT ANY WARRANTY; without even the implied warranty of
13*212c1933SFabiano Rosas# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14*212c1933SFabiano Rosas# Lesser General Public License for more details.
15*212c1933SFabiano Rosas#
16*212c1933SFabiano Rosas# You should have received a copy of the GNU Lesser General Public
17*212c1933SFabiano Rosas# License along with this library; if not, see <http://www.gnu.org/licenses/>.
18*212c1933SFabiano Rosas#
19*212c1933SFabiano Rosas
20*212c1933SFabiano Rosas
21*212c1933SFabiano Rosasclass TimingRecord(object):
22*212c1933SFabiano Rosas
23*212c1933SFabiano Rosas    def __init__(self, tid, timestamp, value):
24*212c1933SFabiano Rosas
25*212c1933SFabiano Rosas        self._tid = tid
26*212c1933SFabiano Rosas        self._timestamp = timestamp
27*212c1933SFabiano Rosas        self._value = value
28*212c1933SFabiano Rosas
29*212c1933SFabiano Rosas    def serialize(self):
30*212c1933SFabiano Rosas        return {
31*212c1933SFabiano Rosas            "tid": self._tid,
32*212c1933SFabiano Rosas            "timestamp": self._timestamp,
33*212c1933SFabiano Rosas            "value": self._value
34*212c1933SFabiano Rosas        }
35*212c1933SFabiano Rosas
36*212c1933SFabiano Rosas    @classmethod
37*212c1933SFabiano Rosas    def deserialize(cls, data):
38*212c1933SFabiano Rosas        return cls(
39*212c1933SFabiano Rosas            data["tid"],
40*212c1933SFabiano Rosas            data["timestamp"],
41*212c1933SFabiano Rosas            data["value"])
42*212c1933SFabiano Rosas
43*212c1933SFabiano Rosas
44*212c1933SFabiano Rosasclass Timings(object):
45*212c1933SFabiano Rosas
46*212c1933SFabiano Rosas    def __init__(self, records):
47*212c1933SFabiano Rosas
48*212c1933SFabiano Rosas        self._records = records
49*212c1933SFabiano Rosas
50*212c1933SFabiano Rosas    def serialize(self):
51*212c1933SFabiano Rosas        return [record.serialize() for record in self._records]
52*212c1933SFabiano Rosas
53*212c1933SFabiano Rosas    @classmethod
54*212c1933SFabiano Rosas    def deserialize(cls, data):
55*212c1933SFabiano Rosas        return Timings([TimingRecord.deserialize(record) for record in data])
56