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) } } }