From 8f01b23e2d6b0f7cdde0ad1004cd54bffb819e4d Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Tue, 12 Sep 2023 18:27:39 -0500
Subject: [PATCH] don't create a new connection for each step, just each test
 run

---
 test/runner.go             | 25 ++++++++++++++++---------
 test/tests/simple_query.go |  2 ++
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/test/runner.go b/test/runner.go
index 4cd235c5..70e1aee7 100644
--- a/test/runner.go
+++ b/test/runner.go
@@ -10,7 +10,6 @@ import (
 	"pggat/lib/gat/pool"
 	"pggat/lib/gat/pool/recipe"
 	"pggat/lib/gsql"
-	"pggat/lib/util/maps"
 	"pggat/test/inst"
 )
 
@@ -18,7 +17,8 @@ type Runner struct {
 	config Config
 	test   Test
 
-	pools map[string]*pool.Pool
+	pools   map[string]*pool.Pool
+	control fed.Conn
 }
 
 func MakeRunner(config Config, test Test) Runner {
@@ -30,7 +30,19 @@ func MakeRunner(config Config, test Test) Runner {
 
 func (T *Runner) setup() error {
 	// get pools ready
-	maps.Clear(T.pools)
+	if T.control != nil {
+		_ = T.control.Close()
+	}
+	var err error
+	T.control, _, err = T.config.Peer.Dial()
+	if err != nil {
+		return err
+	}
+
+	for name, p := range T.pools {
+		delete(T.pools, name)
+		p.Close()
+	}
 	if T.pools == nil {
 		T.pools = make(map[string]*pool.Pool)
 	}
@@ -62,11 +74,6 @@ func (T *Runner) run(pkts ...fed.Packet) error {
 			return err
 		}
 
-		server, _, err := T.config.Peer.Dial()
-		if err != nil {
-			return err
-		}
-
 		for {
 			p, err := client.ReadPacket(true)
 			if err != nil {
@@ -76,7 +83,7 @@ func (T *Runner) run(pkts ...fed.Packet) error {
 				return err
 			}
 
-			clientErr, serverErr := bouncers.Bounce(&client, server, p)
+			clientErr, serverErr := bouncers.Bounce(&client, T.control, p)
 			if clientErr != nil {
 				return clientErr
 			}
diff --git a/test/tests/simple_query.go b/test/tests/simple_query.go
index 638ec681..fa662b84 100644
--- a/test/tests/simple_query.go
+++ b/test/tests/simple_query.go
@@ -8,5 +8,7 @@ import (
 var SimpleQuery = test.Test{
 	Instructions: []inst.Instruction{
 		inst.SimpleQuery("select 1;"),
+		inst.SimpleQuery("SELECT 2, 3, 4;"),
+		inst.SimpleQuery("akfdfsjkfds;"),
 	},
 }
-- 
GitLab