From cb400b2c8d464e5c0ad1d41478cfa734dd8c63e5 Mon Sep 17 00:00:00 2001 From: Chales Xu <111160781+SHA-4096@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:55:28 +0800 Subject: [PATCH] bug fixes and updates in ut (#2698) --- common/rpc_service_test.go | 2 +- metadata/definition/definition_test.go | 26 +++++++++++++++++-- metadata/service/local/service_test.go | 18 ++++++++++--- metadata/service/remote/service_test.go | 18 ++++++++++--- protocol/triple/triple_protocol/envelope.go | 4 +-- .../triple/triple_protocol/protocol_triple.go | 4 +-- remoting/getty/getty_client_test.go | 2 +- remoting/getty/readwriter_test.go | 2 +- 8 files changed, 61 insertions(+), 15 deletions(-) diff --git a/common/rpc_service_test.go b/common/rpc_service_test.go index 6143e472a5..4146660978 100644 --- a/common/rpc_service_test.go +++ b/common/rpc_service_test.go @@ -101,7 +101,7 @@ func TestServiceMapRegister(t *testing.T) { s := &TestService{} methods, err := ServiceMap.Register(testInterfaceName, "testporotocol", "", "v1", s) assert.NoError(t, err) - assert.Equal(t, "MethodOne,MethodThree,methodTwo", methods) + assert.Equal(t, "MethodOne,methodOne,MethodThree,methodThree,methodTwo,MethodTwo", methods) // repeat _, err = ServiceMap.Register(testInterfaceName, "testporotocol", "", "v1", s) diff --git a/metadata/definition/definition_test.go b/metadata/definition/definition_test.go index 7515b09cf8..d8c8d12298 100644 --- a/metadata/definition/definition_test.go +++ b/metadata/definition/definition_test.go @@ -47,7 +47,29 @@ func TestBuildServiceDefinition(t *testing.T) { assert.NoError(t, err) service := common.ServiceMap.GetServiceByServiceKey(url.Protocol, url.ServiceKey()) sd := BuildServiceDefinition(*service, url) - assert.Equal(t, "{canonicalName:com.ikurento.user.UserProvider, codeSource:, methods:[{name:GetUser,parameterTypes:[{type:slice}],returnType:ptr,params:[] }], types:[]}", sd.String()) + expected := "{canonicalName:com.ikurento.user.UserProvider, codeSource:, methods:[{name:GetUser,parameterTypes:" + + "[{type:slice}],returnType:ptr,params:[] }{name:getUser,parameterTypes:[{type:slice}],returnType:ptr,params:[] }" + + "], types:[]}" + expected2 := "{canonicalName:com.ikurento.user.UserProvider, codeSource:, methods:[{name:getUser,parameterTypes:" + + "[{type:slice}],returnType:ptr,params:[] }{name:GetUser,parameterTypes:[{type:slice}],returnType:ptr,params:[] }" + + "], types:[]}" + sdStr := sd.String() + assert.Equal(t, true, (expected == sdStr || expected2 == sdStr)) fsd := BuildFullDefinition(*service, url) - assert.Equal(t, "{parameters:{anyhost:true,application:BDTService,bean.name:UserProvider,category:providers,default.timeout:10000,dubbo:dubbo-provider-golang-1.0.0,environment:dev,group:group1,interface:com.ikurento.user.UserProvider,ip:192.168.56.1,methods:GetUser,module:dubbogo user-info server,org:ikurento.com,owner:ZX,pid:1447,revision:0.0.1,side:provider,timeout:3000,timestamp:1556509797245,version:0.0.1}, canonicalName:com.ikurento.user.UserProvider, codeSource:, methods:[{name:GetUser,parameterTypes:[{type:slice}],returnType:ptr,params:[] }], types:[]}", fsd.String()) + expected = "{parameters:{anyhost:true,application:BDTService,bean.name:UserProvider,category:providers,default." + + "timeout:10000,dubbo:dubbo-provider-golang-1.0.0,environment:dev,group:group1," + + "interface:com.ikurento.user.UserProvider,ip:192.168.56.1,methods:GetUser,module:dubbogo user-info server," + + "org:ikurento.com,owner:ZX,pid:1447,revision:0.0.1,side:provider,timeout:3000,timestamp:1556509797245," + + "version:0.0.1}, canonicalName:com.ikurento.user.UserProvider, codeSource:, methods:[{name:GetUser," + + "parameterTypes:[{type:slice}],returnType:ptr,params:[] }{name:getUser,parameterTypes:[{type:slice}]," + + "returnType:ptr,params:[] }], types:[]}" + expected2 = "{parameters:{anyhost:true,application:BDTService,bean.name:UserProvider,category:providers,default." + + "timeout:10000,dubbo:dubbo-provider-golang-1.0.0,environment:dev,group:group1," + + "interface:com.ikurento.user.UserProvider,ip:192.168.56.1,methods:GetUser,module:dubbogo user-info server," + + "org:ikurento.com,owner:ZX,pid:1447,revision:0.0.1,side:provider,timeout:3000,timestamp:1556509797245," + + "version:0.0.1}, canonicalName:com.ikurento.user.UserProvider, codeSource:, methods:[{name:getUser," + + "parameterTypes:[{type:slice}],returnType:ptr,params:[] }{name:GetUser,parameterTypes:[{type:slice}]," + + "returnType:ptr,params:[] }], types:[]}" + fsdStr := fsd.String() + assert.Equal(t, true, (fsdStr == expected || fsdStr == expected2)) } diff --git a/metadata/service/local/service_test.go b/metadata/service/local/service_test.go index c1e952c873..67b3ba05a9 100644 --- a/metadata/service/local/service_test.go +++ b/metadata/service/local/service_test.go @@ -108,12 +108,24 @@ func TestMetadataService(t *testing.T) { "\"timeout\":\"3000\",\"timestamp\":\"1556509797245\",\"version\":\"0.0.1\"}," + "\"canonicalName\":\"com.ikurento.user.UserProvider\",\"codeSource\":\"\"," + "\"methods\":[{\"name\":\"GetUser\",\"parameterTypes\":[\"slice\"],\"returnType\":\"ptr\"," + - "\"parameters\":null}],\"types\":null}" + "\"parameters\":null},{\"name\":\"getUser\",\"parameterTypes\":[\"slice\"],\"returnType\":\"ptr\"" + + ",\"parameters\":null}],\"types\":null}" + expected2 := "{\"parameters\":{\"anyhost\":\"true\",\"application\":\"BDTService\"," + + "\"bean.name\":\"UserProvider\",\"category\":\"providers\",\"default.timeout\":\"10000\"," + + "\"dubbo\":\"dubbo-provider-golang-1.0.0\",\"environment\":\"dev\",\"group\":\"group1\"," + + "\"interface\":\"com.ikurento.user.UserProvider\",\"ip\":\"192.168.56.1\"," + + "\"methods\":\"GetUser\",\"module\":\"dubbogo user-info server\",\"org\":\"ikurento.com\"," + + "\"owner\":\"ZX\",\"pid\":\"1447\",\"revision\":\"0.0.1\",\"side\":\"provider\"," + + "\"timeout\":\"3000\",\"timestamp\":\"1556509797245\",\"version\":\"0.0.1\"}," + + "\"canonicalName\":\"com.ikurento.user.UserProvider\",\"codeSource\":\"\"," + + "\"methods\":[{\"name\":\"getUser\",\"parameterTypes\":[\"slice\"],\"returnType\":\"ptr\"," + + "\"parameters\":null},{\"name\":\"GetUser\",\"parameterTypes\":[\"slice\"],\"returnType\":\"ptr\"" + + ",\"parameters\":null}],\"types\":null}" def1, err := mts.GetServiceDefinition(serviceName, group, version) - assert.Equal(t, expected, def1) + assert.Equal(t, true, (def1 == expected || def1 == expected2)) assert.NoError(t, err) serviceKey := definition.ServiceDescriperBuild(serviceName, group, version) def2, err := mts.GetServiceDefinitionByServiceKey(serviceKey) - assert.Equal(t, expected, def2) + assert.Equal(t, true, (def2 == expected || def2 == expected2)) assert.NoError(t, err) } diff --git a/metadata/service/remote/service_test.go b/metadata/service/remote/service_test.go index 10f2b1e53f..464f012e2a 100644 --- a/metadata/service/remote/service_test.go +++ b/metadata/service/remote/service_test.go @@ -165,10 +165,22 @@ func TestMockInmemoryProc(t *testing.T) { "\"timeout\":\"3000\",\"timestamp\":\"1556509797245\",\"version\":\"0.0.1\"}," + "\"canonicalName\":\"com.ikurento.user.UserProvider\",\"codeSource\":\"\"," + "\"methods\":[{\"name\":\"GetUser\",\"parameterTypes\":[\"slice\"],\"returnType\":\"ptr\"," + - "\"parameters\":null}],\"types\":null}" + "\"parameters\":null},{\"name\":\"getUser\",\"parameterTypes\":[\"slice\"],\"returnType\"" + + ":\"ptr\",\"parameters\":null}],\"types\":null}" + expected2 := "{\"parameters\":{\"anyhost\":\"true\",\"application\":\"BDTService\"," + + "\"bean.name\":\"UserProvider\",\"category\":\"providers\",\"default.timeout\":\"10000\"," + + "\"dubbo\":\"dubbo-provider-golang-1.0.0\",\"environment\":\"dev\",\"group\":\"group1\"," + + "\"interface\":\"com.ikurento.user.UserProvider\",\"ip\":\"192.168.56.1\"," + + "\"methods\":\"GetUser\",\"module\":\"dubbogo user-info server\",\"org\":\"ikurento.com\"," + + "\"owner\":\"ZX\",\"pid\":\"1447\",\"revision\":\"0.0.1\",\"side\":\"provider\"," + + "\"timeout\":\"3000\",\"timestamp\":\"1556509797245\",\"version\":\"0.0.1\"}," + + "\"canonicalName\":\"com.ikurento.user.UserProvider\",\"codeSource\":\"\"," + + "\"methods\":[{\"name\":\"getUser\",\"parameterTypes\":[\"slice\"],\"returnType\":\"ptr\"," + + "\"parameters\":null},{\"name\":\"GetUser\",\"parameterTypes\":[\"slice\"],\"returnType\"" + + ":\"ptr\",\"parameters\":null}],\"types\":null}" def1, _ := mts.GetServiceDefinition(serviceName, group, version) - assert.Equal(t, expected, def1) + assert.Equal(t, true, (def1 == expected || def1 == expected2)) serviceKey := definition.ServiceDescriperBuild(serviceName, group, version) def2, _ := mts.GetServiceDefinitionByServiceKey(serviceKey) - assert.Equal(t, expected, def2) + assert.Equal(t, true, (def2 == expected || def2 == expected2)) } diff --git a/protocol/triple/triple_protocol/envelope.go b/protocol/triple/triple_protocol/envelope.go index 554eed46b4..000f08dc87 100644 --- a/protocol/triple/triple_protocol/envelope.go +++ b/protocol/triple/triple_protocol/envelope.go @@ -75,7 +75,7 @@ func (w *envelopeWriter) Marshal(message interface{}) *Error { } raw, err := w.codec.Marshal(message) if err != nil { - if w.codec.Name() != w.backupCodec.Name() { + if w.backupCodec != nil && w.codec.Name() != w.backupCodec.Name() { logger.Warnf("failed to marshal message with codec %s, trying alternative codec %s", w.codec.Name(), w.backupCodec.Name()) raw, err = w.backupCodec.Marshal(message) } @@ -201,7 +201,7 @@ func (r *envelopeReader) Unmarshal(message interface{}) *Error { } if err := r.codec.Unmarshal(data.Bytes(), message); err != nil { - if r.backupCodec.Name() != r.codec.Name() { + if r.backupCodec != nil && r.backupCodec.Name() != r.codec.Name() { logger.Warnf("failed to unmarshal message with codec %s, trying alternative codec %s", r.codec.Name(), r.backupCodec.Name()) err = r.backupCodec.Unmarshal(data.Bytes(), message) } diff --git a/protocol/triple/triple_protocol/protocol_triple.go b/protocol/triple/triple_protocol/protocol_triple.go index 4b7063d362..79074c5268 100644 --- a/protocol/triple/triple_protocol/protocol_triple.go +++ b/protocol/triple/triple_protocol/protocol_triple.go @@ -496,7 +496,7 @@ func (m *tripleUnaryMarshaler) Marshal(message interface{}) *Error { } data, err := m.codec.Marshal(message) if err != nil { - if m.codec.Name() != m.backupCodec.Name() { + if m.backupCodec != nil && m.codec.Name() != m.backupCodec.Name() { logger.Warnf("failed to marshal message with codec %s, trying alternative codec %s", m.codec.Name(), m.backupCodec.Name()) data, err = m.backupCodec.Marshal(message) } @@ -559,7 +559,7 @@ type tripleUnaryUnmarshaler struct { func (u *tripleUnaryUnmarshaler) Unmarshal(message interface{}) *Error { err := u.UnmarshalFunc(message, u.codec.Unmarshal) if err != nil { - if u.codec.Name() != u.backupCodec.Name() { + if u.backupCodec != nil && u.codec.Name() != u.backupCodec.Name() { logger.Warnf("failed to unmarshal message with codec %s, trying alternative codec %s", u.codec.Name(), u.backupCodec.Name()) err = u.UnmarshalFunc(message, u.codec.Unmarshal) } diff --git a/remoting/getty/getty_client_test.go b/remoting/getty/getty_client_test.go index 1135a2d5f1..75e55ddb67 100644 --- a/remoting/getty/getty_client_test.go +++ b/remoting/getty/getty_client_test.go @@ -332,7 +332,7 @@ func InitTest(t *testing.T) (*Server, *common.URL) { methods, err := common.ServiceMap.Register("com.ikurento.user.UserProvider", "dubbo", "", "", &UserProvider{}) assert.NoError(t, err) - assert.Equal(t, "GetBigPkg,GetUser,GetUser0,GetUser1,GetUser2,GetUser3,GetUser4,GetUser5,GetUser6", methods) + assert.Equal(t, "GetBigPkg,getBigPkg,GetUser,getUser,GetUser0,getUser0,GetUser1,getUser1,GetUser2,getUser2,GetUser3,getUser3,GetUser4,getUser4,GetUser5,getUser5,GetUser6,getUser6", methods) // config SetClientConf(ClientConfig{ diff --git a/remoting/getty/readwriter_test.go b/remoting/getty/readwriter_test.go index 52c748b0a6..54b3c52224 100644 --- a/remoting/getty/readwriter_test.go +++ b/remoting/getty/readwriter_test.go @@ -86,7 +86,7 @@ func getServer(t *testing.T) (*Server, *common.URL) { methods, err := common.ServiceMap.Register("com.ikurento.user.AdminProvider", "dubbo", "", "", &AdminProvider{}) assert.NoError(t, err) - assert.Equal(t, "GetAdmin", methods) + assert.Equal(t, "GetAdmin,getAdmin", methods) // config SetClientConf(ClientConfig{