(t *testing.T)
| 1525 | } |
| 1526 | |
| 1527 | func TestJetStreamPauseAndResumeConsumer(t *testing.T) { |
| 1528 | srv := RunBasicJetStreamServer() |
| 1529 | defer shutdownJSServerAndRemoveStorage(t, srv) |
| 1530 | |
| 1531 | nc, err := nats.Connect(srv.ClientURL()) |
| 1532 | if err != nil { |
| 1533 | t.Fatalf("Unexpected error: %v", err) |
| 1534 | } |
| 1535 | defer nc.Close() |
| 1536 | |
| 1537 | ctx := context.Background() |
| 1538 | js, err := jetstream.New(nc) |
| 1539 | if err != nil { |
| 1540 | t.Fatalf("Unexpected error: %v", err) |
| 1541 | } |
| 1542 | |
| 1543 | _, err = js.CreateStream(ctx, jetstream.StreamConfig{ |
| 1544 | Name: "TEST", |
| 1545 | Subjects: []string{"foo"}, |
| 1546 | }) |
| 1547 | if err != nil { |
| 1548 | t.Fatalf("Unexpected error: %v", err) |
| 1549 | } |
| 1550 | |
| 1551 | _, err = js.CreateConsumer(ctx, "TEST", jetstream.ConsumerConfig{ |
| 1552 | Durable: "cons", |
| 1553 | AckPolicy: jetstream.AckExplicitPolicy, |
| 1554 | }) |
| 1555 | if err != nil { |
| 1556 | t.Fatalf("Unexpected error: %v", err) |
| 1557 | } |
| 1558 | |
| 1559 | t.Run("pause consumer", func(t *testing.T) { |
| 1560 | pauseUntil := time.Now().Add(1 * time.Minute) |
| 1561 | resp, err := js.PauseConsumer(ctx, "TEST", "cons", pauseUntil) |
| 1562 | if err != nil { |
| 1563 | t.Fatalf("Unexpected error: %v", err) |
| 1564 | } |
| 1565 | |
| 1566 | if !resp.Paused { |
| 1567 | t.Fatal("Consumer should be paused") |
| 1568 | } |
| 1569 | if resp.PauseRemaining <= 0 { |
| 1570 | t.Fatal("PauseRemaining should be greater than 0") |
| 1571 | } |
| 1572 | }) |
| 1573 | |
| 1574 | t.Run("resume consumer", func(t *testing.T) { |
| 1575 | resp, err := js.ResumeConsumer(ctx, "TEST", "cons") |
| 1576 | if err != nil { |
| 1577 | t.Fatalf("Unexpected error: %v", err) |
| 1578 | } |
| 1579 | |
| 1580 | if resp.Paused { |
| 1581 | t.Fatal("Consumer should not be paused") |
| 1582 | } |
| 1583 | if resp.PauseRemaining != 0 { |
| 1584 | t.Fatal("PauseRemaining should be 0") |
nothing calls this directly
no test coverage detected