mirror of https://github.com/zlatinb/muwire
Move all event dispatching to it's own thread. Update tests to wait a bit
parent
f8a36d310f
commit
3d78b110f0
|
@ -1,6 +1,8 @@
|
|||
package com.muwire.core
|
||||
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
import java.util.concurrent.Executor
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
import com.muwire.core.files.FileSharedEvent
|
||||
|
||||
|
@ -9,8 +11,18 @@ import groovy.util.logging.Log
|
|||
class EventBus {
|
||||
|
||||
private Map handlers = new HashMap()
|
||||
private final Executor executor = Executors.newSingleThreadExecutor {r ->
|
||||
def rv = new Thread(r)
|
||||
rv.setDaemon(true)
|
||||
rv.setName("event-bus")
|
||||
rv
|
||||
}
|
||||
|
||||
void publish(Event e) {
|
||||
executor.execute({publishInternal(e)} as Runnable)
|
||||
}
|
||||
|
||||
private void publishInternal(Event e) {
|
||||
log.fine "publishing event of type ${e.getClass().getSimpleName()} seqNo ${e.seqNo} timestamp ${e.timestamp}"
|
||||
def currentHandlers
|
||||
final def clazz = e.getClass()
|
||||
|
|
|
@ -14,7 +14,7 @@ class FileManagerTest {
|
|||
EventBus eventBus
|
||||
|
||||
FileManager manager
|
||||
ResultsEvent results
|
||||
volatile ResultsEvent results
|
||||
|
||||
def listener = new Object() {
|
||||
void onResultsEvent(ResultsEvent e) {
|
||||
|
@ -42,6 +42,7 @@ class FileManagerTest {
|
|||
SearchEvent se = new SearchEvent(searchHash: ih.getRoot(), uuid: uuid)
|
||||
|
||||
manager.onSearchEvent(se)
|
||||
Thread.sleep(20)
|
||||
|
||||
assert results != null
|
||||
assert results.results.size() == 1
|
||||
|
@ -61,6 +62,7 @@ class FileManagerTest {
|
|||
SearchEvent se = new SearchEvent(searchHash: ih.getRoot(), uuid: uuid)
|
||||
|
||||
manager.onSearchEvent(se)
|
||||
Thread.sleep(20)
|
||||
|
||||
assert results != null
|
||||
assert results.results.size() == 2
|
||||
|
@ -78,6 +80,7 @@ class FileManagerTest {
|
|||
manager.onFileHashedEvent(fhe)
|
||||
|
||||
manager.onSearchEvent new SearchEvent(searchHash: new byte[32], uuid: UUID.randomUUID())
|
||||
Thread.sleep(20)
|
||||
|
||||
assert results == null
|
||||
}
|
||||
|
@ -92,6 +95,7 @@ class FileManagerTest {
|
|||
|
||||
UUID uuid = UUID.randomUUID()
|
||||
manager.onSearchEvent new SearchEvent(searchTerms: ["a"], uuid:uuid)
|
||||
Thread.sleep(20)
|
||||
|
||||
assert results != null
|
||||
assert results.results.size() == 1
|
||||
|
@ -113,6 +117,7 @@ class FileManagerTest {
|
|||
|
||||
UUID uuid = UUID.randomUUID()
|
||||
manager.onSearchEvent new SearchEvent(searchTerms: ["c"], uuid:uuid)
|
||||
Thread.sleep(20)
|
||||
|
||||
assert results != null
|
||||
assert results.results.size() == 2
|
||||
|
@ -130,6 +135,7 @@ class FileManagerTest {
|
|||
manager.onFileHashedEvent(fhe)
|
||||
|
||||
manager.onSearchEvent new SearchEvent(searchTerms: ["d"], uuid: UUID.randomUUID())
|
||||
Thread.sleep(20)
|
||||
|
||||
assert results == null
|
||||
}
|
||||
|
@ -145,6 +151,7 @@ class FileManagerTest {
|
|||
manager.onFileUnsharedEvent new FileUnsharedEvent(unsharedFile: sf2)
|
||||
|
||||
manager.onSearchEvent new SearchEvent(searchHash : ih.getRoot())
|
||||
Thread.sleep(20)
|
||||
assert results != null
|
||||
assert results.results.size() == 1
|
||||
assert results.results.contains(sf1)
|
||||
|
@ -166,6 +173,7 @@ class FileManagerTest {
|
|||
|
||||
// 1 match left
|
||||
manager.onSearchEvent new SearchEvent(searchTerms: ["c"])
|
||||
Thread.sleep(20)
|
||||
assert results != null
|
||||
assert results.results.size() == 1
|
||||
assert results.results.contains(sf1)
|
||||
|
|
Loading…
Reference in New Issue