| Index: tools/telemetry/telemetry/value/failure.py
|
| diff --git a/tools/telemetry/telemetry/value/failure.py b/tools/telemetry/telemetry/value/failure.py
|
| index 252bb22f2c454e087d301513bdf611b39adc7aea..ba6998ad4b4c6c22c0c18f03ae2fb6b11c1f4779 100644
|
| --- a/tools/telemetry/telemetry/value/failure.py
|
| +++ b/tools/telemetry/telemetry/value/failure.py
|
| @@ -29,10 +29,15 @@ class FailureValue(value_module.Value):
|
| page: The page where this failure occurs.
|
| message: A string message describing the failure.
|
| """
|
| + exc_info = cls._GetExcInfoFromMessage(message)
|
| + return FailureValue(page, exc_info)
|
| +
|
| + @staticmethod
|
| + def _GetExcInfoFromMessage(message):
|
| try:
|
| raise Exception(message)
|
| except Exception:
|
| - return FailureValue(page, sys.exc_info())
|
| + return sys.exc_info()
|
|
|
| def __repr__(self):
|
| if self.page:
|
| @@ -61,8 +66,8 @@ class FailureValue(value_module.Value):
|
| def GetRepresentativeString(self):
|
| return None
|
|
|
| - @classmethod
|
| - def GetJSONTypeName(cls):
|
| + @staticmethod
|
| + def GetJSONTypeName():
|
| return 'failure'
|
|
|
| def AsDict(self):
|
| @@ -70,6 +75,19 @@ class FailureValue(value_module.Value):
|
| d['value'] = GetStringFromExcInfo(self.exc_info)
|
| return d
|
|
|
| + @staticmethod
|
| + def FromDict(value_dict, page_dict):
|
| + kwargs = value_module.Value.GetConstructorKwArgs(value_dict, page_dict)
|
| + del kwargs['name']
|
| + del kwargs['units']
|
| + important = kwargs.get('important', None)
|
| + if important != None:
|
| + del kwargs['important']
|
| + kwargs['exc_info'] = FailureValue._GetExcInfoFromMessage(
|
| + value_dict['value'])
|
| +
|
| + return FailureValue(**kwargs)
|
| +
|
| @classmethod
|
| def MergeLikeValuesFromSamePage(cls, values):
|
| assert False, 'Should not be called.'
|
|
|