Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
[qemu.git] / tests / migration / guestperf / timings.py
1 #
2 # Migration test timing records
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
21 class TimingRecord(object):
22
23 def __init__(self, tid, timestamp, value):
24
25 self._tid = tid
26 self._timestamp = timestamp
27 self._value = value
28
29 def serialize(self):
30 return {
31 "tid": self._tid,
32 "timestamp": self._timestamp,
33 "value": self._value
34 }
35
36 @classmethod
37 def deserialize(cls, data):
38 return cls(
39 data["tid"],
40 data["timestamp"],
41 data["value"])
42
43
44 class Timings(object):
45
46 def __init__(self, records):
47
48 self._records = records
49
50 def serialize(self):
51 return [record.serialize() for record in self._records]
52
53 @classmethod
54 def deserialize(cls, data):
55 return Timings([TimingRecord.deserialize(record) for record in data])