github.com/kubeshop/testkube@v1.17.23/contrib/executor/jmeter/pkg/parser/xjtl_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 = ` 15 <testResults version="1.2"> 16 <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"> 17 <assertionResult> 18 <name>Response Assertion</name> 19 <failure>false</failure> 20 <error>false</error> 21 </assertionResult> 22 </httpSample> 23 </testResults> 24 ` 25 26 failedXML = ` 27 <testResults version="1.2"> 28 <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"> 29 <assertionResult> 30 <name>Response Assertion</name> 31 <failure>true</failure> 32 <error>false</error> 33 <failureMessage>Test failed: code expected to equal / ****** received : [[[Non HTTP response code: java.net.UnknownHostException]]] ****** comparison: [[[200 ]]] /</failureMessage> 34 </assertionResult> 35 </httpSample> 36 </testResults> 37 ` 38 39 mixedXML = ` 40 <testResults version="1.2"> 41 <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"> 42 </sample> 43 <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"> 44 </httpSample> 45 <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"> 46 </sample> 47 <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"> 48 <assertionResult> 49 <name>Fail Test</name> 50 <failure>true</failure> 51 <error>false</error> 52 <failureMessage>Test FAILED</failureMessage> 53 </assertionResult> 54 </sample> 55 </testResults> 56 ` 57 ) 58 59 func TestParseXML(t *testing.T) { 60 t.Parallel() 61 62 t.Run("parse XML success test", func(t *testing.T) { 63 t.Parallel() 64 65 results, err := ParseXML([]byte(successXML)) 66 67 assert.NoError(t, err) 68 assert.Equal(t, 1, len(results.HTTPSamples)) 69 assert.True(t, results.HTTPSamples[0].Success) 70 assert.Equal(t, 1259, results.HTTPSamples[0].Time) 71 assert.Equal(t, "Testkube - HTTP Request", results.HTTPSamples[0].Label) 72 assert.Equal(t, "Response Assertion", results.HTTPSamples[0].AssertionResult.Name) 73 }) 74 75 t.Run("parse XML failed test", func(t *testing.T) { 76 t.Parallel() 77 78 results, err := ParseXML([]byte(failedXML)) 79 80 assert.NoError(t, err) 81 assert.Equal(t, 1, len(results.HTTPSamples)) 82 assert.False(t, results.HTTPSamples[0].Success) 83 assert.Equal(t, 51, results.HTTPSamples[0].Time) 84 assert.Equal(t, "Testkube - HTTP Request", results.HTTPSamples[0].Label) 85 assert.Equal(t, "Test failed: code expected to equal / ****** received : [[[Non HTTP response code: java.net.UnknownHostException]]] ****** comparison: [[[200 ]]] /", results.HTTPSamples[0].AssertionResult.FailureMessage) 86 }) 87 88 t.Run("parse bad XML", func(t *testing.T) { 89 t.Parallel() 90 91 _, err := ParseXML([]byte(badXML)) 92 93 assert.EqualError(t, err, "EOF") 94 }) 95 96 t.Run("parse XML mixed test", func(t *testing.T) { 97 t.Parallel() 98 99 results, err := ParseXML([]byte(mixedXML)) 100 101 assert.NoError(t, err) 102 assert.Equal(t, 1, len(results.HTTPSamples)) 103 assert.True(t, results.HTTPSamples[0].Success) 104 assert.Equal(t, 946, results.HTTPSamples[0].Time) 105 assert.Equal(t, "Get Token - HTTP Request", results.HTTPSamples[0].Label) 106 107 assert.Equal(t, 3, len(results.Samples)) 108 assert.False(t, results.Samples[2].Success) 109 assert.Equal(t, 1, results.Samples[2].Time) 110 assert.Equal(t, "Alarms status are inactive. Unexpected Result! Failing the test!", results.Samples[2].Label) 111 assert.Equal(t, "Fail Test", results.Samples[2].AssertionResult.Name) 112 }) 113 }