Browse Source

Improve load-mocks to be more correct

David Cramer 10 years ago
parent
commit
92b8e7502a
1 changed files with 82 additions and 55 deletions
  1. 82 55
      bin/load-mocks

+ 82 - 55
bin/load-mocks

@@ -7,7 +7,7 @@ from datetime import datetime, timedelta
 from pytz import utc
 from random import randint
 
-from sentry.app import tsdb
+from sentry.app import buffer, tsdb
 from sentry.models import (
     AccessGroup, Activity, User, Organization, Project, Team
 )
@@ -51,57 +51,84 @@ def create_sample_time_series(event):
         now = now - timedelta(hours=1)
 
 
-user = User.objects.filter(is_superuser=True)[0]
-
-dummy_user, _ = User.objects.get_or_create(
-    username='dummy@example.com'
-)
-
-org, _ = Organization.objects.get_or_create(
-    name='Default',
-    defaults={
-        'owner': user,
-    },
-)
-
-team, _ = Team.objects.get_or_create(
-    name='Earth', slug='earth',
-    defaults={
-        'organization': org,
-        'owner': org.owner,
-    },
-)
-
-project, _ = Project.objects.get_or_create(
-    team=team,
-    name='Backend',
-    slug='backend',
-    defaults={
-        'organization': org,
-    }
-)
-
-
-accessgroup, _ = AccessGroup.objects.get_or_create(
-    name='Example',
-    team=team,
-)
-accessgroup.projects.add(project)
-accessgroup.members.add(dummy_user)
-
-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')
-create_sample_time_series(event3)
+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()