dashboard/pkg/dadis/dadis_test.go

73 lines
1.0 KiB
Go

package dadis
import (
"context"
"dashboard/pkg/observe"
"fmt"
"testing"
"time"
)
type baseObserver struct {
name string
conn chan interface{}
}
func newBaseObserver(name string) *baseObserver {
res := &baseObserver{
name: name,
conn: make(chan interface{}),
}
go res.getMsg()
return res
}
func (b *baseObserver) getMsg() {
for res := range b.conn {
fmt.Println(b.name, res)
}
}
func (b *baseObserver) OnChange(_ context.Context, e *observe.Event) error {
b.conn <- e
return nil
}
func Test_Dadis(t *testing.T) {
obA := newBaseObserver("A")
obB := newBaseObserver("B")
obC := newBaseObserver("C")
obD := newBaseObserver("D")
topic := "async"
dadis := NewDadis()
dadis.Sub(topic, obA)
dadis.Sub(topic, obB)
dadis.Sub(topic, obC)
dadis.Sub(topic, obD)
go func() {
for i := range 10 {
i := i
go func() {
key := fmt.Sprintf("%s,%d", "nohao", i)
dadis.Set(topic, key, 0)
}()
}
}()
go func() {
for range 10 {
go func() {
fmt.Println(dadis.Get(topic))
}()
}
}()
<-time.After(time.Second * 1)
}