vibe-core/tests/vibe.core.net.1726.d

68 lines
1.4 KiB
D
Raw Normal View History

/++ dub.sdl:
name "tests"
description "TCP disconnect task issue"
dependency "vibe-core" path="../"
+/
module tests;
import vibe.core.core;
import vibe.core.net;
import core.time : msecs;
import vibe.core.log;
void main()
{
bool done = false;
auto buf = new ubyte[512*1024*1024];
listenTCP(11375,(conn) {
bool read_ex = false;
bool write_ex = false;
auto rt = runTask!TCPConnection((conn) {
try {
conn.read(buf);
assert(false, "Expected read() to throw an exception.");
} catch (Exception) {
read_ex = true;
conn.close();
logInfo("read out");
} // expected
}, conn);
auto wt = runTask!TCPConnection((conn) {
sleep(1.msecs); // give the connection time to establish
try {
conn.write(buf);
assert(false, "Expected read() to throw an exception.");
} catch (Exception) {
write_ex = true;
conn.close();
logInfo("write out");
} // expected
}, conn);
rt.join();
wt.join();
assert(read_ex, "No read exception thrown");
assert(write_ex, "No write exception thrown");
done = true;
}, "127.0.0.1");
runTask({
try {
auto conn = connectTCP("127.0.0.1", 11375);
sleep(10.msecs);
conn.close();
} catch (Exception e) assert(false, e.msg);
sleep(50.msecs);
assert(done, "Not done");
exitEventLoop();
});
setTimer(2000.msecs, {
assert(false, "Test has hung.");
});
runApplication();
}