def __init__( self, max_frames=40, api_url=SYMBOLS_API, verbose=False, windows=False ): self.symbolicator = Symbolicator(max_frames, api_url, verbose) self.sig_generator = SignatureGenerator() self.verbose = verbose self.windows = windows
def test_failing_rule(self): class BadRule(object): pass generator = SignatureGenerator(pipeline=[BadRule()]) ret = generator.generate({}) expected = { 'notes': [ 'Rule BadRule failed: \'BadRule\' object has no attribute \'predicate\'' ], 'signature': '' } assert ret == expected
def cmdline(): """Takes crash data via stdin and generates a Socorro signature""" parser = argparse.ArgumentParser(description=DESCRIPTION) parser.add_argument( '-v', '--verbose', help='increase output verbosity', action='store_true' ) args = parser.parse_args() generator = SignatureGenerator(debug=args.verbose) crash_data = json.loads(sys.stdin.read()) ret = generator.generate(crash_data) print(json.dumps(ret, indent=2))
def test_empty_dicts(self): generator = SignatureGenerator() ret = generator.generate({}) # NOTE(willkg): This is what the current pipeline yields. If any of those parts change, this # might change, too. The point of this test is that we can pass in empty dicts and the # SignatureGenerator and the rules in the default pipeline don't fall over. expected = { 'notes': [ 'CSignatureTool: No signature could be created because we do not know ' 'which thread crashed' ], 'signature': 'EMPTY: no crashing thread identified' } assert ret == expected
from argparse import ArgumentParser from random import random import requests import ujson as json from flask import Flask, Response, request from fx_crash_sig import crash_processor from siggen.generator import SignatureGenerator app = Flask(__name__) generator = SignatureGenerator() @app.route('/') def hello_world(): return 'Hello World!' @app.route('/print', methods=['POST']) def print_request(): print(request.get_data(as_text=True)) return Response('{}', mimetype='application/json') @app.route('/sendToInflux', methods=['POST']) def send_to_influx(): data = json.loads(request.get_data(as_text=True)) url = data['url'] payload = data['payload']