mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Fixed TestPing test
The test was not checking that PINGs were sent, however, without disabling the first short ping and with a very low interval, there was chance on Travis that the first short ping was sent before the client had connected, which would break the NATS client protocol that expects to receive a PONG to initial PING (after CONNECT). The client library could arguably be updated to accept PING during the CONNECT phase. Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
This commit is contained in:
@@ -14,11 +14,11 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"net"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/nats-io/nats.go"
|
||||
)
|
||||
|
||||
const PING_CLIENT_PORT = 11228
|
||||
@@ -28,17 +28,41 @@ var DefaultPingOptions = Options{
|
||||
Port: PING_CLIENT_PORT,
|
||||
NoLog: true,
|
||||
NoSigs: true,
|
||||
PingInterval: 5 * time.Millisecond,
|
||||
PingInterval: 50 * time.Millisecond,
|
||||
}
|
||||
|
||||
func TestPing(t *testing.T) {
|
||||
s := RunServer(&DefaultPingOptions)
|
||||
o := DefaultPingOptions
|
||||
o.DisableShortFirstPing = true
|
||||
s := RunServer(&o)
|
||||
defer s.Shutdown()
|
||||
|
||||
nc, err := nats.Connect(fmt.Sprintf("nats://127.0.0.1:%d", PING_CLIENT_PORT))
|
||||
c, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", PING_CLIENT_PORT))
|
||||
if err != nil {
|
||||
t.Fatalf("Error creating client: %v\n", err)
|
||||
t.Fatalf("Error connecting: %v", err)
|
||||
}
|
||||
defer c.Close()
|
||||
br := bufio.NewReader(c)
|
||||
// Wait for INFO
|
||||
br.ReadLine()
|
||||
// Send CONNECT
|
||||
c.Write([]byte("CONNECT {\"verbose\":false}\r\nPING\r\n"))
|
||||
// Wait for first PONG
|
||||
br.ReadLine()
|
||||
// Wait for PING
|
||||
start := time.Now()
|
||||
for i := 0; i < 3; i++ {
|
||||
l, _, err := br.ReadLine()
|
||||
if err != nil {
|
||||
t.Fatalf("Error: %v", err)
|
||||
}
|
||||
if string(l) != "PING" {
|
||||
t.Fatalf("Expected PING, got %q", l)
|
||||
}
|
||||
if dur := time.Since(start); dur < 25*time.Millisecond || dur > 75*time.Millisecond {
|
||||
t.Fatalf("Pings duration off: %v", dur)
|
||||
}
|
||||
c.Write([]byte(pongProto))
|
||||
start = time.Now()
|
||||
}
|
||||
defer nc.Close()
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user