/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.plugin.docker.client.params;
import org.eclipse.che.plugin.docker.client.dto.AuthConfigs;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.mockito.Mockito.mock;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
/**
* @author Mykola Morhun
* @author Alexander Garagatyi
*/
public class BuildImageParamsTest {
private static final String REPOSITORY = "repository";
private static final String TAG = "tag";
private static final AuthConfigs AUTH_CONFIGS = mock(AuthConfigs.class);
private static final Boolean DO_FORCE_PULL = true;
private static final Long MEMORY_LIMIT = 12345L;
private static final Long MEMORY_SWAP_LIMIT = 67890L;
private static final File FILE = new File(".");
private static final String DOCKERFILE = "/tmp/Dockerfile";
private static final String REMOTE = "https://github.com/someuser/remote.git";
private static final Boolean QUIET = false;
private static final Boolean NO_CACHE = false;
private static final Boolean REMOVE_INTERMEDIATE_CONTAINER = true;
private static final Boolean FORCE_REMOVE_INTERMEDIATE_CONTAINERS = true;
private static final Map<String, String> BUILD_ARGS = new HashMap<>();
private static final String CPUSET_CPUS = "0-3";
private static final Long CPU_PERIOD = 50000L;
private static final Long CPU_QUOTA = 150000L;
private static final List<File> FILES;
static {
FILES = new ArrayList<>();
FILES.add(FILE);
}
private BuildImageParams buildImageParams;
@BeforeMethod
private void prepare() {
buildImageParams = BuildImageParams.create(FILE);
}
@Test
public void shouldCreateParamsObjectWithRequiredParametersFromFiles() {
buildImageParams = BuildImageParams.create(FILE);
assertEquals(buildImageParams.getFiles(), FILES);
assertNull(buildImageParams.getRepository());
assertNull(buildImageParams.getTag());
assertNull(buildImageParams.getAuthConfigs());
assertNull(buildImageParams.isDoForcePull());
assertNull(buildImageParams.getMemoryLimit());
assertNull(buildImageParams.getMemorySwapLimit());
assertNull(buildImageParams.getDockerfile());
assertNull(buildImageParams.getRemote());
assertNull(buildImageParams.isQuiet());
assertNull(buildImageParams.isNoCache());
assertNull(buildImageParams.isRemoveIntermediateContainer());
assertNull(buildImageParams.isForceRemoveIntermediateContainers());
assertNull(buildImageParams.getBuildArgs());
assertNull(buildImageParams.getCpusetCpus());
assertNull(buildImageParams.getCpuPeriod());
assertNull(buildImageParams.getCpuQuota());
}
@Test
public void shouldCreateParamsObjectWithRequiredParametersFromRemote() {
buildImageParams = BuildImageParams.create(REMOTE);
assertEquals(buildImageParams.getRemote(), REMOTE);
assertNull(buildImageParams.getRepository());
assertNull(buildImageParams.getTag());
assertNull(buildImageParams.getAuthConfigs());
assertNull(buildImageParams.isDoForcePull());
assertNull(buildImageParams.getMemoryLimit());
assertNull(buildImageParams.getMemorySwapLimit());
assertNull(buildImageParams.getFiles());
assertNull(buildImageParams.getDockerfile());
assertNull(buildImageParams.isQuiet());
assertNull(buildImageParams.isNoCache());
assertNull(buildImageParams.isRemoveIntermediateContainer());
assertNull(buildImageParams.isForceRemoveIntermediateContainers());
assertNull(buildImageParams.getBuildArgs());
assertNull(buildImageParams.getCpusetCpus());
assertNull(buildImageParams.getCpuPeriod());
assertNull(buildImageParams.getCpuQuota());
}
@Test
public void shouldCreateParamsObjectWithAllPossibleParametersFromFiles() {
buildImageParams = BuildImageParams.create(FILE)
.withRepository(REPOSITORY)
.withTag(TAG)
.withAuthConfigs(AUTH_CONFIGS)
.withDoForcePull(DO_FORCE_PULL)
.withMemoryLimit(MEMORY_LIMIT)
.withMemorySwapLimit(MEMORY_SWAP_LIMIT)
.withDockerfile(DOCKERFILE)
.withQuiet(QUIET)
.withNoCache(NO_CACHE)
.withRemoveIntermediateContainers(REMOVE_INTERMEDIATE_CONTAINER)
.withForceRemoveIntermediateContainers(FORCE_REMOVE_INTERMEDIATE_CONTAINERS)
.withCpusetCpus(CPUSET_CPUS)
.withCpuPeriod(CPU_PERIOD)
.withCpuQuota(CPU_QUOTA)
.withBuildArgs(BUILD_ARGS);
assertNull(buildImageParams.getRemote());
assertEquals(buildImageParams.getFiles(), FILES);
assertEquals(buildImageParams.getTag(), TAG);
assertEquals(buildImageParams.getRepository(), REPOSITORY);
assertEquals(buildImageParams.getAuthConfigs(), AUTH_CONFIGS);
assertEquals(buildImageParams.isDoForcePull(), DO_FORCE_PULL);
assertEquals(buildImageParams.getMemoryLimit(), MEMORY_LIMIT);
assertEquals(buildImageParams.getMemorySwapLimit(), MEMORY_SWAP_LIMIT);
assertEquals(buildImageParams.getDockerfile(), DOCKERFILE);
assertEquals(buildImageParams.isQuiet(), QUIET);
assertEquals(buildImageParams.isNoCache(), NO_CACHE);
assertEquals(buildImageParams.isRemoveIntermediateContainer(), REMOVE_INTERMEDIATE_CONTAINER);
assertEquals(buildImageParams.isForceRemoveIntermediateContainers(), FORCE_REMOVE_INTERMEDIATE_CONTAINERS);
assertEquals(buildImageParams.getBuildArgs(), BUILD_ARGS);
assertEquals(buildImageParams.getCpusetCpus(), CPUSET_CPUS);
assertEquals(buildImageParams.getCpuPeriod(), CPU_PERIOD);
assertEquals(buildImageParams.getCpuQuota(), CPU_QUOTA);
}
@Test
public void shouldCreateParamsObjectWithAllPossibleParametersFromRemote() {
buildImageParams = BuildImageParams.create(REMOTE)
.withRepository(REPOSITORY)
.withTag(TAG)
.withAuthConfigs(AUTH_CONFIGS)
.withDoForcePull(DO_FORCE_PULL)
.withMemoryLimit(MEMORY_LIMIT)
.withMemorySwapLimit(MEMORY_SWAP_LIMIT)
.withDockerfile(DOCKERFILE)
.withQuiet(QUIET)
.withNoCache(NO_CACHE)
.withRemoveIntermediateContainers(REMOVE_INTERMEDIATE_CONTAINER)
.withForceRemoveIntermediateContainers(FORCE_REMOVE_INTERMEDIATE_CONTAINERS)
.withCpusetCpus(CPUSET_CPUS)
.withCpuPeriod(CPU_PERIOD)
.withCpuQuota(CPU_QUOTA)
.withBuildArgs(BUILD_ARGS);
assertNull(buildImageParams.getFiles());
assertEquals(buildImageParams.getRemote(), REMOTE);
assertEquals(buildImageParams.getTag(), TAG);
assertEquals(buildImageParams.getRepository(), REPOSITORY);
assertEquals(buildImageParams.getAuthConfigs(), AUTH_CONFIGS);
assertEquals(buildImageParams.isDoForcePull(), DO_FORCE_PULL);
assertEquals(buildImageParams.getMemoryLimit(), MEMORY_LIMIT);
assertEquals(buildImageParams.getMemorySwapLimit(), MEMORY_SWAP_LIMIT);
assertEquals(buildImageParams.getDockerfile(), DOCKERFILE);
assertEquals(buildImageParams.isQuiet(), QUIET);
assertEquals(buildImageParams.isNoCache(), NO_CACHE);
assertEquals(buildImageParams.isRemoveIntermediateContainer(), REMOVE_INTERMEDIATE_CONTAINER);
assertEquals(buildImageParams.isForceRemoveIntermediateContainers(), FORCE_REMOVE_INTERMEDIATE_CONTAINERS);
assertEquals(buildImageParams.getBuildArgs(), BUILD_ARGS);
assertEquals(buildImageParams.getCpusetCpus(), CPUSET_CPUS);
assertEquals(buildImageParams.getCpuPeriod(), CPU_PERIOD);
assertEquals(buildImageParams.getCpuQuota(), CPU_QUOTA);
}
@Test(expectedExceptions = NullPointerException.class)
public void shouldThrowNullPointerExceptionIfFilesRequiredParameterIsNull() {
File file = null;
buildImageParams = BuildImageParams.create(file);
}
@Test(expectedExceptions = NullPointerException.class)
public void shouldThrowNullPointerExceptionIfFilesRequiredParameterResetWithNull() {
File file = null;
buildImageParams.withFiles(file);
}
@Test (expectedExceptions = IllegalArgumentException.class)
public void shouldThrowIllegalArgumentExceptionIfSetEmptyFilesArray() {
File[] files = new File[0];
buildImageParams.withFiles(files);
}
@Test (expectedExceptions = NullPointerException.class)
public void shouldThrowNullPointerExceptionIfSetFilesArrayWithNullElement() {
buildImageParams.withFiles(FILE, null, FILE);
}
@Test (expectedExceptions = IllegalStateException.class)
public void shouldThrowIllegalStateExceptionIfSetRemoteAfterSetFiles() {
buildImageParams = BuildImageParams.create(FILE)
.withRemote(REMOTE);
}
@Test (expectedExceptions = IllegalStateException.class)
public void shouldThrowIllegalStateExceptionIfSetFileAfterSetRemote() {
buildImageParams = BuildImageParams.create(REMOTE)
.withFiles(FILE);
}
@Test (expectedExceptions = IllegalStateException.class)
public void shouldThrowIllegalStateExceptionIfAddFileAfterSetRemote() {
buildImageParams = BuildImageParams.create(REMOTE)
.addFiles(FILE);
}
@Test
public void repositoryParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.getRepository());
}
@Test
public void tagParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.getTag());
}
@Test
public void authConfigParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.getAuthConfigs());
}
@Test
public void doForcePullParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.isDoForcePull());
}
@Test
public void memoryLimitParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.getMemoryLimit());
}
@Test
public void memorySwapLimitParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.getMemorySwapLimit());
}
@Test
public void dockerfileParameterShouldEqualsNullIfItNotSet() {
buildImageParams.withRepository(REPOSITORY);
assertNull(buildImageParams.getDockerfile());
}
@Test
public void quietParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.isQuiet());
}
@Test
public void noCacheParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.isNoCache());
}
@Test
public void removeIntermediateContainerParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.isRemoveIntermediateContainer());
}
@Test
public void forceRemoveIntermediateContainersParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.isForceRemoveIntermediateContainers());
}
@Test
public void buildArgsParameterShouldEqualsNullIfItNotSet() {
assertNull(buildImageParams.getBuildArgs());
}
@Test (expectedExceptions = NullPointerException.class)
public void shouldThrowNullPointerExceptionIfAddNullAsFile() {
File file = null;
buildImageParams.addFiles(file);
}
@Test (expectedExceptions = NullPointerException.class)
public void shouldThrowNullPointerExceptionIfAddFilesArrayWithNullElement() {
buildImageParams.addFiles(FILE, null, FILE);
}
@Test
public void shouldAddFileToFilesList() {
File file = new File("../");
List<File> files = new ArrayList<>();
files.add(FILE);
files.add(file);
buildImageParams.addFiles(file);
assertEquals(buildImageParams.getFiles(), files);
}
@Test
public void shouldAddBuildArgToBuildArgs() {
String key = "ba_key";
String value = "ba_value";
buildImageParams.addBuildArg(key, value);
assertNotNull(buildImageParams.getBuildArgs());
assertEquals(buildImageParams.getBuildArgs().get(key), value);
}
@Test
public void cpuQuotaParameterShouldBeNullIfItNotSet() {
assertNull(buildImageParams.getCpuQuota());
}
@Test
public void cpuPeriodParameterShouldBeNullIfItNotSet() {
assertNull(buildImageParams.getCpuPeriod());
}
@Test
public void cpusetCpusParameterShouldBeNullIfItNotSet() {
assertNull(buildImageParams.getCpusetCpus());
}
}