package com.nirima.jenkins.plugins.docker;
import com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy;
import hudson.model.Node;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.recipes.LocalData;
import static java.util.Arrays.asList;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
/**
* @author Kanstantsin Shautsou
*/
@SuppressWarnings("deprecation")
public class DockerTemplate2Test {
@Rule
public JenkinsRule j = new JenkinsRule();
@Test
@LocalData
@Issue("jenkinsci/docker-plugin/issues/263")
public void load080Config() {
final DockerCloud dock = (DockerCloud) j.getInstance().getCloud("someCloud");
assertThat(dock.getTemplates(), hasSize(6));
final DockerTemplate template = dock.getTemplate("somedomain.com:5000/dockerbuild");
assertThat(template, notNullValue());
assertThat(template.getLabelString(), equalTo("dockerbuild-local"));
assertThat(template.remoteFs, equalTo("/home/jenkins"));
assertNotNull("Must appear default value", template.getPullStrategy());
assertThat("Default after migration must be PULL_LATEST",
template.getPullStrategy(), equalTo(DockerImagePullStrategy.PULL_LATEST));
assertNotNull("Must appear default value", template.getMode());
assertThat("Changeable mode appeared in some version", template.getMode(), equalTo(Node.Mode.NORMAL));
assertNotNull("Must appear default value", template.getRetentionStrategy());
assertTrue(template.getRetentionStrategy() instanceof DockerOnceRetentionStrategy);
final DockerTemplateBase tBase = template.getDockerTemplateBase();
assertThat(tBase, notNullValue());
assertThat(tBase.getDockerCommandArray()[0], equalTo("/usr/bin/start-jenkins-slave.sh"));
assertThat(tBase.getDnsString(), equalTo("8.8.8.8"));
assertThat(tBase.getVolumesString(), equalTo("/dev/log:/dev/log"));
assertThat(asList(tBase.getVolumes()), hasSize(1));
assertThat(tBase.getVolumes()[0], equalTo("/dev/log:/dev/log"));
assertFalse(tBase.bindAllPorts);
assertTrue(tBase.privileged);
}
@Test
@LocalData
public void shouldLoad090rc1Config() {
final DockerCloud dock = (DockerCloud) j.getInstance().getCloud("dock");
final DockerTemplate template = dock.getTemplate("image:b25");
final DockerTemplateBase dockerTemplateBase = template.getDockerTemplateBase();
final String[] volumes = dockerTemplateBase.getVolumes();
assertThat("volumes", asList(volumes), hasSize(2));
assertThat(volumes[0], equalTo("/host/path:/container/path:ro"));
assertThat(volumes[1], equalTo("/host/path2:/container/path2:ro"));
final String[] volumesFrom2 = dockerTemplateBase.getVolumesFrom2();
assertThat("volumesFrom2", asList(volumesFrom2), hasSize(1));
assertThat(volumesFrom2[0], equalTo("otherContainer:ro"));
assertThat("volumesFrom", dockerTemplateBase.getVolumesFrom(), nullValue());
assertThat(dockerTemplateBase.getImage(), equalTo("image:b25"));
}
@Test
@LocalData
public void shouldLoadEmptyVolumesFrom() {
final DockerCloud dock = (DockerCloud) j.getInstance().getCloud("dock");
final DockerTemplate template = dock.getTemplate("jenkins-ubuntu-slave");
final String[] volumes = template.getDockerTemplateBase().getVolumes();
final String[] volumesFrom2 = template.getDockerTemplateBase().getVolumesFrom2();
assertThat("volumes", asList(volumes), hasSize(0));
assertThat("volumesFrom2", asList(volumesFrom2), hasSize(0));
assertThat("volumesFrom", template.getDockerTemplateBase().getVolumesFrom(), nullValue());
}
}