Exemplo n.º 1
0
    def _create_tags(self, group, environment_id=None):
        for key, values in group.data['tags']:
            tagstore.create_tag_key(
                project_id=group.project_id,
                environment_id=environment_id,
                key=key,
            )
            tagstore.create_group_tag_key(
                project_id=group.project_id,
                group_id=group.id,
                environment_id=environment_id,
                key=key,
            )

            if not isinstance(values, list):
                values = [values]
            for value in values:
                tagstore.create_tag_value(
                    project_id=group.project_id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )
                tagstore.create_group_tag_value(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )
Exemplo n.º 2
0
    def test_simple(self):
        group = self.create_group()
        group.data['tags'] = (['foo', 'bar'], ['biz', 'baz'])
        group.save()

        for key, value in group.data['tags']:
            tagstore.create_tag_key(
                project_id=group.project_id,
                key=key,
            )
            tagstore.create_tag_value(
                project_id=group.project_id,
                key=key,
                value=value,
            )
            tagstore.create_group_tag_key(
                project_id=group.project_id,
                group_id=group.id,
                key=key,
            )
            tagstore.create_group_tag_value(
                project_id=group.project_id,
                group_id=group.id,
                key=key,
                value=value,
            )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/'.format(group.id)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 2
Exemplo n.º 3
0
    def test_simple(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id,
                                         environment_id=self.environment.id,
                                         key='foo')
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=self.environment.id,
                                  key='foo',
                                  value='bar')

        self.login_as(user=self.user)

        url = reverse('sentry-api-0-project-tagkey-values',
                      kwargs={
                          'organization_slug': project.organization.slug,
                          'project_slug': project.slug,
                          'key': tagkey.key,
                      })

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['value'] == 'bar'
Exemplo n.º 4
0
    def _create_tags(self, group, environment_id=None):
        for key, values in group.data["tags"]:
            tagstore.create_tag_key(project_id=group.project_id,
                                    environment_id=environment_id,
                                    key=key)
            tagstore.create_group_tag_key(
                project_id=group.project_id,
                group_id=group.id,
                environment_id=environment_id,
                key=key,
            )

            if not isinstance(values, list):
                values = [values]
            for value in values:
                tagstore.create_tag_value(project_id=group.project_id,
                                          environment_id=environment_id,
                                          key=key,
                                          value=value)
                tagstore.create_group_tag_value(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )
    def test_query(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id, environment_id=None, key="foo")
        tagstore.create_tag_value(
            project_id=project.id, environment_id=None, key="foo", value="bar"
        )

        self.login_as(user=self.user)

        url = reverse(
            "sentry-api-0-project-tagkey-values",
            kwargs={
                "organization_slug": project.organization.slug,
                "project_slug": project.slug,
                "key": tagkey.key,
            },
        )
        response = self.client.get(url + "?query=bar")

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]["value"] == "bar"

        response = self.client.get(url + "?query=foo")

        assert response.status_code == 200
        assert len(response.data) == 0
Exemplo n.º 6
0
    def test_simple(self):
        group = self.create_group()
        group.data["tags"] = (["foo", "bar"],)
        group.save()

        key, value = group.data["tags"][0]
        tagkey = tagstore.create_tag_key(
            project_id=group.project_id, environment_id=None, key=key, values_seen=2
        )
        tagstore.create_tag_value(
            project_id=group.project_id, environment_id=None, key=key, value=value, times_seen=4
        )
        tagstore.create_group_tag_key(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            values_seen=1,
        )
        tagstore.create_group_tag_value(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=3,
        )

        self.login_as(user=self.user)

        url = u"/api/0/issues/{}/tags/{}/".format(group.id, tagkey.key)
        response = self.client.get(url, format="json")
        assert response.status_code == 200, response.content
        assert response.data["key"] == six.text_type(tagkey.key)
        assert response.data["totalValues"] == 3
Exemplo n.º 7
0
    def test_simple(self):
        key, value = "foo", "bar"

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=None,
                                key=key)
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=None,
                                  key=key,
                                  value=value)
        tagstore.create_group_tag_value(project_id=project.id,
                                        group_id=group.id,
                                        environment_id=None,
                                        key=key,
                                        value=value)

        self.login_as(user=self.user)

        url = u"/api/0/issues/{}/tags/{}/values/".format(group.id, key)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]["value"] == "bar"
Exemplo n.º 8
0
    def test_simple(self):
        key, value = 'foo', 'bar'

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id, environment_id=self.environment.id, key=key)
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )
        tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/{}/values/'.format(group.id, key)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['value'] == 'bar'
Exemplo n.º 9
0
    def test_query(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id, key='foo')
        tagstore.create_tag_value(project_id=project.id, key='foo', value='bar')

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-values',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )
        response = self.client.get(url + '?query=bar')

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['value'] == 'bar'

        response = self.client.get(url + '?query=foo')

        assert response.status_code == 200
        assert len(response.data) == 0
Exemplo n.º 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 == []
Exemplo n.º 11
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 == []
Exemplo n.º 12
0
    def test_simple(self):
        this_group = self.create_group()
        this_group.data['tags'] = (['foo', ['bar', 'quux']], ['biz', 'baz'], [
                                   'sentry:release', 'releaseme'])

        this_group.save()

        other_group = self.create_group()
        other_group.data['tags'] = (['abc', 'xyz'],)
        other_group.save()

        for group in (this_group, other_group):
            for key, values in group.data['tags']:
                tagstore.create_tag_key(
                    project_id=group.project_id,
                    environment_id=None,
                    key=key,
                )
                tagstore.create_group_tag_key(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=None,
                    key=key,
                )

                if not isinstance(values, list):
                    values = [values]
                for value in values:
                    tagstore.create_tag_value(
                        project_id=group.project_id,
                        environment_id=None,
                        key=key,
                        value=value,
                    )
                    tagstore.create_group_tag_value(
                        project_id=group.project_id,
                        group_id=group.id,
                        environment_id=None,
                        key=key,
                        value=value,
                    )

        self.login_as(user=self.user)

        url = u'/api/0/issues/{}/tags/'.format(this_group.id)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 3

        data = sorted(response.data, key=lambda r: r['key'])
        assert data[0]['key'] == 'biz'
        assert len(data[0]['topValues']) == 1

        assert data[1]['key'] == 'foo'
        assert len(data[1]['topValues']) == 2

        assert data[2]['key'] == 'release'  # Formatted from sentry:release
        assert len(data[2]['topValues']) == 1
Exemplo n.º 13
0
    def test_simple(self):
        key, value = 'foo', u'b\xe4r'

        # Drop microsecond value for MySQL
        now = timezone.now().replace(microsecond=0)

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=self.environment.id,
                                key=key)
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )
        group_tag_value = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
            times_seen=1,
            first_seen=now - timedelta(hours=1),
            last_seen=now,
        )

        self.login_as(user=self.user)

        url = '/{}/{}/issues/{}/tags/{}/export/?environment={}'.format(
            project.organization.slug, project.slug, group.id, key,
            self.environment.name)

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.streaming
        assert response['Content-Type'] == 'text/csv'
        rows = list(response.streaming_content)
        for idx, row in enumerate(rows):
            row = row.decode('utf-8')
            assert row.endswith(u'\r\n')
            bits = row[:-2].split(',')
            if idx == 0:
                assert bits == [
                    'value', 'times_seen', 'last_seen', 'first_seen'
                ]
            else:
                assert bits[0] == value
                assert bits[1] == '1'
                assert bits[2] == group_tag_value.last_seen.strftime(
                    '%Y-%m-%dT%H:%M:%S.%fZ')
                assert bits[3] == group_tag_value.first_seen.strftime(
                    '%Y-%m-%dT%H:%M:%S.%fZ')
Exemplo n.º 14
0
    def test_simple(self):
        key, value = 'foo', u'b\xe4r'

        # Drop microsecond value for MySQL
        now = timezone.now().replace(microsecond=0)

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key
        )
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )
        group_tag_value = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
            times_seen=1,
            first_seen=now - timedelta(hours=1),
            last_seen=now,
        )

        self.login_as(user=self.user)

        url = '/{}/{}/issues/{}/tags/{}/export/?environment={}'.format(
            project.organization.slug, project.slug, group.id, key, self.environment.name
        )

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.streaming
        assert response['Content-Type'] == 'text/csv'
        rows = list(response.streaming_content)
        for idx, row in enumerate(rows):
            row = row.decode('utf-8')
            assert row.endswith(u'\r\n')
            bits = row[:-2].split(',')
            if idx == 0:
                assert bits == ['value', 'times_seen', 'last_seen', 'first_seen']
            else:
                assert bits[0] == value
                assert bits[1] == '1'
                assert bits[2] == group_tag_value.last_seen.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
                assert bits[3] == group_tag_value.first_seen.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
Exemplo n.º 15
0
    def test_simple(self):
        key, value = "foo", u"b\xe4r"

        now = timezone.now()

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=self.environment.id,
                                key=key)
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=self.environment.id,
                                  key=key,
                                  value=value)
        group_tag_value = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
            times_seen=1,
            first_seen=now - timedelta(hours=1),
            last_seen=now,
        )

        self.login_as(user=self.user)

        url = u"/{}/{}/issues/{}/tags/{}/export/?environment={}".format(
            project.organization.slug, project.slug, group.id, key,
            self.environment.name)

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.streaming
        assert response["Content-Type"] == "text/csv"
        rows = list(response.streaming_content)
        for idx, row in enumerate(rows):
            row = row.decode("utf-8")
            assert row.endswith(u"\r\n")
            bits = row[:-2].split(",")
            if idx == 0:
                assert bits == [
                    "value", "times_seen", "last_seen", "first_seen"
                ]
            else:
                assert bits[0] == value
                assert bits[1] == "1"
                assert bits[2] == group_tag_value.last_seen.strftime(
                    "%Y-%m-%dT%H:%M:%S.%fZ")
                assert bits[3] == group_tag_value.first_seen.strftime(
                    "%Y-%m-%dT%H:%M:%S.%fZ")
Exemplo n.º 16
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()
    def test_with_user(self):
        user = self.create_user()
        project = self.create_project()
        euser = EventUser.objects.create(
            project_id=project.id,
            email='*****@*****.**',
        )
        tagvalue = tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key='sentry:user',
            value=euser.tag_value,
        )
        grouptagvalue = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=self.create_group(project=project).id,
            environment_id=self.environment.id,
            key=tagvalue.key,
            value=tagvalue.value,
        )

        result = serialize(grouptagvalue, user)
        assert result['id'] == six.text_type(grouptagvalue.id)
        assert result['key'] == 'user'
        assert result['value'] == grouptagvalue.value
        assert result['name'] == euser.get_label()
Exemplo n.º 18
0
    def test_simple(self):
        group = self.create_group()
        group.data['tags'] = (['foo', 'bar'], )
        group.save()

        key, value = group.data['tags'][0]
        tagkey = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            values_seen=2
        )
        tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=4
        )
        tagstore.create_group_tag_key(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            values_seen=1,
        )
        tagstore.create_group_tag_value(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=3,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/{}/'.format(group.id, tagkey.key)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert response.data['id'] == six.text_type(tagkey.id)
        assert response.data['key'] == six.text_type(tagkey.key)
        assert response.data['uniqueValues'] == 1
        assert response.data['totalValues'] == 3
Exemplo n.º 19
0
    def test_simple(self):
        group = self.create_group()
        group.data['tags'] = (['foo', 'bar'], )
        group.save()

        key, value = group.data['tags'][0]
        tagkey = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            values_seen=2
        )
        tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=4
        )
        tagstore.create_group_tag_key(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            values_seen=1,
        )
        tagstore.create_group_tag_value(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=3,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/{}/'.format(group.id, tagkey.key)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert response.data['key'] == six.text_type(tagkey.key)
        assert response.data['uniqueValues'] == 1
        assert response.data['totalValues'] == 3
Exemplo n.º 20
0
    def test_simple(self):
        tv = tagstore.create_tag_value(
            project_id=self.project.id,
            environment_id=self.environment.id,
            key='sentry:release',
            value='1.0',
            first_seen=datetime(2018, 2, 1, tzinfo=pytz.utc),
        )

        tv = tagstore.get_tag_value(self.project.id, self.environment.id,
                                    'sentry:release', '1.0')
        assert tv.data['release_id']

        release = Release.objects.get(id=tv.data['release_id'])
        assert release.version == tv.value
        assert release.projects.first() == self.project
        assert release.organization == self.project.organization
        assert release.date_added == tv.first_seen

        # ensure we dont hit some kind of error saving it again
        tv.save()

        tv2 = tagstore.create_tag_value(
            project_id=self.create_project(
                organization=self.project.organization, ).id,
            environment_id=self.environment.id,
            key='sentry:release',
            value='1.0',
            first_seen=datetime(2018, 1, 1, tzinfo=pytz.utc),
        )

        assert Release.objects.get(id=release.id).date_added == tv2.first_seen

        tagstore.create_tag_value(
            project_id=self.create_project(
                organization=self.project.organization, ).id,
            environment_id=self.environment.id,
            key='sentry:release',
            value='1.0',
            first_seen=datetime(2018, 3, 1, tzinfo=pytz.utc),
        )

        assert Release.objects.get(id=release.id).date_added == tv2.first_seen
Exemplo n.º 21
0
    def test_simple(self):
        this_group = self.create_group()
        this_group.data['tags'] = (['foo', 'bar'], ['biz', 'baz'])
        this_group.save()

        other_group = self.create_group()
        other_group.data['tags'] = (['abc', 'xyz'], )
        other_group.save()

        for group in (this_group, other_group):
            for key, value in group.data['tags']:
                tagstore.create_tag_key(
                    project_id=group.project_id,
                    environment_id=self.environment.id,
                    key=key,
                )
                tagstore.create_tag_value(
                    project_id=group.project_id,
                    environment_id=self.environment.id,
                    key=key,
                    value=value,
                )
                tagstore.create_group_tag_key(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=self.environment.id,
                    key=key,
                )
                tagstore.create_group_tag_value(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=self.environment.id,
                    key=key,
                    value=value,
                )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/'.format(this_group.id)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 2
Exemplo n.º 22
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()
Exemplo n.º 23
0
    def test_user_tag(self):
        project = self.create_project()
        group = self.create_group(project=project)
        euser = EventUser.objects.create(
            project_id=project.id,
            ident='1',
            email='*****@*****.**',
            username='******',
            ip_address='127.0.0.1',
        )
        tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key='sentry:user',
        )
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key='sentry:user',
            value=euser.tag_value,
        )
        tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key='sentry:user',
            value=euser.tag_value,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/user/values/'.format(group.id)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['email'] == '*****@*****.**'
        assert response.data[0]['value'] == euser.tag_value
Exemplo n.º 24
0
    def test_release(self):
        user = self.create_user()
        project = self.create_project()
        tagvalue = tagstore.create_tag_value(
            project_id=project.id,
            key='sentry:release',
            value='df84bccbb23ca15f2868be1f2a5f7c7a6464fadd',
        )

        result = serialize(tagvalue, user)
        assert result['id'] == six.text_type(tagvalue.id)
        assert result['key'] == 'release'
        assert result['value'] == tagvalue.value
        assert result['name'] == tagvalue.get_label()
Exemplo n.º 25
0
    def test_basic(self):
        user = self.create_user()
        project = self.create_project()
        tagvalue = tagstore.create_tag_value(
            project_id=project.id,
            key='sentry:user',
            value='email:[email protected]',
        )

        result = serialize(tagvalue, user)
        assert result['id'] == six.text_type(tagvalue.id)
        assert result['key'] == 'user'
        assert result['value'] == tagvalue.value
        assert result['name'] == tagvalue.get_label()
Exemplo n.º 26
0
    def test_user_tag(self):
        project = self.create_project()
        group = self.create_group(project=project)
        euser = EventUser.objects.create(
            project_id=project.id,
            ident="1",
            email="*****@*****.**",
            username="******",
            ip_address="127.0.0.1",
        )
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=None,
                                key="sentry:user")
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=None,
                                  key="sentry:user",
                                  value=euser.tag_value)
        tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=None,
            key="sentry:user",
            value=euser.tag_value,
        )

        self.login_as(user=self.user)

        url = u"/api/0/issues/{}/tags/user/values/".format(group.id)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]["email"] == "*****@*****.**"
        assert response.data[0]["value"] == euser.tag_value
Exemplo n.º 27
0
    def test_simple(self):
        tv = tagstore.create_tag_value(
            project_id=self.project.id,
            key='sentry:release',
            value='1.0',
        )

        tv = tagstore.get_tag_value(self.project.id, 'sentry:release', '1.0')
        assert tv.data['release_id']

        release = Release.objects.get(id=tv.data['release_id'])
        assert release.version == tv.value
        assert release.projects.first() == self.project
        assert release.organization == self.project.organization

        # ensure we dont hit some kind of error saving it again
        tv.save()
Exemplo n.º 28
0
    def test_simple(self):
        tv = tagstore.create_tag_value(
            project_id=self.project.id,
            key='sentry:release',
            value='1.0',
        )

        tv = tagstore.get_tag_value(self.project.id, 'sentry:release', '1.0')
        assert tv.data['release_id']

        release = Release.objects.get(id=tv.data['release_id'])
        assert release.version == tv.value
        assert release.projects.first() == self.project
        assert release.organization == self.project.organization

        # ensure we dont hit some kind of error saving it again
        tv.save()
Exemplo n.º 29
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
Exemplo n.º 30
0
    def test_simple(self):
        user = self.create_user()
        project = self.create_project()
        project2 = self.create_project(organization=project.organization)
        release = Release.objects.create(
            organization_id=project.organization_id, version=uuid4().hex
        )
        release.add_project(project)
        release.add_project(project2)

        ReleaseProject.objects.filter(release=release, project=project).update(new_groups=1)
        ReleaseProject.objects.filter(release=release, project=project2).update(new_groups=1)

        environment = Environment.objects.create(
            organization_id=project.organization_id, name="prod"
        )
        environment.add_project(project)
        environment.add_project(project2)

        ReleaseProjectEnvironment.objects.create(
            project_id=project.id,
            release_id=release.id,
            environment_id=environment.id,
            new_issues_count=1,
        )
        ReleaseProjectEnvironment.objects.create(
            project_id=project2.id,
            release_id=release.id,
            environment_id=environment.id,
            new_issues_count=1,
        )
        key = "sentry:release"
        value = release.version
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=None,
            key=key,
            value=value,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            times_seen=5,
        )
        tagstore.create_tag_value(
            project_id=project2.id,
            environment_id=None,
            key=key,
            value=value,
            first_seen=timezone.now() - datetime.timedelta(days=2),
            last_seen=timezone.now() - datetime.timedelta(days=1),
            times_seen=5,
        )
        commit_author = CommitAuthor.objects.create(
            name="stebe", email="*****@*****.**", organization_id=project.organization_id
        )
        commit = Commit.objects.create(
            organization_id=project.organization_id,
            repository_id=1,
            key="abc",
            author=commit_author,
            message="waddap",
        )
        ReleaseCommit.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            release=release,
            commit=commit,
            order=1,
        )
        release.update(
            authors=[six.text_type(commit_author.id)], commit_count=1, last_commit_id=commit.id
        )

        result = serialize(release, user)
        assert result["version"] == release.version
        assert result["shortVersion"] == release.version
        # should be sum of all projects
        assert result["newGroups"] == 2
        # should be tags from all projects
        tagvalue1 = tagstore.get_tag_value(project.id, None, key, value)
        tagvalue2 = tagstore.get_tag_value(project2.id, None, key, value)
        assert result["firstEvent"] == tagvalue2.first_seen
        assert result["lastEvent"] == tagvalue1.last_seen
        assert result["commitCount"] == 1
        assert result["authors"] == [{"name": "stebe", "email": "*****@*****.**"}]

        result = serialize(release, user, project=project)
        # should be groups from one project
        assert result["newGroups"] == 1
        # should be tags from one project
        assert result["firstEvent"] == tagvalue1.first_seen
        assert result["lastEvent"] == tagvalue1.last_seen

        # Make sure a sha1 value gets truncated
        release.version = "0" * 40
        result = serialize(release, user)
        assert result["shortVersion"] == "0" * 7
Exemplo n.º 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()
Exemplo n.º 32
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()
Exemplo n.º 33
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
Exemplo n.º 34
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()
Exemplo n.º 35
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()
Exemplo n.º 36
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()
Exemplo n.º 37
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()
Exemplo n.º 38
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)
        tagstore.create_tag_value(key=key, value=value, project_id=project.id)
        tagstore.create_group_tag_key(key=key,
                                      group_id=group.id,
                                      project_id=project.id)
        tagstore.create_group_tag_value(key=key,
                                        value=value,
                                        group_id=group.id,
                                        project_id=project.id)
        tagstore.create_event_tag(
            key_id=tk.id,
            group_id=group.id,
            value_id=1,
            project_id=project.id,
            event_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)
        tagstore.create_group_tag_key(key=key,
                                      group_id=group2.id,
                                      project_id=project2.id)
        tagstore.create_group_tag_value(key=key,
                                        value=value,
                                        group_id=group2.id,
                                        project_id=project2.id)
        tagstore.create_event_tag(
            key_id=tk2.id,
            group_id=group2.id,
            value_id=1,
            project_id=project.id,
            event_id=1,
        )

        with self.tasks():
            delete_tag_key(object_id=tk.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
            assert not tagstore.get_event_tag_qs(key_id=tk.id).exists()
            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()
Exemplo n.º 39
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()
    def test_simple(self):
        user = self.create_user()
        project = self.create_project()
        project2 = self.create_project(organization=project.organization)
        release = Release.objects.create(
            organization_id=project.organization_id, version=uuid4().hex
        )
        release.add_project(project)
        release.add_project(project2)

        ReleaseProject.objects.filter(release=release, project=project).update(new_groups=1)
        ReleaseProject.objects.filter(release=release, project=project2).update(new_groups=1)

        environment = Environment.objects.create(
            organization_id=project.organization_id,
            name='prod',
        )
        environment.add_project(project)
        environment.add_project(project2)

        ReleaseProjectEnvironment.objects.create(
            project_id=project.id,
            release_id=release.id,
            environment_id=environment.id,
            new_issues_count=1,
        )
        ReleaseProjectEnvironment.objects.create(
            project_id=project2.id,
            release_id=release.id,
            environment_id=environment.id,
            new_issues_count=1,
        )
        key = 'sentry:release'
        value = release.version
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=None,
            key=key,
            value=value,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            times_seen=5,
        )
        tagstore.create_tag_value(
            project_id=project2.id,
            environment_id=None,
            key=key,
            value=value,
            first_seen=timezone.now() - datetime.timedelta(days=2),
            last_seen=timezone.now() - datetime.timedelta(days=1),
            times_seen=5,
        )
        commit_author = CommitAuthor.objects.create(
            name='stebe',
            email='*****@*****.**',
            organization_id=project.organization_id,
        )
        commit = Commit.objects.create(
            organization_id=project.organization_id,
            repository_id=1,
            key='abc',
            author=commit_author,
            message='waddap',
        )
        ReleaseCommit.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            release=release,
            commit=commit,
            order=1,
        )
        release.update(
            authors=[six.text_type(commit_author.id)],
            commit_count=1,
            last_commit_id=commit.id,
        )

        result = serialize(release, user)
        assert result['version'] == release.version
        assert result['shortVersion'] == release.version
        # should be sum of all projects
        assert result['newGroups'] == 2
        # should be tags from all projects
        tagvalue1 = tagstore.get_tag_value(project.id, None, key, value)
        tagvalue2 = tagstore.get_tag_value(project2.id, None, key, value)
        assert result['firstEvent'] == tagvalue2.first_seen
        assert result['lastEvent'] == tagvalue1.last_seen
        assert result['commitCount'] == 1
        assert result['authors'] == [{'name': 'stebe', 'email': '*****@*****.**'}]

        result = serialize(release, user, project=project)
        # should be groups from one project
        assert result['newGroups'] == 1
        # should be tags from one project
        assert result['firstEvent'] == tagvalue1.first_seen
        assert result['lastEvent'] == tagvalue1.last_seen

        # Make sure a sha1 value gets truncated
        release.version = '0' * 40
        result = serialize(release, user)
        assert result['shortVersion'] == '0' * 7
Exemplo n.º 41
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)
        tagstore.create_tag_value(key=key, value=value, project_id=project.id)
        GroupTagKey.objects.create(key=key,
                                   group_id=group.id,
                                   project_id=project.id)
        GroupTagValue.objects.create(key=key,
                                     value=value,
                                     group_id=group.id,
                                     project_id=project.id)
        EventTag.objects.create(
            key_id=tk.id,
            group_id=group.id,
            value_id=1,
            project_id=project.id,
            event_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)
        gtk2 = GroupTagKey.objects.create(key=key,
                                          group_id=group2.id,
                                          project_id=project2.id)
        gtv2 = GroupTagValue.objects.create(key=key,
                                            value=value,
                                            group_id=group2.id,
                                            project_id=project2.id)
        EventTag.objects.create(
            key_id=tk2.id,
            group_id=group2.id,
            value_id=1,
            project_id=project.id,
            event_id=1,
        )

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

            assert not GroupTagValue.objects.filter(
                key=tk.key, project_id=project.id).exists()
            assert not GroupTagKey.objects.filter(
                key=tk.key, project_id=project.id).exists()
            try:
                tagstore.get_tag_value(project.id, key, value)
                assert False  # verify exception thrown
            except tagstore.TagValueNotFound:
                pass
            assert not EventTag.objects.filter(key_id=tk.id).exists()
            try:
                tagstore.get_tag_key(project.id, key)
                assert False  # verify exception thrown
            except tagstore.TagKeyNotFound:
                pass

        assert tagstore.get_tag_key(key=key,
                                    project_id=project2.id) is not None
        assert GroupTagKey.objects.filter(id=gtk2.id).exists()
        assert GroupTagValue.objects.filter(id=gtv2.id).exists()
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Exemplo n.º 42
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
Exemplo n.º 43
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()