test_util.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from __future__ import absolute_import
  2. import pytest
  3. from datetime import datetime, timedelta
  4. from sentry.models import GroupHash
  5. from sentry.testutils import TestCase
  6. from sentry.utils import snuba
  7. class SnubaUtilTest(TestCase):
  8. def test_filter_keys_set(self):
  9. snuba.raw_query(
  10. start=datetime.now(),
  11. end=datetime.now(),
  12. filter_keys={
  13. 'project_id': set([1]),
  14. 'logger': set(['asdf']),
  15. },
  16. aggregations=[
  17. ['count()', '', 'count'],
  18. ],
  19. )
  20. def test_shrink_timeframe(self):
  21. now = datetime.now()
  22. year_ago = now - timedelta(days=365)
  23. issues = None
  24. assert snuba.shrink_time_window(issues, year_ago) == year_ago
  25. issues = []
  26. assert snuba.shrink_time_window(issues, year_ago) == year_ago
  27. group1 = self.create_group()
  28. group1.first_seen = now - timedelta(hours=1)
  29. group1.last_seen = now
  30. group1.save()
  31. GroupHash.objects.create(project_id=group1.project_id, group=group1, hash='a' * 32)
  32. group2 = self.create_group()
  33. GroupHash.objects.create(project_id=group2.project_id, group=group2, hash='b' * 32)
  34. issues = [group1.id]
  35. assert snuba.shrink_time_window(issues, year_ago) == \
  36. now - timedelta(hours=1, minutes=5)
  37. issues = [group1.id, group2.id]
  38. assert snuba.shrink_time_window(issues, year_ago) == year_ago
  39. with pytest.raises(snuba.QueryOutsideGroupActivityError):
  40. # query a group for a time range before it had any activity
  41. snuba.raw_query(
  42. start=group1.first_seen - timedelta(days=1, hours=1),
  43. end=group1.first_seen - timedelta(days=1),
  44. filter_keys={
  45. 'project_id': [group1.project_id],
  46. 'issue': [group1.id],
  47. },
  48. aggregations=[
  49. ['count()', '', 'count'],
  50. ],
  51. )
  52. def test_override_options(self):
  53. assert snuba.OVERRIDE_OPTIONS == {'consistent': False}
  54. with snuba.options_override({'foo': 1}):
  55. assert snuba.OVERRIDE_OPTIONS == {'foo': 1, 'consistent': False}
  56. with snuba.options_override({'foo': 2}):
  57. assert snuba.OVERRIDE_OPTIONS == {'foo': 2, 'consistent': False}
  58. assert snuba.OVERRIDE_OPTIONS == {'foo': 1, 'consistent': False}
  59. assert snuba.OVERRIDE_OPTIONS == {'consistent': False}