From 2d5c5d68ce7ff5aa284d3817cda5475e863dfaaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-No=C3=ABl=20Moyne?= Date: Fri, 21 Jul 2023 14:04:09 -0700 Subject: [PATCH] Adds a few tests to verify that addConsumerWithAction also works for named ephemeral consumers as well as for durables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jean-Noël Moyne --- server/jetstream_consumer_test.go | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/server/jetstream_consumer_test.go b/server/jetstream_consumer_test.go index 161f83d2..c82e0806 100644 --- a/server/jetstream_consumer_test.go +++ b/server/jetstream_consumer_test.go @@ -514,6 +514,26 @@ func TestJetStreamConsumerActions(t *testing.T) { AckWait: time.Second * 30, }, ActionUpdate) require_Error(t, err) + + // Create new ephemeral. Should be fine as the consumer doesn't exist already + _, err = mset.addConsumerWithAction(&ConsumerConfig{ + Name: "EPH", + FilterSubjects: []string{"one"}, + AckPolicy: AckExplicit, + DeliverPolicy: DeliverAll, + AckWait: time.Second * 30, + }, ActionCreate) + require_NoError(t, err) + + // Trying to create it again right away. Should error as it already exists (and hasn't been cleaned up yet) + _, err = mset.addConsumerWithAction(&ConsumerConfig{ + Name: "EPH", + FilterSubjects: []string{"one"}, + AckPolicy: AckExplicit, + DeliverPolicy: DeliverAll, + AckWait: time.Second * 30, + }, ActionCreate) + require_Error(t, err) } func TestJetStreamConsumerActionsViaAPI(t *testing.T) { @@ -588,6 +608,40 @@ func TestJetStreamConsumerActionsViaAPI(t *testing.T) { t.Fatalf("expected err, got nil") } + // create a named ephemeral consumer + ccResp.Error = nil + request, err = json.Marshal(&CreateConsumerRequest{ + Action: ActionCreate, + Config: ConsumerConfig{ + Name: "ephemeral", + FilterSubject: "one", + }, + Stream: "TEST", + }) + require_NoError(t, err) + resp, err = nc.Request("$JS.API.CONSUMER.CREATE.TEST.ephemeral", []byte(request), time.Second*6) + require_NoError(t, err) + err = json.Unmarshal(resp.Data, &ccResp) + require_NoError(t, err) + + // re-create existing consumer - which should be an error. + ccResp.Error = nil + request, err = json.Marshal(&CreateConsumerRequest{ + Action: ActionCreate, + Config: ConsumerConfig{ + Name: "ephemeral", + FilterSubject: "one", + }, + Stream: "TEST", + }) + require_NoError(t, err) + resp, err = nc.Request("$JS.API.CONSUMER.CREATE.TEST.ephemeral", []byte(request), time.Second*6) + require_NoError(t, err) + err = json.Unmarshal(resp.Data, &ccResp) + require_NoError(t, err) + if ccResp.Error == nil { + t.Fatalf("expected err, got nil") + } } func TestJetStreamConsumerActionsUnmarshal(t *testing.T) {