blob: 572b3114ccfafe1e991a2e762e242228cbd222da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from tracing.mre import failure as failure_module
class DuplicateKeyError(Exception):
"""Raised if an attempt is made to set a key more than once."""
class MreResult(object):
def __init__(self, failures=None, pairs=None):
if failures is None:
failures = []
if pairs is None:
pairs = {}
self._failures = failures
self._pairs = pairs
@property
def failures(self):
return self._failures
@property
def pairs(self):
return self._pairs
def AsDict(self):
d = {
'pairs': self._pairs
}
if self.failures:
d['failures'] = [failure.AsDict() for failure in self._failures]
return d
def AddFailure(self, failure):
if not isinstance(failure, failure_module.Failure):
raise ValueError('Attempted to add %s as Failure' % failure)
self._failures.append(failure)
def AddPair(self, key, value):
if key in self._pairs:
raise DuplicateKeyError('Key ' + key + 'already exists in result.')
self._pairs[key] = value
|