2017-07-11 15:12:03 +02:00
|
|
|
import org.apache.commons.exec.*
|
|
|
|
import hudson.AbortException
|
2018-02-12 16:55:37 +02:00
|
|
|
|
|
|
|
import org.junit.BeforeClass
|
|
|
|
import org.junit.ClassRule
|
2017-07-11 15:12:03 +02:00
|
|
|
import org.junit.Before
|
|
|
|
import org.junit.Rule
|
|
|
|
import org.junit.Test
|
|
|
|
import org.junit.rules.ExpectedException
|
2018-01-16 10:33:13 +02:00
|
|
|
import org.junit.rules.RuleChain
|
2017-07-11 15:12:03 +02:00
|
|
|
import org.junit.rules.TemporaryFolder
|
|
|
|
|
2018-01-16 18:06:25 +02:00
|
|
|
import com.lesfurets.jenkins.unit.BasePipelineTest
|
|
|
|
|
2018-01-16 10:33:13 +02:00
|
|
|
import util.JenkinsLoggingRule
|
2018-02-28 14:11:09 +02:00
|
|
|
import util.JenkinsStepRule
|
2018-01-26 15:55:15 +02:00
|
|
|
import util.Rules
|
2017-07-11 15:12:03 +02:00
|
|
|
|
2018-01-16 18:06:25 +02:00
|
|
|
class ToolValidateTest extends BasePipelineTest {
|
2018-02-12 16:55:37 +02:00
|
|
|
@ClassRule
|
|
|
|
public static TemporaryFolder tmp = new TemporaryFolder()
|
|
|
|
|
2018-01-16 10:33:13 +02:00
|
|
|
private ExpectedException thrown = new ExpectedException().none()
|
|
|
|
private JenkinsLoggingRule jlr = new JenkinsLoggingRule(this)
|
2018-02-28 14:11:09 +02:00
|
|
|
private JenkinsStepRule jsr = new JenkinsStepRule(this)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
|
|
|
@Rule
|
2018-02-28 14:11:09 +02:00
|
|
|
public RuleChain ruleChain = Rules
|
|
|
|
.getCommonRules(this)
|
|
|
|
.around(thrown)
|
|
|
|
.around(jlr)
|
|
|
|
.around(jsr)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
2018-02-12 16:55:37 +02:00
|
|
|
private static home
|
2018-03-05 18:30:34 +02:00
|
|
|
private static mtaJar
|
|
|
|
private static neoExecutable
|
|
|
|
private static cmCliExecutable
|
|
|
|
|
2018-01-16 18:06:25 +02:00
|
|
|
|
2018-02-12 16:55:37 +02:00
|
|
|
@BeforeClass
|
|
|
|
static void createTestFiles() {
|
2018-03-05 18:30:34 +02:00
|
|
|
|
2018-02-08 19:54:39 +02:00
|
|
|
home = "${tmp.getRoot()}"
|
2018-03-05 18:30:34 +02:00
|
|
|
tmp.newFolder('bin')
|
|
|
|
tmp.newFolder('bin', 'java')
|
2018-02-08 19:54:39 +02:00
|
|
|
tmp.newFile('mta.jar')
|
2018-03-05 18:30:34 +02:00
|
|
|
tmp.newFolder('tools')
|
|
|
|
tmp.newFile('tools/neo.sh')
|
|
|
|
tmp.newFile('bin/cmclient')
|
|
|
|
|
|
|
|
mtaJar = "$home/mta.jar"
|
|
|
|
neoExecutable = "$home/tools/neo.sh"
|
|
|
|
cmCliExecutable = "$home/bin/cmclient"
|
2018-02-12 16:55:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Before
|
|
|
|
void init() {
|
2018-02-08 19:54:39 +02:00
|
|
|
binding.setVariable('JAVA_HOME', home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void nullHomeTest() {
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
|
|
thrown.expectMessage("The parameter 'home' can not be null or empty.")
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'java', home: null)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void emptyHomeTest() {
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
|
|
thrown.expectMessage("The parameter 'home' can not be null or empty.")
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'java', home: '')
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void nullToolTest() {
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
|
|
thrown.expectMessage("The parameter 'tool' can not be null or empty.")
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: null)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void emptyToolTest() {
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
|
|
thrown.expectMessage("The parameter 'tool' can not be null or empty.")
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: '')
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void invalidToolTest() {
|
|
|
|
thrown.expect(AbortException)
|
|
|
|
thrown.expectMessage("The tool 'test' is not supported.")
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'test', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void unableToValidateJavaTest() {
|
|
|
|
thrown.expect(AbortException)
|
2018-03-05 18:30:34 +02:00
|
|
|
thrown.expectMessage('The verification of Java failed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getNoVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'java', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void unableToValidateMtaTest() {
|
|
|
|
thrown.expect(AbortException)
|
2018-03-05 18:30:34 +02:00
|
|
|
thrown.expectMessage('The verification of SAP Multitarget Application Archive Builder failed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getNoVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'mta', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void unableToValidateNeoTest() {
|
|
|
|
thrown.expect(AbortException)
|
2018-03-05 18:30:34 +02:00
|
|
|
thrown.expectMessage('The verification of SAP Cloud Platform Console Client failed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getNoVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'neo', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void unableToValidateCmTest() {
|
|
|
|
thrown.expect(AbortException)
|
2018-03-05 18:30:34 +02:00
|
|
|
thrown.expectMessage('The verification of Change Management Command Line Interface failed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getNoVersion(m) })
|
2018-01-16 18:06:25 +02:00
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'cm', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
|
|
|
script.execute()
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateIncompatibleVersionJavaTest() {
|
|
|
|
thrown.expect(AbortException)
|
|
|
|
thrown.expectMessage('The installed version of Java is 1.7.0.')
|
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getIncompatibleVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'java', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateIncompatibleVersionMtaTest() {
|
|
|
|
thrown.expect(AbortException)
|
|
|
|
thrown.expectMessage('The installed version of SAP Multitarget Application Archive Builder is 1.0.5.')
|
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getIncompatibleVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'mta', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateNeoIncompatibleVersionTest() {
|
|
|
|
thrown.expect(AbortException)
|
|
|
|
thrown.expectMessage('The installed version of SAP Cloud Platform Console Client is 1.126.51.')
|
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getIncompatibleVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'neo', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateCmIncompatibleVersionTest() {
|
|
|
|
thrown.expect(AbortException)
|
|
|
|
thrown.expectMessage('The installed version of Change Management Command Line Interface is 0.0.0.')
|
|
|
|
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getIncompatibleVersion(m) })
|
|
|
|
binding.setVariable('tool', 'cm')
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'cm', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateJavaTest() {
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'java', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
2018-03-05 18:30:34 +02:00
|
|
|
assert jlr.log.contains('Verifying Java version 1.8.0 or compatible version.')
|
|
|
|
assert jlr.log.contains('Java version 1.8.0 is installed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateMtaTest() {
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'mta', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
2018-03-05 18:30:34 +02:00
|
|
|
assert jlr.log.contains('Verifying SAP Multitarget Application Archive Builder version 1.0.6 or compatible version.')
|
|
|
|
assert jlr.log.contains('SAP Multitarget Application Archive Builder version 1.0.6 is installed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateNeoTest() {
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'neo', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
2018-03-05 18:30:34 +02:00
|
|
|
assert jlr.log.contains('Verifying SAP Cloud Platform Console Client version 3.39.10 or compatible version.')
|
|
|
|
assert jlr.log.contains('SAP Cloud Platform Console Client version 3.39.10 is installed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void validateCmTest() {
|
|
|
|
helper.registerAllowedMethod('sh', [Map], { Map m -> getVersion(m) })
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
jsr.step.call(tool: 'cm', home: home)
|
2017-07-11 15:12:03 +02:00
|
|
|
|
2018-03-05 18:30:34 +02:00
|
|
|
assert jlr.log.contains('Verifying Change Management Command Line Interface version 0.0.1 or compatible version.')
|
|
|
|
assert jlr.log.contains('Change Management Command Line Interface version 0.0.1 is installed.')
|
2017-07-11 15:12:03 +02:00
|
|
|
}
|
|
|
|
|
2018-02-28 14:11:09 +02:00
|
|
|
private getNoVersion(Map m) {
|
2017-07-11 15:12:03 +02:00
|
|
|
throw new AbortException('script returned exit code 127')
|
|
|
|
}
|
|
|
|
|
|
|
|
private getVersion(Map m) {
|
|
|
|
if(m.script.contains('java -version')) {
|
|
|
|
return '''openjdk version \"1.8.0_121\"
|
|
|
|
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-1~bpo8+1-b13)
|
|
|
|
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)'''
|
|
|
|
} else if(m.script.contains('mta.jar -v')) {
|
|
|
|
return '1.0.6'
|
|
|
|
} else if(m.script.contains('neo.sh version')) {
|
|
|
|
return '''SAP Cloud Platform Console Client
|
|
|
|
SDK version : 3.39.10
|
|
|
|
Runtime : neo-java-web'''
|
|
|
|
} else if(m.script.contains('cmclient -v')) {
|
|
|
|
return '0.0.1-beta-2 : fc9729964a6acf5c1cad9c6f9cd6469727625a8e'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private getIncompatibleVersion(Map m) {
|
|
|
|
if(m.script.contains('java -version')) {
|
|
|
|
return '''openjdk version \"1.7.0_121\"
|
|
|
|
OpenJDK Runtime Environment (build 1.7.0_121-8u121-b13-1~bpo8+1-b13)
|
|
|
|
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)'''
|
|
|
|
} else if(m.script.contains('mta.jar -v')) {
|
|
|
|
return '1.0.5'
|
|
|
|
} else if(m.script.contains('neo.sh version')) {
|
|
|
|
return '''SAP Cloud Platform Console Client
|
|
|
|
SDK version : 1.126.51
|
|
|
|
Runtime : neo-java-web'''
|
|
|
|
} else if(m.script.contains('cmclient -v')) {
|
|
|
|
return '0.0.0-beta-1 : fc9729964a6acf5c1cad9c6f9cd6469727625a8e'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|