Create & Init Project...
This commit is contained in:
70
app/infra/databus/tcp/pubsub_test.go
Normal file
70
app/infra/databus/tcp/pubsub_test.go
Normal file
@ -0,0 +1,70 @@
|
||||
package tcp
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"go-common/app/infra/databus/conf"
|
||||
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
var (
|
||||
pubCfg = &conf.Kafka{
|
||||
Cluster: "test_topic",
|
||||
Brokers: []string{"172.22.33.174:9092", "172.22.33.183:9092", "172.22.33.185:9092"},
|
||||
}
|
||||
)
|
||||
|
||||
func TestDatabus(t *testing.T) {
|
||||
Convey("Test publish:", t, func() {
|
||||
l, _ := net.Listen("tcp", ":8888")
|
||||
go func() {
|
||||
for {
|
||||
conn, err := l.Accept()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
b, err := ioutil.ReadAll(conn)
|
||||
if err == nil {
|
||||
fmt.Printf("test conn: %s", b)
|
||||
}
|
||||
conn.Close()
|
||||
}
|
||||
}()
|
||||
conn, err := net.Dial("tcp", ":8888")
|
||||
So(err, ShouldBeNil)
|
||||
p, err := NewPub(newConn(conn, time.Second, time.Second), "pub", "", _testTopic, pubCfg)
|
||||
So(err, ShouldBeNil)
|
||||
key := []byte("key")
|
||||
header := []byte("header")
|
||||
msg := []byte("message")
|
||||
err = p.publish(key, header, msg)
|
||||
So(err, ShouldBeNil)
|
||||
time.Sleep(time.Second)
|
||||
Convey("test sub", func() {
|
||||
conn, _ := net.Dial("tcp", ":8888")
|
||||
s, err := NewSub(newConn(conn, time.Second, time.Second), "sub", "", _testTopic, pubCfg, 1)
|
||||
So(err, ShouldBeNil)
|
||||
t.Logf("subscriptions: %v", s.consumer.Subscriptions())
|
||||
for {
|
||||
select {
|
||||
case msg := <-s.consumer.Messages():
|
||||
s.consumer.CommitOffsets()
|
||||
t.Logf("sub message: %s timestamp: %d", msg.Value, msg.Timestamp.Unix())
|
||||
return
|
||||
case err := <-s.consumer.Errors():
|
||||
t.Errorf("error: %v", err)
|
||||
So(err, ShouldBeNil)
|
||||
case n := <-s.consumer.Notifications():
|
||||
t.Logf("notify: %v", n)
|
||||
err := p.publish(key, header, msg)
|
||||
So(err, ShouldBeNil)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user