#!/usr/bin/env python from sentry.utils.runner import configure configure() from datetime import datetime, timedelta from pytz import utc from random import randint from sentry.app import buffer, tsdb from sentry.models import ( AccessGroup, Activity, User, Organization, Project, Team ) from sentry.utils.samples import create_sample_event def create_sample_time_series(event): group = event.group now = datetime.utcnow().replace(tzinfo=utc) for _ in xrange(60): count = randint(1, 10) tsdb.incr_multi(( (tsdb.models.project, group.project.id), (tsdb.models.group, group.id), ), now, count) tsdb.incr_multi(( (tsdb.models.organization_total_received, group.project.organization_id), (tsdb.models.project_total_received, group.project.id), ), now, int(count * 1.1)) tsdb.incr_multi(( (tsdb.models.organization_total_rejected, group.project.organization_id), (tsdb.models.project_total_rejected, group.project.id), ), now, int(count * 0.1)) now = now - timedelta(seconds=1) for _ in xrange(24 * 30): count = randint(100, 1000) tsdb.incr_multi(( (tsdb.models.project, group.project.id), (tsdb.models.group, group.id), ), now, count) tsdb.incr_multi(( (tsdb.models.organization_total_received, group.project.organization_id), (tsdb.models.project_total_received, group.project.id), ), now, int(count * 1.1)) tsdb.incr_multi(( (tsdb.models.organization_total_rejected, group.project.organization_id), (tsdb.models.project_total_rejected, group.project.id), ), now, int(count * 0.1)) now = now - timedelta(hours=1) def main(): user = User.objects.filter(is_superuser=True)[0] dummy_user, _ = User.objects.get_or_create( username='dummy@example.com' ) mocks = ( ('Massive Dynamic', ('Ludic Science',)), ('Captain Planet', ('Earth', 'Fire', 'Wind', 'Water', 'Heart')), ) print('Mocking org {}'.format('Default')) org, _ = Organization.objects.get_or_create( name='Default', defaults={ 'owner': user, }, ) for team_name, project_names in mocks: print('> Mocking team {}'.format(team_name)) team, _ = Team.objects.get_or_create( name=team_name, defaults={ 'organization': org, 'owner': org.owner, }, ) for project_name in project_names: print(' > Mocking project {}'.format(project_name)) project, _ = Project.objects.get_or_create( team=team, name=project_name, defaults={ 'organization': org, } ) event1 = create_sample_event(project, 'python') create_sample_time_series(event1) event2 = create_sample_event(project, 'javascript') create_sample_time_series(event2) Activity.objects.create( type=Activity.RELEASE, project=project, ident='4f38b65c62c4565aa94bba391ff8946922a8eed4', user=user, data={'version': '4f38b65c62c4565aa94bba391ff8946922a8eed4'}, ) event3 = create_sample_event(project, 'java') accessgroup, _ = AccessGroup.objects.get_or_create( name='Example', team=team, ) accessgroup.projects.add(project) accessgroup.members.add(dummy_user) Activity.objects.create( type=Activity.RELEASE, project=project, ident='4f38b65c62c4565aa94bba391ff8946922a8eed4', user=user, data={'version': '4f38b65c62c4565aa94bba391ff8946922a8eed4'}, ) # force the buffer to process any pending incrs # (this ensures tags get populated) buffer.process_pending() if __name__ == '__main__': from django.conf import settings settings.CELERY_ALWAYS_EAGER = True main()