示例#1
0
 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)
示例#2
0
 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
示例#3
0
 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)
示例#4
0
 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())
示例#5
0
 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())
示例#6
0
 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
示例#7
0
 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)))
示例#8
0
 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)))
示例#9
0
 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]))
示例#10
0
 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]))
示例#11
0
 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())
示例#12
0
 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())