def setup(self): # for persistence tests self.tmpdir = tempfile.mkdtemp() # an empty VMPool self.pool0 = VMPool(self.tmpdir + '/pool0', None) # VMpool with 1 VM self.pool1 = VMPool(self.tmpdir + '/pool1', None) self.vm1 = _MockVM('a') self.pool1.add_vm(self.vm1) # VMpool with 2 VM self.pool2 = VMPool(self.tmpdir + '/pool2', None) self.vm2 = _MockVM('b') self.pool2.add_vm(self.vm1) self.pool2.add_vm(self.vm2)
def test_update(self): # clone pool2 pool = VMPool(self.pool2.path, None) vm3 = _MockVM('c') pool.add_vm(vm3) self.pool2.update() assert 'c' in self.pool2
def test_update_remove(self): # clone pool2 pool = VMPool(self.pool2.path, None) pool.remove_vm('b') self.pool2.update(remove=True) assert 'b' not in self.pool2 assert 'a' in self.pool2
def test_save_then_load_empty_vmpool(self): self.pool0.save() pool = VMPool(self.pool0.path, None) assert_equal(pool.name, self.pool0.name) assert_equal(pool.conn, None) assert_equal(pool._vm_cache, {}) assert_equal(pool._vm_ids, self.pool0._vm_ids)
def test_save_then_load_empty_vmpool(self): self.pool0.save() pool = VMPool(self.pool0.path, None) assert pool.name == self.pool0.name assert pool.conn == None assert pool._vm_cache == {} assert pool._vm_ids == self.pool0._vm_ids
def test_reload(self): # simulate stopping program by deleting object and cloning a # copy from disk for pool in self.pool0, self.pool1, self.pool2: ids = pool._vm_ids path = pool.path del pool pool = VMPool(path, None) assert_equal(pool._vm_ids, ids) assert pool._vm_ids is not ids
def test_save_then_load_nonempty_vmpool(self): self.pool2.save() pool = VMPool(self.pool2.path, None) assert_equal(pool.name, self.pool2.name) # the list of VM ids should have been persisted ... assert_equal(pool._vm_ids, self.pool2._vm_ids) # ... but the VM cache is now empty assert_equal(pool._vm_cache, {}) # ...and so is the connection assert_equal(pool.conn, None)
def test_save_then_load_nonempty_vmpool(self): self.pool2.save() pool = VMPool(self.pool2.path, None) assert pool.name == self.pool2.name # the list of VM ids should have been persisted ... assert pool._vm_ids == self.pool2._vm_ids # ... but the VM cache is now empty assert pool._vm_cache == {} # ...and so is the connection assert pool.conn == None
def test_get_vm_not_in_cache_and_no_connection(self): # clone pool2 from disk copy pool = VMPool(self.pool2.path, None) assert_equal(self.vm1, pool['a']) assert_equal(self.vm2, pool['b'])
def test_get_vm_not_in_cache_and_no_connection(self): # clone pool2 from disk copy pool = VMPool(self.pool2.path, None) with pytest.raises(gc3libs.exceptions.UnrecoverableError): # pylint: disable=pointless-statement pool['a']