diff options
Diffstat (limited to 'chromium/third_party/catapult/tracing/tracing/mre/mre_result.py')
-rw-r--r-- | chromium/third_party/catapult/tracing/tracing/mre/mre_result.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/tracing/tracing/mre/mre_result.py b/chromium/third_party/catapult/tracing/tracing/mre/mre_result.py new file mode 100644 index 00000000000..f3d128e23a8 --- /dev/null +++ b/chromium/third_party/catapult/tracing/tracing/mre/mre_result.py @@ -0,0 +1,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 |