@ -6,6 +6,7 @@ package queue
import (
import (
"io/ioutil"
"io/ioutil"
"sync"
"testing"
"testing"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/util"
@ -22,6 +23,7 @@ func TestPersistableChannelQueue(t *testing.T) {
}
}
}
}
lock := sync . Mutex { }
queueShutdown := [ ] func ( ) { }
queueShutdown := [ ] func ( ) { }
queueTerminate := [ ] func ( ) { }
queueTerminate := [ ] func ( ) { }
@ -41,8 +43,12 @@ func TestPersistableChannelQueue(t *testing.T) {
assert . NoError ( t , err )
assert . NoError ( t , err )
go queue . Run ( func ( shutdown func ( ) ) {
go queue . Run ( func ( shutdown func ( ) ) {
lock . Lock ( )
defer lock . Unlock ( )
queueShutdown = append ( queueShutdown , shutdown )
queueShutdown = append ( queueShutdown , shutdown )
} , func ( terminate func ( ) ) {
} , func ( terminate func ( ) ) {
lock . Lock ( )
defer lock . Unlock ( )
queueTerminate = append ( queueTerminate , terminate )
queueTerminate = append ( queueTerminate , terminate )
} )
} )
@ -69,7 +75,11 @@ func TestPersistableChannelQueue(t *testing.T) {
assert . Error ( t , err )
assert . Error ( t , err )
// Now shutdown the queue
// Now shutdown the queue
for _ , callback := range queueShutdown {
lock . Lock ( )
callbacks := make ( [ ] func ( ) , len ( queueShutdown ) )
copy ( callbacks , queueShutdown )
lock . Unlock ( )
for _ , callback := range callbacks {
callback ( )
callback ( )
}
}
@ -87,7 +97,11 @@ func TestPersistableChannelQueue(t *testing.T) {
}
}
// terminate the queue
// terminate the queue
for _ , callback := range queueTerminate {
lock . Lock ( )
callbacks = make ( [ ] func ( ) , len ( queueTerminate ) )
copy ( callbacks , queueTerminate )
lock . Unlock ( )
for _ , callback := range callbacks {
callback ( )
callback ( )
}
}
@ -110,8 +124,12 @@ func TestPersistableChannelQueue(t *testing.T) {
assert . NoError ( t , err )
assert . NoError ( t , err )
go queue . Run ( func ( shutdown func ( ) ) {
go queue . Run ( func ( shutdown func ( ) ) {
lock . Lock ( )
defer lock . Unlock ( )
queueShutdown = append ( queueShutdown , shutdown )
queueShutdown = append ( queueShutdown , shutdown )
} , func ( terminate func ( ) ) {
} , func ( terminate func ( ) ) {
lock . Lock ( )
defer lock . Unlock ( )
queueTerminate = append ( queueTerminate , terminate )
queueTerminate = append ( queueTerminate , terminate )
} )
} )
@ -122,10 +140,19 @@ func TestPersistableChannelQueue(t *testing.T) {
result4 := <- handleChan
result4 := <- handleChan
assert . Equal ( t , test2 . TestString , result4 . TestString )
assert . Equal ( t , test2 . TestString , result4 . TestString )
assert . Equal ( t , test2 . TestInt , result4 . TestInt )
assert . Equal ( t , test2 . TestInt , result4 . TestInt )
for _ , callback := range queueShutdown {
lock . Lock ( )
callbacks = make ( [ ] func ( ) , len ( queueShutdown ) )
copy ( callbacks , queueShutdown )
lock . Unlock ( )
for _ , callback := range callbacks {
callback ( )
callback ( )
}
}
for _ , callback := range queueTerminate {
lock . Lock ( )
callbacks = make ( [ ] func ( ) , len ( queueTerminate ) )
copy ( callbacks , queueTerminate )
lock . Unlock ( )
for _ , callback := range callbacks {
callback ( )
callback ( )
}
}