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())
|
// 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
|
// https://github.com/gookit/event/issues/61
|
||||||
// prepare: 此时设置 ConsumerNum = 10, 每个任务耗时1s, 触发100个任务
|
// prepare: 此时设置 ConsumerNum = 10, 每个任务耗时1s, 触发100个任务
|
||||||
// expected: 10s左右执行完所有任务
|
// expected: 10s左右执行完所有任务
|
||||||
|
@@ -15,7 +15,7 @@ type testListenerCalc struct {
|
|||||||
owner *globalTestVal
|
owner *globalTestVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l testListenerCalc) Handle(e Event) error {
|
func (l testListenerCalc) Handle(_ Event) error {
|
||||||
l.owner.n++
|
l.owner.n++
|
||||||
l.owner.sum += l.bind
|
l.owner.sum += l.bind
|
||||||
return nil
|
return nil
|
||||||
@@ -136,12 +136,12 @@ func Test_RemoveListener(t *testing.T) {
|
|||||||
|
|
||||||
var globalStatic = globalTestVal{}
|
var globalStatic = globalTestVal{}
|
||||||
|
|
||||||
func testFuncCalc1(e Event) error {
|
func testFuncCalc1(_ Event) error {
|
||||||
globalStatic.n++
|
globalStatic.n++
|
||||||
globalStatic.sum += 11
|
globalStatic.sum += 11
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func testFuncCalc2(e Event) error {
|
func testFuncCalc2(_ Event) error {
|
||||||
globalStatic.n++
|
globalStatic.n++
|
||||||
globalStatic.sum += 22
|
globalStatic.sum += 22
|
||||||
return nil
|
return nil
|
||||||
|
@@ -228,8 +228,6 @@ func (em *Manager) RemoveEvents() {
|
|||||||
// newBasicEvent create new BasicEvent by clone em.sample
|
// newBasicEvent create new BasicEvent by clone em.sample
|
||||||
func (em *Manager) newBasicEvent(name string, data M) *BasicEvent {
|
func (em *Manager) newBasicEvent(name string, data M) *BasicEvent {
|
||||||
var cp = *em.sample
|
var cp = *em.sample
|
||||||
cp.ctx = context.Background()
|
|
||||||
|
|
||||||
cp.SetName(name)
|
cp.SetName(name)
|
||||||
cp.SetData(data)
|
cp.SetData(data)
|
||||||
return &cp
|
return &cp
|
||||||
|
@@ -332,3 +332,21 @@ func (em *Manager) AwaitFire(e Event) (err error) {
|
|||||||
close(ch)
|
close(ch)
|
||||||
return
|
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
|
// AddSubscriber register a listener to the event
|
||||||
func AddSubscriber(sbr Subscriber) { std.AddSubscriber(sbr) }
|
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
|
// AsyncFire simple async fire event by 'go' keywords
|
||||||
func AsyncFire(e Event) { std.AsyncFire(e) }
|
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.
|
// FireBatch fire multi event at once.
|
||||||
func FireBatch(es ...any) []error { return std.FireBatch(es...) }
|
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
|
* region Event
|
||||||
*************************************************************/
|
*************************************************************/
|
||||||
|
@@ -166,7 +166,7 @@ func TestFireEvent(t *testing.T) {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
evt2 := event.New("evt2", event.M{"name": "inhere"})
|
evt2 := event.NewEvent("evt2", event.M{"name": "inhere"})
|
||||||
err = event.FireEventCtx(ctx, evt2)
|
err = event.FireEventCtx(ctx, evt2)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "ctx-value1", ctxVal)
|
assert.Equal(t, "ctx-value1", ctxVal)
|
||||||
|
Reference in New Issue
Block a user