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
21class 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
44class 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])
56