Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test support for cloud management changes #875

Merged
merged 13 commits into from
Sep 13, 2023
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ THE SOFTWARE.
<properties>
<revision>2.0.8</revision>
<changelist>-SNAPSHOT</changelist>
<jenkins.version>2.361.4</jenkins.version>
<jenkins.version>2.403</jenkins.version>
car-roll marked this conversation as resolved.
Show resolved Hide resolved
<gitHubRepo>jenkinsci/${project.artifactId}-plugin</gitHubRepo>
</properties>

Expand Down
13 changes: 10 additions & 3 deletions src/test/java/hudson/plugins/ec2/AmazonEC2CloudTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import com.cloudbees.plugins.credentials.CredentialsStore;
import com.cloudbees.plugins.credentials.SystemCredentialsProvider;
import com.cloudbees.plugins.credentials.domains.Domain;
import org.htmlunit.FailingHttpStatusCodeException;
car-roll marked this conversation as resolved.
Show resolved Hide resolved
import org.htmlunit.html.HtmlForm;
import org.htmlunit.html.HtmlTextInput;
import hudson.plugins.ec2.util.TestSSHUserPrivateKey;
Expand All @@ -45,7 +46,6 @@
import org.mockito.Mockito;
import org.xml.sax.SAXException;

import hudson.util.VersionNumber;
import jenkins.model.Jenkins;

import java.io.IOException;
Expand Down Expand Up @@ -92,7 +92,14 @@ public void testSshKeysCredentialsIdRemainsUnchangedAfterUpdatingOtherFields() t
HtmlTextInput input = form.getInputByName("_.cloudName");

input.setText("test-cloud-2");
r.submit(form);
car-roll marked this conversation as resolved.
Show resolved Hide resolved
try {
r.submit(form);
} catch (FailingHttpStatusCodeException e) {
String errorMsg = e.getMessage();
if (!(errorMsg.contains("404") && errorMsg.contains("jenkins/cloud/us-east-1/"))) {
throw e;
}
}
AmazonEC2Cloud actual = r.jenkins.clouds.get(AmazonEC2Cloud.class);
assertEquals("test-cloud-2", actual.getCloudName());
r.assertEqualBeans(cloud, actual, "region,useInstanceProfileForCredentials,sshKeysCredentialsId,instanceCap,roleArn,roleSessionName");
Expand Down Expand Up @@ -163,7 +170,7 @@ public void testCustomSshCredentialTypes() throws IOException {
}

private HtmlForm getConfigForm() throws IOException, SAXException {
return r.createWebClient().goTo("configureClouds").getFormByName("config");
return r.createWebClient().goTo(cloud.getUrl() + "configure").getFormByName("config");
}

}
15 changes: 8 additions & 7 deletions src/test/java/hudson/plugins/ec2/ConfigurationAsCodeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,14 @@ public class ConfigurationAsCodeTest {
@Rule
public JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();

@Test
@ConfiguredWithCode("EC2CloudEmpty.yml")
public void testEmptyConfig() throws Exception {
final AmazonEC2Cloud ec2Cloud = (AmazonEC2Cloud) Jenkins.get().getCloud("");
assertNotNull(ec2Cloud);
assertEquals(0, ec2Cloud.getTemplates().size());
}
// Jenkins 2.403: Cloud Nodes cannot be created with an empty name
car-roll marked this conversation as resolved.
Show resolved Hide resolved
// @Test
// @ConfiguredWithCode("EC2CloudEmpty.yml")
// public void testEmptyConfig() throws Exception {
// final AmazonEC2Cloud ec2Cloud = (AmazonEC2Cloud) Jenkins.get().getCloud("");
// assertNotNull(ec2Cloud);
// assertEquals(0, ec2Cloud.getTemplates().size());
// }

@Test
@ConfiguredWithCode("UnixData.yml")
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/hudson/plugins/ec2/EucalyptusTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public void configRoundTrip() throws Exception {
r.jenkins.clouds.add(cloud);
r.jenkins.save();
JenkinsRule.WebClient wc = r.createWebClient();
HtmlPage p = wc.goTo("configureClouds/");
HtmlPage p = wc.goTo(cloud.getUrl() + "configure");
HtmlForm f = p.getFormByName("config");
r.submit(f);
r.assertEqualBeans(cloud, r.jenkins.getCloud("test"), "name,ec2EndpointUrl,s3EndpointUrl,useInstanceProfileForCredentials,roleArn,roleSessionName,credentialsId,sshKeysCredentialsId,instanceCap,templates");
Expand Down
21 changes: 14 additions & 7 deletions src/test/java/hudson/plugins/ec2/SlaveTemplateTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,16 @@
import hudson.model.Node;
import hudson.plugins.ec2.SlaveTemplate.ProvisionOptions;
import hudson.plugins.ec2.util.MinimumNumberOfInstancesTimeRangeConfig;
import org.htmlunit.html.HtmlForm;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;
import org.mockito.ArgumentCaptor;
import org.xml.sax.SAXException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
Expand Down Expand Up @@ -107,7 +110,7 @@ public void testConfigRoundtrip() throws Exception {
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
r.assertEqualBeans(orig, received, "ami,zone,description,remoteFS,type,javaPath,jvmopts,stopOnTerminate,securityGroups,subnetId,tags,iamInstanceProfile,useEphemeralDevices,useDedicatedTenancy,connectionStrategy,hostKeyVerificationStrategy,tenancy,ebsEncryptRootVolume");
// For already existing strategies, the default is this one
Expand All @@ -129,7 +132,7 @@ public void testConfigRoundtripWithCustomSSHHostKeyVerificationStrategy() throws
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
r.assertEqualBeans(orig, received, "ami,zone,description,remoteFS,type,javaPath,jvmopts,stopOnTerminate,securityGroups,subnetId,useEphemeralDevices,useDedicatedTenancy,connectionStrategy,hostKeyVerificationStrategy");
assertEquals(STRATEGY_TO_CHECK, received.getHostKeyVerificationStrategy());
Expand Down Expand Up @@ -158,7 +161,7 @@ public void testConfigWithSpotBidPrice() throws Exception {
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
r.assertEqualBeans(orig, received, "ami,zone,spotConfig,description,remoteFS,type,javaPath,jvmopts,stopOnTerminate,securityGroups,subnetId,tags,usePrivateDnsName");
}
Expand All @@ -182,7 +185,7 @@ public void testSpotConfigWithoutBidPrice() throws Exception {
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
r.assertEqualBeans(orig, received, "ami,zone,spotConfig,description,remoteFS,type,javaPath,jvmopts,stopOnTerminate,securityGroups,subnetId,tags,usePrivateDnsName");
}
Expand All @@ -199,7 +202,7 @@ public void testWindowsConfigRoundTrip() throws Exception {
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
assertEquals(orig.getAdminPassword(), received.getAdminPassword());
assertEquals(orig.amiType, received.amiType);
Expand All @@ -217,7 +220,8 @@ public void testUnixConfigRoundTrip() throws Exception {
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
car-roll marked this conversation as resolved.
Show resolved Hide resolved
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
r.assertEqualBeans(orig, received, "amiType");
}
Expand Down Expand Up @@ -422,7 +426,7 @@ public void testMacConfig() throws Exception {
AmazonEC2Cloud ac = new AmazonEC2Cloud("us-east-1", false, "abc", "us-east-1", "ghi", "3", templates, null, null);
r.jenkins.clouds.add(ac);

r.submit(r.createWebClient().goTo("configureClouds").getFormByName("config"));
r.submit(getConfigForm(ac));
SlaveTemplate received = ((EC2Cloud) r.jenkins.clouds.iterator().next()).getTemplate(description);
r.assertEqualBeans(orig, received, "type,amiType");
}
Expand Down Expand Up @@ -528,4 +532,7 @@ public void provisionOnDemandSetsMetadataDefaultOptions() throws Exception {
assertEquals(metadataOptionsRequest.getHttpPutResponseHopLimit(), Integer.valueOf(1));
}

private HtmlForm getConfigForm(AmazonEC2Cloud ac) throws IOException, SAXException {
return r.createWebClient().goTo(ac.getUrl() + "configure").getFormByName("config");
}
}