Skip to content

Commit

Permalink
[JENKINS-48766] - Add info about remoting to the WAR manifest file
Browse files Browse the repository at this point in the history
  • Loading branch information
oleg-nenashev committed Jan 22, 2018
1 parent 95f1f5a commit 07d8f4e
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
70 changes: 70 additions & 0 deletions test/src/test/java/jenkins/slaves/RemotingVersionInfoTest.java
@@ -0,0 +1,70 @@
/*
* The MIT License
*
* Copyright (c) 2018, CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package jenkins.slaves;

import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.For;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.Manifest;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;

@For(RemotingVersionInfo.class)
public class RemotingVersionInfoTest {

@Rule
public JenkinsRule j = new JenkinsRule();

@Test
@Issue("JENKINS-48766")
public void warShouldIncludeRemotingManifestEntries() throws Exception {
ZipFile jenkinsWar = new ZipFile(new File(j.getWebAppRoot(), "../jenkins.war"));
ZipEntry entry = new JarEntry("META-INF/MANIFEST.MF");
try (InputStream inputStream = jenkinsWar.getInputStream(entry)) {
assertNotNull("Cannot open input stream for /META-INF/MANIFEST.MF", inputStream);
Manifest manifest = new Manifest(inputStream);

assertAttributeValue(manifest, "Remoting-Embedded-Version", RemotingVersionInfo.getEmbeddedVersion());
assertAttributeValue(manifest, "Remoting-Minimum-Supported-Version", RemotingVersionInfo.getMinimumSupportedVersion());
}
}

private void assertAttributeValue(Manifest manifest, String attributeName, Object expectedValue) throws AssertionError {
assertThat("Wrong value of manifest attribute " + attributeName,
manifest.getMainAttributes().getValue(attributeName),
equalTo(expectedValue.toString()));
}
}
2 changes: 2 additions & 0 deletions war/pom.xml
Expand Up @@ -199,6 +199,8 @@ THE SOFTWARE.
<Implementation-Version>${project.version}</Implementation-Version>
<Hudson-Version>1.395</Hudson-Version>
<Jenkins-Version>${project.version}</Jenkins-Version>
<Remoting-Embedded-Version>${remoting.version}</Remoting-Embedded-Version>
<Remoting-Minimum-Supported-Version>${remoting.minimum.supported.version}</Remoting-Minimum-Supported-Version>
</manifestEntries>
</archive>
<!--outputFileNameMapping>@{artifactId}@.@{extension}@</outputFileNameMapping-->
Expand Down

0 comments on commit 07d8f4e

Please sign in to comment.