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  }