github.com/kubeshop/testkube@v1.17.23/contrib/executor/jmeterd/pkg/parser/xmljtl_test.go (about) 1 package parser 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 const ( 10 badXML = ` 11 12345 12 ` 13 14 successXML = `<testResults version="1.2"> 15 <httpSample t="1259" it="0" lt="124" ct="80" ts="1690288938130" s="true" lb="Testkube - HTTP Request" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" by="65222" sby="366" ng="1" na="1"> 16 <assertionResult> 17 <name>Response Assertion</name> 18 <failure>false</failure> 19 <error>false</error> 20 </assertionResult> 21 </httpSample> 22 </testResults> 23 ` 24 25 failedXML = ` 26 <testResults version="1.2"> 27 <httpSample t="51" it="0" lt="0" ct="51" ts="1690366471701" s="false" lb="Testkube - HTTP Request" rc="Non HTTP response code: java.net.UnknownHostException" rm="Non HTTP response message: testkube.fakeshop.io: Name does not resolve" tn="Thread Group 1-1" dt="text" by="2327" sby="0" ng="1" na="1"> 28 <assertionResult> 29 <name>Response Assertion</name> 30 <failure>true</failure> 31 <error>false</error> 32 <failureMessage>Test failed: code expected to equal / ****** received : [[[Non HTTP response code: java.net.UnknownHostException]]] ****** comparison: [[[200 ]]] /</failureMessage> 33 </assertionResult> 34 </httpSample> 35 </testResults> 36 ` 37 38 mixedXML = ` 39 <testResults version="1.2"> 40 <sample t="2" it="0" lt="0" ct="0" ts="1690724003768" s="true" lb="========== Starting GR Alarm verification =========" rc="200" rm="OK" tn="Verify GR Alarms 1-1" dt="text" by="7109" sby="0" ng="1" na="1"> 41 </sample> 42 <httpSample t="946" it="0" lt="935" ct="737" ts="1690724004825" s="true" lb="Get Token - HTTP Request" rc="200" rm="OK" tn="Verify GR Alarms 1-1" dt="text" by="3774" sby="350" ng="1" na="1"> 43 </httpSample> 44 <sample t="0" it="0" lt="0" ct="0" ts="1690724048711" s="true" lb="Dummy cmdb Alarm cleared at : 2022-03-22T09:05:01.000Z " rc="200" rm="OK" tn="Verify GR Alarms 1-1" dt="text" by="10328" sby="0" ng="1" na="1"> 45 </sample> 46 <sample t="1" it="0" lt="0" ct="0" ts="1690724048871" s="false" lb="Alarms status are inactive. Unexpected Result! Failing the test!" rc="200" rm="OK" tn="Verify GR Alarms 1-1" dt="text" by="10328" sby="0" ng="1" na="1"> 47 <assertionResult> 48 <name>Fail Test</name> 49 <failure>true</failure> 50 <error>false</error> 51 <failureMessage>Test FAILED</failureMessage> 52 </assertionResult> 53 </sample> 54 </testResults> 55 ` 56 57 errorXML = `<?xml version="1.0" encoding="UTF-8"?> 58 <testResults version="1.2"> 59 60 </testResults> 61 ` 62 ) 63 64 func TestParseXML(t *testing.T) { 65 t.Parallel() 66 67 t.Run("parse XML error test", func(t *testing.T) { 68 t.Parallel() 69 70 results, err := parseXML([]byte(errorXML)) 71 72 assert.NoError(t, err) 73 assert.Nil(t, results.HTTPSamples) 74 assert.Nil(t, results.Samples) 75 }) 76 77 t.Run("parse XML success test", func(t *testing.T) { 78 t.Parallel() 79 80 results, err := parseXML([]byte(successXML)) 81 82 assert.NoError(t, err) 83 assert.Equal(t, 1, len(results.HTTPSamples)) 84 assert.True(t, results.HTTPSamples[0].Success) 85 assert.Equal(t, 1259, results.HTTPSamples[0].Time) 86 assert.Equal(t, "Testkube - HTTP Request", results.HTTPSamples[0].Label) 87 assert.Equal(t, "Response Assertion", results.HTTPSamples[0].AssertionResult.Name) 88 }) 89 90 t.Run("parse XML failed test", func(t *testing.T) { 91 t.Parallel() 92 93 results, err := parseXML([]byte(failedXML)) 94 95 assert.NoError(t, err) 96 assert.Equal(t, 1, len(results.HTTPSamples)) 97 assert.False(t, results.HTTPSamples[0].Success) 98 assert.Equal(t, 51, results.HTTPSamples[0].Time) 99 assert.Equal(t, "Testkube - HTTP Request", results.HTTPSamples[0].Label) 100 assert.Equal(t, "Test failed: code expected to equal / ****** received : [[[Non HTTP response code: java.net.UnknownHostException]]] ****** comparison: [[[200 ]]] /", results.HTTPSamples[0].AssertionResult.FailureMessage) 101 }) 102 103 t.Run("parse bad XML", func(t *testing.T) { 104 t.Parallel() 105 106 _, err := parseXML([]byte(badXML)) 107 108 assert.EqualError(t, err, "EOF") 109 }) 110 111 t.Run("parse XML mixed test", func(t *testing.T) { 112 t.Parallel() 113 114 results, err := parseXML([]byte(mixedXML)) 115 116 assert.NoError(t, err) 117 assert.Equal(t, 1, len(results.HTTPSamples)) 118 assert.True(t, results.HTTPSamples[0].Success) 119 assert.Equal(t, 946, results.HTTPSamples[0].Time) 120 assert.Equal(t, "Get Token - HTTP Request", results.HTTPSamples[0].Label) 121 122 assert.Equal(t, 3, len(results.Samples)) 123 assert.False(t, results.Samples[2].Success) 124 assert.Equal(t, 1, results.Samples[2].Time) 125 assert.Equal(t, "Alarms status are inactive. Unexpected Result! Failing the test!", results.Samples[2].Label) 126 assert.Equal(t, "Fail Test", results.Samples[2].AssertionResult.Name) 127 }) 128 }