mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-08 03:00:27 +08:00
延长读写线程超时时间/增加相关测试用例
This commit is contained in:
@@ -41,7 +41,7 @@ func (this *Limiter) Ack() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *Limiter) TryAck() bool {
|
func (this *Limiter) TryAck() bool {
|
||||||
const timeoutDuration = 500 * time.Millisecond
|
const timeoutDuration = 1 * time.Second
|
||||||
|
|
||||||
var timeout *time.Timer
|
var timeout *time.Timer
|
||||||
select {
|
select {
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ package fsutils_test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
fsutils "github.com/TeaOSLab/EdgeNode/internal/utils/fs"
|
fsutils "github.com/TeaOSLab/EdgeNode/internal/utils/fs"
|
||||||
|
"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
|
||||||
"github.com/iwind/TeaGo/assert"
|
"github.com/iwind/TeaGo/assert"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLimiter_Ack(t *testing.T) {
|
func TestLimiter_Ack(t *testing.T) {
|
||||||
@@ -52,3 +54,48 @@ func TestLimiter_TryAck(t *testing.T) {
|
|||||||
a.IsTrue(limiter.FreeThreads() == 0)
|
a.IsTrue(limiter.FreeThreads() == 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLimiter_TryAck2(t *testing.T) {
|
||||||
|
if !testutils.IsSingleTesting() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var a = assert.NewAssertion(t)
|
||||||
|
|
||||||
|
{
|
||||||
|
var limiter = fsutils.NewLimiter(4)
|
||||||
|
var count = limiter.FreeThreads()
|
||||||
|
a.IsTrue(count == 4)
|
||||||
|
for i := 0; i < count-1; i++ {
|
||||||
|
limiter.Ack()
|
||||||
|
}
|
||||||
|
a.IsTrue(limiter.FreeThreads() == 1)
|
||||||
|
a.IsTrue(limiter.TryAck())
|
||||||
|
a.IsFalse(limiter.TryAck())
|
||||||
|
a.IsFalse(limiter.TryAck())
|
||||||
|
|
||||||
|
limiter.Release()
|
||||||
|
a.IsTrue(limiter.TryAck())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLimiter_Timout(t *testing.T) {
|
||||||
|
var timeout = time.NewTimer(100 * time.Millisecond)
|
||||||
|
|
||||||
|
var r = make(chan bool, 1)
|
||||||
|
r <- true
|
||||||
|
|
||||||
|
var before = time.Now()
|
||||||
|
select {
|
||||||
|
case <-r:
|
||||||
|
case <-timeout.C:
|
||||||
|
}
|
||||||
|
t.Log(time.Since(before).Seconds()*1000, "ms")
|
||||||
|
|
||||||
|
timeout.Stop()
|
||||||
|
|
||||||
|
before = time.Now()
|
||||||
|
timeout.Reset(100 * time.Millisecond)
|
||||||
|
<-timeout.C
|
||||||
|
t.Log(time.Since(before).Seconds()*1000, "ms")
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ func ReadFile(filename string) (data []byte, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func WriteFile(filename string, data []byte, perm os.FileMode) (err error) {
|
func WriteFile(filename string, data []byte, perm os.FileMode) (err error) {
|
||||||
|
WriterLimiter.Ack()
|
||||||
err = os.WriteFile(filename, data, perm)
|
err = os.WriteFile(filename, data, perm)
|
||||||
|
WriterLimiter.Release()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user