Improve gmlock, gmutex, grpool, gmutex unit testing sleep time.

This commit is contained in:
hailaz
2019-06-24 19:34:53 +08:00
parent dcf7772589
commit f25571a0a9
5 changed files with 93 additions and 105 deletions

View File

@ -49,22 +49,22 @@ func Test_GFlock_Lock(t *testing.T) {
go func() {
lock.Lock()
array.Append(1)
time.Sleep(200 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
lock.Unlock()
}()
go func() {
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
lock2.Lock()
array.Append(1)
lock2.Unlock()
}()
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
})
}

View File

@ -22,26 +22,21 @@ func Test_Locker_Lock(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(50 * time.Millisecond)
array.Append(1)
time.Sleep(300 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
gmlock.Lock(key)
array.Append(1)
gmlock.Unlock(key)
}()
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 3)
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 3)
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 4)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
gmlock.Remove(key)
})
@ -52,26 +47,21 @@ func Test_Locker_Lock(t *testing.T) {
go func() {
lock.Lock(key)
array.Append(1)
time.Sleep(50 * time.Millisecond)
array.Append(1)
time.Sleep(300 * time.Millisecond)
lock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
lock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
lock.Lock(key)
array.Append(1)
lock.Unlock(key)
}()
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 3)
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 3)
time.Sleep(50 * time.Millisecond)
gtest.Assert(array.Len(), 4)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
lock.Clear()
})
@ -84,26 +74,26 @@ func Test_Locker_TryLock(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(200 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(150 * time.Millisecond)
if gmlock.TryLock(key) {
array.Append(1)
gmlock.Unlock(key)
}
}()
go func() {
time.Sleep(300 * time.Millisecond)
time.Sleep(400 * time.Millisecond)
if gmlock.TryLock(key) {
array.Append(1)
gmlock.Unlock(key)
}
}()
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(300 * time.Millisecond)
gtest.Assert(array.Len(), 2)
@ -119,20 +109,20 @@ func Test_Locker_LockFunc(t *testing.T) {
go func() {
gmlock.LockFunc(key, func() {
array.Append(1)
time.Sleep(50 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
}) //
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.LockFunc(key, func() {
array.Append(1)
})
}()
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1) //
time.Sleep(50 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
})
}
@ -144,24 +134,24 @@ func Test_Locker_TryLockFunc(t *testing.T) {
go func() {
gmlock.TryLockFunc(key, func() {
array.Append(1)
time.Sleep(50 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
})
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.TryLockFunc(key, func() {
array.Append(1)
})
}()
go func() {
time.Sleep(70 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gmlock.TryLockFunc(key, func() {
array.Append(1)
})
}()
time.Sleep(50 * time.Millisecond)
time.Sleep(150 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(100 * time.Millisecond)
time.Sleep(400 * time.Millisecond)
gtest.Assert(array.Len(), 2)
})
}

View File

@ -23,20 +23,19 @@ func Test_Locker_RLock(t *testing.T) {
go func() {
gmlock.RLock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
array.Append(1)
time.Sleep(200 * time.Millisecond)
gmlock.RUnlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.Lock(key)
array.Append(1)
gmlock.Unlock(key)
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 3)
gtest.Assert(array.Len(), 2)
})
//Lock before RLock
@ -46,16 +45,16 @@ func Test_Locker_RLock(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.RLock(key)
array.Append(1)
gmlock.RUnlock(key)
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
@ -68,26 +67,26 @@ func Test_Locker_RLock(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.RLock(key)
array.Append(1)
time.Sleep(200 * time.Millisecond)
gmlock.RUnlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.RLock(key)
array.Append(1)
time.Sleep(200 * time.Millisecond)
gmlock.RUnlock(key)
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(500 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 3)
})
}
@ -100,17 +99,17 @@ func Test_Locker_TryRLock(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
if gmlock.TryRLock(key) {
array.Append(1)
gmlock.RUnlock(key)
}
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(150 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 1)
@ -123,24 +122,24 @@ func Test_Locker_TryRLock(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
if gmlock.TryRLock(key) {
array.Append(1)
gmlock.RUnlock(key)
}
}()
go func() {
time.Sleep(150 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
if gmlock.TryRLock(key) {
array.Append(1)
gmlock.RUnlock(key)
}
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(150 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
@ -155,20 +154,19 @@ func Test_Locker_RLockFunc(t *testing.T) {
go func() {
gmlock.RLockFunc(key, func() {
array.Append(1)
time.Sleep(100 * time.Millisecond)
array.Append(1)
time.Sleep(200 * time.Millisecond)
})
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.Lock(key)
array.Append(1)
gmlock.Unlock(key)
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(150 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 3)
gtest.Assert(array.Len(), 2)
})
//Lock before RLockFunc
@ -178,16 +176,16 @@ func Test_Locker_RLockFunc(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.RLockFunc(key, func() {
array.Append(1)
})
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 2)
@ -200,26 +198,26 @@ func Test_Locker_RLockFunc(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.RLockFunc(key, func() {
array.Append(1)
time.Sleep(200 * time.Millisecond)
})
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.RLockFunc(key, func() {
array.Append(1)
time.Sleep(200 * time.Millisecond)
})
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(400 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 3)
})
}
@ -232,16 +230,16 @@ func Test_Locker_TryRLockFunc(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.TryRLockFunc(key, func() {
array.Append(1)
})
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(200 * time.Millisecond)
gtest.Assert(array.Len(), 1)
@ -254,22 +252,22 @@ func Test_Locker_TryRLockFunc(t *testing.T) {
go func() {
gmlock.Lock(key)
array.Append(1)
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
gmlock.Unlock(key)
}()
go func() {
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gmlock.TryRLockFunc(key, func() {
array.Append(1)
})
}()
go func() {
time.Sleep(150 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gmlock.TryRLockFunc(key, func() {
array.Append(1)
})
}()
time.Sleep(20 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(300 * time.Millisecond)
gtest.Assert(array.Len(), 2)

View File

@ -21,11 +21,11 @@ func Test_Mutex_RUnlock(t *testing.T) {
for index := 0; index < 1000; index++ {
go func() {
mu.RLockFunc(func() {
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
})
}()
}
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(mu.IsRLocked(), true)
gtest.Assert(mu.IsLocked(), true)
gtest.Assert(mu.IsWLocked(), false)
@ -34,7 +34,7 @@ func Test_Mutex_RUnlock(t *testing.T) {
mu.RUnlock()
}()
}
time.Sleep(150 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gtest.Assert(mu.IsRLocked(), false)
})
@ -63,27 +63,27 @@ func Test_Mutex_IsLocked(t *testing.T) {
mu := gmutex.New()
go func() {
mu.LockFunc(func() {
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
})
}()
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(mu.IsLocked(), true)
gtest.Assert(mu.IsWLocked(), true)
gtest.Assert(mu.IsRLocked(), false)
time.Sleep(110 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gtest.Assert(mu.IsLocked(), false)
gtest.Assert(mu.IsWLocked(), false)
go func() {
mu.RLockFunc(func() {
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
})
}()
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(mu.IsRLocked(), true)
gtest.Assert(mu.IsLocked(), true)
gtest.Assert(mu.IsWLocked(), false)
time.Sleep(110 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
gtest.Assert(mu.IsRLocked(), false)
})
}
@ -95,7 +95,7 @@ func Test_Mutex_Unlock(t *testing.T) {
go func() {
mu.LockFunc(func() {
array.Append(1)
time.Sleep(200 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
})
}()
go func() {
@ -112,14 +112,14 @@ func Test_Mutex_Unlock(t *testing.T) {
}()
go func() {
time.Sleep(100 * time.Millisecond)
time.Sleep(200 * time.Millisecond)
mu.Unlock()
mu.Unlock()
mu.Unlock()
mu.Unlock()
}()
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(400 * time.Millisecond)
gtest.Assert(array.Len(), 3)
@ -189,17 +189,17 @@ func Test_Mutex_RLockFunc(t *testing.T) {
go func() {
mu.LockFunc(func() {
array.Append(1)
time.Sleep(200 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
})
}()
go func() {
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
mu.RLockFunc(func() {
array.Append(1)
time.Sleep(100 * time.Millisecond)
})
}()
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
@ -211,21 +211,21 @@ func Test_Mutex_RLockFunc(t *testing.T) {
mu := gmutex.New()
array := garray.New()
go func() {
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
mu.RLockFunc(func() {
array.Append(1)
time.Sleep(100 * time.Millisecond)
})
}()
go func() {
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
mu.RLockFunc(func() {
array.Append(1)
time.Sleep(100 * time.Millisecond)
})
}()
go func() {
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
mu.RLockFunc(func() {
array.Append(1)
time.Sleep(100 * time.Millisecond)
@ -244,7 +244,7 @@ func Test_Mutex_TryRLockFunc(t *testing.T) {
go func() {
mu.LockFunc(func() {
array.Append(1)
time.Sleep(200 * time.Millisecond)
time.Sleep(300 * time.Millisecond)
})
}()
go func() {
@ -255,13 +255,13 @@ func Test_Mutex_TryRLockFunc(t *testing.T) {
}()
for index := 0; index < 1000; index++ {
go func() {
time.Sleep(300 * time.Millisecond)
time.Sleep(400 * time.Millisecond)
mu.TryRLockFunc(func() {
array.Append(1)
})
}()
}
time.Sleep(10 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), 1)

View File

@ -31,7 +31,7 @@ func Test_Basic(t *testing.T) {
})
}
wg.Wait()
time.Sleep(50 * time.Millisecond)
time.Sleep(100 * time.Millisecond)
gtest.Assert(array.Len(), size)
gtest.Assert(grpool.Jobs(), 0)
gtest.Assert(grpool.Size(), 0)