def test_partially_in_pool_writer_selection(self):
     strategy = LeastConnectedLoadBalancingStrategy(FakeConnectionPool(OrderedDict([
         ("1.1.1.1", 1),
         ("2.2.2.2", 0),
     ])))
     self.assertEqual(strategy.select_writer(["2.2.2.2", "3.3.3.3"]), "2.2.2.2")
     self.assertEqual(strategy.select_writer(["2.2.2.2", "3.3.3.3"]), "3.3.3.3")
 def test_simple_writer_selection(self):
     strategy = LeastConnectedLoadBalancingStrategy(FakeConnectionPool(OrderedDict([
         ("0.0.0.0", 2),
         ("1.1.1.1", 1),
         ("2.2.2.2", 0),
     ])))
     self.assertEqual(strategy.select_writer(["0.0.0.0", "1.1.1.1", "2.2.2.2"]), "2.2.2.2")
 def test_writer_selection_with_clash(self):
     strategy = LeastConnectedLoadBalancingStrategy(FakeConnectionPool(OrderedDict([
         ("0.0.0.0", 0),
         ("0.0.0.1", 0),
         ("1.1.1.1", 1),
     ])))
     self.assertEqual(strategy.select_writer(["0.0.0.0", "0.0.0.1", "1.1.1.1"]), "0.0.0.0")
     self.assertEqual(strategy.select_writer(["0.0.0.0", "0.0.0.1", "1.1.1.1"]), "0.0.0.1")
 def test_not_in_pool_reader_selection(self):
     strategy = LeastConnectedLoadBalancingStrategy(
         FakeConnectionPool(OrderedDict([
             ("1.1.1.1", 1),
             ("2.2.2.2", 2),
         ])))
     self.assertEqual(strategy.select_reader(["2.2.2.2", "3.3.3.3"]),
                      "3.3.3.3")
 def test_empty_writer_selection(self):
     strategy = LeastConnectedLoadBalancingStrategy(FakeConnectionPool(OrderedDict([
     ])))
     self.assertIsNone(strategy.select_writer([]))