compatibility/rpc/triple/hessian2/go-client/cmd/client.go (122 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package main
import (
"context"
"encoding/json"
"os"
)
import (
"dubbo.apache.org/dubbo-go/v3/config"
_ "dubbo.apache.org/dubbo-go/v3/imports"
hessian "github.com/apache/dubbo-go-hessian2"
"github.com/dubbogo/gost/log"
)
var userProvider = new(UserProvider)
var complexProvider = new(ComplexProvider)
func init() {
config.SetConsumerService(userProvider)
config.SetConsumerService(complexProvider)
hessian.RegisterPOJO(&User{})
hessian.RegisterPOJO(&ComplexData{})
}
// need to setup environment variable "DUBBO_GO_CONFIG_PATH" to "conf/dubbogo.yml" before run
func main() {
if err := config.Load(); err != nil {
panic(err)
}
gxlog.CInfo("\n\n\nstart to test dubbo")
testNormalService()
testComplexService()
}
func testNormalService() {
user, err := userProvider.GetUser(context.TODO(), &User{Name: "laurence"})
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
gxlog.CInfo("response result: %v\n", user)
}
func testComplexService() {
// test with normal data
//test without rsp and request
err := complexProvider.InvokeWithEmptyReq(context.TODO())
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
// test without response
err = complexProvider.InvokeWithSingleString(context.TODO(), "request string")
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
err = complexProvider.InvokeWithStringList(context.TODO(), []string{"myfirststring", "mysecondstring"})
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
err = complexProvider.InvokeWithMultiString(context.TODO(), "first string", "secondString", "third str")
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
// test without request
rsp, err := complexProvider.InvokeWithEmptyReqStringRsp(context.TODO())
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
gxlog.CInfo("get InvokeWithEmptyReqStringRsp rsp = %+v", rsp)
// complex data
stringIntMapData := make(map[string]int)
stringIntMapData["test1"] = 1
stringIntMapData["test2"] = 2
stringStringMapData := make(map[string]string)
stringStringMapData["test1"] = "1"
stringStringMapData["test2"] = "2"
stringUserMapData := make(map[string]User)
stringUserMapData["test1"] = User{Name: "1"}
stringUserMapData["test2"] = User{Name: "2"}
stringUintMapData := make(map[string]uint32)
stringUintMapData["test1"] = 1
stringUintMapData["test2"] = 2
stringUserPtrMapData := make(map[string]*User)
stringUserPtrMapData["test1"] = &User{Name: "1"}
stringUserPtrMapData["test2"] = &User{Name: "2"}
intStringMapData := make(map[int]string)
intStringMapData[1] = "1"
intStringMapData[2] = "2"
data, _ := json.Marshal(User{Name: "myJson", Age: 19, Id: "jsonID"})
cplexData := &ComplexData{
BooleanData: true,
StringData: "testString",
//UIntData: 8,
UInt8Data: 8,
UInt16Data: 16,
UInt32Data: 32,
UInt64Data: 64,
Int8Data: 8,
Int16Data: 16,
Int32Data: 32,
Int64Data: 64,
IntData: 8,
//StringIntMapData: stringIntMapData,
StringStringMapData: stringStringMapData,
//StringUserDefinedMapData:stringUserMapData,
//StringUIntMapData: stringUintMapData,
StringUserDefinedPtrMapData: stringUserPtrMapData,
//IntStringMapData: intStringMapData,
UserDefinedData: User{Name: "myuser", Age: 18, Id: "testid"},
UserDefinedDataPtr: &User{Name: "myuserPtr", Age: 18, Id: "testid"},
ByteData: data,
ArrayListData: []string{"string1", "string2", "string3"},
ArrayUserDefinedData: []User{{Name: "name1", Id: "id1", Age: 19}, {Name: "name1", Id: "id1", Age: 19}, {Name: "name1", Id: "id1", Age: 19}},
ArrayUserDefinedPtrData: []*User{{Name: "name1", Id: "id1", Age: 19}, {Name: "name1", Id: "id1", Age: 19}, {Name: "name1", Id: "id1", Age: 19}},
}
cplxRsp, err := complexProvider.InvokeWithComplexReqComplexRspPtr(context.TODO(), cplexData)
if err != nil {
gxlog.CError("error: %v\n", err)
os.Exit(1)
return
}
gxlog.CInfo("get InvokeWithComplexReqComplexRspPtr rsp = %+v", cplxRsp)
intRsp, err := complexProvider.InvokeWithMultiBasicData(context.TODO(), "reqstr", []byte{1, 2, 4}, 32, true)
if err != nil {
panic(err)
}
gxlog.CInfo("get InvokeWithMultiBasicData rsp = %d", intRsp)
}