diff --git a/tests/vibe.core.net.1429/dub.sdl b/tests/vibe.core.net.1429/dub.sdl new file mode 100644 index 0000000..5df5ea8 --- /dev/null +++ b/tests/vibe.core.net.1429/dub.sdl @@ -0,0 +1,4 @@ +name "tests" +description "TCP disconnect task issue" +dependency "vibe-d:core" path="../../" +versions "VibeDefaultMain" diff --git a/tests/vibe.core.net.1429/source/app.d b/tests/vibe.core.net.1429/source/app.d new file mode 100644 index 0000000..352e62c --- /dev/null +++ b/tests/vibe.core.net.1429/source/app.d @@ -0,0 +1,29 @@ +import vibe.core.core; +import vibe.core.log : logInfo; +import vibe.core.net; +import core.time : msecs; +import std.datetime : Clock, UTC; + +shared static this() +{ + auto udp = listenUDP(11429, "127.0.0.1"); + + runTask({ + sleep(500.msecs); + assert(false, "Receive call did not return in a timely manner. Killing process."); + }); + + runTask({ + auto start = Clock.currTime(UTC()); + try { + udp.recv(100.msecs); + assert(false, "Timeout did not occur."); + } catch (Exception e) { + auto duration = Clock.currTime(UTC()) - start; + assert(duration >= 99.msecs, "Timeout occurred too early"); + assert(duration >= 99.msecs && duration < 150.msecs, "Timeout occurred too late."); + logInfo("UDP receive timeout test was successful."); + exitEventLoop(); + } + }); +}