Skip to content

Commit b4d302a

Browse files
authored
add unit tests (#2)
* add unit tests --------- Co-authored-by: rick <[email protected]>
1 parent 3f04607 commit b4d302a

File tree

2 files changed

+65
-21
lines changed

2 files changed

+65
-21
lines changed

e2e/testing-data-query.yaml

+17-1
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,20 @@ items:
5858
"sql": "DESCRIBE KEYSPACES",
5959
"key": ""
6060
}
61-
61+
expect:
62+
verify:
63+
- any(data.meta.labels, {.key == 'version' and .value == "5.0.3"})
64+
- name: invalid-sql
65+
request:
66+
api: /data/query
67+
method: POST
68+
header:
69+
X-Store-Name: "{{.param.store}}"
70+
body: |
71+
{
72+
"sql": "FAKE KEYSPACES",
73+
"key": ""
74+
}
75+
expect:
76+
verify:
77+
- len(data.items) == 0

pkg/data_query.go

+48-20
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"reflect"
2323
"sort"
2424
"strings"
25+
"sync"
2526
"time"
2627

2728
"github.com/gocql/gocql"
@@ -44,32 +45,50 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
4445
Meta: &server.DataMeta{},
4546
}
4647

47-
// query database and tables
48-
if result.Meta.Databases, err = dbQuery.GetDatabases(ctx); err != nil {
49-
log.Printf("failed to query databases: %v\n", err)
50-
}
48+
wg := sync.WaitGroup{}
5149

52-
if result.Meta.CurrentDatabase = query.Key; query.Key == "" {
53-
if result.Meta.CurrentDatabase, err = dbQuery.GetCurrentDatabase(); err != nil {
54-
log.Printf("failed to query current database: %v\n", err)
50+
wg.Add(1)
51+
go func() {
52+
defer wg.Done()
53+
// query database and tables
54+
if result.Meta.Databases, err = dbQuery.GetDatabases(ctx); err != nil {
55+
log.Printf("failed to query databases: %v\n", err)
5556
}
56-
}
57+
}()
5758

58-
if result.Meta.Tables, err = dbQuery.GetTables(ctx, result.Meta.CurrentDatabase); err != nil {
59-
log.Printf("failed to query tables: %v\n", err)
60-
}
59+
wg.Add(1)
60+
go func() {
61+
defer wg.Done()
62+
63+
if result.Meta.CurrentDatabase = query.Key; query.Key == "" {
64+
if result.Meta.CurrentDatabase, err = dbQuery.GetCurrentDatabase(); err != nil {
65+
log.Printf("failed to query current database: %v\n", err)
66+
}
67+
}
6168

69+
if result.Meta.Tables, err = dbQuery.GetTables(ctx, result.Meta.CurrentDatabase); err != nil {
70+
log.Printf("failed to query tables: %v\n", err)
71+
}
72+
}()
73+
74+
defer wg.Wait()
6275
// query data
6376
if query.Sql == "" {
6477
return
6578
}
6679

6780
query.Sql = dbQuery.GetInnerSQL().ToNativeSQL(query.Sql)
68-
result.Meta.Labels = dbQuery.GetLabels(ctx, query.Sql)
69-
result.Meta.Labels = append(result.Meta.Labels, &server.Pair{
70-
Key: "_native_sql",
71-
Value: query.Sql,
72-
})
81+
82+
wg.Add(1)
83+
go func() {
84+
defer wg.Done()
85+
86+
result.Meta.Labels = dbQuery.GetLabels(ctx, query.Sql)
87+
result.Meta.Labels = append(result.Meta.Labels, &server.Pair{
88+
Key: "_native_sql",
89+
Value: query.Sql,
90+
})
91+
}()
7392

7493
var dataResult *server.DataQueryResult
7594
now := time.Now()
@@ -222,10 +241,7 @@ func (q *commonDataQuery) GetCurrentDatabase() (current string, err error) {
222241

223242
func (q *commonDataQuery) GetLabels(ctx context.Context, sql string) (metadata []*server.Pair) {
224243
metadata = make([]*server.Pair, 0)
225-
if databaseResult, err := sqlQuery(ctx, fmt.Sprintf("explain %s", sql), q.session); err == nil {
226-
if len(databaseResult.Items) != 1 {
227-
return
228-
}
244+
if databaseResult, err := sqlQuery(ctx, fmt.Sprintf("explain %s", sql), q.session); err == nil && len(databaseResult.Items) == 1 {
229245
for _, data := range databaseResult.Items[0].Data {
230246
switch data.Key {
231247
case "type":
@@ -236,6 +252,18 @@ func (q *commonDataQuery) GetLabels(ctx context.Context, sql string) (metadata [
236252
}
237253
}
238254
}
255+
256+
if databaseResult, err := sqlQuery(ctx, "SELECT release_version FROM system.local", q.session); err == nil && len(databaseResult.Items) >= 1 {
257+
for _, data := range databaseResult.Items[0].Data {
258+
switch data.Key {
259+
case "release_version":
260+
metadata = append(metadata, &server.Pair{
261+
Key: "version",
262+
Value: data.Value,
263+
})
264+
}
265+
}
266+
}
239267
return
240268
}
241269

0 commit comments

Comments
 (0)