Exemplo n.º 1
0
def test_event_hash_variant(insta_snapshot, testcase):
    with open(os.path.join(_fixture_path, testcase + '.json')) as f:
        input = json.load(f)

    config = FingerprintingRules.from_json({
        'rules': input.pop('_fingerprinting_rules'),
        'version': 1,
    })
    mgr = EventManager(data=input)
    mgr.normalize()
    data = mgr.get_data()

    data.setdefault('fingerprint', ['{{ default }}'])
    apply_server_fingerprinting(data, config)

    evt = Event(data=data, platform=data['platform'])

    def dump_variant(v):
        rv = v.as_dict()
        for key in 'component', 'description', 'hash', 'config':
            rv.pop(key, None)
        return rv

    insta_snapshot({
        'config': config.to_json(),
        'fingerprint': data['fingerprint'],
        'variants': {k: dump_variant(v)
                     for (k, v) in evt.get_grouping_variants().items()},
    })
Exemplo n.º 2
0
def test_event_hash_variant(insta_snapshot, testcase):
    with open(os.path.join(_fixture_path, testcase + ".json")) as f:
        input = json.load(f)

    config = FingerprintingRules.from_json(
        {"rules": input.pop("_fingerprinting_rules"), "version": 1}
    )
    mgr = EventManager(data=input)
    mgr.normalize()
    data = mgr.get_data()

    data.setdefault("fingerprint", ["{{ default }}"])
    apply_server_fingerprinting(data, config)

    evt = Event(data=data, platform=data["platform"])

    def dump_variant(v):
        rv = v.as_dict()
        for key in "component", "description", "hash", "config":
            rv.pop(key, None)
        return rv

    insta_snapshot(
        {
            "config": config.to_json(),
            "fingerprint": data["fingerprint"],
            "variants": {k: dump_variant(v) for (k, v) in evt.get_grouping_variants().items()},
        }
    )
Exemplo n.º 3
0
    def create_event(self, grouping_config=None):
        input = dict(self.data)

        config = FingerprintingRules.from_json(
            {"rules": input.pop("_fingerprinting_rules"), "version": 1}
        )
        mgr = EventManager(data=input, grouping_config=grouping_config)
        mgr.normalize()
        data = mgr.get_data()

        data.setdefault("fingerprint", ["{{ default }}"])
        apply_server_fingerprinting(data, config)
        data.update(materialize_metadata(data))

        evt = eventstore.create_event(data=data)
        return config, evt
Exemplo n.º 4
0
def test_event_hash_variant(insta_snapshot, testcase):
    with open(os.path.join(_fixture_path, testcase + '.json')) as f:
        input = json.load(f)

    config = FingerprintingRules.from_json({
        'rules': input.pop('_fingerprinting_rules'),
        'version': 1,
    })
    mgr = EventManager(data=input)
    mgr.normalize()
    data = mgr.get_data()

    data.setdefault('fingerprint', ['{{ default }}'])
    apply_server_fingerprinting(data, config)

    insta_snapshot({
        'config': config.to_json(),
        'fingerprint': data['fingerprint'],
    })
Exemplo n.º 5
0
def get_fingerprinting_config_for_project(project):
    from sentry.grouping.fingerprinting import FingerprintingRules, \
        InvalidFingerprintingConfig
    rules = project.get_option('sentry:fingerprinting_rules')
    if not rules:
        return FingerprintingRules([])

    from sentry.utils.cache import cache
    from sentry.utils.hashlib import md5_text
    cache_key = 'fingerprinting-rules:' + md5_text(rules).hexdigest()
    rv = cache.get(cache_key)
    if rv is not None:
        return FingerprintingRules.from_json(rv)

    try:
        rv = FingerprintingRules.from_config_string(rules)
    except InvalidFingerprintingConfig:
        rv = FingerprintingRules([])
    cache.set(cache_key, rv.to_json())
    return rv
Exemplo n.º 6
0
def get_fingerprinting_config_for_project(project):
    from sentry.grouping.fingerprinting import FingerprintingRules, \
        InvalidFingerprintingConfig
    rules = project.get_option('sentry:fingerprinting_rules')
    if not rules:
        return FingerprintingRules([])

    from sentry.utils.cache import cache
    from sentry.utils.hashlib import md5_text
    cache_key = 'fingerprinting-rules:' + md5_text(rules).hexdigest()
    rv = cache.get(cache_key)
    if rv is not None:
        return FingerprintingRules.from_json(rv)

    try:
        rv = FingerprintingRules.from_config_string(
            rules or '')
    except InvalidFingerprintingConfig:
        rv = FingerprintingRules([])
    cache.set(cache_key, rv.to_json())
    return rv