Files
MyGoNavi/internal/app/methods_db_tdengine_agent_regression_test.go
Syngnat 2428fe6cc5 🐛 fix(tdengine): 修复查询结果仅显示执行日志
- TDengine 只读查询跳过不支持的多结果集探测
- 保证可选驱动代理通过普通查询返回完整行列数据
- 补充应用层与驱动层回归测试

Fixes #610
2026-07-19 13:32:52 +08:00

65 lines
2.0 KiB
Go

package app
import (
"context"
"errors"
"reflect"
"testing"
"GoNavi-Wails/internal/connection"
"GoNavi-Wails/internal/db"
)
type fakeTDengineOptionalAgentDB struct {
*fakeUnsupportedMultiResultDB
}
func (*fakeTDengineOptionalAgentDB) OpenSessionExecer(context.Context) (db.StatementExecer, error) {
return nil, errors.New("TDengine driver does not support pinned sessions")
}
func TestDBQueryMultiTDengineAgentSelectUsesPlainQuery(t *testing.T) {
query := "SELECT ts, current FROM meters ORDER BY ts DESC LIMIT 1"
baseDB := &fakeBatchWriteDB{
queryMap: map[string][]map[string]interface{}{
query: {{"ts": "2026-07-19T00:00:00+08:00", "current": 10.2}},
},
fieldMap: map[string][]string{
query: {"ts", "current"},
},
queryErr: map[string]error{},
}
fakeDB := &fakeTDengineOptionalAgentDB{
fakeUnsupportedMultiResultDB: &fakeUnsupportedMultiResultDB{fakeBatchWriteDB: baseDB},
}
installFakeOptionalDriverDatabase(t, fakeDB)
app := NewApp()
result := app.DBQueryMulti(
connection.ConnectionConfig{Type: "tdengine", Host: "127.0.0.1", Port: 6041},
"power",
query,
"tdengine-agent-select",
)
if !result.Success {
t.Fatalf("TDengine agent SELECT returned failure: %s", result.Message)
}
resultSets, ok := result.Data.([]connection.ResultSetData)
if !ok || len(resultSets) != 1 {
t.Fatalf("TDengine agent SELECT result sets = %#v, want one result set", result.Data)
}
if !reflect.DeepEqual(resultSets[0].Columns, []string{"ts", "current"}) {
t.Fatalf("TDengine agent SELECT columns = %#v", resultSets[0].Columns)
}
if len(resultSets[0].Rows) != 1 || resultSets[0].Rows[0]["current"] != 10.2 {
t.Fatalf("TDengine agent SELECT rows = %#v, want one data row", resultSets[0].Rows)
}
if fakeDB.multiCalls != 0 {
t.Fatalf("TDengine SELECT must not probe unsupported multi-result API, calls=%d", fakeDB.multiCalls)
}
if baseDB.queryCalls != 1 {
t.Fatalf("TDengine SELECT should execute exactly once through plain Query, calls=%d", baseDB.queryCalls)
}
}