MCPcopy
hub / github.com/nats-io/nats.go / TestJetStreamSubscribe_ConfigCantChange

Function TestJetStreamSubscribe_ConfigCantChange

test/js_test.go:6233–6400  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

6231}
6232
6233func TestJetStreamSubscribe_ConfigCantChange(t *testing.T) {
6234 s := RunBasicJetStreamServer()
6235 defer shutdownJSServerAndRemoveStorage(t, s)
6236
6237 nc, js := jsClient(t, s)
6238 defer nc.Close()
6239
6240 var err error
6241
6242 // Create the stream using our client API.
6243 _, err = js.AddStream(&nats.StreamConfig{
6244 Name: "TEST",
6245 Subjects: []string{"foo"},
6246 })
6247 if err != nil {
6248 t.Fatalf("Unexpected error: %v", err)
6249 }
6250
6251 for _, test := range []struct {
6252 name string
6253 first nats.SubOpt
6254 second nats.SubOpt
6255 }{
6256 {"description", nats.Description("a"), nats.Description("b")},
6257 {"deliver policy", nats.DeliverAll(), nats.DeliverLast()},
6258 {"optional start sequence", nats.StartSequence(1), nats.StartSequence(10)},
6259 {"optional start time", nats.StartTime(time.Now()), nats.StartTime(time.Now().Add(-2 * time.Hour))},
6260 {"ack wait", nats.AckWait(10 * time.Second), nats.AckWait(15 * time.Second)},
6261 {"max deliver", nats.MaxDeliver(3), nats.MaxDeliver(5)},
6262 {"replay policy", nats.ReplayOriginal(), nats.ReplayInstant()},
6263 {"max waiting", nats.PullMaxWaiting(10), nats.PullMaxWaiting(20)},
6264 {"max ack pending", nats.MaxAckPending(10), nats.MaxAckPending(20)},
6265 } {
6266 t.Run(test.name, func(t *testing.T) {
6267 durName := nuid.Next()
6268 sub, err := js.PullSubscribe("foo", durName, test.first)
6269 if err != nil {
6270 t.Fatalf("Error on subscribe: %v", err)
6271 }
6272 // Once it is created, options can't be changed.
6273 _, err = js.PullSubscribe("foo", durName, test.second)
6274 if err == nil || !strings.Contains(err.Error(), test.name) {
6275 t.Fatalf("Unexpected error: %v", err)
6276 }
6277 sub.Unsubscribe()
6278 })
6279 }
6280
6281 for _, test := range []struct {
6282 name string
6283 cc *nats.ConsumerConfig
6284 opt nats.SubOpt
6285 }{
6286 {"ack policy", &nats.ConsumerConfig{AckPolicy: nats.AckAllPolicy}, nats.AckNone()},
6287 {"rate limit", &nats.ConsumerConfig{RateLimit: 10}, nats.RateLimit(100)},
6288 {"flow control", &nats.ConsumerConfig{FlowControl: false}, nats.EnableFlowControl()},
6289 {"heartbeat", &nats.ConsumerConfig{Heartbeat: 10 * time.Second}, nats.IdleHeartbeat(20 * time.Second)},
6290 } {

Callers

nothing calls this directly

Calls 14

FatalfMethod · 0.80
UnsubscribeMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
AddStreamMethod · 0.65
DescriptionMethod · 0.65
AddMethod · 0.65
NextMethod · 0.65
PullSubscribeMethod · 0.65
ErrorMethod · 0.65
AddConsumerMethod · 0.65

Tested by

no test coverage detected