Add test case for #58.

This commit is contained in:
Sönke Ludwig 2018-02-22 15:53:44 +01:00
parent d2146e3881
commit 0ff503afa6

View file

@ -0,0 +1,46 @@
/+ dub.sdl:
name "tests"
dependency "vibe-core" path=".."
+/
module tests;
import vibe.core.sync;
import vibe.core.core;
import std.datetime;
import core.atomic;
shared ManualEvent ev;
shared size_t counter;
shared static this()
{
ev = createSharedManualEvent();
}
void main()
{
setTaskStackSize(64*1024);
runTask({
foreach (x; 0 .. 500) {
runWorkerTask(&worker);
}
});
setTimer(dur!"msecs"(10), { ev.emit(); });
setTimer(dur!"seconds"(20), { assert(false, "Timers didn't fire within the time limit"); });
runApplication();
assert(atomicLoad(counter) == 500, "Event loop exited prematurely.");
}
void worker()
{
ev.wait();
ev.emit();
setTimer(dur!"seconds"(1), {
auto c = atomicOp!"+="(counter, 1);
if (c == 500) exitEventLoop(true);
});
}