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_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]))