Add test for rejectedsoftware/vibe.d#1726.
This commit is contained in:
parent
6b98f04983
commit
52ead0891f
67
tests/vibe.core.net.1726.d
Normal file
67
tests/vibe.core.net.1726.d
Normal file
|
@ -0,0 +1,67 @@
|
|||
/++ 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();
|
||||
}
|
Loading…
Reference in a new issue