From 6594b7c50c1e678683fe77eb97e4152f3dd8c963 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Wed, 1 May 2019 15:08:47 -0300 Subject: [PATCH] test concurrency through races on getting a writer --- tests/unit/blob/test_blob_file.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/unit/blob/test_blob_file.py b/tests/unit/blob/test_blob_file.py index 8b519e27e..664f7e75c 100644 --- a/tests/unit/blob/test_blob_file.py +++ b/tests/unit/blob/test_blob_file.py @@ -133,6 +133,22 @@ class TestBlob(AsyncioTestCase): await self._test_close_writers_on_finished(BlobBuffer) await self._test_close_writers_on_finished(BlobFile, tmp_dir) + async def test_concurrency_and_premature_closes(self): + blob_directory = tempfile.mkdtemp() + self.addCleanup(lambda: shutil.rmtree(blob_directory)) + blob = self._get_blob(BlobBuffer, blob_directory=blob_directory) + writer = blob.get_blob_writer('1.1.1.1', 1337) + self.assertEqual(1, len(blob.writers)) + with self.assertRaises(OSError): + blob.get_blob_writer('1.1.1.1', 1337) + writer.close_handle() + self.assertTrue(blob.writers[('1.1.1.1', 1337)].closed()) + writer = blob.get_blob_writer('1.1.1.1', 1337) + self.assertEqual(blob.writers[('1.1.1.1', 1337)], writer) + writer.close_handle() + await asyncio.sleep(0.000000001) # flush callbacks + self.assertEqual(0, len(blob.writers)) + async def test_delete(self): blob_buffer = await self._test_create_blob(BlobBuffer) self.assertIsInstance(blob_buffer, BlobBuffer)