From 413884d87f88d9bf5c5cab2bc7186f67bd73109b Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Fri, 22 May 2020 13:35:29 -0700 Subject: [PATCH] Update start time for readloop started, check RTT on flapper test Signed-off-by: Derek Collison --- server/client.go | 5 ++++- test/service_latency_test.go | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/server/client.go b/server/client.go index b90c6eff..57fd1901 100644 --- a/server/client.go +++ b/server/client.go @@ -894,7 +894,10 @@ func (c *client) readLoop() { // Check the per-account-cache for closed subscriptions cpacc := c.kind == ROUTER || c.kind == GATEWAY // Last per-account-cache check for closed subscriptions - lpacc := time.Now() + now := time.Now() + lpacc := now + // Update our notion of when we started. Useful for better initial RTT estimation. + c.start = now c.mu.Unlock() defer func() { diff --git a/test/service_latency_test.go b/test/service_latency_test.go index 7caf9d4d..47f178e0 100644 --- a/test/service_latency_test.go +++ b/test/service_latency_test.go @@ -705,6 +705,9 @@ func TestServiceLatencyWithQueueSubscribersAndNames(t *testing.T) { nc.Flush() } + // Wait for them all to propagate. + time.Sleep(100 * time.Millisecond) + doRequest := func() { nc := clientConnect(t, selectServer(), "bar") defer nc.Close() @@ -731,6 +734,13 @@ func TestServiceLatencyWithQueueSubscribersAndNames(t *testing.T) { json.Unmarshal(msg.Data, &sl) rlock.Lock() results[sl.Responder.Name] += sl.ServiceLatency + // This test is measuring for sampling and service latency. + // In a loaded test, like on Travis, our RTT estimation for + // the responder may be off slightly. So we check and compensate + // for that here. + if sl.Responder.RTT > 25*time.Millisecond { + results[sl.Responder.Name] += sl.Responder.RTT + } serviced[sl.Responder.Name]++ rlock.Unlock() if r := atomic.AddInt32(&received, 1); r >= toSend {