diff --git a/test/runner.go b/test/runner.go
index 4cd235c567649b01386d5bcb5cdf1d600a44d9c7..70e1aee7ae296d6263aab34bd251865d94312b58 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 638ec6819ba375d84a08d755378b24bdde6c5bd5..fa662b8477eb4ff30d373dd0808e6491c5e2e1df 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;"),
 	},
 }