Skip to content
Snippets Groups Projects
Commit ff4f2f74 authored by fangyincheng's avatar fangyincheng
Browse files

Mod: comment ut for protobuf of dubbo

parent 14564b90
No related branches found
No related tags found
No related merge requests found
......@@ -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"])
// }
//
//}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment