private void checkCapacity(int diff) throws IOException, CapacityException { if (diff > provisionerStore.getFreeCapacity()) { throw new CapacityException("Not enough capacity."); } } }
@Test public void testGetFreeCapacity() throws IOException { ProvisionerStore store = getProvisionerStore(); Assert.assertEquals(0, store.getFreeCapacity()); Assert.assertEquals(88, store.getFreeCapacity()); ImmutableMap.<String, Integer>of("tenantA", 5, "tenantY", 50, "tenantZ", 20)); store.writeProvisioner(updatedProvisioner2); Assert.assertEquals(25, store.getFreeCapacity()); ImmutableMap.<String, Integer>of("tenantA", 5, "tenantZ", 20)); store.writeProvisioner(updatedProvisioner2); Assert.assertEquals(75, store.getFreeCapacity()); Assert.assertEquals(0, store.getFreeCapacity()); ImmutableMap.<String, Integer>of("tenantB", 40)); store.writeProvisioner(provisioner3); Assert.assertEquals(10, store.getFreeCapacity());
Assert.assertTrue(provisioner.equals(pState1) || provisioner.equals(pState2) || provisioner.equals(pState3)); if (provisioner.equals(pState1)) { Assert.assertEquals(97, store.getFreeCapacity()); for (String tenant : pState1.getAssignedTenants()) { Collection<Provisioner> tenantProvisioners = store.getTenantProvisioners(tenant); Assert.assertEquals(94, store.getFreeCapacity()); for (String tenant : pState2.getAssignedTenants()) { Collection<Provisioner> tenantProvisioners = store.getTenantProvisioners(tenant); Assert.assertEquals(91, store.getFreeCapacity()); for (String tenant : pState3.getAssignedTenants()) { Collection<Provisioner> tenantProvisioners = store.getTenantProvisioners(tenant);
@Test public void testWriteWithTenantUpdate() throws IOException { ProvisionerStore store = getProvisionerStore(); store.writeProvisioner(provisioner1); Assert.assertEquals(provisioner1, store.getProvisioner(provisioner1.getId())); Provisioner updatedProvisioner1 = new Provisioner( provisioner1.getId(), provisioner1.getHost(), provisioner1.getPort(), 100, ImmutableMap.<String, Integer>of("tenantA", 50, "tenantY", 5, "tenantZ", 0), ImmutableMap.<String, Integer>of("tenantA", 50, "tenantY", 5, "tenantZ", 1) ); store.writeProvisioner(updatedProvisioner1); Assert.assertEquals(updatedProvisioner1, store.getProvisioner(provisioner1.getId())); Assert.assertEquals(0, store.getNumAssignedWorkers("tenantX")); Assert.assertEquals(44, store.getFreeCapacity()); for (Provisioner provisioner : store.getTenantProvisioners("tenantX")) { Assert.assertFalse(provisioner.getId().equals(provisioner1.getId())); } }