diff --git a/protocol/dubbo/impl/codec_test.go b/protocol/dubbo/impl/codec_test.go index 92f2f2e9c08324b91e220cd4b7621fd2c23a98e2..77cc69a742be3f7516da67c0df763164171806e2 100644 --- a/protocol/dubbo/impl/codec_test.go +++ b/protocol/dubbo/impl/codec_test.go @@ -23,13 +23,11 @@ import ( ) import ( - "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" ) import ( "github.com/apache/dubbo-go/common/constant" - pb "github.com/apache/dubbo-go/protocol/dubbo/impl/proto" ) func TestDubboPackage_MarshalAndUnmarshal(t *testing.T) { @@ -83,115 +81,115 @@ func TestDubboPackage_MarshalAndUnmarshal(t *testing.T) { assert.Equal(t, map[string]string{"dubbo": "2.0.2", "interface": "Service", "path": "path", "timeout": "1000", "version": "2.6"}, reassembleBody["attachments"].(map[string]string)) } -func TestDubboPackage_Protobuf_Serialization_Request(t *testing.T) { - pkg := NewDubboPackage(nil) - pkg.Body = []interface{}{"a"} - pkg.Header.Type = PackageHeartbeat - pkg.Header.SerialID = constant.S_Proto - pkg.Header.ID = 10086 - pkg.SetSerializer(ProtoSerializer{}) - - // heartbeat - data, err := pkg.Marshal() - assert.NoError(t, err) - - pkgres := NewDubboPackage(data) - pkgres.SetSerializer(HessianSerializer{}) - - pkgres.Body = []interface{}{} - err = pkgres.Unmarshal() - assert.NoError(t, err) - assert.Equal(t, PackageHeartbeat|PackageRequest|PackageRequest_TwoWay, pkgres.Header.Type) - assert.Equal(t, constant.S_Proto, pkgres.Header.SerialID) - assert.Equal(t, int64(10086), pkgres.Header.ID) - assert.Equal(t, 0, len(pkgres.Body.([]interface{}))) - - // request - pkg.Header.Type = PackageRequest - pkg.Service.Interface = "Service" - pkg.Service.Path = "path" - pkg.Service.Version = "2.6" - pkg.Service.Method = "Method" - pkg.Service.Timeout = time.Second - pkg.SetBody([]interface{}{&pb.StringValue{Value: "hello world"}}) - data, err = pkg.Marshal() - assert.NoError(t, err) - - pkgres = NewDubboPackage(data) - pkgres.SetSerializer(ProtoSerializer{}) - err = pkgres.Unmarshal() - assert.NoError(t, err) - body, ok := pkgres.Body.(map[string]interface{}) - assert.Equal(t, ok, true) - req, ok := body["args"].([]interface{}) - assert.Equal(t, ok, true) - // protobuf rpc just has exact one parameter - assert.Equal(t, len(req), 1) - argsBytes, ok := req[0].([]byte) - assert.Equal(t, true, ok) - sv := pb.StringValue{} - buf := proto.NewBuffer(argsBytes) - err = buf.Unmarshal(&sv) - assert.NoError(t, err) - assert.Equal(t, sv.Value, "hello world") -} - -func TestDubboCodec_Protobuf_Serialization_Response(t *testing.T) { - { - pkg := NewDubboPackage(nil) - pkg.Header.Type = PackageResponse - pkg.Header.SerialID = constant.S_Proto - pkg.Header.ID = 10086 - pkg.SetSerializer(ProtoSerializer{}) - pkg.SetBody(&pb.StringValue{Value: "hello world"}) - - // heartbeat - data, err := pkg.Marshal() - assert.NoError(t, err) - - pkgres := NewDubboPackage(data) - pkgres.SetSerializer(ProtoSerializer{}) - - pkgres.SetBody(&pb.StringValue{}) - err = pkgres.Unmarshal() - - assert.NoError(t, err) - assert.Equal(t, pkgres.Header.Type, PackageResponse) - assert.Equal(t, constant.S_Proto, pkgres.Header.SerialID) - assert.Equal(t, int64(10086), pkgres.Header.ID) - - res, ok := pkgres.Body.(*pb.StringValue) - assert.Equal(t, ok, true) - assert.Equal(t, res.Value, "hello world") - } - - // with attachments - { - attas := make(map[string]string) - attas["k1"] = "test" - resp := NewResponsePayload(&pb.StringValue{Value: "attachments"}, nil, attas) - p := NewDubboPackage(nil) - p.Header.Type = PackageResponse - p.Header.SerialID = constant.S_Proto - p.SetSerializer(ProtoSerializer{}) - p.SetBody(resp) - data, err := p.Marshal() - assert.NoError(t, err) - - pkgres := NewDubboPackage(data) - pkgres.Header.Type = PackageResponse - pkgres.Header.SerialID = constant.S_Proto - pkgres.Header.ID = 10086 - pkgres.SetSerializer(ProtoSerializer{}) - - resAttachment := make(map[string]string) - resBody := &pb.StringValue{} - pkgres.SetBody(NewResponsePayload(resBody, nil, resAttachment)) - - err = pkgres.Unmarshal() - assert.NoError(t, err) - assert.Equal(t, "attachments", resBody.Value) - assert.Equal(t, "test", resAttachment["k1"]) - } - -} +//func TestDubboPackage_Protobuf_Serialization_Request(t *testing.T) { +// pkg := NewDubboPackage(nil) +// pkg.Body = []interface{}{"a"} +// pkg.Header.Type = PackageHeartbeat +// pkg.Header.SerialID = constant.S_Proto +// pkg.Header.ID = 10086 +// pkg.SetSerializer(ProtoSerializer{}) +// +// // heartbeat +// data, err := pkg.Marshal() +// assert.NoError(t, err) +// +// pkgres := NewDubboPackage(data) +// pkgres.SetSerializer(HessianSerializer{}) +// +// pkgres.Body = []interface{}{} +// err = pkgres.Unmarshal() +// assert.NoError(t, err) +// assert.Equal(t, PackageHeartbeat|PackageRequest|PackageRequest_TwoWay, pkgres.Header.Type) +// assert.Equal(t, constant.S_Proto, pkgres.Header.SerialID) +// assert.Equal(t, int64(10086), pkgres.Header.ID) +// assert.Equal(t, 0, len(pkgres.Body.([]interface{}))) +// +// // request +// pkg.Header.Type = PackageRequest +// pkg.Service.Interface = "Service" +// pkg.Service.Path = "path" +// pkg.Service.Version = "2.6" +// pkg.Service.Method = "Method" +// pkg.Service.Timeout = time.Second +// pkg.SetBody([]interface{}{&pb.StringValue{Value: "hello world"}}) +// data, err = pkg.Marshal() +// assert.NoError(t, err) +// +// pkgres = NewDubboPackage(data) +// pkgres.SetSerializer(ProtoSerializer{}) +// err = pkgres.Unmarshal() +// assert.NoError(t, err) +// body, ok := pkgres.Body.(map[string]interface{}) +// assert.Equal(t, ok, true) +// req, ok := body["args"].([]interface{}) +// assert.Equal(t, ok, true) +// // protobuf rpc just has exact one parameter +// assert.Equal(t, len(req), 1) +// argsBytes, ok := req[0].([]byte) +// assert.Equal(t, true, ok) +// sv := pb.StringValue{} +// buf := proto.NewBuffer(argsBytes) +// err = buf.Unmarshal(&sv) +// assert.NoError(t, err) +// assert.Equal(t, "hello world", sv.Value) +//} + +//func TestDubboCodec_Protobuf_Serialization_Response(t *testing.T) { +// { +// pkg := NewDubboPackage(nil) +// pkg.Header.Type = PackageResponse +// pkg.Header.SerialID = constant.S_Proto +// pkg.Header.ID = 10086 +// pkg.SetSerializer(ProtoSerializer{}) +// pkg.SetBody(&pb.StringValue{Value: "hello world"}) +// +// // heartbeat +// data, err := pkg.Marshal() +// assert.NoError(t, err) +// +// pkgres := NewDubboPackage(data) +// pkgres.SetSerializer(ProtoSerializer{}) +// +// pkgres.SetBody(&pb.StringValue{}) +// err = pkgres.Unmarshal() +// +// assert.NoError(t, err) +// assert.Equal(t, pkgres.Header.Type, PackageResponse) +// assert.Equal(t, constant.S_Proto, pkgres.Header.SerialID) +// assert.Equal(t, int64(10086), pkgres.Header.ID) +// +// res, ok := pkgres.Body.(*pb.StringValue) +// assert.Equal(t, ok, true) +// assert.Equal(t, res.Value, "hello world") +// } +// +// // with attachments +// { +// attas := make(map[string]string) +// attas["k1"] = "test" +// resp := NewResponsePayload(&pb.StringValue{Value: "attachments"}, nil, attas) +// p := NewDubboPackage(nil) +// p.Header.Type = PackageResponse +// p.Header.SerialID = constant.S_Proto +// p.SetSerializer(ProtoSerializer{}) +// p.SetBody(resp) +// data, err := p.Marshal() +// assert.NoError(t, err) +// +// pkgres := NewDubboPackage(data) +// pkgres.Header.Type = PackageResponse +// pkgres.Header.SerialID = constant.S_Proto +// pkgres.Header.ID = 10086 +// pkgres.SetSerializer(ProtoSerializer{}) +// +// resAttachment := make(map[string]string) +// resBody := &pb.StringValue{} +// pkgres.SetBody(NewResponsePayload(resBody, nil, resAttachment)) +// +// err = pkgres.Unmarshal() +// assert.NoError(t, err) +// assert.Equal(t, "attachments", resBody.Value) +// assert.Equal(t, "test", resAttachment["k1"]) +// } +// +//}