From e31bf5c66debe15a5ec1f330ab872fd95db8eb37 Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Thu, 29 Jun 2023 16:10:31 -0700 Subject: [PATCH 1/2] Added reverse flow to the mc leafnode test Signed-off-by: Derek Collison --- server/leafnode_test.go | 43 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/server/leafnode_test.go b/server/leafnode_test.go index b58e2df7..68c46c91 100644 --- a/server/leafnode_test.go +++ b/server/leafnode_test.go @@ -5093,14 +5093,17 @@ func TestLeafNodeWithWeightedDQRequestsToSuperClusterWithStreamImportAccounts(t { stream: { account: STL, subject: "REQUEST"} } { stream: { account: KSC, subject: "REQUEST"} } ] + exports [ { stream: "RESPONSE" } ] } STL { users = [ { user: "stl", pass: "p" } ] exports [ { stream: "REQUEST" } ] + imports [ { stream: { account: EFG, subject: "RESPONSE"} } ] } KSC { users = [ { user: "ksc", pass: "p" } ] exports [ { stream: "REQUEST" } ] + imports [ { stream: { account: EFG, subject: "RESPONSE"} } ] } $SYS { users = [ { user: "admin", pass: "s3cr3t!" } ] } }` @@ -5131,7 +5134,7 @@ func TestLeafNodeWithWeightedDQRequestsToSuperClusterWithStreamImportAccounts(t remotes [ { urls: [ %s ] } { urls: [ %s ] } - { urls: [ %s ] ; deny_export: REQUEST} + { urls: [ %s ] ; deny_export: [REQUEST, RESPONSE], deny_import: RESPONSE } ] }` @@ -5339,4 +5342,42 @@ func TestLeafNodeWithWeightedDQRequestsToSuperClusterWithStreamImportAccounts(t return fmt.Errorf("Not all received: %d vs %d", total, num) }) require_True(t, r2.Load() > r1.Load()) + + // Now check opposite flow for responses. + + // Create 10 subscribers. + var rsubs []*nats.Subscription + + for i := 0; i < 10; i++ { + nc, _ := jsClientConnect(t, ln.randomServer()) + defer nc.Close() + sub, err := nc.QueueSubscribeSync("RESPONSE", "SA") + require_NoError(t, err) + nc.Flush() + rsubs = append(rsubs, sub) + } + + nc, _ = jsClientConnect(t, ln.randomServer()) + defer nc.Close() + _, err := nc.SubscribeSync("RESPONSE") + require_NoError(t, err) + nc.Flush() + + // Now connect and send responses from EFG in cloud. + nc, _ = jsClientConnect(t, sc.randomServer(), nats.UserInfo("efg", "p")) + + for i := 0; i < 100; i++ { + require_NoError(t, nc.Publish("RESPONSE", []byte("OK"))) + } + nc.Flush() + + checkAllRespReceived := func() error { + p := pending(rsubs) + if p == 100 { + return nil + } + return fmt.Errorf("Not all responses received: %d vs %d", p, 100) + } + + checkFor(t, time.Second, 200*time.Millisecond, checkAllRespReceived) } From b207984a84da75078953c4561127afb3191c0331 Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Fri, 30 Jun 2023 10:12:39 -0700 Subject: [PATCH 2/2] Made cloud clusters 5 nodes each Signed-off-by: Derek Collison --- server/leafnode_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/leafnode_test.go b/server/leafnode_test.go index 68c46c91..ade5ce85 100644 --- a/server/leafnode_test.go +++ b/server/leafnode_test.go @@ -5108,7 +5108,7 @@ func TestLeafNodeWithWeightedDQRequestsToSuperClusterWithStreamImportAccounts(t $SYS { users = [ { user: "admin", pass: "s3cr3t!" } ] } }` - sc := createJetStreamSuperClusterWithTemplate(t, tmpl, 3, 2) + sc := createJetStreamSuperClusterWithTemplate(t, tmpl, 5, 2) defer sc.shutdown() // Now create a leafnode cluster that has 2 LNs, one to each cluster but on separate accounts, ONE and TWO.