|
@@ -76,13 +76,14 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header, raw1, raw2 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"value,times_seen,last_seen,first_seen"
|
|
|
|
|
|
raw1, raw2 = sorted([raw1, raw2])
|
|
@@ -107,13 +108,14 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header, raw1, raw2 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"value,times_seen,last_seen,first_seen"
|
|
|
|
|
|
raw1, raw2 = sorted([raw1, raw2])
|
|
@@ -182,13 +184,14 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header = de.file.getfile().read().strip()
|
|
|
+ header = file.getfile().read().strip()
|
|
|
assert header == b"value,times_seen,last_seen,first_seen"
|
|
|
|
|
|
@patch("sentry.data_export.models.ExportedData.email_success")
|
|
@@ -204,13 +207,14 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header, raw1, raw2, raw3 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2, raw3 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"title"
|
|
|
|
|
|
assert raw1.startswith(b"<unlabeled event>")
|
|
@@ -237,13 +241,14 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header, raw1, raw2 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"title"
|
|
|
|
|
|
assert raw1.startswith(b"<unlabeled event>")
|
|
@@ -269,13 +274,14 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header, raw1, raw2, raw3 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2, raw3 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"title"
|
|
|
|
|
|
assert raw1.startswith(b"<unlabeled event>")
|
|
@@ -330,14 +336,15 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
# capping MAX_FILE_SIZE forces the last batch to be dropped, leaving 2 rows
|
|
|
- header, raw1, raw2 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"title"
|
|
|
|
|
|
assert raw1.startswith(b"<unlabeled event>")
|
|
@@ -358,14 +365,15 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
# Convert raw csv to list of line-strings
|
|
|
# capping MAX_FILE_SIZE forces the last batch to be dropped, leaving 2 rows
|
|
|
- header, raw1, raw2 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2 = file.getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"title"
|
|
|
|
|
|
assert raw1.startswith(b"<unlabeled event>")
|
|
@@ -443,12 +451,13 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
- assert de.file.headers == {"Content-Type": "text/csv"}
|
|
|
- assert de.file.size is not None
|
|
|
- assert de.file.checksum is not None
|
|
|
- header, row = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
+ file = de._get_file()
|
|
|
+ assert file.headers == {"Content-Type": "text/csv"}
|
|
|
+ assert file.size is not None
|
|
|
+ assert file.checksum is not None
|
|
|
+ header, row = file.getfile().read().strip().split(b"\r\n")
|
|
|
|
|
|
@patch("sentry.snuba.discover.raw_query")
|
|
|
@patch("sentry.data_export.models.ExportedData.email_failure")
|
|
@@ -590,7 +599,7 @@ class AssembleDownloadTest(TestCase, SnubaTestCase):
|
|
|
assemble_download(de.id, batch_size=1)
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
# Convert raw csv to list of line-strings
|
|
|
- header, raw1, raw2, raw3 = de.file.getfile().read().strip().split(b"\r\n")
|
|
|
+ header, raw1, raw2, raw3 = de._get_file().getfile().read().strip().split(b"\r\n")
|
|
|
assert header == b"environment"
|
|
|
|
|
|
assert raw1.startswith(b"prod")
|
|
@@ -639,8 +648,8 @@ class AssembleDownloadLargeTest(TestCase, SnubaTestCase):
|
|
|
de = ExportedData.objects.get(id=de.id)
|
|
|
assert de.date_finished is not None
|
|
|
assert de.date_expired is not None
|
|
|
- assert de.file is not None
|
|
|
- assert isinstance(de.file, File)
|
|
|
+ assert de.file_id is not None
|
|
|
+ assert isinstance(de._get_file(), File)
|
|
|
|
|
|
assert emailer.called
|
|
|
|