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())
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())
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)
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)
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)
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())
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)
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())
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), ))
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())
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())
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)
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)
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())
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), ))
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())
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())
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())
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())
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())
def test_make_random_leases_randomizes_ips(self): self.assertNotEqual( factory.make_random_leases().keys(), factory.make_random_leases().keys())
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())
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())
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())
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())
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())
def test_make_random_leases_randomizes_macs(self): self.assertNotEqual( factory.make_random_leases().values(), factory.make_random_leases().values())
def test_make_random_leases_randomizes_ips(self): self.assertNotEqual(factory.make_random_leases().keys(), factory.make_random_leases().keys())
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)))
def test_make_random_leases_randomizes_macs(self): self.assertNotEqual( list(factory.make_random_leases().values()), list(factory.make_random_leases().values()), )
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)))
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())