Skip to content

Commit

Permalink
test: writeloop 包增加测试用例
Browse files Browse the repository at this point in the history
  • Loading branch information
kercylan98 committed Dec 23, 2023
1 parent 307e500 commit f52d73e
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 0 deletions.
25 changes: 25 additions & 0 deletions server/writeloop/writeloop_benchmark_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package writeloop_test

import (
"github.com/kercylan98/minotaur/server/writeloop"
"testing"
)

func BenchmarkWriteLoop_Put(b *testing.B) {
wl := writeloop.NewWriteLoop(wp, func(message *Message) error {
return nil
}, nil)

defer func() {
wl.Close()
}()

b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
wl.Put(wp.Get())
}
})
b.StopTimer()

}
45 changes: 45 additions & 0 deletions server/writeloop/writeloop_example_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package writeloop_test

import (
"fmt"
"github.com/kercylan98/minotaur/server/writeloop"
"github.com/kercylan98/minotaur/utils/concurrent"
"sync"
)

func ExampleNewWriteLoop() {
pool := concurrent.NewPool[Message](func() *Message {
return &Message{}
}, func(data *Message) {
data.ID = 0
})
var wait sync.WaitGroup
wait.Add(10)
wl := writeloop.NewWriteLoop(pool, func(message *Message) error {
fmt.Println(message.ID)
wait.Done()
return nil
}, func(err any) {
fmt.Println(err)
})

for i := 0; i < 10; i++ {
m := pool.Get()
m.ID = i
wl.Put(m)
}

wait.Wait()
wl.Close()
// Output:
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
}
65 changes: 65 additions & 0 deletions server/writeloop/writeloop_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package writeloop_test

import (
"github.com/kercylan98/minotaur/server/writeloop"
"github.com/kercylan98/minotaur/utils/concurrent"
"github.com/stretchr/testify/assert"
"testing"
)

type Message struct {
ID int
}

var wp = concurrent.NewPool(func() *Message {
return &Message{}
}, func(data *Message) {
data.ID = 0
})

func TestNewWriteLoop(t *testing.T) {
wl := writeloop.NewWriteLoop(wp, func(message *Message) error {
t.Log(message.ID)
return nil
}, func(err any) {
t.Log(err)
})
assert.NotNil(t, wl)
wl.Close()
}

func TestWriteLoop_Put(t *testing.T) {
wl := writeloop.NewWriteLoop(wp, func(message *Message) error {
t.Log(message.ID)
return nil
}, func(err any) {
t.Log(err)
})
assert.NotNil(t, wl)

for i := 0; i < 100; i++ {
m := wp.Get()
m.ID = i
wl.Put(m)
}

wl.Close()
}

func TestWriteLoop_Close(t *testing.T) {
wl := writeloop.NewWriteLoop(wp, func(message *Message) error {
t.Log(message.ID)
return nil
}, func(err any) {
t.Log(err)
})
assert.NotNil(t, wl)

for i := 0; i < 100; i++ {
m := wp.Get()
m.ID = i
wl.Put(m)
}

wl.Close()
}

0 comments on commit f52d73e

Please sign in to comment.