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()}, })
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()}, } )
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
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'], })
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
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