1 Star 0 Fork 1

sks126/nats.go

forked from Gitee 极速下载/nats.go 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
norace_test.go 2.33 KB
一键复制 编辑 原始数据 按行查看 历史
Ivan Kozlovic 提交于 2020-07-07 17:00 . [ADDED] RetryOnFailedConnect option
// Copyright 2019 The NATS Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build !race
package nats
import (
"testing"
"time"
)
func TestNoRaceParseStateReconnectFunctionality(t *testing.T) {
ts := RunServerOnPort(TEST_PORT)
ch := make(chan bool)
opts := reconnectOpts
dch := make(chan bool)
dErrCh := make(chan bool)
opts.DisconnectedErrCB = func(_ *Conn, _ error) {
dErrCh <- true
}
opts.DisconnectedCB = func(_ *Conn) {
dch <- true
}
opts.NoCallbacksAfterClientClose = true
nc, errc := opts.Connect()
if errc != nil {
t.Fatalf("Failed to create a connection: %v\n", errc)
}
ec, errec := NewEncodedConn(nc, DEFAULT_ENCODER)
if errec != nil {
nc.Close()
t.Fatalf("Failed to create an encoded connection: %v\n", errec)
}
defer ec.Close()
testString := "bar"
ec.Subscribe("foo", func(s string) {
if s != testString {
t.Fatal("String doesn't match")
}
ch <- true
})
ec.Flush()
// Simulate partialState, this needs to be cleared.
nc.mu.Lock()
nc.ps.state = OP_PON
nc.mu.Unlock()
ts.Shutdown()
// server is stopped here...
if err := Wait(dErrCh); err != nil {
t.Fatal("Did not get the DisconnectedErrCB")
}
select {
case <-dch:
t.Fatal("Get the DEPRECATED DisconnectedCB while DisconnectedErrCB was set")
default:
}
if err := ec.Publish("foo", testString); err != nil {
t.Fatalf("Failed to publish message: %v\n", err)
}
ts = RunServerOnPort(TEST_PORT)
defer ts.Shutdown()
if err := ec.FlushTimeout(5 * time.Second); err != nil {
t.Fatalf("Error on Flush: %v", err)
}
if err := Wait(ch); err != nil {
t.Fatal("Did not receive our message")
}
expectedReconnectCount := uint64(1)
reconnectedCount := ec.Conn.Stats().Reconnects
if reconnectedCount != expectedReconnectCount {
t.Fatalf("Reconnect count incorrect: %d vs %d\n",
reconnectedCount, expectedReconnectCount)
}
nc.Close()
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wslinjianjun/nats.go.git
git@gitee.com:wslinjianjun/nats.go.git
wslinjianjun
nats.go
nats.go
master

搜索帮助