Fix queue tests for MySQL

MySQL's date time's appear to have a 1 second threshold, so we need to make sure the queue items added for the tests are available as soon as they are added. Before this change, the available_after was set to `datetime.utcnow()`, and, if the `get` was called within 1 second, then its check would fail.
This commit is contained in:
Joseph Schorr 2016-07-14 17:11:04 -04:00
parent 4e1259b58a
commit b0b7b63be9
2 changed files with 14 additions and 10 deletions

View file

@ -6,6 +6,10 @@ def paginate(query, model, descending=False, page_token=None, limit=50, id_alias
next page, if any. If descending is set to True, orders by the ID descending rather next page, if any. If descending is set to True, orders by the ID descending rather
than ascending. than ascending.
""" """
# Note: We use the id_alias for the order_by, but not the where below. The alias is necessary
# for certain queries that use unions in MySQL, as it gets confused on which ID to order by.
# The where clause, on the other hand, cannot use the alias because Postgres does not allow
# aliases in where clauses.
id_field = model.id id_field = model.id
if id_alias is not None: if id_alias is not None:
id_field = SQL(id_alias) id_field = SQL(id_alias)

View file

@ -66,8 +66,8 @@ class TestQueue(QueueTestCase):
self.assertEqual(self.reporter.running_count, None) self.assertEqual(self.reporter.running_count, None)
self.assertEqual(self.reporter.total, None) self.assertEqual(self.reporter.total, None)
self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1) self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1, available_after=-1)
self.queue.put(['abc', 'def'], self.TEST_MESSAGE_2) self.queue.put(['abc', 'def'], self.TEST_MESSAGE_2, available_after=-1)
self.assertEqual(self.reporter.currently_processing, False) self.assertEqual(self.reporter.currently_processing, False)
self.assertEqual(self.reporter.running_count, 0) self.assertEqual(self.reporter.running_count, 0)
self.assertEqual(self.reporter.total, 1) self.assertEqual(self.reporter.total, 1)
@ -97,8 +97,8 @@ class TestQueue(QueueTestCase):
self.assertEqual(self.reporter.total, 1) self.assertEqual(self.reporter.total, 1)
def test_different_canonical_names(self): def test_different_canonical_names(self):
self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1) self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1, available_after=-1)
self.queue.put(['abc', 'ghi'], self.TEST_MESSAGE_2) self.queue.put(['abc', 'ghi'], self.TEST_MESSAGE_2, available_after=-1)
self.assertEqual(self.reporter.running_count, 0) self.assertEqual(self.reporter.running_count, 0)
self.assertEqual(self.reporter.total, 2) self.assertEqual(self.reporter.total, 2)
@ -115,8 +115,8 @@ class TestQueue(QueueTestCase):
self.assertEqual(self.reporter.total, 2) self.assertEqual(self.reporter.total, 2)
def test_canonical_name(self): def test_canonical_name(self):
self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1) self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1, available_after=-1)
self.queue.put(['abc', 'def', 'ghi'], self.TEST_MESSAGE_1) self.queue.put(['abc', 'def', 'ghi'], self.TEST_MESSAGE_1, available_after=-1)
one = self.queue.get(ordering_required=True) one = self.queue.get(ordering_required=True)
self.assertNotEqual(QUEUE_NAME + '/abc/def/', one) self.assertNotEqual(QUEUE_NAME + '/abc/def/', one)
@ -125,7 +125,7 @@ class TestQueue(QueueTestCase):
self.assertNotEqual(QUEUE_NAME + '/abc/def/ghi/', two) self.assertNotEqual(QUEUE_NAME + '/abc/def/ghi/', two)
def test_expiration(self): def test_expiration(self):
self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1) self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1, available_after=-1)
self.assertEqual(self.reporter.running_count, 0) self.assertEqual(self.reporter.running_count, 0)
self.assertEqual(self.reporter.total, 1) self.assertEqual(self.reporter.total, 1)
@ -148,8 +148,8 @@ class TestQueue(QueueTestCase):
self.assertEqual(self.reporter.total, 1) self.assertEqual(self.reporter.total, 1)
def test_specialized_queue(self): def test_specialized_queue(self):
self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1) self.queue.put(['abc', 'def'], self.TEST_MESSAGE_1, available_after=-1)
self.queue.put(['def', 'def'], self.TEST_MESSAGE_2) self.queue.put(['def', 'def'], self.TEST_MESSAGE_2, available_after=-1)
my_queue = AutoUpdatingQueue(WorkQueue(QUEUE_NAME, self.transaction_factory, ['def'])) my_queue = AutoUpdatingQueue(WorkQueue(QUEUE_NAME, self.transaction_factory, ['def']))
@ -166,7 +166,7 @@ class TestQueue(QueueTestCase):
def test_random_queue_no_duplicates(self): def test_random_queue_no_duplicates(self):
for msg in self.TEST_MESSAGES: for msg in self.TEST_MESSAGES:
self.queue.put(['abc', 'def'], msg) self.queue.put(['abc', 'def'], msg, available_after=-1)
seen = set() seen = set()
for _ in range(1, 101): for _ in range(1, 101):