func (st *testFakeStore) Poll(meta dingo.Meta) (reports <-chan []byte, err error) { st.events <- dingo.NewEvent( dingo.ObjT.Store, dingo.EventLvl.Info, dingo.EventCode.Generic, "Poll", ) return make(chan []byte, 1), nil }
func (pdc *testFakeProducer) Send(id dingo.Meta, body []byte) (err error) { pdc.events <- dingo.NewEvent( dingo.ObjT.Producer, dingo.EventLvl.Info, dingo.EventCode.Generic, "Send", ) return }
func TestDingoEventOrigin(t *testing.T) { var ( err error ass = assert.New(t) ) defer func() { ass.Nil(err) }() app, err := dingo.NewApp("remote", nil) if err != nil { return } defer func() { ass.Nil(app.Close()) }() // new a fake object, whose event channel is accessible obj := &testFakeObject{events: make(chan *dingo.Event, 1)} _, _, err = app.Use(obj, 0) if err != nil { return } chk := func(ch <-chan *dingo.Event, origin int) { e := <-ch ass.Equal(origin, e.Origin) } // subscribe bridge event idBridge, chBridge, err := app.Listen(dingo.ObjT.Bridge, dingo.EventLvl.Debug, 0) if err != nil { return } // subscribe all event idAll, chAll, err := app.Listen(dingo.ObjT.All, dingo.EventLvl.Debug, 0) if err != nil { return } // send a mapper event obj.events <- dingo.NewEvent(dingo.ObjT.Mapper, dingo.EventLvl.Error, 0, "mapper") chk(chAll, dingo.ObjT.Mapper) // send a bridge event obj.events <- dingo.NewEvent(dingo.ObjT.Bridge, dingo.EventLvl.Error, 0, "bridge") chk(chAll, dingo.ObjT.Bridge) chk(chBridge, dingo.ObjT.Bridge) // send a mapper | bridge event obj.events <- dingo.NewEvent(dingo.ObjT.Bridge|dingo.ObjT.Mapper, dingo.EventLvl.Error, 0, "bridge") chk(chAll, dingo.ObjT.Bridge|dingo.ObjT.Mapper) chk(chBridge, dingo.ObjT.Bridge|dingo.ObjT.Mapper) err = app.StopListen(idBridge) if err != nil { return } err = app.StopListen(idAll) if err != nil { return } }
func TestDingoEventLevel(t *testing.T) { var ( err error ass = assert.New(t) ) defer func() { ass.Nil(err) }() // attach a fake object app, err := dingo.NewApp("local", nil) if err != nil { return } defer func() { ass.Nil(app.Close()) }() // allocate channels slice chs := make([]<-chan *dingo.Event, 4) Debug, Info, Warning, Error := 0, 1, 2, 3 idDebug, idInfo, idWarning, idError := 0, 1, 2, 3 recv := func(which, lvl int) { e := <-chs[which] ass.Equal(lvl, e.Level) } // new a fake object, whose event channel is accessible obj := &testFakeObject{events: make(chan *dingo.Event, 1)} _, _, err = app.Use(obj, 0) if err != nil { return } // subscribe a Debug channel idDebug, chs[Debug], err = app.Listen(dingo.ObjT.All, dingo.EventLvl.Debug, 0) if err != nil { return } // subscribe an Info channel idInfo, chs[Info], err = app.Listen(dingo.ObjT.All, dingo.EventLvl.Info, 0) if err != nil { return } // subscribe a Warning channel idWarning, chs[Warning], err = app.Listen(dingo.ObjT.All, dingo.EventLvl.Warning, 0) if err != nil { return } // subscribe an Error channel idError, chs[Error], err = app.Listen(dingo.ObjT.All, dingo.EventLvl.Error, 0) if err != nil { return } // send an error event obj.events <- dingo.NewEvent(dingo.ObjT.Bridge, dingo.EventLvl.Error, 0, "error") recv(Error, dingo.EventLvl.Error) recv(Warning, dingo.EventLvl.Error) recv(Info, dingo.EventLvl.Error) recv(Debug, dingo.EventLvl.Error) // send a warning event obj.events <- dingo.NewEvent(dingo.ObjT.Bridge, dingo.EventLvl.Warning, 0, "warning") recv(Warning, dingo.EventLvl.Warning) recv(Info, dingo.EventLvl.Warning) recv(Debug, dingo.EventLvl.Warning) // send an info event obj.events <- dingo.NewEvent(dingo.ObjT.Bridge, dingo.EventLvl.Info, 0, "info") recv(Info, dingo.EventLvl.Info) recv(Debug, dingo.EventLvl.Info) // send a debug event obj.events <- dingo.NewEvent(dingo.ObjT.Bridge, dingo.EventLvl.Debug, 0, "debug") recv(Debug, dingo.EventLvl.Debug) // stop debug channel, and send an debug event err = app.StopListen(idDebug) if err != nil { return } // stop info channel, and send an info event err = app.StopListen(idInfo) if err != nil { return } // stop warning channel, and send an warning event err = app.StopListen(idWarning) if err != nil { return } // stop error channel, and send an error event err = app.StopListen(idError) if err != nil { return } }