load-mocks 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #!/usr/bin/env python
  2. from sentry.utils.runner import configure
  3. configure()
  4. from datetime import datetime, timedelta
  5. from pytz import utc
  6. from random import randint
  7. from sentry.app import buffer, tsdb
  8. from sentry.models import (
  9. AccessGroup, Activity, User, Organization, Project, Team
  10. )
  11. from sentry.utils.samples import create_sample_event
  12. def create_sample_time_series(event):
  13. group = event.group
  14. now = datetime.utcnow().replace(tzinfo=utc)
  15. for _ in xrange(60):
  16. count = randint(1, 10)
  17. tsdb.incr_multi((
  18. (tsdb.models.project, group.project.id),
  19. (tsdb.models.group, group.id),
  20. ), now, count)
  21. tsdb.incr_multi((
  22. (tsdb.models.organization_total_received, group.project.organization_id),
  23. (tsdb.models.project_total_received, group.project.id),
  24. ), now, int(count * 1.1))
  25. tsdb.incr_multi((
  26. (tsdb.models.organization_total_rejected, group.project.organization_id),
  27. (tsdb.models.project_total_rejected, group.project.id),
  28. ), now, int(count * 0.1))
  29. now = now - timedelta(seconds=1)
  30. for _ in xrange(24 * 30):
  31. count = randint(100, 1000)
  32. tsdb.incr_multi((
  33. (tsdb.models.project, group.project.id),
  34. (tsdb.models.group, group.id),
  35. ), now, count)
  36. tsdb.incr_multi((
  37. (tsdb.models.organization_total_received, group.project.organization_id),
  38. (tsdb.models.project_total_received, group.project.id),
  39. ), now, int(count * 1.1))
  40. tsdb.incr_multi((
  41. (tsdb.models.organization_total_rejected, group.project.organization_id),
  42. (tsdb.models.project_total_rejected, group.project.id),
  43. ), now, int(count * 0.1))
  44. now = now - timedelta(hours=1)
  45. def main():
  46. user = User.objects.filter(is_superuser=True)[0]
  47. dummy_user, _ = User.objects.get_or_create(
  48. username='dummy@example.com'
  49. )
  50. mocks = (
  51. ('Massive Dynamic', ('Ludic Science',)),
  52. ('Captain Planet', ('Earth', 'Fire', 'Wind', 'Water', 'Heart')),
  53. )
  54. print('Mocking org {}'.format('Default'))
  55. org, _ = Organization.objects.get_or_create(
  56. name='Default',
  57. defaults={
  58. 'owner': user,
  59. },
  60. )
  61. for team_name, project_names in mocks:
  62. print('> Mocking team {}'.format(team_name))
  63. team, _ = Team.objects.get_or_create(
  64. name=team_name,
  65. defaults={
  66. 'organization': org,
  67. 'owner': org.owner,
  68. },
  69. )
  70. for project_name in project_names:
  71. print(' > Mocking project {}'.format(project_name))
  72. project, _ = Project.objects.get_or_create(
  73. team=team,
  74. name=project_name,
  75. defaults={
  76. 'organization': org,
  77. }
  78. )
  79. event1 = create_sample_event(project, 'python')
  80. create_sample_time_series(event1)
  81. event2 = create_sample_event(project, 'javascript')
  82. create_sample_time_series(event2)
  83. Activity.objects.create(
  84. type=Activity.RELEASE,
  85. project=project,
  86. ident='4f38b65c62c4565aa94bba391ff8946922a8eed4',
  87. user=user,
  88. data={'version': '4f38b65c62c4565aa94bba391ff8946922a8eed4'},
  89. )
  90. event3 = create_sample_event(project, 'java')
  91. accessgroup, _ = AccessGroup.objects.get_or_create(
  92. name='Example',
  93. team=team,
  94. )
  95. accessgroup.projects.add(project)
  96. accessgroup.members.add(dummy_user)
  97. Activity.objects.create(
  98. type=Activity.RELEASE,
  99. project=project,
  100. ident='4f38b65c62c4565aa94bba391ff8946922a8eed4',
  101. user=user,
  102. data={'version': '4f38b65c62c4565aa94bba391ff8946922a8eed4'},
  103. )
  104. # force the buffer to process any pending incrs
  105. # (this ensures tags get populated)
  106. buffer.process_pending()
  107. if __name__ == '__main__':
  108. from django.conf import settings
  109. settings.CELERY_ALWAYS_EAGER = True
  110. main()