Add a basic test for blob upload cleanup
This commit is contained in:
parent
b87415129f
commit
b2053829f9
1 changed files with 36 additions and 0 deletions
|
@ -0,0 +1,36 @@
|
|||
import pytest
|
||||
|
||||
from contextlib import contextmanager
|
||||
from datetime import datetime, timedelta
|
||||
from mock import patch, Mock
|
||||
|
||||
from test.fixtures import *
|
||||
from data import model
|
||||
from workers.blobuploadcleanupworker.blobuploadcleanupworker import (BlobUploadCleanupWorker,
|
||||
DELETION_DATE_THRESHOLD)
|
||||
|
||||
def test_blobuploadcleanupworker(initialized_db):
|
||||
# Create a blob upload older than the threshold.
|
||||
blob_upload = model.blob.initiate_upload('devtable', 'simple', 'foobarbaz', 'local_us', {})
|
||||
blob_upload.created = datetime.now() - (DELETION_DATE_THRESHOLD + timedelta(days=100))
|
||||
blob_upload.save()
|
||||
|
||||
assert model.blob.get_stale_blob_upload(DELETION_DATE_THRESHOLD) is not None
|
||||
|
||||
# Note: We need to override UseThenDisconnect to ensure to remains connected to the test DB.
|
||||
@contextmanager
|
||||
def noop(_):
|
||||
yield
|
||||
|
||||
storage_mock = Mock()
|
||||
with patch('workers.blobuploadcleanupworker.blobuploadcleanupworker.UseThenDisconnect', noop):
|
||||
with patch('workers.blobuploadcleanupworker.blobuploadcleanupworker.storage', storage_mock):
|
||||
# Call cleanup and ensure it is canceled.
|
||||
worker = BlobUploadCleanupWorker()
|
||||
worker._cleanup_uploads()
|
||||
|
||||
storage_mock.cancel_chunked_upload.assert_called_once()
|
||||
|
||||
# Ensure the blob no longer exists.
|
||||
with pytest.raises(model.InvalidBlobUpload):
|
||||
model.blob.get_blob_upload('devtable', 'simple', blob_upload.uuid)
|
Reference in a new issue