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

yiguolei 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 9ccc39c164 [Enhancement](regression) add regression tests for 
executeSQL http rest api #12265
9ccc39c164 is described below

commit 9ccc39c164e96e1a95db0d15c955c003c6fcb5a3
Author: Tiewei Fang <43782773+bepppo...@users.noreply.github.com>
AuthorDate: Wed Sep 7 10:02:37 2022 +0800

    [Enhancement](regression) add regression tests for executeSQL http rest api 
#12265
---
 .../http_rest_api/post/test_query_stmt.groovy      | 105 +++++++++++++++++++++
 1 file changed, 105 insertions(+)

diff --git a/regression-test/suites/http_rest_api/post/test_query_stmt.groovy 
b/regression-test/suites/http_rest_api/post/test_query_stmt.groovy
new file mode 100644
index 0000000000..b099e9f2a1
--- /dev/null
+++ b/regression-test/suites/http_rest_api/post/test_query_stmt.groovy
@@ -0,0 +1,105 @@
+// 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 groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+/**
+*   @Params url is "/xxx", data is request body
+*   @Return response body
+*/
+def http_post(url, data = null) {
+    def dst = "http://"+ context.config.feHttpAddress
+    def conn = new URL(dst + url).openConnection()
+    conn.setRequestMethod("POST")
+    conn.setRequestProperty("Content-Type", "application/json")
+    conn.setRequestProperty("Authorization", "Basic cm9vdDo=")
+    if (data) {
+        // 
+        logger.info("query body: " + data)
+        conn.doOutput = true
+        def writer = new OutputStreamWriter(conn.outputStream)
+        writer.write(data)
+        writer.flush()
+        writer.close()
+    }
+    return conn.content.text
+}
+
+def SUCCESS_MSG = "success"
+def SUCCESS_CODE = 0
+
+class Stmt {
+    String stmt
+}
+suite("test_query_stmt") {
+    def url= "/api/query/default_cluster/" + context.config.defaultDb
+
+    // test select
+    def stmt1 = """ select * from numbers('10', '1') """ 
+    def stmt1_json = JsonOutput.toJson(new Stmt(stmt: stmt1));
+
+    def resJson = http_post(url, stmt1_json)
+    def obj = new JsonSlurper().parseText(resJson)
+    assertEquals(obj.msg, SUCCESS_MSG)
+    assertEquals(obj.code, SUCCESS_CODE)
+    def data = [[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]];
+    assertEquals(obj.data.data, data)
+
+    def tableName = "test_query_stmt"
+    def stmt_drop_table =  """ DROP TABLE IF EXISTS ${tableName} """
+    def stmt_drop_table_json = JsonOutput.toJson(new Stmt(stmt: 
stmt_drop_table));
+    resJson = http_post(url, stmt_drop_table_json)
+    obj = new JsonSlurper().parseText(resJson)
+    assertEquals(obj.msg, SUCCESS_MSG)
+    assertEquals(obj.code, SUCCESS_CODE)
+
+    // test create table
+    def stmt2 = """
+        CREATE TABLE ${tableName}
+        (
+            id TINYINT,
+            name CHAR(10) NOT NULL DEFAULT "zs"
+        )
+        COMMENT "test query_stmt table"
+        DISTRIBUTED BY HASH(id)
+        PROPERTIES("replication_num" = "1");
+    """
+    def stmt2_json = JsonOutput.toJson(new Stmt(stmt: stmt2));
+    resJson = http_post(url, stmt2_json)
+    obj = new JsonSlurper().parseText(resJson)
+    assertEquals(obj.msg, SUCCESS_MSG)
+    assertEquals(obj.code, SUCCESS_CODE)
+
+    // test insert
+    def stmt3 = " insert into ${tableName} (id,name) values 
(1,'aa'),(2,'bb'),(3,'cc')"
+    def stmt3_json = JsonOutput.toJson(new Stmt(stmt: stmt3));
+    resJson = http_post(url, stmt3_json)
+    obj = new JsonSlurper().parseText(resJson)
+    assertEquals(obj.msg, SUCCESS_MSG)
+    assertEquals(obj.code, SUCCESS_CODE)
+
+    // test select
+    def stmt4 = " select * from ${tableName}"
+    def stmt4_json = JsonOutput.toJson(new Stmt(stmt: stmt4));
+    resJson = http_post(url, stmt4_json)
+    // println(resJson)
+    obj = new JsonSlurper().parseText(resJson)
+    assertEquals(obj.msg, SUCCESS_MSG)
+    assertEquals(obj.code, SUCCESS_CODE)
+    // we can only check the number is correctly
+    assertEquals(obj.data.data.size, 3)
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to