Skip to content

Commit

Permalink
[IMPROVED] Avoid producing nil metadata (#1242)
Browse files Browse the repository at this point in the history
Signed-off-by: R.I.Pienaar <rip@devco.net>
  • Loading branch information
ripienaar committed Apr 3, 2023
1 parent 8de687a commit 282b7ea
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 43 deletions.
5 changes: 5 additions & 0 deletions micro/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,10 @@ func AddService(nc *nats.Conn, config Config) (Service, error) {
return nil, err
}

if config.Metadata == nil {
config.Metadata = map[string]string{}
}

id := nuid.Next()
svc := &service{
Config: config,
Expand Down Expand Up @@ -407,6 +411,7 @@ func (s *service) AddEndpoint(name string, handler Handler, opts ...EndpointOpt)
if options.subject != "" {
subject = options.subject
}

return addEndpoint(s, name, subject, handler, options.schema, options.metadata)
}

Expand Down
109 changes: 66 additions & 43 deletions micro/test/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"time"

"github.com/nats-io/nats-server/v2/server"

"github.com/nats-io/nats.go"
"github.com/nats-io/nats.go/micro"

Expand Down Expand Up @@ -237,8 +238,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
},
Expand All @@ -256,8 +258,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
},
Expand All @@ -274,8 +277,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
},
Expand All @@ -292,8 +296,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
asyncErrorSubject: "func",
Expand All @@ -311,8 +316,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
asyncErrorSubject: "$SRV.PING.test_service",
Expand All @@ -336,8 +342,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
asyncErrorSubject: "test.sub",
Expand All @@ -361,8 +368,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
},
Expand All @@ -385,8 +393,9 @@ func TestAddService(t *testing.T) {
expectedPing: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
Name: "test_service",
Version: "0.1.0",
Metadata: map[string]string{},
},
},
asyncErrorSubject: "$SRV.PING.TEST_SERVICE",
Expand Down Expand Up @@ -793,9 +802,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
},
},
Expand All @@ -805,9 +815,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
},
},
Expand All @@ -817,9 +828,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.Ping{
Type: micro.PingResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
},
},
Expand All @@ -829,9 +841,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.Info{
Type: micro.InfoResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
Subjects: []string{"test.func"},
},
Expand All @@ -842,9 +855,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.Info{
Type: micro.InfoResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
Subjects: []string{"test.func"},
},
Expand All @@ -855,9 +869,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.Info{
Type: micro.InfoResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
Subjects: []string{"test.func"},
},
Expand All @@ -868,9 +883,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.SchemaResp{
Type: micro.SchemaResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
APIURL: "http://someapi.com/v1",
Endpoints: []micro.EndpointSchema{
Expand All @@ -892,9 +908,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.SchemaResp{
Type: micro.SchemaResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
APIURL: "http://someapi.com/v1",
Endpoints: []micro.EndpointSchema{
Expand All @@ -916,9 +933,10 @@ func TestMonitoringHandlers(t *testing.T) {
expectedResponse: micro.SchemaResp{
Type: micro.SchemaResponseType,
ServiceIdentity: micro.ServiceIdentity{
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Name: "test_service",
Version: "0.1.0",
ID: info.ID,
Metadata: map[string]string{},
},
APIURL: "http://someapi.com/v1",
Endpoints: []micro.EndpointSchema{
Expand Down Expand Up @@ -1458,6 +1476,11 @@ func TestRequestRespond(t *testing.T) {
}
defer svc.Stop()

nfo := svc.Info()
if nfo.Metadata == nil {
t.Fatalf("Produced nil metadata")
}

resp, err := nc.RequestMsg(&nats.Msg{
Subject: "test.func",
Data: []byte("req"),
Expand Down

0 comments on commit 282b7ea

Please sign in to comment.