def test_queue_status(self): """queue_message() should set the queued status.""" router = DatabaseRouter() dbm = router.queue_message("I", [self.create_connection()], "foo") self.assertEqual("Q", dbm.status) transmission = dbm.transmissions.all()[0] self.assertEqual("Q", transmission.status)
def test_group_transmissions_default_batch_size(self): """Default max batch size is 200""" self.create_many_transmissions(201) router = DatabaseRouter() result = list(router.group_transmissions(Transmission.objects.all())) self.assertEqual(2, len(result)) # 2 batches self.assertEqual(200, len(result[0][1])) # first batch has 200
def test_create_message_from_dbm(self): """Make sure the proper fields are passed through.""" router = DatabaseRouter() dbm = router.queue_message(direction='I', text="foo", connections=[self.create_connection()]) dbm2 = router.create_message_from_dbm(dbm, {'a': 'b'}) self.assertEqual({'a': 'b'}, dbm2.fields)
def test_queue_queryset_connections(self): """queue_message() can accept a queryset of connections.""" # 2 connections were created in setUp connections = Connection.objects.all() router = DatabaseRouter() dbm = router.queue_message("I", connections, "foo") self.assertEqual(2, dbm.transmissions.count())
def test_group_transmissions_custom_default_batch_size(self): """Default max batch size can be configured in settings""" self.create_many_transmissions(3) router = DatabaseRouter() with self.settings(DB_ROUTER_DEFAULT_BATCH_SIZE=2): transmissions = Transmission.objects.all() result = list(router.group_transmissions(transmissions)) self.assertEqual(2, len(result)) # 2 batches self.assertEqual(2, len(result[0][1])) # first batch has 2
def test_group_transmissions(self): """Transmissions should be grouped by batch_size.""" # create 2 batches (queued, queued) backend, dbm, t1, t2 = self.create_trans(s1="Q", s2="Q") router = DatabaseRouter() trans = list(router.group_transmissions(Transmission.objects.all(), batch_size=2)) _, batch1 = trans[0] _, batch2 = trans[1] self.assertEqual(list(batch1.values_list("id", flat=True)), list(t1.values_list("id", flat=True))) self.assertEqual(list(batch2.values_list("id", flat=True)), list(t2.values_list("id", flat=True)))
def test_group_transmissions(self): """Transmissions should be grouped by batch_size.""" # create 2 batches (queued, queued) backend, dbm, t1, t2 = self.create_trans(s1='Q', s2='Q') router = DatabaseRouter() trans = list(router.group_transmissions(Transmission.objects.all(), batch_size=2)) _, batch1 = trans[0] _, batch2 = trans[1] self.assertEqual(list(batch1.values_list('id', flat=True)), list(t1.values_list('id', flat=True))) self.assertEqual(list(batch2.values_list('id', flat=True)), list(t2.values_list('id', flat=True)))
def test_group_transmissions_different_backends(self): """Test grouping works across transmissions with different backends.""" other_backend = self.create_backend(data={"name": "other_backend"}) self.create_many_transmissions(7) self.create_many_transmissions(6, backend=other_backend) router = DatabaseRouter() result = list(router.group_transmissions(Transmission.objects.all(), batch_size=4)) # 4 total batches self.assertEqual(4, len(result)) # first two batches should be lenth 4 and 3 (=7) self.assertEqual(4, len(result[0][1])) self.assertEqual(3, len(result[1][1])) # second two batches should be lenth 4 and 2 (=6) self.assertEqual(4, len(result[2][1])) self.assertEqual(2, len(result[3][1]))
def test_group_transmissions_different_backends(self): """Test grouping works across transmissions with different backends.""" other_backend = self.create_backend(data={'name': 'other_backend'}) self.create_many_transmissions(7) self.create_many_transmissions(6, backend=other_backend) router = DatabaseRouter() result = list(router.group_transmissions(Transmission.objects.all(), batch_size=4)) # 4 total batches self.assertEqual(4, len(result)) # first two batches should be lenth 4 and 3 (=7) self.assertEqual(4, len(result[0][1])) self.assertEqual(3, len(result[1][1])) # second two batches should be lenth 4 and 2 (=6) self.assertEqual(4, len(result[2][1])) self.assertEqual(2, len(result[3][1]))
def test_queue_multi_connections(self): """Multiple transmissions should be created for > 1 connection.""" connections = [self.create_connection(), self.create_connection()] router = DatabaseRouter() dbm = router.queue_message("I", connections, "foo") self.assertEqual(2, dbm.transmissions.count())
def test_queue_single_connection(self): """A single transmission should be created for 1 connection.""" connections = [self.create_connection()] router = DatabaseRouter() dbm = router.queue_message("I", connections, "foo") self.assertEqual(1, dbm.transmissions.count())