diff --git a/go.sum b/go.sum index f045dbec..e8f56942 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,7 @@ github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/minio/highwayhash v1.0.0 h1:iMSDhgUILCr0TNm8LWlSjF8N0ZIj2qbO8WHp6Q/J2BA= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v0.3.3-0.20200519195258-f2bf5ce574c7 h1:RnGotxlghqR5D2KDAu4TyuLqyjuylOsJiAFhXvMvQIc= diff --git a/server/observable.go b/server/observable.go index 6552c784..04ccb2c1 100644 --- a/server/observable.go +++ b/server/observable.go @@ -28,6 +28,7 @@ import ( ) type ObservableInfo struct { + Name string `json:"name"` Config ObservableConfig `json:"configuration"` State ObservableState `json:"state"` } @@ -588,6 +589,7 @@ func (o *Observable) Info() *ObservableInfo { o.mu.Lock() defer o.mu.Unlock() info := &ObservableInfo{ + Name: o.name, Config: o.config, State: ObservableState{ Delivered: SequencePair{ @@ -601,7 +603,6 @@ func (o *Observable) Info() *ObservableInfo { }, } - info.Config.Durable = o.name if len(o.pending) > 0 { p := make(map[uint64]int64, len(o.pending)) for k, v := range o.pending { diff --git a/test/jetstream_test.go b/test/jetstream_test.go index df754f0d..f30c62b0 100644 --- a/test/jetstream_test.go +++ b/test/jetstream_test.go @@ -3088,10 +3088,29 @@ func TestJetStreamRequestAPI(t *testing.T) { // Now let's get info about our observable. req = []byte(fmt.Sprintf("%s %s", msetCfg.Name, onames[0])) resp, _ = nc.Request(server.JetStreamObservableInfo, req, time.Second) - var ostate server.ObservableState - if err = json.Unmarshal(resp.Data, &ostate); err != nil { + var oinfo server.ObservableInfo + if err = json.Unmarshal(resp.Data, &oinfo); err != nil { t.Fatalf("Unexpected error: %v", err) } + // Do some sanity checking. + // Must match onservable.go + const randObservableNameLen = 6 + + if len(oinfo.Name) != randObservableNameLen { + t.Fatalf("Expected ephemeral name, got %q", oinfo.Name) + } + if len(oinfo.Config.Durable) != 0 { + t.Fatalf("Expected no durable name, but got %q", oinfo.Config.Durable) + } + if oinfo.Config.Delivery != delivery { + t.Fatalf("Expected to have delivery subject of %q, got %q", delivery, oinfo.Config.Delivery) + } + if oinfo.State.Delivered.ObsSeq != 11 { + t.Fatalf("Expected observable delivered sequence of 11, got %d", oinfo.State.Delivered.ObsSeq) + } + if oinfo.State.AckFloor.ObsSeq != 10 { + t.Fatalf("Expected ack floor to be 10, got %d", oinfo.State.AckFloor.ObsSeq) + } // Now delete the observable. resp, _ = nc.Request(server.JetStreamDeleteObservable, req, time.Second)