github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/test/groovy/com/sap/piper/analytics/InfluxDataTest.groovy (about) 1 package com.sap.piper.analytics 2 3 import org.junit.Rule 4 import org.junit.Before 5 import org.junit.Test 6 import static org.junit.Assert.assertThat 7 import static org.junit.Assume.assumeThat 8 import org.junit.rules.ExpectedException 9 import org.junit.rules.RuleChain 10 11 import static org.hamcrest.Matchers.containsString 12 import static org.hamcrest.Matchers.hasItem 13 import static org.hamcrest.Matchers.is 14 import static org.hamcrest.Matchers.not 15 import static org.hamcrest.Matchers.empty 16 import static org.hamcrest.Matchers.hasKey 17 import static org.hamcrest.Matchers.allOf 18 import static org.hamcrest.Matchers.hasEntry 19 20 import util.JenkinsLoggingRule 21 import util.JenkinsShellCallRule 22 import util.JenkinsReadFileRule 23 import util.BasePiperTest 24 import util.Rules 25 26 class InfluxDataTest extends BasePiperTest { 27 private ExpectedException thrown = ExpectedException.none() 28 private JenkinsLoggingRule jlr = new JenkinsLoggingRule(this) 29 private JenkinsShellCallRule jscr = new JenkinsShellCallRule(this) 30 private JenkinsReadFileRule readFileRule = new JenkinsReadFileRule(this, null) 31 32 @Rule 33 public RuleChain rules = Rules 34 .getCommonRules(this) 35 .around(thrown) 36 .around(jscr) 37 .around(jlr) 38 .around(readFileRule) 39 40 @Before 41 void setup() { 42 InfluxData.instance = null 43 } 44 45 @Test 46 void testCreateInstance() { 47 InfluxData.getInstance() 48 // asserts 49 assertThat(InfluxData.instance.fields, allOf( 50 is(not(null)), 51 hasKey('jenkins_custom_data'), 52 hasKey('pipeline_data'), 53 hasKey('step_data') 54 )) 55 assertThat(InfluxData.instance.fields.jenkins_custom_data, is([:])) 56 assertThat(InfluxData.instance.fields.pipeline_data, is([:])) 57 assertThat(InfluxData.instance.fields.step_data, is([:])) 58 assertThat(InfluxData.instance.tags, allOf( 59 is(not(null)), 60 hasKey('jenkins_custom_data'), 61 hasKey('pipeline_data'), 62 hasKey('step_data') 63 )) 64 assertThat(InfluxData.instance.tags.jenkins_custom_data, is([:])) 65 assertThat(InfluxData.instance.tags.pipeline_data, is([:])) 66 assertThat(InfluxData.instance.tags.step_data, is([:])) 67 } 68 69 @Test 70 void testAddToDefaultMeasurement() { 71 InfluxData.addField('step_data', 'anyKey', 'anyValue') 72 InfluxData.addTag('step_data', 'anyKey', 'anyTag') 73 // asserts 74 assertThat(InfluxData.instance.fields.jenkins_custom_data, is([:])) 75 assertThat(InfluxData.instance.fields.pipeline_data, is([:])) 76 assertThat(InfluxData.instance.fields.step_data, is(['anyKey': 'anyValue'])) 77 assertThat(InfluxData.instance.tags.jenkins_custom_data, is([:])) 78 assertThat(InfluxData.instance.tags.pipeline_data, is([:])) 79 assertThat(InfluxData.instance.tags.step_data, is(['anyKey': 'anyTag'])) 80 } 81 82 @Test 83 void testAddToNewMeasurement() { 84 InfluxData.addField('new_measurement_data', 'anyKey', 'anyValue') 85 InfluxData.addTag('new_measurement_data', 'anyKey', 'anyTag') 86 // asserts 87 assertThat(InfluxData.instance.fields.new_measurement_data, is(['anyKey': 'anyValue'])) 88 assertThat(InfluxData.instance.fields.jenkins_custom_data, is([:])) 89 assertThat(InfluxData.instance.fields.pipeline_data, is([:])) 90 assertThat(InfluxData.instance.fields.step_data, is([:])) 91 assertThat(InfluxData.instance.tags.new_measurement_data, is(['anyKey': 'anyTag'])) 92 assertThat(InfluxData.instance.tags.jenkins_custom_data, is([:])) 93 assertThat(InfluxData.instance.tags.pipeline_data, is([:])) 94 assertThat(InfluxData.instance.tags.step_data, is([:])) 95 } 96 97 @Test 98 void testResetInstance() { 99 InfluxData.addField('step_data', 'anyKey', 'anyValue') 100 assumeThat(InfluxData.instance.fields.step_data, is(['anyKey': 'anyValue'])) 101 InfluxData.reset() 102 // asserts 103 assertThat(InfluxData.instance.fields.jenkins_custom_data, is([:])) 104 assertThat(InfluxData.instance.fields.pipeline_data, is([:])) 105 assertThat(InfluxData.instance.fields.step_data, is([:])) 106 } 107 108 @Test 109 void testReadFromDisk() { 110 // init 111 helper.registerAllowedMethod("findFiles", [Map.class], { map -> 112 if(map.glob == '.pipeline/influx/**') 113 return [ 114 new File(".pipeline/influx/step_data/fields/sonar"), 115 new File(".pipeline/influx/step_data/fields/protecode"), 116 new File("cst/test2.yml"), 117 ].toArray() 118 return [].toArray() 119 }) 120 readFileRule.files.putAll([ 121 '.pipeline/influx/step_data/fields/sonar': 'true', 122 '.pipeline/influx/step_data/fields/protecode': 'false', 123 ]) 124 125 // tests 126 InfluxData.readFromDisk(nullScript) 127 // asserts 128 assertThat(InfluxData.instance.fields.step_data, is([sonar: true, protecode: false])) 129 } 130 }