NO COMMIT, demonstrate JS conn count

Signed-off-by: Matthias Hanel <mh@synadia.com>
This commit is contained in:
Matthias Hanel
2021-09-23 11:53:34 -04:00
parent 7d389169d5
commit 6fe3939ca4

View File

@@ -5610,6 +5610,71 @@ func TestJetStreamClusterSuperClusterEphemeralCleanup(t *testing.T) {
}
}
func TestJetStreamSuperClusterConnectionCount(t *testing.T) {
sc := createJetStreamSuperClusterWithTemplate(t, jsClusterAccountsTempl, 3, 2)
defer sc.shutdown()
sysNc := natsConnect(t, sc.randomServer().ClientURL(), nats.UserInfo("admin", "s3cr3t!"))
defer sysNc.Close()
_, err := sysNc.Request(fmt.Sprintf(accReqSubj, "ONE", "CONNS"), nil, time.Second)
// this is a timeout as the server only responds when it has connections....
// not convinced this should be that way, but also not the issue to investigate.
require_True(t, err == nats.ErrTimeout)
for i := 1; i <= 2; i++ {
func() {
nc := natsConnect(t, sc.clusterForName(fmt.Sprintf("C%d", i)).randomServer().ClientURL())
defer nc.Close()
js, err := nc.JetStream()
require_NoError(t, err)
name := fmt.Sprintf("foo%d", 1)
_, err = js.AddStream(&nats.StreamConfig{
Name: name,
Subjects: []string{name},
Replicas: 3})
require_NoError(t, err)
}()
}
func() {
nc := natsConnect(t, sc.clusterForName("C1").randomServer().ClientURL())
defer nc.Close()
js, err := nc.JetStream()
require_NoError(t, err)
_, err = js.AddStream(&nats.StreamConfig{
Name: "src",
Sources: []*nats.StreamSource{{Name: "foo.1"}, {Name: "foo.2"}},
Replicas: 3})
require_NoError(t, err)
}()
func() {
nc := natsConnect(t, sc.clusterForName("C2").randomServer().ClientURL())
defer nc.Close()
js, err := nc.JetStream()
require_NoError(t, err)
_, err = js.AddStream(&nats.StreamConfig{
Name: "mir",
Mirror: &nats.StreamSource{Name: "foo.2"},
Replicas: 3})
require_NoError(t, err)
}()
// give it some time for the conn count to propagate among server
time.Sleep(2 * time.Minute)
// AT THIS POINT THERE IS NO ACTIVE NATS CLIENT CONNECTION
// Thus, the question: hat is the expected connection count?
m, err := sysNc.Request(fmt.Sprintf(accReqSubj, "ONE", "CONNS"), nil, time.Second)
require_NoError(t, err) // TODO the connection count should be 0, thus the request should have timed out (same as above)
// for nicer parsing
o := &AccountNumConns{}
json.Unmarshal(m.Data, o)
p, _ := json.MarshalIndent(o, "", " ")
t.Logf("%s\n", p)
// TODO I believe this should be 0
require_True(t, o.Conns == 0)
}
func TestJetStreamSuperClusterDirectConsumersBrokenGateways(t *testing.T) {
sc := createJetStreamSuperCluster(t, 1, 2)
defer sc.shutdown()