You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by fs...@apache.org on 2021/03/12 16:20:59 UTC

[jmeter] 05/12: Unit tests

This is an automated email from the ASF dual-hosted git repository.

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit a0a84ac7f97fde63d20c9f4fe56362d59b285444
Author: David Pecollet <da...@gmail.com>
AuthorDate: Tue Dec 15 16:03:57 2020 +0000

    Unit tests
---
 .../jmeter/protocol/bolt/sampler/BoltSampler.java  |  2 +-
 .../protocol/bolt/sampler/BoltSamplerSpec.groovy   | 74 +++++++++++++++++++---
 2 files changed, 66 insertions(+), 10 deletions(-)

diff --git a/src/protocol/bolt/src/main/java/org/apache/jmeter/protocol/bolt/sampler/BoltSampler.java b/src/protocol/bolt/src/main/java/org/apache/jmeter/protocol/bolt/sampler/BoltSampler.java
index d717cc8..d3787dc 100644
--- a/src/protocol/bolt/src/main/java/org/apache/jmeter/protocol/bolt/sampler/BoltSampler.java
+++ b/src/protocol/bolt/src/main/java/org/apache/jmeter/protocol/bolt/sampler/BoltSampler.java
@@ -152,7 +152,7 @@ public class BoltSampler extends AbstractBoltTestElement implements Sampler, Tes
                 .append(getDatabase())
                 .append("\n")
                 .append("Access Mode: \n")
-                .append(getAccessMode().toString());
+                .append(getAccessMode());
         return request.toString();
     }
 
diff --git a/src/protocol/bolt/src/test/groovy/org/apache/jmeter/protocol/bolt/sampler/BoltSamplerSpec.groovy b/src/protocol/bolt/src/test/groovy/org/apache/jmeter/protocol/bolt/sampler/BoltSamplerSpec.groovy
index 80ce336..d7a2565 100644
--- a/src/protocol/bolt/src/test/groovy/org/apache/jmeter/protocol/bolt/sampler/BoltSamplerSpec.groovy
+++ b/src/protocol/bolt/src/test/groovy/org/apache/jmeter/protocol/bolt/sampler/BoltSamplerSpec.groovy
@@ -22,9 +22,9 @@ import org.apache.jmeter.samplers.Entry
 import org.apache.jmeter.threads.JMeterContextService
 import org.apache.jmeter.threads.JMeterVariables
 import org.neo4j.driver.Driver
+import org.neo4j.driver.Record
 import org.neo4j.driver.Result
 import org.neo4j.driver.Session
-import org.neo4j.driver.SessionConfig
 import org.neo4j.driver.exceptions.ClientException
 import org.neo4j.driver.summary.ResultSummary
 import org.neo4j.driver.summary.SummaryCounters
@@ -54,8 +54,6 @@ class BoltSamplerSpec extends Specification {
     def "should execute return success on successful query"() {
         given:
             sampler.setCypher("MATCH x")
-            sampler.setDatabase("neo4j")
-            sampler.setTxTimeout(60)
             session.run("MATCH x", [:], _) >> getEmptyQueryResult()
         when:
             def response = sampler.sample(entry)
@@ -70,11 +68,44 @@ class BoltSamplerSpec extends Specification {
             response.getTime() > 0
     }
 
+    def "should not display results by default"() {
+        given:
+            sampler.setCypher("MATCH x")
+            session.run("MATCH x", [:], _) >> getPopulatedQueryResult()
+        when:
+            def response = sampler.sample(entry)
+        then:
+            response.isSuccessful()
+            response.isResponseCodeOK()
+            def str = response.getResponseDataAsString()
+            str.contains("Summary:")
+            str.endsWith("Records: Skipped")
+            response.getSampleCount() == 1
+            response.getErrorCount() == 0
+            response.getTime() > 0
+    }
+
+    def "should display results if asked"() {
+        given:
+            sampler.setCypher("MATCH x")
+            sampler.setRecordQueryResults(true)
+            session.run("MATCH x", [:], _) >> getPopulatedQueryResult()
+        when:
+            def response = sampler.sample(entry)
+        then:
+            response.isSuccessful()
+            response.isResponseCodeOK()
+            def str = response.getResponseDataAsString()
+            str.contains("Summary:")
+            str.endsWith("Mock for type 'Record'")
+            response.getSampleCount() == 1
+            response.getErrorCount() == 0
+            response.getTime() > 0
+    }
+
     def "should return error on failed query"() {
         given:
             sampler.setCypher("MATCH x")
-            sampler.setDatabase("neo4j")
-            sampler.setTxTimeout(60)
             session.run("MATCH x", [:], _) >> { throw new RuntimeException("a message") }
         when:
             def response = sampler.sample(entry)
@@ -93,8 +124,6 @@ class BoltSamplerSpec extends Specification {
         given:
             sampler.setCypher("MATCH x")
             sampler.setParams("{invalid}")
-            sampler.setDatabase("neo4j")
-            sampler.setTxTimeout(60)
         when:
             def response = sampler.sample(entry)
         then:
@@ -111,8 +140,6 @@ class BoltSamplerSpec extends Specification {
     def "should return db error code"() {
         given:
             sampler.setCypher("MATCH x")
-            sampler.setDatabase("neo4j")
-            sampler.setTxTimeout(60)
             session.run("MATCH x", [:], _) >> { throw new ClientException("a code", "a message") }
         when:
             def response = sampler.sample(entry)
@@ -120,6 +147,24 @@ class BoltSamplerSpec extends Specification {
             response.getResponseCode() == "a code"
     }
 
+    def "should ignore invalid timeout values"() {
+        given:
+            sampler.setCypher("MATCH x")
+            sampler.setTxTimeout(-1)
+            session.run("MATCH x", [:], _) >> getEmptyQueryResult()
+        when:
+            def response = sampler.sample(entry)
+        then:
+            response.isSuccessful()
+            response.isResponseCodeOK()
+            def str = response.getResponseDataAsString()
+            str.contains("Summary:")
+            str.endsWith("Records: Skipped")
+            response.getSampleCount() == 1
+            response.getErrorCount() == 0
+            response.getTime() > 0
+    }
+
     def getEmptyQueryResult() {
         def queryResult = Mock(Result)
         def summary = Mock(ResultSummary)
@@ -128,4 +173,15 @@ class BoltSamplerSpec extends Specification {
         summary.counters() >> counters
         return queryResult
     }
+
+    def getPopulatedQueryResult() {
+        def queryResult = Mock(Result)
+        def summary = Mock(ResultSummary)
+        def list = [Mock(Record), Mock(Record), Mock(Record)]
+        queryResult.consume() >> summary
+        queryResult.list() >> list
+        SummaryCounters counters = Mock(SummaryCounters)
+        summary.counters() >> counters
+        return queryResult
+    }
 }