Beispiel #1
0
def index_event_tags(organization_id,
                     project_id,
                     event_id,
                     tags,
                     group_id,
                     environment_id,
                     date_added=None,
                     **kwargs):
    from sentry import tagstore

    with configure_scope() as scope:
        scope.set_tag("project", project_id)

    create_event_tags_kwargs = {}
    if date_added is not None:
        create_event_tags_kwargs['date_added'] = date_added

    metrics.timing('tagstore.tags_per_event',
                   len(tags),
                   tags={
                       'organization_id': organization_id,
                   })

    tagstore.create_event_tags(project_id=project_id,
                               group_id=group_id,
                               environment_id=environment_id,
                               event_id=event_id,
                               tags=tags,
                               **create_event_tags_kwargs)
Beispiel #2
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(project=project,
                                  status=GroupStatus.PENDING_DELETION)
        event = self.create_event(group=group)
        tv, _ = tagstore.get_or_create_tag_value(project.id,
                                                 self.environment.id, "key1",
                                                 "value1")
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[(tv.key, tv.value)],
        )
        GroupAssignee.objects.create(group=group,
                                     project=project,
                                     user=self.user)
        GroupHash.objects.create(project=project,
                                 group=group,
                                 hash=uuid4().hex)
        GroupMeta.objects.create(group=group, key="foo", value="bar")
        GroupRedirect.objects.create(group_id=group.id, previous_group_id=1)

        with self.tasks():
            delete_groups(object_ids=[group.id])

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #3
0
def index_event_tags(organization_id, project_id, event_id, tags, group_id,
                     environment_id, **kwargs):
    from sentry import tagstore

    Raven.tags_context({
        'project': project_id,
    })

    tag_ids = []
    for key, value in tags:
        tagkey, _ = tagstore.get_or_create_tag_key(project_id, environment_id,
                                                   key)
        tagvalue, _ = tagstore.get_or_create_tag_value(project_id,
                                                       environment_id,
                                                       key,
                                                       value,
                                                       key_id=tagkey.id)
        tag_ids.append((tagkey.id, tagvalue.id))

    tagstore.create_event_tags(
        project_id=project_id,
        group_id=group_id,
        environment_id=environment_id,
        event_id=event_id,
        tags=tag_ids,
    )
Beispiel #4
0
def index_event_tags(organization_id, project_id, event_id, tags,
                     group_id, environment_id, date_added=None, **kwargs):
    from sentry import tagstore

    with configure_scope() as scope:
        scope.set_tag("project", project_id)

    create_event_tags_kwargs = {}
    if date_added is not None:
        create_event_tags_kwargs['date_added'] = date_added

    metrics.timing(
        'tagstore.tags_per_event',
        len(tags),
        tags={
            'organization_id': organization_id,
        }
    )

    tagstore.create_event_tags(
        project_id=project_id,
        group_id=group_id,
        environment_id=environment_id,
        event_id=event_id,
        tags=tags,
        **create_event_tags_kwargs
    )
Beispiel #5
0
def index_event_tags(organization_id, project_id, event_id, tags,
                     group_id, environment_id, date_added=None, **kwargs):
    from sentry import tagstore

    Raven.tags_context({
        'project': project_id,
    })

    create_event_tags_kwargs = {}
    if date_added is not None:
        create_event_tags_kwargs['date_added'] = date_added

    metrics.timing(
        'tagstore.tags_per_event',
        len(tags),
        tags={
            'organization_id': organization_id,
        }
    )

    tagstore.create_event_tags(
        project_id=project_id,
        group_id=group_id,
        environment_id=environment_id,
        event_id=event_id,
        tags=tags,
        **create_event_tags_kwargs
    )
Beispiel #6
0
def index_event_tags(organization_id, project_id, event_id, tags, group_id,
                     environment_id, **kwargs):
    from sentry import tagstore

    Raven.tags_context({
        'project': project_id,
    })

    tag_ids = []
    for key, value in tags:
        tagkey, _ = tagstore.get_or_create_tag_key(project_id, environment_id,
                                                   key)
        # TODO(brett): optimization to hand `get_or_create_tag_value` the key_id
        # so it doesn't have to hit the database for something we just had on hand
        tagvalue, _ = tagstore.get_or_create_tag_value(project_id,
                                                       environment_id, key,
                                                       value)
        tag_ids.append((tagkey.id, tagvalue.id))

    tagstore.create_event_tags(
        project_id=project_id,
        group_id=group_id,
        environment_id=environment_id,
        event_id=event_id,
        tags=tag_ids,
    )
Beispiel #7
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(project=project, )
        event = self.create_event(group=group)

        UserReport.objects.create(
            group_id=group.id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(project_id=project.id,
                                     environment_id=self.environment.id,
                                     key=key)
        tv = tagstore.create_tag_value(project_id=project.id,
                                       environment_id=self.environment.id,
                                       key=key,
                                       value=value)
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not UserReport.objects.filter(group_id=group.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #8
0
def index_event_tags(organization_id,
                     project_id,
                     event_id,
                     tags,
                     group_id,
                     environment_id,
                     date_added=None,
                     **kwargs):
    from sentry import tagstore

    Raven.tags_context({
        'project': project_id,
    })

    create_event_tags_kwargs = {}
    if date_added is not None:
        create_event_tags_kwargs['date_added'] = date_added

    metrics.timing('tagstore.tags_per_event',
                   len(tags),
                   tags={
                       'organization_id': organization_id,
                   })

    tagstore.create_event_tags(project_id=project_id,
                               group_id=group_id,
                               environment_id=environment_id,
                               event_id=event_id,
                               tags=tags,
                               **create_event_tags_kwargs)
    def test_environment(self):
        self.login_as(user=self.user)

        group = self.create_group()
        events = {}

        for name in ['production', 'development']:
            environment = Environment.get_or_create(group.project, name)

            tagstore.get_or_create_tag_key(
                project_id=group.project_id,
                environment_id=environment.id,
                key='environment',
            )

            tagstore.create_tag_value(
                project_id=group.project_id,
                environment_id=environment.id,
                key='environment',
                value=name,
            )

            events[name] = event = self.create_event(
                group=group,
                tags={'environment': name},
            )

            tagstore.create_event_tags(
                project_id=group.project_id,
                group_id=group.id,
                environment_id=environment.id,
                event_id=event.id,
                tags=[
                    ('environment', name),
                ],
            )

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?environment=production',
                                   format='json')

        assert response.status_code == 200, response.content
        assert set(map(lambda x: x['id'], response.data)) == set([
            six.text_type(events['production'].id),
        ])

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?environment=invalid', format='json')

        assert response.status_code == 200, response.content
        assert response.data == []

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(
            url + '?environment=production&query=environment:development',
            format='json')

        assert response.status_code == 200, response.content
        assert response.data == []
Beispiel #10
0
    def test_environment(self):
        self.login_as(user=self.user)

        group = self.create_group()
        events = {}

        for name in ['production', 'development']:
            environment = Environment.get_or_create(group.project, name)

            tagstore.get_or_create_tag_key(
                project_id=group.project_id,
                environment_id=environment.id,
                key='environment',
            )

            tagstore.create_tag_value(
                project_id=group.project_id,
                environment_id=environment.id,
                key='environment',
                value=name,
            )

            events[name] = event = self.create_event(
                group=group,
                tags={'environment': name},
            )

            tagstore.create_event_tags(
                project_id=group.project_id,
                group_id=group.id,
                environment_id=environment.id,
                event_id=event.id,
                tags=[
                    ('environment', name),
                ],
            )

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?environment=production', format='json')

        assert response.status_code == 200, response.content
        assert set(map(lambda x: x['id'], response.data)) == set([
            six.text_type(events['production'].id),
        ])

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?environment=invalid', format='json')

        assert response.status_code == 200, response.content
        assert response.data == []

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(
            url + '?environment=production&query=environment:development',
            format='json')

        assert response.status_code == 200, response.content
        assert response.data == []
Beispiel #11
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
            status=GroupStatus.PENDING_DELETION,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        tv, _ = tagstore.get_or_create_tag_value(project.id,
                                                 self.environment.id, 'key1',
                                                 'value1')
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tv.key, tv.value),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        with self.tasks():
            delete_group(object_id=group.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventMapping.objects.filter(
            event_id='a' * 32,
            group_id=group.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #12
0
    def _setup_tags_for_event(self, event):
        tags = dict(event.data.get('tags') or ())

        try:
            environment = self.environments[event.data['environment']]
        except KeyError:
            environment = self.environments[
                event.data['environment']] = Environment.get_or_create(
                    event.project,
                    event.data['environment'],
                )

        GroupEnvironment.objects.get_or_create(
            environment_id=environment.id,
            group_id=event.group_id,
        )

        for key, value in tags.items():
            for environment_id in [AGGREGATE_ENVIRONMENT_ID, environment.id]:
                tag_value, created = tagstore.get_or_create_group_tag_value(
                    project_id=event.project_id,
                    group_id=event.group_id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )

                if created:  # XXX: Hack for tagstore compat
                    tag_value.update(
                        times_seen=1,
                        first_seen=event.datetime,
                        last_seen=event.datetime,
                    )
                else:
                    updates = {
                        'times_seen': tag_value.times_seen + 1,
                    }

                    if event.datetime < tag_value.first_seen:
                        updates['first_seen'] = event.datetime

                    if event.datetime > tag_value.last_seen:
                        updates['last_seen'] = event.datetime

                    if updates:
                        tag_value.update(**updates)

                tagstore.create_event_tags(
                    project_id=event.project_id,
                    group_id=event.group_id,
                    environment_id=environment_id,
                    event_id=event.id,
                    tags=tags.items(),
                    date_added=event.datetime,
                )
Beispiel #13
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (1, 1),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventMapping.objects.filter(
            event_id='a' * 32,
            group_id=group.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #14
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
            status=GroupStatus.PENDING_DELETION,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        tv, _ = tagstore.get_or_create_tag_value(project.id, self.environment.id, 'key1', 'value1')
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tv.key, tv.value),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        with self.tasks():
            delete_group(object_id=group.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventMapping.objects.filter(
            event_id='a' * 32,
            group_id=group.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #15
0
    def _setup_tags_for_event(self, event):
        tags = dict(event.data['tags'])

        try:
            environment = self.environments[tags['environment']]
        except KeyError:
            environment = self.environments[tags['environment']] = Environment.get_or_create(
                event.project,
                tags['environment'],
            )

        GroupEnvironment.objects.get_or_create(
            environment_id=environment.id,
            group_id=event.group_id,
        )

        for key, value in tags.items():
            for environment_id in [AGGREGATE_ENVIRONMENT_ID, environment.id]:
                tag_value, created = tagstore.get_or_create_group_tag_value(
                    project_id=event.project_id,
                    group_id=event.group_id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )

                if created:  # XXX: Hack for tagstore compat
                    tag_value.update(
                        times_seen=1,
                        first_seen=event.datetime,
                        last_seen=event.datetime,
                    )
                else:
                    updates = {
                        'times_seen': tag_value.times_seen + 1,
                    }

                    if event.datetime < tag_value.first_seen:
                        updates['first_seen'] = event.datetime

                    if event.datetime > tag_value.last_seen:
                        updates['last_seen'] = event.datetime

                    if updates:
                        tag_value.update(**updates)

                tagstore.create_event_tags(
                    project_id=event.project_id,
                    group_id=event.group_id,
                    environment_id=environment_id,
                    event_id=event.id,
                    tags=tags.items(),
                    date_added=event.datetime,
                )
Beispiel #16
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            tags=[
                (1, 1),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventMapping.objects.filter(
            event_id='a' * 32,
            group_id=group.id,
        ).exists()
        assert not tagstore.get_event_tag_qs(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #17
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(project=project, )
        event = self.create_event(group=group)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )
        UserReport.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(project_id=project.id,
                                     environment_id=self.environment.id,
                                     key=key)
        tv = tagstore.create_tag_value(project_id=project.id,
                                       environment_id=self.environment.id,
                                       key=key,
                                       value=value)
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )

        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not UserReport.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
def index_event_tags(organization_id, project_id, event_id, tags,
                     group_id, environment_id, **kwargs):
    from sentry import tagstore

    Raven.tags_context({
        'project': project_id,
    })

    tagstore.create_event_tags(
        project_id=project_id,
        group_id=group_id,
        environment_id=environment_id,
        event_id=event_id,
        tags=tags,
    )
Beispiel #19
0
    def test_simple(self):
        event_id = "a" * 32
        project = self.create_project()
        node_id = Event.generate_node_id(project.id, event_id)
        group = self.create_group(project=project)
        event = self.create_event(group=group, event_id=event_id)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(name="hello.png", type="image/png"),
            name="hello.png",
        )
        UserReport.objects.create(event_id=event.event_id,
                                  project_id=event.project_id,
                                  name="Jane Doe")
        key = "key"
        value = "value"
        tk = tagstore.create_tag_key(project_id=project.id,
                                     environment_id=self.environment.id,
                                     key=key)
        tv = tagstore.create_tag_value(project_id=project.id,
                                       environment_id=self.environment.id,
                                       key=key,
                                       value=value)
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[(tk.key, tv.value)],
        )
        assert nodestore.get(node_id) is not None
        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id, project_id=project.id).exists()
        assert not UserReport.objects.filter(event_id=event.event_id,
                                             project_id=project.id).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()

        assert nodestore.get(node_id) is None
Beispiel #20
0
def index_event_tags(organization_id, project_id, event_id, tags,
                     group_id=None, environment_id=None, **kwargs):
    from sentry import tagstore

    Raven.tags_context({
        'project': project_id,
    })

    tag_ids = []
    for key, value in tags:
        tagkey, _ = tagstore.get_or_create_tag_key(project_id, environment_id, key)
        tagvalue, _ = tagstore.get_or_create_tag_value(project_id, environment_id, key, value)
        tag_ids.append((tagkey.id, tagvalue.id))

    tagstore.create_event_tags(
        project_id=project_id,
        group_id=group_id,
        event_id=event_id,
        tags=tag_ids,
    )
Beispiel #21
0
    def test_simple(self):
        from sentry.tagstore.tasks import delete_tag_key as delete_tag_key_task

        team = self.create_team(name='test', slug='test')
        project = self.create_project(teams=[team], name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(key=key,
                                     project_id=project.id,
                                     environment_id=self.environment.id)
        tv = tagstore.create_tag_value(key=key,
                                       value=value,
                                       project_id=project.id,
                                       environment_id=self.environment.id)
        tagstore.create_group_tag_key(key=key,
                                      group_id=group.id,
                                      project_id=project.id,
                                      environment_id=self.environment.id)
        tagstore.create_group_tag_value(key=key,
                                        value=value,
                                        group_id=group.id,
                                        project_id=project.id,
                                        environment_id=self.environment.id)
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            event_id=1,
            tags=[
                (tk.key, tv.value),
            ],
        )

        project2 = self.create_project(teams=[team], name='test2')
        env2 = self.create_environment(project=project2)
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(
            key=key,
            project_id=project2.id,
            environment_id=env2.id,
        )
        tv2 = tagstore.create_tag_value(project_id=project2.id,
                                        environment_id=env2.id,
                                        key=key,
                                        value=value)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
        )
        tagstore.create_group_tag_value(
            key=key,
            value=value,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
            event_id=1,
            tags=[(tk2.key, tv2.value)],
        )

        with self.tasks():
            from sentry.tagstore.models import TagKey
            delete_tag_key_task(object_id=tk.id, model=TagKey)

            try:
                tagstore.get_group_tag_value(group.project_id, group.id, None,
                                             key, value)
                assert False  # verify exception thrown
            except tagstore.GroupTagValueNotFound:
                pass
            try:
                tagstore.get_group_tag_key(group.project_id, group.id, None,
                                           key)
                assert False  # verify exception thrown
            except tagstore.GroupTagKeyNotFound:
                pass
            try:
                tagstore.get_tag_value(project.id, None, key, value)
                assert False  # verify exception thrown
            except tagstore.TagValueNotFound:
                pass
            try:
                tagstore.get_tag_key(project.id, None, key)
                assert False  # verify exception thrown
            except tagstore.TagKeyNotFound:
                pass

        assert tagstore.get_tag_key(project2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id,
                                          env2.id, key) is not None
        assert tagstore.get_group_tag_value(group2.project_id, group2.id,
                                            env2.id, key, value) is not None
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Beispiel #22
0
    def test_simple(self):
        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(key=key,
                                     project_id=project.id,
                                     environment_id=self.environment.id)
        tagstore.create_tag_value(key=key,
                                  value=value,
                                  project_id=project.id,
                                  environment_id=self.environment.id)
        tagstore.create_group_tag_key(key=key,
                                      group_id=group.id,
                                      project_id=project.id,
                                      environment_id=self.environment.id)
        tagstore.create_group_tag_value(key=key,
                                        value=value,
                                        group_id=group.id,
                                        project_id=project.id,
                                        environment_id=self.environment.id)
        tagstore.create_event_tags(group_id=group.id,
                                   project_id=project.id,
                                   event_id=1,
                                   environment_id=self.environment.id,
                                   tags=[
                                       (tk.id, 1),
                                   ])

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(project2.id, self.environment.id, key)
        tagstore.create_group_tag_key(key=key,
                                      group_id=group2.id,
                                      project_id=project2.id,
                                      environment_id=self.environment.id)
        tagstore.create_group_tag_value(key=key,
                                        value=value,
                                        group_id=group2.id,
                                        project_id=project2.id,
                                        environment_id=self.environment.id)
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project.id,
            environment_id=self.environment.id,
            event_id=1,
            tags=[
                (tk2.id, 1),
            ],
        )

        deletion = ScheduledDeletion.schedule(tk, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        try:
            tagstore.get_group_tag_value(group.project_id, group.id, None, key,
                                         value)
            assert False  # verify exception thrown
        except tagstore.GroupTagValueNotFound:
            pass
        try:
            tagstore.get_group_tag_key(group.project_id, group.id, None, key)
            assert False  # verify exception thrown
        except tagstore.GroupTagKeyNotFound:
            pass
        try:
            tagstore.get_tag_value(project.id, None, key, value)
            assert False  # verify exception thrown
        except tagstore.TagValueNotFound:
            pass
        try:
            tagstore.get_tag_key(project.id, None, key)
            assert False  # verify exception thrown
        except tagstore.TagKeyNotFound:
            pass

        assert tagstore.get_tag_key(project2.id, None, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id, None,
                                          key) is not None
        assert tagstore.get_group_tag_value(group2.project_id, group2.id, None,
                                            key, value) is not None
        assert EventTag.objects.filter(key_id=tk.id).exists()
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Beispiel #23
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )
        UserReport.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key
        )
        tv = tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )

        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not EventMapping.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not UserReport.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
Beispiel #24
0
    def test_tags(self):
        self.login_as(user=self.user)

        group = self.create_group()
        event_1 = self.create_event(event_id='a' * 32, group=group)
        event_2 = self.create_event(event_id='b' * 32, group=group)

        tagkey_1 = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='foo')
        tagkey_2 = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar')
        tagvalue_1 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='foo',
            value='baz')
        tagvalue_2 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='biz')
        tagvalue_3 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='buz')

        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_1.id,
            tags=[
                (tagkey_1.key, tagvalue_1.value),
                (tagkey_2.key, tagvalue_3.value),
            ],
        )
        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_2.id,
            tags=[
                (tagkey_2.key, tagvalue_2.value),
            ],
        )

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?query=foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:biz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_2.id)

        response = self.client.get(url + '?query=bar:biz%20foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:buz%20foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=a:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0
Beispiel #25
0
    def test_simple(self):
        team = self.create_team(name="test", slug="test")
        project = self.create_project(teams=[team], name="test1", slug="test1")
        group = self.create_group(project=project)
        key = "foo"
        value = "bar"
        tk = tagstore.create_tag_key(
            key=key, project_id=project.id, environment_id=self.environment.id
        )
        tv = tagstore.create_tag_value(
            key=key, value=value, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_group_tag_key(
            key=key, group_id=group.id, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_group_tag_value(
            key=key,
            value=value,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
        )
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            event_id=1,
            environment_id=self.environment.id,
            tags=[(tk.key, tv.value)],
        )

        project2 = self.create_project(teams=[team], name="test2")
        env2 = self.create_environment(project=project2)
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(project2.id, env2.id, key)
        tv2 = tagstore.create_tag_value(
            key=key, value=value, project_id=project2.id, environment_id=env2.id
        )
        tagstore.create_group_tag_key(
            key=key, group_id=group2.id, project_id=project2.id, environment_id=env2.id
        )
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group2.id, project_id=project2.id, environment_id=env2.id
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
            event_id=1,
            tags=[(tk2.key, tv2.value)],
        )

        deletion = ScheduledDeletion.schedule(tk, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        try:
            tagstore.get_group_tag_value(
                group.project_id, group.id, self.environment.id, key, value
            )
            assert False  # verify exception thrown
        except tagstore.GroupTagValueNotFound:
            pass
        try:
            tagstore.get_group_tag_key(group.project_id, group.id, self.environment.id, key)
            assert False  # verify exception thrown
        except tagstore.GroupTagKeyNotFound:
            pass
        try:
            tagstore.get_tag_value(project.id, self.environment.id, key, value)
            assert False  # verify exception thrown
        except tagstore.TagValueNotFound:
            pass
        try:
            tagstore.get_tag_key(project.id, self.environment.id, key)
            assert False  # verify exception thrown
        except tagstore.TagKeyNotFound:
            pass

        assert tagstore.get_tag_key(project2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id, env2.id, key) is not None
        assert (
            tagstore.get_group_tag_value(group2.project_id, group2.id, env2.id, key, value)
            is not None
        )
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Beispiel #26
0
    def test_simple(self):
        from sentry.tagstore.legacy.tasks import delete_tag_key

        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(
            key=key,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_tag_value(
            key=key,
            value=value,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group.id, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk.id, 1),
            ],
        )

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(key=key, project_id=project2.id,
                                      environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group2.id, project_id=project2.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk2.id, 1)
            ],
        )

        with self.tasks():
            delete_tag_key(object_id=tk.id)

            assert tagstore.get_event_tag_qs(key_id=tk.id).exists()
            try:
                tagstore.get_group_tag_value(group.id, key, value)
                assert False  # verify exception thrown
            except tagstore.GroupTagValueNotFound:
                pass
            try:
                tagstore.get_group_tag_key(group.id, key)
                assert False  # verify exception thrown
            except tagstore.GroupTagKeyNotFound:
                pass
            try:
                tagstore.get_tag_value(project.id, key, value)
                assert False  # verify exception thrown
            except tagstore.TagValueNotFound:
                pass
            try:
                tagstore.get_tag_key(project.id, key)
                assert False  # verify exception thrown
            except tagstore.TagKeyNotFound:
                pass

        assert tagstore.get_tag_key(project2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.id, key) is not None
        assert tagstore.get_group_tag_value(group2.id, key, value) is not None
        assert tagstore.get_event_tag_qs(key_id=tk2.id).exists()
Beispiel #27
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        EventAttachment.objects.create(
            event_id=event.event_id,
            group_id=event.group_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )
        UserReport.objects.create(
            group_id=group.id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key
        )
        tv = tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id,
            group_id=group.id,
        ).exists()
        assert not EventMapping.objects.filter(
            group_id=group.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not UserReport.objects.filter(group_id=group.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
Beispiel #28
0
    def test_simple(self):
        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(
            key=key,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_tag_value(
            key=key,
            value=value,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group.id, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk.id, 1),
            ]
        )

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(project2.id, self.environment.id, key)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group2.id, project_id=project2.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk2.id, 1),
            ],
        )

        deletion = ScheduledDeletion.schedule(tk, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        try:
            tagstore.get_group_tag_value(group.id, key, value)
            assert False  # verify exception thrown
        except tagstore.GroupTagValueNotFound:
            pass
        try:
            tagstore.get_group_tag_key(group.id, key)
            assert False  # verify exception thrown
        except tagstore.GroupTagKeyNotFound:
            pass
        try:
            tagstore.get_tag_value(project.id, key, value)
            assert False  # verify exception thrown
        except tagstore.TagValueNotFound:
            pass
        try:
            tagstore.get_tag_key(project.id, key)
            assert False  # verify exception thrown
        except tagstore.TagKeyNotFound:
            pass

        assert tagstore.get_tag_key(project2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.id, key) is not None
        assert tagstore.get_group_tag_value(group2.id, key, value) is not None
        assert tagstore.get_event_tag_qs(key_id=tk.id).exists()
        assert tagstore.get_event_tag_qs(key_id=tk2.id).exists()
Beispiel #29
0
    def test_simple(self):
        from sentry.tagstore.legacy.tasks import delete_tag_key

        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(
            key=key,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_tag_value(
            key=key,
            value=value,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group.id, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk.id, 1),
            ],
        )

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(key=key, project_id=project2.id,
                                      environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group2.id, project_id=project2.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk2.id, 1)
            ],
        )

        with self.tasks():
            delete_tag_key(object_id=tk.id)

            assert tagstore.get_event_tag_qs(key_id=tk.id).exists()
            try:
                tagstore.get_group_tag_value(group.id, None, key, value)
                assert False  # verify exception thrown
            except tagstore.GroupTagValueNotFound:
                pass
            try:
                tagstore.get_group_tag_key(group.id, None, key)
                assert False  # verify exception thrown
            except tagstore.GroupTagKeyNotFound:
                pass
            try:
                tagstore.get_tag_value(project.id, None, key, value)
                assert False  # verify exception thrown
            except tagstore.TagValueNotFound:
                pass
            try:
                tagstore.get_tag_key(project.id, None, key)
                assert False  # verify exception thrown
            except tagstore.TagKeyNotFound:
                pass

        assert tagstore.get_tag_key(project2.id, None, key) is not None
        assert tagstore.get_group_tag_key(group2.id, None, key) is not None
        assert tagstore.get_group_tag_value(group2.id, None, key, value) is not None
        assert tagstore.get_event_tag_qs(key_id=tk2.id).exists()
    def test_tags(self):
        self.login_as(user=self.user)

        group = self.create_group()
        event_1 = self.create_event(event_id='a' * 32, group=group)
        event_2 = self.create_event(event_id='b' * 32, group=group)

        tagkey_1 = tagstore.create_tag_key(project_id=group.project_id,
                                           environment_id=self.environment.id,
                                           key='foo')
        tagkey_2 = tagstore.create_tag_key(project_id=group.project_id,
                                           environment_id=self.environment.id,
                                           key='bar')
        tagvalue_1 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='foo',
            value='baz')
        tagvalue_2 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='biz')
        tagvalue_3 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='buz')

        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_1.id,
            tags=[
                (tagkey_1.key, tagvalue_1.value),
                (tagkey_2.key, tagvalue_3.value),
            ],
        )
        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_2.id,
            tags=[
                (tagkey_2.key, tagvalue_2.value),
            ],
        )

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?query=foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:biz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_2.id)

        response = self.client.get(url + '?query=bar:biz%20foo:baz',
                                   format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:buz%20foo:baz',
                                   format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=a:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0
Beispiel #31
0
    def test_simple(self):
        from sentry.tagstore.tasks import delete_tag_key as delete_tag_key_task

        team = self.create_team(name='test', slug='test')
        project = self.create_project(teams=[team], name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(
            key=key,
            project_id=project.id,
            environment_id=self.environment.id)
        tv = tagstore.create_tag_value(
            key=key,
            value=value,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group.id, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            event_id=1,
            tags=[
                (tk.key, tv.value),
            ],
        )

        project2 = self.create_project(teams=[team], name='test2')
        env2 = self.create_environment(project=project2)
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(
            key=key,
            project_id=project2.id,
            environment_id=env2.id,
        )
        tv2 = tagstore.create_tag_value(
            project_id=project2.id,
            environment_id=env2.id,
            key=key,
            value=value
        )
        tagstore.create_group_tag_key(
            key=key,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
        )
        tagstore.create_group_tag_value(
            key=key,
            value=value,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project2.id,
            environment_id=env2.id,
            event_id=1,
            tags=[
                (tk2.key, tv2.value)
            ],
        )

        with self.tasks():
            from sentry.tagstore.models import TagKey
            delete_tag_key_task(object_id=tk.id, model=TagKey)

            try:
                tagstore.get_group_tag_value(group.project_id, group.id, None, key, value)
                assert False  # verify exception thrown
            except tagstore.GroupTagValueNotFound:
                pass
            try:
                tagstore.get_group_tag_key(group.project_id, group.id, None, key)
                assert False  # verify exception thrown
            except tagstore.GroupTagKeyNotFound:
                pass
            try:
                tagstore.get_tag_value(project.id, None, key, value)
                assert False  # verify exception thrown
            except tagstore.TagValueNotFound:
                pass
            try:
                tagstore.get_tag_key(project.id, None, key)
                assert False  # verify exception thrown
            except tagstore.TagKeyNotFound:
                pass

        assert tagstore.get_tag_key(project2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_value(
            group2.project_id, group2.id, env2.id, key, value) is not None
        assert EventTag.objects.filter(key_id=tk2.id).exists()