(t *testing.T)
| 8704 | } |
| 8705 | |
| 8706 | func TestJetStreamPublishExpectZero(t *testing.T) { |
| 8707 | s := RunBasicJetStreamServer() |
| 8708 | defer shutdownJSServerAndRemoveStorage(t, s) |
| 8709 | |
| 8710 | nc, js := jsClient(t, s) |
| 8711 | defer nc.Close() |
| 8712 | |
| 8713 | var err error |
| 8714 | |
| 8715 | // Create the stream using our client API. |
| 8716 | _, err = js.AddStream(&nats.StreamConfig{ |
| 8717 | Name: "TEST", |
| 8718 | Subjects: []string{"test", "foo", "bar"}, |
| 8719 | }) |
| 8720 | if err != nil { |
| 8721 | t.Fatalf("Unexpected error: %v", err) |
| 8722 | } |
| 8723 | |
| 8724 | sub, err := nc.SubscribeSync("foo") |
| 8725 | if err != nil { |
| 8726 | t.Errorf("Error: %s", err) |
| 8727 | } |
| 8728 | |
| 8729 | // Explicitly set the header to zero. |
| 8730 | _, err = js.Publish("foo", []byte("bar"), |
| 8731 | nats.ExpectLastSequence(0), |
| 8732 | nats.ExpectLastSequencePerSubject(0), |
| 8733 | ) |
| 8734 | if err != nil { |
| 8735 | t.Errorf("Error: %v", err) |
| 8736 | } |
| 8737 | |
| 8738 | rawMsg, err := js.GetMsg("TEST", 1) |
| 8739 | if err != nil { |
| 8740 | t.Fatalf("Error: %s", err) |
| 8741 | } |
| 8742 | hdr, ok := rawMsg.Header["Nats-Expected-Last-Sequence"] |
| 8743 | if !ok { |
| 8744 | t.Fatal("Missing header") |
| 8745 | } |
| 8746 | got := hdr[0] |
| 8747 | expected := "0" |
| 8748 | if got != expected { |
| 8749 | t.Fatalf("Expected %v, got: %v", expected, got) |
| 8750 | } |
| 8751 | hdr, ok = rawMsg.Header["Nats-Expected-Last-Subject-Sequence"] |
| 8752 | if !ok { |
| 8753 | t.Fatal("Missing header") |
| 8754 | } |
| 8755 | got = hdr[0] |
| 8756 | expected = "0" |
| 8757 | if got != expected { |
| 8758 | t.Fatalf("Expected %v, got: %v", expected, got) |
| 8759 | } |
| 8760 | |
| 8761 | msg, err := sub.NextMsg(1 * time.Second) |
| 8762 | if err != nil { |
| 8763 | t.Fatalf("Error: %s", err) |
nothing calls this directly
no test coverage detected