Read/write loop test working

This commit is contained in:
Ian Gulliver
2019-05-18 23:19:01 -07:00
commit 3556a7bed5
8 changed files with 420 additions and 0 deletions

40
test_loop.cc Normal file
View File

@@ -0,0 +1,40 @@
#include "uring.h"
#include <glog/logging.h>
#include <sys/socket.h>
int main(int argc, char* argv[]) {
google::InitGoogleLogging(argv[0]);
gflags::ParseCommandLineFlags(&argc, &argv, true);
uring::URing uring(1);
int sv[2];
PCHECK(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
std::string foo("foo\n");
bool fired = false;
uring.write(sv[0], foo.data(), foo.size(), [&](int32_t res) {
fired = true;
LOG(INFO) << "write() res=" << res;
CHECK_EQ(res, 4);
});
uring.Submit();
uring.Wait();
CHECK(fired);
char buf[10];
fired = false;
uring.read(sv[1], buf, 10, [&](int32_t res) {
fired = true;
LOG(INFO) << "read() res=" << res;
CHECK_EQ(res, 4);
CHECK_EQ(memcmp(buf, foo.data(), foo.size()), 0);
});
uring.Submit();
uring.Wait();
CHECK(fired);
CHECK_EQ(uring.Try(), false);
}