aboutsummaryrefslogtreecommitdiff
path: root/tests/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/main.cpp')
-rw-r--r--tests/main.cpp70
1 files changed, 69 insertions, 1 deletions
diff --git a/tests/main.cpp b/tests/main.cpp
index 22bef9d..61f95f4 100644
--- a/tests/main.cpp
+++ b/tests/main.cpp
@@ -8,7 +8,7 @@ const int PORT = 35231;
#define REQUIRE(expr) do { if(!(expr)) { fprintf(stderr, "Assert failed: %s\n", #expr); exit(1); } }while(0)
-int main()
+void testP2p()
{
const sibs::PubsubKey key("abcdefghijklmnopqrstuvxyz0123456789", 35);
const sibs::PubsubKey key2("zbcdefghcjklmn3pqrs5uvx2z0123F56789", 35);
@@ -66,6 +66,74 @@ int main()
REQUIRE(gotListen);
REQUIRE(gotListen2);
+}
+
+void testRouted()
+{
+ sibs::ConnectionOptions options;
+ options.useP2p = false;
+
+ const sibs::PubsubKey key("abcdefghijklmnopqrstuvxyz0123456789", 35);
+ const sibs::PubsubKey key2("zbcdefghcjklmn3pqrs5uvx2z0123F56789", 35);
+ sibs::BootstrapNode boostrapNode(sibs::Ipv4(nullptr, PORT));
+
+ std::unique_ptr<sibs::BootstrapConnection> connection1 = sibs::BootstrapConnection::connect(sibs::Ipv4("127.0.0.1", PORT), options).get();
+ bool gotData1 = false;
+ bool gotAsdf1 = false;
+ connection1->listen(key, [&gotData1, &gotAsdf1](const sibs::DirectConnectionPeer *peer, const void *data, const sibs::usize size)
+ {
+ if(size == 5 && strncmp((const char*)data, "hello", 5) == 0)
+ gotData1 = true;
+ if(size == 4 && strncmp((const char*)data, "asdf", 4) == 0)
+ gotAsdf1 = true;
+ return true;
+ });
+
+ std::unique_ptr<sibs::BootstrapConnection> connection2 = sibs::BootstrapConnection::connect(sibs::Ipv4("127.0.0.1", PORT), options).get();
+ bool gotData2 = false;
+ bool gotAsdf2 = false;
+ connection2->listen(key, [&gotData2, &gotAsdf2](const sibs::DirectConnectionPeer *peer, const void *data, const sibs::usize size)
+ {
+ if(size == 5 && strncmp((const char*)data, "hello", 5) == 0)
+ gotData2 = true;
+ if(size == 4 && strncmp((const char*)data, "asdf", 4) == 0)
+ gotAsdf2 = true;
+ return true;
+ });
+
+ bool gotListen = false;
+ connection1->listen(key2, [&gotListen](const sibs::DirectConnectionPeer *peer, const void *data, const sibs::usize size)
+ {
+ if(size == 14 && strncmp((const char*)data, "secondListener", 14) == 0)
+ gotListen = true;
+ return true;
+ });
+
+ bool gotListen2 = false;
+ connection2->listen(key2, [&gotListen2](const sibs::DirectConnectionPeer *peer, const void *data, const sibs::usize size)
+ {
+ if(size == 14 && strncmp((const char*)data, "secondListener", 14) == 0)
+ gotListen2 = true;
+ return true;
+ });
+
+ connection1->put(key, "hello", 5);
+ connection2->put(key, "asdf", 4);
+ connection1->put(key2, "secondListener", 14);
+ std::this_thread::sleep_for(std::chrono::seconds(6));
+
+ REQUIRE(gotData1);
+ REQUIRE(gotAsdf1);
+ REQUIRE(gotData2);
+ REQUIRE(gotAsdf2);
+
+ REQUIRE(gotListen);
+ REQUIRE(gotListen2);
+}
+int main()
+{
+ testP2p();
+ testRouted();
return 0;
}