mirror of
https://github.com/gookit/event
synced 2025-09-26 19:11:14 +08:00
👔 up: update some code style, add more test cases
This commit is contained in:
@@ -89,6 +89,32 @@ func TestIssues_20(t *testing.T) {
|
||||
// dump.P(buf.String())
|
||||
}
|
||||
|
||||
// https://github.com/gookit/event/issues/53
|
||||
// 我现在 在事件1里面, 触发启动事件2 是 启动不了的,貌似他会进入一个死循环进行卡死状态
|
||||
func TestIssues_53(t *testing.T) {
|
||||
buf := new(bytes.Buffer)
|
||||
mgr := event.NewManager("test")
|
||||
|
||||
handler1 := event.ListenerFunc(func(e event.Event) error {
|
||||
_, _ = fmt.Fprintf(buf, "%s-%s|", e.Name(), e.Get("user"))
|
||||
// trigger event2
|
||||
err, _ := mgr.Fire("app.event2", event.M{"user": "INHERE"})
|
||||
return err
|
||||
})
|
||||
|
||||
handler2 := event.ListenerFunc(func(e event.Event) error {
|
||||
_, _ = fmt.Fprintf(buf, "%s-%s|", e.Name(), e.Get("user"))
|
||||
return nil
|
||||
})
|
||||
|
||||
mgr.On("app.event1", handler1)
|
||||
mgr.On("app.event2", handler2)
|
||||
|
||||
err, _ := mgr.Fire("app.event1", event.M{"user": "INHERE"})
|
||||
assert.NoError(t, err)
|
||||
assert.StrContains(t, "app.event1-INHERE|app.event2-INHERE|", buf.String())
|
||||
}
|
||||
|
||||
// https://github.com/gookit/event/issues/61
|
||||
// prepare: 此时设置 ConsumerNum = 10, 每个任务耗时1s, 触发100个任务
|
||||
// expected: 10s左右执行完所有任务
|
||||
|
@@ -15,7 +15,7 @@ type testListenerCalc struct {
|
||||
owner *globalTestVal
|
||||
}
|
||||
|
||||
func (l testListenerCalc) Handle(e Event) error {
|
||||
func (l testListenerCalc) Handle(_ Event) error {
|
||||
l.owner.n++
|
||||
l.owner.sum += l.bind
|
||||
return nil
|
||||
@@ -136,12 +136,12 @@ func Test_RemoveListener(t *testing.T) {
|
||||
|
||||
var globalStatic = globalTestVal{}
|
||||
|
||||
func testFuncCalc1(e Event) error {
|
||||
func testFuncCalc1(_ Event) error {
|
||||
globalStatic.n++
|
||||
globalStatic.sum += 11
|
||||
return nil
|
||||
}
|
||||
func testFuncCalc2(e Event) error {
|
||||
func testFuncCalc2(_ Event) error {
|
||||
globalStatic.n++
|
||||
globalStatic.sum += 22
|
||||
return nil
|
||||
|
@@ -228,8 +228,6 @@ func (em *Manager) RemoveEvents() {
|
||||
// newBasicEvent create new BasicEvent by clone em.sample
|
||||
func (em *Manager) newBasicEvent(name string, data M) *BasicEvent {
|
||||
var cp = *em.sample
|
||||
cp.ctx = context.Background()
|
||||
|
||||
cp.SetName(name)
|
||||
cp.SetData(data)
|
||||
return &cp
|
||||
|
@@ -332,3 +332,21 @@ func (em *Manager) AwaitFire(e Event) (err error) {
|
||||
close(ch)
|
||||
return
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
* region Helper methods
|
||||
*************************************************************/
|
||||
|
||||
// CloseWait close channel and wait all async event done.
|
||||
func (em *Manager) CloseWait() error {
|
||||
if err := em.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
return em.Wait()
|
||||
}
|
||||
|
||||
// Wait wait all async event done.
|
||||
func (em *Manager) Wait() error {
|
||||
em.wg.Wait()
|
||||
return em.err
|
||||
}
|
||||
|
19
std.go
19
std.go
@@ -38,6 +38,19 @@ func Subscribe(sbr Subscriber) { std.Subscribe(sbr) }
|
||||
// AddSubscriber register a listener to the event
|
||||
func AddSubscriber(sbr Subscriber) { std.AddSubscriber(sbr) }
|
||||
|
||||
// HasListeners has listeners for the event name.
|
||||
func HasListeners(name string) bool { return std.HasListeners(name) }
|
||||
|
||||
// Reset the default event manager
|
||||
func Reset() { std.Clear() }
|
||||
|
||||
// CloseWait close chan and wait for all async events done.
|
||||
func CloseWait() error { return std.CloseWait() }
|
||||
|
||||
/*************************************************************
|
||||
* region Trigger
|
||||
*************************************************************/
|
||||
|
||||
// AsyncFire simple async fire event by 'go' keywords
|
||||
func AsyncFire(e Event) { std.AsyncFire(e) }
|
||||
|
||||
@@ -76,12 +89,6 @@ func MustTrigger(name string, params M) Event { return std.MustFire(name, params
|
||||
// FireBatch fire multi event at once.
|
||||
func FireBatch(es ...any) []error { return std.FireBatch(es...) }
|
||||
|
||||
// HasListeners has listeners for the event name.
|
||||
func HasListeners(name string) bool { return std.HasListeners(name) }
|
||||
|
||||
// Reset the default event manager
|
||||
func Reset() { std.Clear() }
|
||||
|
||||
/*************************************************************
|
||||
* region Event
|
||||
*************************************************************/
|
||||
|
@@ -166,7 +166,7 @@ func TestFireEvent(t *testing.T) {
|
||||
}
|
||||
return nil
|
||||
}))
|
||||
evt2 := event.New("evt2", event.M{"name": "inhere"})
|
||||
evt2 := event.NewEvent("evt2", event.M{"name": "inhere"})
|
||||
err = event.FireEventCtx(ctx, evt2)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "ctx-value1", ctxVal)
|
||||
|
Reference in New Issue
Block a user