Skip to content

Commit 7df5fb4

Browse files
author
James Cor
committed
temporary tests
1 parent 1f33ea3 commit 7df5fb4

File tree

4 files changed

+128
-26
lines changed

4 files changed

+128
-26
lines changed

enginetest/memory_engine_test.go

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -202,23 +202,15 @@ func TestSingleQueryPrepared(t *testing.T) {
202202

203203
// Convenience test for debugging a single query. Unskip and set to the desired query.
204204
func TestSingleScript(t *testing.T) {
205-
t.Skip()
205+
//t.Skip()
206206
var scripts = []queries.ScriptTest{
207207
{
208-
Name: "AS OF propagates to nested CALLs",
208+
Name: "test",
209209
SetUpScript: []string{},
210210
Assertions: []queries.ScriptTestAssertion{
211211
{
212-
Query: "create procedure create_proc() create table t (i int primary key, j int);",
213-
Expected: []sql.Row{
214-
{types.NewOkResult(0)},
215-
},
216-
},
217-
{
218-
Query: "call create_proc()",
219-
Expected: []sql.Row{
220-
{types.NewOkResult(0)},
221-
},
212+
Query: "select @@hostname, @@port, @@max_connections",
213+
Expected: []sql.Row{},
222214
},
223215
},
224216
},

enginetest/server_engine_test.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,3 +375,88 @@ func TestServerPreparedStatements(t *testing.T) {
375375
})
376376
}
377377
}
378+
379+
func TestServerQueries(t *testing.T) {
380+
port, perr := findEmptyPort()
381+
require.NoError(t, perr)
382+
383+
s, serr := initTestServer(port)
384+
require.NoError(t, serr)
385+
386+
go s.Start()
387+
defer s.Close()
388+
389+
tests := []serverScriptTest{
390+
{
391+
name: "test that config variables are properly set",
392+
setup: []string{},
393+
assertions: []serverScriptTestAssertion{
394+
{
395+
query: "select @@hostname, @@port",
396+
//query: "select @@hostname, @@port, @@max_connections",
397+
isExec: false,
398+
expectedRows: []any{
399+
sql.Row{"macbook.local", port},
400+
},
401+
checkRows: func(t *testing.T, rows *gosql.Rows, expectedRows []any) (bool, error) {
402+
var resHostname string
403+
var resPort int
404+
var rowNum int
405+
for rows.Next() {
406+
if err := rows.Scan(&resHostname, &resPort); err != nil {
407+
return false, err
408+
}
409+
if rowNum >= len(expectedRows) {
410+
return false, nil
411+
}
412+
expectedRow := expectedRows[rowNum].(sql.Row)
413+
require.Equal(t, expectedRow[0].(string), resHostname)
414+
require.Equal(t, expectedRow[1].(int), resPort)
415+
}
416+
return true, nil
417+
},
418+
},
419+
},
420+
},
421+
}
422+
423+
for _, test := range tests {
424+
t.Run(test.name, func(t *testing.T) {
425+
conn, cerr := dbr.Open("mysql", fmt.Sprintf(noUserFmt, address, port), nil)
426+
require.NoError(t, cerr)
427+
defer conn.Close()
428+
commonSetup := []string{
429+
"create database test_db;",
430+
"use test_db;",
431+
}
432+
commonTeardown := []string{
433+
"drop database test_db",
434+
}
435+
for _, stmt := range append(commonSetup, test.setup...) {
436+
_, err := conn.Exec(stmt)
437+
require.NoError(t, err)
438+
}
439+
for _, assertion := range test.assertions {
440+
t.Run(assertion.query, func(t *testing.T) {
441+
if assertion.skip {
442+
t.Skip()
443+
}
444+
rows, err := conn.Query(assertion.query, assertion.args...)
445+
if assertion.expectErr {
446+
require.Error(t, err)
447+
return
448+
}
449+
require.NoError(t, err)
450+
451+
ok, err := assertion.checkRows(t, rows, assertion.expectedRows)
452+
require.NoError(t, err)
453+
require.True(t, ok)
454+
})
455+
}
456+
for _, stmt := range append(commonTeardown) {
457+
_, err := conn.Exec(stmt)
458+
require.NoError(t, err)
459+
}
460+
})
461+
}
462+
}

server/server.go

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"errors"
1919
"fmt"
2020
"net"
21+
"os"
2122
"strconv"
2223
"time"
2324

@@ -119,13 +120,40 @@ func portInUse(hostPort string) bool {
119120
return false
120121
}
121122

122-
func updateSystemVariables(cfg mysql.ListenerConfig) {
123-
_, port, _ := net.SplitHostPort(cfg.Listener.Addr().String())
124-
portInt, _ := strconv.ParseInt(port, 10, 64)
125-
sql.SystemVariables.AssignValues(map[string]interface{}{
126-
"max_connections": cfg.MaxConns,
127-
"port": portInt,
123+
func getHostname() (string, error) {
124+
hostname, err := os.Hostname()
125+
if err != nil {
126+
return "", err
127+
}
128+
return hostname, nil
129+
}
130+
131+
func updateSystemVariables(cfg mysql.ListenerConfig) error {
132+
hostname, err := getHostname()
133+
if err != nil {
134+
return err
135+
}
136+
_, port, err := net.SplitHostPort(cfg.Listener.Addr().String())
137+
if err != nil {
138+
return err
139+
}
140+
print(port)
141+
portInt, err := strconv.ParseInt(port, 10, 64)
142+
if err != nil {
143+
return err
144+
}
145+
if portInt == 0 {
146+
}
147+
err = sql.SystemVariables.AssignValues(map[string]interface{}{
148+
"port": portInt,
149+
"hostname": hostname,
150+
// TODO: the rest
151+
//"max_connections": cfg.MaxConns,
128152
})
153+
if err != nil {
154+
return err
155+
}
156+
return nil
129157
}
130158

131159
func newServerFromHandler(cfg Config, e *sqle.Engine, sm *SessionManager, handler mysql.Handler, sel ServerEventListener) (*Server, error) {
@@ -182,7 +210,10 @@ func newServerFromHandler(cfg Config, e *sqle.Engine, sm *SessionManager, handle
182210
return nil, err
183211
}
184212

185-
updateSystemVariables(listenerCfg)
213+
err = updateSystemVariables(listenerCfg)
214+
if err != nil {
215+
return nil, err
216+
}
186217

187218
return &Server{
188219
Listener: protocolListener,

sql/variables/system_variables.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package variables
1717
import (
1818
"fmt"
1919
"math"
20-
"os"
2120
"strings"
2221
"sync"
2322
"time"
@@ -188,11 +187,6 @@ func init() {
188187
InitSystemVariables()
189188
}
190189

191-
func getHostname() string {
192-
hostname, _ := os.Hostname()
193-
return hostname
194-
}
195-
196190
// systemVars is the internal collection of all MySQL system variables according to the following pages:
197191
// https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
198192
// https://dev.mysql.com/doc/refman/8.0/en/replication-options-gtids.html
@@ -1015,7 +1009,7 @@ var systemVars = map[string]sql.SystemVariable{
10151009
Dynamic: false,
10161010
SetVarHintApplies: false,
10171011
Type: types.NewSystemStringType("hostname"),
1018-
Default: getHostname(),
1012+
Default: "",
10191013
},
10201014
"immediate_server_version": &sql.MysqlSystemVariable{
10211015
Name: "immediate_server_version",

0 commit comments

Comments
 (0)