This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 62a03ec24c [feature](regression) add http test action (#17567)
62a03ec24c is described below
commit 62a03ec24c21ec299ca805891b1fcbbd9721c66f
Author: AlexYue <[email protected]>
AuthorDate: Thu Mar 9 15:13:04 2023 +0800
[feature](regression) add http test action (#17567)
---
.../doris/regression/action/HttpCliAction.groovy | 52 +++++++++++++++----
.../framework/src/main/groovy/suite.gdsl | 3 +-
.../suites/demo_p0/httpTest_action.groovy | 58 ++++++++++++++++++++++
3 files changed, 101 insertions(+), 12 deletions(-)
diff --git
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/HttpCliAction.groovy
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/HttpCliAction.groovy
index 7fe00c38a4..6cb3434955 100644
---
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/HttpCliAction.groovy
+++
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/action/HttpCliAction.groovy
@@ -36,6 +36,7 @@ class HttpCliAction implements SuiteAction {
private String uri
private String body
private String result
+ private String op
private Closure check
SuiteContext context
@@ -67,6 +68,18 @@ class HttpCliAction implements SuiteAction {
this.body = body
}
+ void op(Closure<String> opSupplier) {
+ this.op = bodySupplier.call()
+ }
+
+ void op(String op) {
+ this.op = op
+ }
+
+ void result(Object result) {
+ this.result = result
+ }
+
@Override
void run() {
try {
@@ -74,24 +87,41 @@ class HttpCliAction implements SuiteAction {
uri = "http://$endpoint" + uri
log.info("url : " + uri)
log.info("body: " + body)
- HttpPost httpPost = new HttpPost(uri)
- StringEntity requestEntity = new StringEntity(
- body,
- ContentType.APPLICATION_JSON);
- httpPost.setEntity(requestEntity)
- client.execute(httpPost).withCloseable { resp ->
- resp.withCloseable {
- String respJson =
EntityUtils.toString(resp.getEntity())
- def respCode = resp.getStatusLine().getStatusCode()
- return new ActionResult(respCode, respJson)
+ log.info("op: " + op)
+
+ if (op == "get") {
+ HttpGet httpGet = new HttpGet(uri)
+
+ client.execute(httpGet).withCloseable { resp ->
+ resp.withCloseable {
+ String respJson =
EntityUtils.toString(resp.getEntity())
+ def respCode = resp.getStatusLine().getStatusCode()
+ return new ActionResult(respCode, respJson)
+ }
+ }
+ } else {
+ HttpPost httpPost = new HttpPost(uri)
+ StringEntity requestEntity = new StringEntity(
+ body,
+ ContentType.APPLICATION_JSON);
+ httpPost.setEntity(requestEntity)
+
+ client.execute(httpPost).withCloseable { resp ->
+ resp.withCloseable {
+ String respJson =
EntityUtils.toString(resp.getEntity())
+ def respCode = resp.getStatusLine().getStatusCode()
+ return new ActionResult(respCode, respJson)
+ }
}
}
}
+ log.info("result:${result}".toString())
+ log.info("this.result:${this.result}".toString())
if (check != null) {
check.call(result.respCode, result.body)
} else {
if (this.result != null) {
- Assert.assertEquals(this.result, result.body)
+ Assert.assertEquals(this.result, result)
}
}
} catch (Throwable t) {
diff --git a/regression-test/framework/src/main/groovy/suite.gdsl
b/regression-test/framework/src/main/groovy/suite.gdsl
index 7b50692038..da55904de8 100644
--- a/regression-test/framework/src/main/groovy/suite.gdsl
+++ b/regression-test/framework/src/main/groovy/suite.gdsl
@@ -78,7 +78,8 @@ contributor([suiteContext]) {
if (enclosingCall("check") ||
(!enclosingCall("test") &&
!enclosingCall("explain") &&
- !enclosingCall("streamLoad"))) {
+ !enclosingCall("streamLoad") &&
+ !enclosingCall("httpTest"))) {
// bind other suite method and field
def suiteClass = findClass(suiteClassName)
delegatesTo(suiteClass)
diff --git a/regression-test/suites/demo_p0/httpTest_action.groovy
b/regression-test/suites/demo_p0/httpTest_action.groovy
new file mode 100644
index 0000000000..4eda6aba35
--- /dev/null
+++ b/regression-test/suites/demo_p0/httpTest_action.groovy
@@ -0,0 +1,58 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+import org.codehaus.groovy.runtime.IOGroovyMethods
+
+suite("http_test_action") {
+ String[][] backends = sql """ show backends """
+ assertTrue(backends.size() > 0)
+ String backendId;
+ def backendIdToBackendIP = [:]
+ def backendIdToBackendBrpcPort = [:]
+ for (String[] backend in backends) {
+ if (backend[9].equals("true")) {
+ backendIdToBackendIP.put(backend[0], backend[2])
+ backendIdToBackendBrpcPort.put(backend[0], backend[6])
+ }
+ }
+
+ backendId = backendIdToBackendIP.keySet()[0]
+ def getMetricsMethod = { check_func ->
+ httpTest {
+ endpoint backendIdToBackendIP.get(backendId) + ":" +
backendIdToBackendBrpcPort.get(backendId)
+ uri "/brpc_metrics"
+ op "get"
+ check check_func
+ }
+ }
+
+ getMetricsMethod.call() {
+ respCode, body ->
+ logger.info("test ttl expired resp Code {}",
"${respCode}".toString())
+ assertEquals("${respCode}".toString(), "200")
+ String out = "${body}".toString()
+ def strs = out.split('\n')
+ Boolean flag = false;
+ for (String line in strs) {
+ if (line.contains("bthread_count")) {
+ flag = true;
+ break;
+ }
+ }
+ assertTrue(flag);
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]