package bhsgo
|
|
import (
|
"fmt"
|
"testing"
|
"time"
|
"unsafe"
|
|
bh "basic.com/valib/bhshmq.git/proto/source/bhome_msg"
|
)
|
|
func ServerCallback(src unsafe.Pointer, proc_id *string, req *bh.MsgRequestTopic) {
|
fmt.Println("user server cb called, request topic: " + string(req.Topic) + ", data:" + string(req.Data))
|
reply := bh.MsgRequestTopicReply{}
|
reply.Data = []byte("reply 1234")
|
SendReply(src, &reply)
|
}
|
|
func SubDataCallback(proc_id *string, pub *bh.MsgPublish) {
|
fmt.Println("user sub data cb called")
|
}
|
func ClientCallback(proc_id *string, msg_id *[]byte, reply *bh.MsgRequestTopicReply) {
|
fmt.Println("user client cb reply: " + string(reply.Data))
|
}
|
func TestRegister(t *testing.T) {
|
proc_id := "test_proc"
|
proc := bh.ProcInfo{}
|
proc.ProcId = []byte(proc_id)
|
fmt.Println("proc id: ", proc.ProcId)
|
reply := bh.MsgCommonReply{}
|
defer Cleanup()
|
|
r := Register(&proc, &reply, 1000)
|
if r {
|
fmt.Println("register ok")
|
} else {
|
fmt.Println("register failed")
|
return
|
}
|
r = Unregister(&proc, &reply, 1000)
|
if r {
|
fmt.Println("Unregister ok")
|
} else {
|
fmt.Println("Unregister failed")
|
}
|
|
r = Register(&proc, &reply, 1000)
|
if r {
|
fmt.Println("register ok")
|
} else {
|
fmt.Println("register failed")
|
t.Log("register error")
|
return
|
}
|
|
StartWorker(ClientCallback, ServerCallback, SubDataCallback)
|
|
r = HeartbeatEasy(1000)
|
if r {
|
fmt.Println("heartbeat ok")
|
} else {
|
fmt.Println("heartbeat failed")
|
}
|
|
topics := bh.MsgTopicList{}
|
topics.TopicList = append(topics.TopicList, []byte("topic0"), []byte("topic1"))
|
RegisterTopics(&topics, &reply, 0)
|
if r {
|
fmt.Println("reg topics ok")
|
} else {
|
fmt.Println("reg topics failed")
|
}
|
|
req := bh.MsgRequestTopic{}
|
time.Sleep(time.Second * 1)
|
req.Topic = []byte("topic0")
|
req.Data = []byte("data0")
|
// var msg_id []byte
|
// AsyncRequest(&req, &msg_id)
|
// fmt.Println(msg_id)
|
// time.Sleep(time.Second * 5)
|
|
pid := ""
|
rr := bh.MsgRequestTopicReply{}
|
dest := bh.BHAddress{}
|
|
queryProc := bh.MsgQueryProc{}
|
queryReply := bh.MsgQueryProcReply{}
|
|
QueryProcs(&dest, &queryProc, &queryReply, 3000)
|
fmt.Println("query result:", string(queryReply.ProcList[0].Proc.ProcId))
|
|
for i := 0; i < 10; i++ {
|
if Request(&dest, &req, &pid, &rr, 3000) {
|
fmt.Println("server:" + pid + ", reply:" + string(rr.Data))
|
} else {
|
e, s := GetLastError()
|
fmt.Println("ec:", e, ", msg:"+s)
|
}
|
}
|
}
|