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

Function TestPublishWithScheduleCron

jetstream/test/publish_test.go:2187–2249  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2185}
2186
2187func TestPublishWithScheduleCron(t *testing.T) {
2188 srv := RunBasicJetStreamServer()
2189 defer shutdownJSServerAndRemoveStorage(t, srv)
2190 nc, err := nats.Connect(srv.ClientURL())
2191 if err != nil {
2192 t.Fatalf("Unexpected error: %v", err)
2193 }
2194 defer nc.Close()
2195
2196 js, err := jetstream.New(nc)
2197 if err != nil {
2198 t.Fatalf("Unexpected error: %v", err)
2199 }
2200
2201 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
2202 defer cancel()
2203 stream, err := js.CreateStream(ctx, jetstream.StreamConfig{
2204 Name: "SCHED",
2205 Subjects: []string{"schedule.>", "target.>"},
2206 AllowMsgSchedules: true,
2207 })
2208 if err != nil {
2209 t.Fatalf("Unexpected error: %v", err)
2210 }
2211
2212 t.Run("6-field cron", func(t *testing.T) {
2213 ack, err := js.Publish(ctx, "schedule.cron1", nil,
2214 jetstream.WithScheduleCron("0 30 * * * *"),
2215 jetstream.WithScheduleTarget("target.cron1"),
2216 )
2217 if err != nil {
2218 t.Fatalf("Unexpected error: %v", err)
2219 }
2220
2221 // check if correct headers are set
2222 gotMsg, err := stream.GetMsg(ctx, ack.Sequence)
2223 if err != nil {
2224 t.Fatalf("Unexpected error: %v", err)
2225 }
2226 if got := gotMsg.Header.Get(jetstream.ScheduleHeader); got != "0 30 * * * *" {
2227 t.Fatalf("Expected schedule header %q; got: %q", "0 30 * * * *", got)
2228 }
2229 })
2230
2231 t.Run("predefined schedule", func(t *testing.T) {
2232 ack, err := js.Publish(ctx, "schedule.cron2", nil,
2233 jetstream.WithScheduleCron(jetstream.ScheduleHourly),
2234 jetstream.WithScheduleTarget("target.cron2"),
2235 )
2236 if err != nil {
2237 t.Fatalf("Unexpected error: %v", err)
2238 }
2239
2240 // check if correct headers are set
2241 gotMsg, err := stream.GetMsg(ctx, ack.Sequence)
2242 if err != nil {
2243 t.Fatalf("Unexpected error: %v", err)
2244 }

Callers

nothing calls this directly

Calls 12

NewFunction · 0.92
WithScheduleCronFunction · 0.92
WithScheduleTargetFunction · 0.92
ConnectMethod · 0.80
FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
CreateStreamMethod · 0.65
PublishMethod · 0.65
GetMsgMethod · 0.65
GetMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected