延长读写线程超时时间/增加相关测试用例

This commit is contained in:
GoEdgeLab
2024-04-30 17:24:08 +08:00
parent 6d4269defb
commit 06a8ec5dec
3 changed files with 50 additions and 1 deletions

View File

@@ -41,7 +41,7 @@ func (this *Limiter) Ack() {
}
func (this *Limiter) TryAck() bool {
const timeoutDuration = 500 * time.Millisecond
const timeoutDuration = 1 * time.Second
var timeout *time.Timer
select {

View File

@@ -4,8 +4,10 @@ package fsutils_test
import (
fsutils "github.com/TeaOSLab/EdgeNode/internal/utils/fs"
"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
"github.com/iwind/TeaGo/assert"
"testing"
"time"
)
func TestLimiter_Ack(t *testing.T) {
@@ -52,3 +54,48 @@ func TestLimiter_TryAck(t *testing.T) {
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")
}

View File

@@ -26,6 +26,8 @@ func ReadFile(filename string) (data []byte, err error) {
}
func WriteFile(filename string, data []byte, perm os.FileMode) (err error) {
WriterLimiter.Ack()
err = os.WriteFile(filename, data, perm)
WriterLimiter.Release()
return
}