mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
fd568c9174
* do not swallow exception triggered inside SWA handling --> write it to the log The real change is in src/com/sap/piper/Utils.groovy All the changes in the tests are dealing with mocking the echo method used in the Utils class mentioned above.
214 lines
7.0 KiB
Groovy
214 lines
7.0 KiB
Groovy
import com.sap.piper.DefaultValueCache
|
|
import com.sap.piper.JenkinsUtils
|
|
import com.sap.piper.analytics.InfluxData
|
|
import com.sap.piper.Utils
|
|
|
|
import org.junit.After
|
|
import org.junit.Before
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.junit.rules.RuleChain
|
|
import util.BasePiperTest
|
|
import util.JenkinsLoggingRule
|
|
import util.JenkinsStepRule
|
|
import util.JenkinsReadYamlRule
|
|
import util.Rules
|
|
|
|
import static org.hamcrest.Matchers.allOf
|
|
import static org.hamcrest.Matchers.containsString
|
|
import static org.hamcrest.Matchers.hasKey
|
|
import static org.hamcrest.Matchers.hasValue
|
|
import static org.hamcrest.Matchers.is
|
|
import static org.hamcrest.Matchers.isEmptyOrNullString
|
|
import static org.junit.Assert.assertThat
|
|
import static org.junit.Assert.assertTrue
|
|
import static org.junit.Assert.assertEquals
|
|
|
|
class InfluxWriteDataTest extends BasePiperTest {
|
|
public JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this)
|
|
private JenkinsStepRule stepRule = new JenkinsStepRule(this)
|
|
|
|
@Rule
|
|
public RuleChain ruleChain = Rules
|
|
.getCommonRules(this)
|
|
.around(new JenkinsReadYamlRule(this))
|
|
.around(loggingRule)
|
|
.around(stepRule)
|
|
|
|
Map fileMap = [:]
|
|
Map stepMap = [:]
|
|
String echoLog = ''
|
|
String influxVersion
|
|
|
|
class JenkinsUtilsMock extends JenkinsUtils {
|
|
String getPluginVersion(name) {
|
|
return influxVersion
|
|
}
|
|
}
|
|
|
|
@Before
|
|
void init() throws Exception {
|
|
// Currently we have dependencies between the tests since
|
|
// DefaultValueCache is a singleton which keeps its status
|
|
// for all the tests. Depending on the test order we fail.
|
|
// As long as this status remains we need:
|
|
DefaultValueCache.reset()
|
|
//reset stepMap
|
|
stepMap = [:]
|
|
//reset fileMap
|
|
fileMap = [:]
|
|
influxVersion = '1.15'
|
|
|
|
helper.registerAllowedMethod('readYaml', [Map.class], { map ->
|
|
return [
|
|
general: [productiveBranch: 'develop'],
|
|
steps : [influxWriteData: [influxServer: 'testInflux']]
|
|
]
|
|
})
|
|
helper.registerAllowedMethod('writeFile', [Map.class],{m -> fileMap[m.file] = m.text})
|
|
helper.registerAllowedMethod('step', [Map.class],{m -> stepMap = m})
|
|
|
|
helper.registerAllowedMethod('influxDbPublisher', [Map.class],{m -> stepMap = m})
|
|
|
|
Utils.metaClass.echo = { def m -> }
|
|
|
|
}
|
|
|
|
@After
|
|
void teadDown() {
|
|
Utils.metaClass = null
|
|
}
|
|
|
|
@Test
|
|
void testInfluxWriteDataWithDefault() throws Exception {
|
|
|
|
nullScript.commonPipelineEnvironment.setArtifactVersion('1.2.3')
|
|
stepRule.step.influxWriteData(
|
|
script: nullScript,
|
|
jenkinsUtilsStub: new JenkinsUtilsMock(),
|
|
)
|
|
|
|
assertThat(loggingRule.log, containsString('Artifact version: 1.2.3'))
|
|
|
|
assertThat(stepMap.selectedTarget, is('testInflux'))
|
|
assertThat(stepMap.customPrefix, isEmptyOrNullString())
|
|
|
|
assertThat(stepMap.customData, isEmptyOrNullString())
|
|
assertThat(stepMap.customDataMap, is([pipeline_data: [:], step_data: [:]]))
|
|
|
|
assertThat(fileMap, hasKey('jenkins_data.json'))
|
|
assertThat(fileMap, hasKey('influx_data.json'))
|
|
assertThat(fileMap, hasKey('jenkins_data_tags.json'))
|
|
assertThat(fileMap, hasKey('influx_data_tags.json'))
|
|
|
|
assertThat(stepMap['$class'], is('InfluxDbPublisher'))
|
|
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testInfluxWriteDataNoInflux() throws Exception {
|
|
|
|
nullScript.commonPipelineEnvironment.setArtifactVersion('1.2.3')
|
|
stepRule.step.influxWriteData(script: nullScript, influxServer: '')
|
|
|
|
assertEquals(0, stepMap.size())
|
|
|
|
assertTrue(fileMap.containsKey('jenkins_data.json'))
|
|
assertTrue(fileMap.containsKey('influx_data.json'))
|
|
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testInfluxWriteDataNoArtifactVersion() throws Exception {
|
|
|
|
stepRule.step.influxWriteData(script: nullScript)
|
|
|
|
assertEquals(0, stepMap.size())
|
|
assertEquals(0, fileMap.size())
|
|
|
|
assertTrue(loggingRule.log.contains('no artifact version available -> exiting writeInflux without writing data'))
|
|
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testInfluxWriteDataWrapInNode() throws Exception {
|
|
|
|
boolean nodeCalled = false
|
|
helper.registerAllowedMethod('node', [String.class, Closure.class]) {s, body ->
|
|
nodeCalled = true
|
|
return body()
|
|
}
|
|
|
|
helper.registerAllowedMethod("deleteDir", [], null)
|
|
|
|
nullScript.commonPipelineEnvironment.setArtifactVersion('1.2.3')
|
|
stepRule.step.influxWriteData(
|
|
script: nullScript,
|
|
jenkinsUtilsStub: new JenkinsUtilsMock(),
|
|
wrapInNode: true
|
|
)
|
|
|
|
assertThat(nodeCalled, is(true))
|
|
|
|
}
|
|
|
|
@Test
|
|
void testInfluxCustomData() {
|
|
nullScript.commonPipelineEnvironment.setArtifactVersion('1.2.3')
|
|
stepRule.step.influxWriteData(
|
|
//juStabUtils: utils,
|
|
script: nullScript,
|
|
jenkinsUtilsStub: new JenkinsUtilsMock(),
|
|
influxServer: 'myInstance',
|
|
customData: [key1: 'test1'],
|
|
customDataTags: [tag1: 'testTag1'],
|
|
customDataMap: [test_data: [key1: 'keyValue1']],
|
|
customDataMapTags: [test_data: [tag1: 'tagValue1']]
|
|
)
|
|
assertThat(stepMap.customData, allOf(hasKey('key1'), hasValue('test1')))
|
|
assertThat(stepMap.customDataTags, allOf(hasKey('tag1'), hasValue('testTag1')))
|
|
assertThat(stepMap.customDataMap, hasKey('test_data'))
|
|
assertThat(stepMap.customDataMapTags, hasKey('test_data'))
|
|
}
|
|
|
|
@Test
|
|
void testInfluxCustomDataFromCPE() {
|
|
nullScript.commonPipelineEnvironment.reset()
|
|
nullScript.commonPipelineEnvironment.setArtifactVersion('1.2.3')
|
|
InfluxData.addTag('jenkins_custom_data', 'tag1', 'testTag1')
|
|
InfluxData.addField('test_data', 'key1', 'keyValue1')
|
|
InfluxData.addTag('test_data', 'tag1', 'tagValue1')
|
|
stepRule.step.influxWriteData(
|
|
jenkinsUtilsStub: new JenkinsUtilsMock(),
|
|
script: nullScript,
|
|
influxServer: 'myInstance'
|
|
)
|
|
assertThat(stepMap.customData, isEmptyOrNullString())
|
|
assertThat(stepMap.customDataTags, allOf(hasKey('tag1'), hasValue('testTag1')))
|
|
assertThat(stepMap.customDataMap, hasKey('test_data'))
|
|
assertThat(stepMap.customDataMapTags, hasKey('test_data'))
|
|
}
|
|
|
|
@Test
|
|
void testInfluxWriteDataPluginVersion2() {
|
|
|
|
nullScript.commonPipelineEnvironment.setArtifactVersion('1.2.3')
|
|
influxVersion = '2.0'
|
|
stepRule.step.influxWriteData(
|
|
script: nullScript,
|
|
jenkinsUtilsStub: new JenkinsUtilsMock(),
|
|
)
|
|
|
|
assertThat(loggingRule.log, containsString('Artifact version: 1.2.3'))
|
|
|
|
assertThat(stepMap.selectedTarget, is('testInflux'))
|
|
assertThat(stepMap.customPrefix, isEmptyOrNullString())
|
|
|
|
assertThat(stepMap['$class'], isEmptyOrNullString())
|
|
}
|
|
|
|
}
|