mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-12-24 13:48:04 +08:00
- fix: panic generated by concurrent creation of streams for publishing and subscribing - fix: IdleTimeout invalid issue - fix: read and write concurrency issues caused by subscriber blocking - Preview plugin fixes the default port for https - GB28181 plugin PR merge - 启动工程增加对流的发布订阅的单元测试和基准测试 - 修复发布和订阅并发创建流产生的panic - 修复IdleTimeout无效问题 - 修复订阅者阻塞导致读写并发问题 - preview插件修复https默认端口 - gb28181插件PR合并
53 lines
1008 B
Go
53 lines
1008 B
Go
package test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// TestPubAndSub 测试发布和订阅
|
|
func TestPubAndSub(t *testing.T) {
|
|
t.Cleanup(FreeEngine)
|
|
UseEngine()
|
|
t.Run("publish", func(t *testing.T) {
|
|
t.Parallel()
|
|
var pub UnitTestPublisher
|
|
unitTestPlugin.Publish("test/001", &pub)
|
|
})
|
|
t.Run("subscribe", func(t *testing.T) {
|
|
t.Parallel()
|
|
var sub UnitTestSubsciber
|
|
sub.TB = t
|
|
err := unitTestPlugin.Subscribe("test/001", &sub)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
} else {
|
|
sub.PlayRaw()
|
|
}
|
|
})
|
|
}
|
|
|
|
func BenchmarkPubAndSub(b *testing.B) {
|
|
b.Cleanup(FreeEngine)
|
|
UseEngine()
|
|
for i := 0; i < 10; i++ {
|
|
i := i
|
|
go func(i int) {
|
|
var pub UnitTestPublisher
|
|
unitTestPlugin.Publish(fmt.Sprintf("testb/%d", i), &pub)
|
|
}(i)
|
|
go b.RunParallel(func(pb *testing.PB) {
|
|
var sub UnitTestSubsciber
|
|
sub.TB = b
|
|
err := unitTestPlugin.Subscribe(fmt.Sprintf("testb/%d", i), &sub)
|
|
if err != nil {
|
|
// b.Fatal(err)
|
|
} else {
|
|
sub.PlayRaw()
|
|
}
|
|
})
|
|
}
|
|
time.Sleep(time.Second * 10)
|
|
}
|