示例#1
0
 def test_process_leases_records_update(self):
     self.set_lease_state()
     self.patch(leases_module, 'send_leases', FakeMethod())
     new_leases = factory.make_random_leases()
     self.fake_leases_file(new_leases)
     process_leases(datetime.utcnow(), new_leases)
     self.assertIsNone(check_lease_changes())
示例#2
0
 def test_check_lease_changes_returns_tuple_if_no_state_cached(self):
     self.set_lease_state()
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.assertEqual(
         (get_write_time(leases_file), leases),
         check_lease_changes())
示例#3
0
 def test_send_leases_does_nothing_without_credentials(self):
     self.patch(MAASClient, 'post', FakeMethod())
     self.set_items_needed_for_lease_update()
     self.clear_api_credentials()
     leases = factory.make_random_leases()
     send_leases(leases)
     self.assertEqual([], MAASClient.post.calls)
示例#4
0
 def test_update_leases_does_nothing_without_lease_changes(self):
     fake_send_leases = FakeMethod()
     self.patch(leases_module, 'send_leases', fake_send_leases)
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.set_lease_state(get_write_time(leases_file), leases.copy())
     self.assertEqual([], leases_module.send_leases.calls)
示例#5
0
 def test_update_leases_does_nothing_without_lease_changes(self):
     fake_send_leases = FakeMethod()
     self.patch(leases_module, 'send_leases', fake_send_leases)
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.set_lease_state(get_write_time(leases_file), leases.copy())
     self.assertEqual([], leases_module.send_leases.calls)
示例#6
0
 def test_process_leases_records_update(self):
     self.set_lease_state()
     self.patch(leases_module, 'send_leases', FakeMethod())
     new_leases = factory.make_random_leases()
     self.fake_leases_file(new_leases)
     process_leases(datetime.utcnow(), new_leases)
     self.assertIsNone(check_lease_changes())
示例#7
0
 def test_send_leases_does_nothing_without_credentials(self):
     self.patch(MAASClient, 'post', FakeMethod())
     self.set_items_needed_for_lease_update()
     self.clear_api_credentials()
     leases = factory.make_random_leases()
     send_leases(leases)
     self.assertEqual([], MAASClient.post.calls)
示例#8
0
 def test_check_lease_changes_returns_tuple_if_lease_added(self):
     leases = factory.make_random_leases()
     self.set_lease_state(datetime.utcnow() - timedelta(seconds=10),
                          leases.copy())
     leases[factory.getRandomIPAddress()] = factory.getRandomMACAddress()
     leases_file = self.fake_leases_file(leases)
     self.assertEqual((get_write_time(leases_file), leases),
                      check_lease_changes())
示例#9
0
 def test_record_lease_state_records_time_and_leases(self):
     time = datetime.utcnow()
     leases = factory.make_random_leases()
     record_lease_state(time, leases)
     self.assertEqual((time, leases), (
         cache.cache.get(LEASES_TIME_CACHE_KEY),
         cache.cache.get(LEASES_CACHE_KEY),
     ))
示例#10
0
 def test_upload_leases_processes_leases_unconditionally(self):
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.set_lease_state(get_write_time(leases_file), leases.copy())
     self.patch(leases_module, 'send_leases', FakeMethod())
     upload_leases()
     self.assertEqual([(leases, )],
                      leases_module.send_leases.extract_args())
示例#11
0
 def test_check_lease_changes_returns_tuple_if_leases_dropped(self):
     self.set_lease_state(
         datetime.utcnow() - timedelta(seconds=10),
         factory.make_random_leases())
     leases_file = self.fake_leases_file({})
     self.assertEqual(
         (get_write_time(leases_file), {}),
         check_lease_changes())
示例#12
0
 def test_make_random_leases_maps_ips_to_macs(self):
     [(ip, mac)] = factory.make_random_leases().items()
     self.assertEqual(
         4, len(ip.split('.')),
         "IP address does not look like an IP address: '%s'" % ip)
     self.assertEqual(
         6, len(mac.split(':')),
         "MAC address does not look like a MAC address: '%s'" % mac)
示例#13
0
 def test_make_random_leases_maps_ips_to_macs(self):
     [(ip, mac)] = factory.make_random_leases().items()
     self.assertEqual(
         4, len(ip.split('.')),
         "IP address does not look like an IP address: '%s'" % ip)
     self.assertEqual(
         6, len(mac.split(':')),
         "MAC address does not look like a MAC address: '%s'" % mac)
示例#14
0
 def test_update_leases_processes_leases_if_changed(self):
     self.set_lease_state()
     self.patch(leases_module, 'send_leases', FakeMethod())
     leases = factory.make_random_leases()
     self.fake_leases_file(leases)
     self.patch(Omshell, 'create', FakeMethod())
     update_leases()
     self.assertEqual([(leases, )],
                      leases_module.send_leases.extract_args())
示例#15
0
 def test_record_lease_state_records_time_and_leases(self):
     time = datetime.utcnow()
     leases = factory.make_random_leases()
     record_lease_state(time, leases)
     self.assertEqual(
         (time, leases), (
             cache.cache.get(LEASES_TIME_CACHE_KEY),
             cache.cache.get(LEASES_CACHE_KEY),
             ))
示例#16
0
 def test_check_lease_changes_returns_tuple_if_lease_added(self):
     leases = factory.make_random_leases()
     self.set_lease_state(
         datetime.utcnow() - timedelta(seconds=10), leases.copy())
     leases[factory.getRandomIPAddress()] = factory.getRandomMACAddress()
     leases_file = self.fake_leases_file(leases)
     self.assertEqual(
         (get_write_time(leases_file), leases),
         check_lease_changes())
示例#17
0
 def test_upload_leases_processes_leases_unconditionally(self):
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.set_lease_state(get_write_time(leases_file), leases.copy())
     self.patch(leases_module, 'send_leases', FakeMethod())
     upload_leases()
     self.assertEqual(
         [(leases, )],
         leases_module.send_leases.extract_args())
示例#18
0
 def test_update_leases_processes_leases_if_changed(self):
     self.set_lease_state()
     self.patch(leases_module, 'send_leases', FakeMethod())
     leases = factory.make_random_leases()
     self.fake_leases_file(leases)
     self.patch(Omshell, 'create', FakeMethod())
     update_leases()
     self.assertEqual(
         [(leases, )],
         leases_module.send_leases.extract_args())
示例#19
0
 def test_process_leases_records_state_before_sending(self):
     self.set_lease_state()
     self.patch(Omshell, 'create', FakeMethod())
     self.fake_leases_file({})
     self.patch(
         leases_module, 'send_leases', FakeMethod(failure=StopExecuting()))
     new_leases = factory.make_random_leases()
     try:
         process_leases(datetime.utcnow(), new_leases)
     except StopExecuting:
         pass
     self.fake_leases_file(new_leases)
     self.assertIsNone(check_lease_changes())
示例#20
0
 def test_process_leases_records_state_before_sending(self):
     self.set_lease_state()
     self.patch(Omshell, 'create', FakeMethod())
     self.fake_leases_file({})
     self.patch(leases_module, 'send_leases',
                FakeMethod(failure=StopExecuting()))
     new_leases = factory.make_random_leases()
     try:
         process_leases(datetime.utcnow(), new_leases)
     except StopExecuting:
         pass
     self.fake_leases_file(new_leases)
     self.assertIsNone(check_lease_changes())
示例#21
0
 def test_make_random_leases_randomizes_ips(self):
     self.assertNotEqual(
         factory.make_random_leases().keys(),
         factory.make_random_leases().keys())
示例#22
0
 def test_check_lease_changes_returns_tuple_if_leases_dropped(self):
     self.set_lease_state(datetime.utcnow() - timedelta(seconds=10),
                          factory.make_random_leases())
     leases_file = self.fake_leases_file({})
     self.assertEqual((get_write_time(leases_file), {}),
                      check_lease_changes())
示例#23
0
 def test_check_lease_changes_returns_None_if_no_change(self):
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.set_lease_state(get_write_time(leases_file), leases.copy())
     self.assertIsNone(check_lease_changes())
示例#24
0
 def test_check_lease_changes_ignores_irrelevant_changes(self):
     leases = factory.make_random_leases()
     self.fake_leases_file(leases, age=10)
     self.set_lease_state(datetime.utcnow(), leases.copy())
     self.assertIsNone(check_lease_changes())
示例#25
0
 def test_check_lease_changes_ignores_irrelevant_changes(self):
     leases = factory.make_random_leases()
     self.fake_leases_file(leases, age=10)
     self.set_lease_state(datetime.utcnow(), leases.copy())
     self.assertIsNone(check_lease_changes())
示例#26
0
 def test_check_lease_changes_returns_None_if_no_change(self):
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.set_lease_state(get_write_time(leases_file), leases.copy())
     self.assertIsNone(check_lease_changes())
示例#27
0
 def test_make_random_leases_randomizes_macs(self):
     self.assertNotEqual(
         factory.make_random_leases().values(),
         factory.make_random_leases().values())
示例#28
0
 def test_make_random_leases_randomizes_ips(self):
     self.assertNotEqual(factory.make_random_leases().keys(),
                         factory.make_random_leases().keys())
示例#29
0
 def test_make_random_leases_returns_requested_number_of_leases(self):
     num_leases = randint(0, 3)
     self.assertEqual(
         num_leases,
         len(factory.make_random_leases(num_leases)))
示例#30
0
 def test_make_random_leases_randomizes_macs(self):
     self.assertNotEqual(
         list(factory.make_random_leases().values()),
         list(factory.make_random_leases().values()),
     )
示例#31
0
 def test_make_random_leases_returns_requested_number_of_leases(self):
     num_leases = randint(0, 3)
     self.assertEqual(num_leases,
                      len(factory.make_random_leases(num_leases)))
示例#32
0
 def test_check_lease_changes_returns_tuple_if_no_state_cached(self):
     self.set_lease_state()
     leases = factory.make_random_leases()
     leases_file = self.fake_leases_file(leases)
     self.assertEqual((get_write_time(leases_file), leases),
                      check_lease_changes())