InfluxDB: Update SQL language url specification (#79408)

* accept urls with or without port

* remove redundant comment

* remove redundant function
This commit is contained in:
ismail simsek 2023-12-13 16:01:01 +01:00 committed by GitHub
parent 46192d676d
commit 03da1a3f3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 71 additions and 56 deletions

View File

@ -11,33 +11,49 @@ import (
"github.com/apache/arrow/go/v13/arrow/flight/flightsql/example"
"github.com/apache/arrow/go/v13/arrow/memory"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
)
func TestIntegration_QueryData(t *testing.T) {
type FSQLTestSuite struct {
suite.Suite
db *sql.DB
server flight.Server
}
func (suite *FSQLTestSuite) SetupTest() {
db, err := example.CreateDB()
require.NoError(t, err)
defer func(db *sql.DB) {
err := db.Close()
assert.NoError(t, err)
}(db)
require.NoError(suite.T(), err)
sqliteServer, err := example.NewSQLiteFlightSQLServer(db)
require.NoError(t, err)
require.NoError(suite.T(), err)
sqliteServer.Alloc = memory.NewCheckedAllocator(memory.DefaultAllocator)
server := flight.NewServerWithMiddleware(nil)
server.RegisterFlightService(flightsql.NewFlightServer(sqliteServer))
err = server.Init("localhost:12345")
require.NoError(t, err)
require.NoError(suite.T(), err)
go func() {
err := server.Serve()
assert.NoError(t, err)
require.NoError(suite.T(), err)
}()
defer server.Shutdown()
suite.db = db
suite.server = server
}
func (suite *FSQLTestSuite) AfterTest(suiteName, testName string) {
err := suite.db.Close()
require.NoError(suite.T(), err)
suite.server.Shutdown()
}
func TestFSQLTestSuite(t *testing.T) {
suite.Run(t, new(FSQLTestSuite))
}
func (suite *FSQLTestSuite) TestIntegration_QueryData() {
suite.Run("should run simple query data", func() {
resp, err := Query(
context.Background(),
&models.DatasourceInfo{
@ -58,29 +74,31 @@ func TestIntegration_QueryData(t *testing.T) {
Queries: []backend.DataQuery{
{
RefID: "A",
JSON: mustQueryJSON(t, "A", "select * from intTable"),
JSON: mustQueryJSON(suite.T(), "A", "select * from intTable"),
},
{
RefID: "B",
JSON: mustQueryJSON(t, "B", "select 1"),
JSON: mustQueryJSON(suite.T(), "B", "select 1"),
},
},
},
)
require.NoError(t, err)
require.Len(t, resp.Responses, 2)
require.NoError(suite.T(), err)
require.Len(suite.T(), resp.Responses, 2)
respA := resp.Responses["A"]
require.NoError(t, respA.Error)
require.NoError(suite.T(), respA.Error)
frame := respA.Frames[0]
require.Equal(t, "id", frame.Fields[0].Name)
require.Equal(t, "keyName", frame.Fields[1].Name)
require.Equal(t, "value", frame.Fields[2].Name)
require.Equal(t, "foreignId", frame.Fields[3].Name)
require.Equal(suite.T(), "id", frame.Fields[0].Name)
require.Equal(suite.T(), "keyName", frame.Fields[1].Name)
require.Equal(suite.T(), "value", frame.Fields[2].Name)
require.Equal(suite.T(), "foreignId", frame.Fields[3].Name)
for _, f := range frame.Fields {
assert.Equal(t, 4, f.Len())
require.Equal(suite.T(), 4, f.Len())
}
})
}
func mustQueryJSON(t *testing.T, refID, sql string) []byte {

View File

@ -3,9 +3,7 @@ package fsql
import (
"context"
"fmt"
"net"
"net/url"
"strings"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"google.golang.org/grpc/metadata"
@ -94,11 +92,10 @@ func runnerFromDataSource(dsInfo *models.DatasourceInfo) (*runner, error) {
return nil, fmt.Errorf("bad URL : %s", err)
}
host, port, err := net.SplitHostPort(u.Host)
if err != nil {
return nil, fmt.Errorf("bad URL : %s", err)
addr := u.Host
if u.Port() == "" {
addr += ":443"
}
addr := strings.Join([]string{host, port}, ":")
md := metadata.MD{}
for _, m := range dsInfo.Metadata {