Beispiel #1
0
class CrashMinion(Minion):
    def __init__(self, name, **kwargs):
        Minion.__init__(self, name, **kwargs)
        self.ca = CrashAgent(self.serial)

    def _work(self, **kwargs):
        # scan if has dump
        return self.ca.get_crash()

    def _output(self, data):
        # if sent, save crash-stat link
        # TODO if fail, try to get symbol and extract dump
        if not isinstance(data, dict) or 'crash_info' not in data:
            return False
        crash_info = data.get('crash_info')
        if not crash_info.get('submitted') and not crash_info.get('pending'):
            return False
        timestamp = time.strftime('%Y-%m-%d-%H-%M-%S+0000', time.gmtime())
        filepath = self.output_file + "_" + timestamp
        with open(filepath, 'w') as oh:
            oh.write(json.dumps(data))
        return True

    def onstop(self):
        # in case not missing anything, run _work and _output one more time.
        pass
Beispiel #2
0
 def __init__(self, name, **kwargs):
     Minion.__init__(self, name, **kwargs)
     self.ca = CrashAgent(self.serial)