Exemple #1
0
def test_event_hash_variant(infile):
    with open(os.path.join(_fixture_path, infile + '.json')) as f:
        input = json.load(f)
    with open(os.path.join(_fixture_path, infile + '.out')) as f:
        refval = f.read().decode('utf-8').rstrip()

    mgr = EventManager(data=input)
    mgr.normalize()
    evt = Event(data=mgr.get_data())

    rv = []
    for (key, value) in sorted(evt.get_grouping_variants().items()):
        if rv:
            rv.append('-' * 74)
        rv.append('%s:' % key)
        dump_variant(value, rv, 1)
    output = '\n'.join(rv)
    if not refval:
        log(output)
    log(repr(evt.get_hashes()))

    assert sorted(evt.get_hashes()) == sorted(
        filter(None,
               [x.get_hash() for x in evt.get_grouping_variants().values()]))

    assert refval == output
Exemple #2
0
def test_stacktrace_wins_over_http(http_comp_hash, stack_comp_hash):
    # this was a regression, and a very important one
    http_comp_hash.return_value = [['baz']]
    stack_comp_hash.return_value = [['foo', 'bar']]
    event = Event(
        data={
            'stacktrace': {
                'frames': [{
                    'lineno': 1,
                    'filename': 'foo.py',
                }],
            },
            'request': {
                'url': 'http://example.com'
            },
        },
        platform='python',
        message='Foo bar',
    )
    hashes = event.get_hashes()
    assert len(hashes) == 1
    hash_one = hashes[0]
    stack_comp_hash.assert_called_once_with('python')
    assert not http_comp_hash.called
    assert hash_one == hash_from_values(['foo', 'bar'])
Exemple #3
0
def test_event_hash_variant(config_name, test_name):
    with open(os.path.join(_fixture_path, config_name,
                           test_name + '.json')) as f:
        input = json.load(f)
    try:
        with open(os.path.join(_fixture_path, config_name,
                               test_name + '.out')) as f:
            refval = f.read().decode('utf-8').rstrip()
    except IOError:
        refval = ''

    mgr = EventManager(data=input)
    mgr.normalize()
    data = mgr.get_data()
    evt = Event(data=data, platform=data['platform'])

    rv = []
    for (key, value) in sorted(evt.get_grouping_variants().items()):
        if rv:
            rv.append('-' * 74)
        rv.append('%s:' % key)
        dump_variant(value, rv, 1)
    output = '\n'.join(rv)
    if not refval:
        log(output)
    log(repr(evt.get_hashes()))

    assert refval == output
def test_stacktrace_wins_over_http(http_comp_hash, stack_comp_hash):
    # this was a regression, and a very important one
    http_comp_hash.return_value = [['baz']]
    stack_comp_hash.return_value = [['foo', 'bar']]
    event = Event(
        data={
            'stacktrace': {
                'frames': [{
                    'lineno': 1,
                    'filename': 'foo.py',
                }],
            },
            'request': {
                'url': 'http://example.com'
            },
        },
        platform='python',
        message='Foo bar',
    )
    hashes = event.get_hashes()
    assert len(hashes) == 1
    hash_one = hashes[0]
    stack_comp_hash.assert_called_once_with('python')
    assert not http_comp_hash.called
    assert hash_one == md5_from_hash(['foo', 'bar'])
def test_event_hash_variant(insta_snapshot, config_name, test_name, log):
    with open(os.path.join(_fixture_path, test_name + '.json')) as f:
        input = json.load(f)

    # Cutomize grouping config from the _grouping config
    grouping_config = get_default_grouping_config_dict(config_name)
    grouping_info = input.pop('_grouping', None) or {}
    enhancement_base = grouping_info.get('enhancement_base')
    enhancements = grouping_info.get('enhancements')
    if enhancement_base or enhancements:
        enhancement_bases = [enhancement_base] if enhancement_base else []
        e = Enhancements.from_config_string(enhancements or '',
                                            bases=enhancement_bases)
        grouping_config['enhancements'] = e.dumps()

    # Noramlize the event
    mgr = EventManager(data=input, grouping_config=grouping_config)
    mgr.normalize()
    data = mgr.get_data()

    # Normalize the stacktrace for grouping.  This normally happens in
    # save()
    normalize_stacktraces_for_grouping(data,
                                       load_grouping_config(grouping_config))
    evt = Event(data=data, platform=data['platform'])

    # Make sure we don't need to touch the DB here because this would
    # break stuff later on.
    evt.project = None

    rv = []
    for (key, value) in sorted(evt.get_grouping_variants().items()):
        if rv:
            rv.append('-' * 74)
        rv.append('%s:' % key)
        dump_variant(value, rv, 1)
    output = '\n'.join(rv)
    log(repr(evt.get_hashes()))

    assert evt.get_grouping_config() == grouping_config

    insta_snapshot(output)
Exemple #6
0
def test_event_hash_variant(insta_snapshot, config_name, test_name, log):
    with open(os.path.join(_fixture_path, config_name,
                           test_name + '.json')) as f:
        input = json.load(f)

    mgr = EventManager(data=input)
    mgr.normalize()
    data = mgr.get_data()
    evt = Event(data=data, platform=data['platform'])

    rv = []
    for (key, value) in sorted(evt.get_grouping_variants().items()):
        if rv:
            rv.append('-' * 74)
        rv.append('%s:' % key)
        dump_variant(value, rv, 1)
    output = '\n'.join(rv)
    log(repr(evt.get_hashes()))

    insta_snapshot(output)