(t *testing.T)
| 6231 | } |
| 6232 | |
| 6233 | func 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 | } { |
nothing calls this directly
no test coverage detected