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