@Test public void testPutFromDifferentTenant() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithDifferentTenant = Arrays.asList( SECOND_TENANT_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithDifferentTenant, SECOND_COMPUTE_DESC_ID); createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
private ResourcePoolState createPlacementZone() throws Throwable { return doPost(createResourcePoolState(), ResourcePoolService.FACTORY_LINK); }
@Test public void testPutFromSameTenantSameGroup() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID, FIRST_SUB_TENANT_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinks, SECOND_COMPUTE_DESC_ID); try { createContainerHostSpec(hostSpec); fail("Should've thrown IllegalArgumentException - " + ContainerHostService.CONTAINER_HOST_ALREADY_EXISTS_MESSAGE); } catch (LocalizableValidationException e) { assertNotNull(e); assertEquals(ContainerHostService.CONTAINER_HOST_ALREADY_EXISTS_MESSAGE, e.getMessage()); } }
@Before public void setUp() throws Throwable { waitForServiceAvailability(ContainerHostService.SELF_LINK); waitForServiceAvailability(ComputeService.FACTORY_LINK); waitForServiceAvailability(ResourcePoolService.FACTORY_LINK); dockerAdapterService = new MockDockerHostAdapterService(); host.startService(Operation.createPost(UriUtils.buildUri(host, MockDockerHostAdapterService.class)), dockerAdapterService); waitForServiceAvailability(MockDockerHostAdapterService.SELF_LINK); createPlacementZone(); tenantLinks = Arrays.asList( FIRST_TENANT_ID, FIRST_SUB_TENANT_ID, FIRST_USER_ID); }
@Test public void testExerciseExceptionOnSendAdapterRequest() throws Throwable { // 1. Shutdown host-docker-service TestContext ctx = testCreate(1); Operation deleteOp = Operation.createDelete( UriUtils.buildUri(host, ManagementUriParts.ADAPTER_DOCKER_HOST)) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_NO_INDEX_UPDATE) .setReplicationDisabled(true) .setCompletion(ctx.getCompletion()) .setReferer(host.getUri()); host.send(deleteOp); ctx.await(); // 2. Create Container Host Spec. List<String> tenantLinks = Arrays.asList(FIRST_TENANT_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinks, FIRST_COMPUTE_DESC_ID); // 3. Try to create Container Host with Adapter Docker Host service stopped. try { createContainerHostSpec(hostSpec); fail("Should have thrown an exception since the service is stopped."); } catch (LocalizableValidationException e) { assertNotNull(e); } }
@Test(expected = IllegalArgumentException.class) public void testPutWithEmptyBody() throws Throwable { createContainerHostSpec(null); }
static ContainerHostSpec createContainerHostSpec(List<String> tenantLinks, String computeDescriptionId) throws Throwable { ContainerHostSpec ch = new ContainerHostSpec(); ch.hostState = createComputeHost(tenantLinks, computeDescriptionId); return ch; }
private ComputeState assertComputeStateExists(ContainerHostSpec hostSpec) { QueryTask queryTask = QueryUtil.buildPropertyQuery(ComputeState.class, ComputeState.FIELD_NAME_DESCRIPTION_LINK, hostSpec.hostState.descriptionLink); QueryUtil.addExpandOption(queryTask); List<ComputeState> computeStates = new ArrayList<>(); host.testStart(1); new ServiceDocumentQuery<>(host, ComputeState.class) .query(queryTask, (r) -> { if (r.hasException()) { host.log("Exception while getting the compute state."); host.failIteration(r.getException()); } else if (r.hasResult()) { computeStates.add(r.getResult()); } else { if (computeStates.isEmpty()) { host.log("No compute state with description link %s", hostSpec.hostState.descriptionLink); host.failIteration(r.getException()); } else { host.completeIteration(); } } }); host.testWait(); assertHostPortProfileStateExists(computeStates.get(0).documentSelfLink); return computeStates.get(0); }
@Test public void testPutFromSameTenantSameUser() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID, FIRST_USER_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinks, SECOND_COMPUTE_DESC_ID); try { createContainerHostSpec(hostSpec); fail("Should've thrown IllegalArgumentException - " + ContainerHostService.CONTAINER_HOST_ALREADY_EXISTS_MESSAGE); } catch (LocalizableValidationException e) { assertNotNull(e); assertEquals(ContainerHostService.CONTAINER_HOST_ALREADY_EXISTS_MESSAGE, e.getMessage()); } }
@Test public void testPutEmptyHostType() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinks, SECOND_COMPUTE_DESC_ID); hostSpec.hostState.customProperties.put(ContainerHostService.CONTAINER_HOST_TYPE_PROP_NAME, "invalid"); String errorMessage = String.format( ContainerHostUtil.CONTAINER_HOST_TYPE_NOT_SUPPORTED_MESSAGE_FORMAT, "invalid"); try { createContainerHostSpec(hostSpec); fail("Should've thrown LocalizableValidationException - " + errorMessage); } catch (LocalizableValidationException e) { assertEquals(errorMessage, e.getMessage()); } }
@Test public void testPutFromSameTenantSameGroupDifferentUser() throws Throwable { ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithSecondTenant = Arrays.asList( FIRST_TENANT_ID, FIRST_SUB_TENANT_ID, SECOND_USER_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithSecondTenant, SECOND_COMPUTE_DESC_ID); createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
@Test public void testPutFromSameTenant() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinks, SECOND_COMPUTE_DESC_ID); try { createContainerHostSpec(hostSpec); fail("Should've thrown IllegalArgumentException - " + ContainerHostService.CONTAINER_HOST_ALREADY_EXISTS_MESSAGE); } catch (LocalizableValidationException e) { assertNotNull(e); assertEquals(ContainerHostService.CONTAINER_HOST_ALREADY_EXISTS_MESSAGE, e.getMessage()); } }
@Test public void testPutFromSameTenantDifferentGroupSameUser() throws Throwable { ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithSecondTenant = Arrays.asList( FIRST_TENANT_ID, SECOND_SUB_TENANT_ID, FIRST_USER_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithSecondTenant, SECOND_COMPUTE_DESC_ID); createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
@Test public void testPutFromSameTenantDifferentGroup() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID, FIRST_SUB_TENANT_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithDifferentGroup = Arrays.asList( FIRST_TENANT_ID, SECOND_SUB_TENANT_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithDifferentGroup, SECOND_COMPUTE_DESC_ID); createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
@Test public void testPutFromDifferentTenantSameUsers() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID, FIRST_USER_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithDifferentGroup = Arrays.asList( SECOND_TENANT_ID, FIRST_USER_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithDifferentGroup, SECOND_COMPUTE_DESC_ID); createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
@Test public void testPutFromSameTenantDifferentUsers() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID, FIRST_USER_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithDifferentUser = Arrays.asList( FIRST_TENANT_ID, SECOND_USER_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithDifferentUser, SECOND_COMPUTE_DESC_ID); createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
@Test public void testPutAcceptCertificates() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); doPost(cs, ComputeService.FACTORY_LINK); List<String> tenantLinksWithDifferentTenant = Arrays.asList( SECOND_TENANT_ID); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinksWithDifferentTenant, SECOND_COMPUTE_DESC_ID); hostSpec.acceptHostAddress = true; hostSpec.acceptCertificate = true; createContainerHostSpec(hostSpec); assertComputeStateExists(hostSpec); }
@Test public void testUpdateFromSameTenant() throws Throwable { List<String> tenantLinks = Arrays.asList( FIRST_TENANT_ID); ComputeState cs = createComputeHost(tenantLinks, FIRST_COMPUTE_DESC_ID); cs = doPost(cs, ComputeService.FACTORY_LINK); ContainerHostSpec hostSpec = createContainerHostSpec(tenantLinks, FIRST_COMPUTE_DESC_ID); hostSpec.hostState.documentSelfLink = cs.documentSelfLink; String updatedHostName = "updated name"; hostSpec.hostState.name = updatedHostName; hostSpec.isUpdateOperation = true; createContainerHostSpec(hostSpec); ComputeState updatedHost = assertComputeStateExists(hostSpec); assertEquals(updatedHost.name, updatedHostName); }