diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/main.cpp | 90 |
1 files changed, 80 insertions, 10 deletions
diff --git a/tests/main.cpp b/tests/main.cpp index 5d527fe..b5ce639 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -12,6 +12,7 @@ #include <thread> #include <opendht.h> #include <boost/filesystem.hpp> +#include <map> using namespace std; using namespace chrono_literals; @@ -113,20 +114,20 @@ void testCachedIdentity() { pair<shared_ptr<dht::crypto::PrivateKey>, shared_ptr<dht::crypto::Certificate>> identity = dht::crypto::generateIdentity(); dht::Blob privateKeyData = identity.first->serialize(); - printf("Private key size: %d, serialized data: %s\n", privateKeyData.size(), Hash(privateKeyData.data(), privateKeyData.size()).toString().c_str()); + Log::debug("Private key size: %d, serialized data: %s", privateKeyData.size(), Hash(privateKeyData.data(), privateKeyData.size()).toString().c_str()); dht::crypto::PrivateKey privateKeyDeserialized(privateKeyData); privateKeyData = identity.first->serialize(); - printf("Private key size: %d, serialized data: %s\n", privateKeyData.size(), Hash(privateKeyData.data(), privateKeyData.size()).toString().c_str()); + Log::debug("Private key size: %d, serialized data: %s", privateKeyData.size(), Hash(privateKeyData.data(), privateKeyData.size()).toString().c_str()); dht::Blob certificateData; identity.second->pack(certificateData); - printf("Certificate data size: %d, serialized data: %s\n", certificateData.size(), Hash(certificateData.data(), certificateData.size()).toString().c_str()); + Log::debug("Certificate data size: %d, serialized data: %s", certificateData.size(), Hash(certificateData.data(), certificateData.size()).toString().c_str()); dht::crypto::Certificate certificateDeserialized(certificateData); certificateData.clear(); identity.second->pack(certificateData); - printf("Certificate data size: %d, serialized data: %s\n", certificateData.size(), Hash(certificateData.data(), certificateData.size()).toString().c_str()); + Log::debug("Certificate data size: %d, serialized data: %s", certificateData.size(), Hash(certificateData.data(), certificateData.size()).toString().c_str()); } void testTimestamp(const Database &database) @@ -141,18 +142,17 @@ void testTimestamp(const Database &database) fail("Second timestamp is not more than first one for some reason"); } -int main() +void testStandard() { - Log::debug("Starting tests..."); - boost::filesystem::path storagePath("/tmp/odhtdbTest"); - boost::filesystem::remove_all(storagePath); - boost::filesystem::create_directory(storagePath); - testCachedIdentity(); testBinHexConvert(); testHash(); testEncryption(); + boost::filesystem::path storagePath("/tmp/odhtdbTest"); + boost::filesystem::remove_all(storagePath); + boost::filesystem::create_directory(storagePath); + int createNodeCounter = 0; int addDataCounter = 0; int addUserCounter = 0; @@ -303,6 +303,76 @@ int main() assertEquals((u32)10, receivedNumber); assertEquals((u32)20, sendCustomMessageResponseNumber); } +} + +void testTwoLocalNodes() +{ + boost::filesystem::path storagePath1("/tmp/odhtdbTest1"); + boost::filesystem::remove_all(storagePath1); + boost::filesystem::create_directory(storagePath1); + + boost::filesystem::path storagePath2("/tmp/odhtdbTest2"); + boost::filesystem::remove_all(storagePath2); + boost::filesystem::create_directory(storagePath2); + + auto createNodeCallback = [](const DatabaseCreateNodeRequest &request) + { + Log::debug("Create node callback"); + }; + + auto addNodeCallback = [](const DatabaseAddNodeRequest &request) + { + Log::debug("Add node callback"); + }; + + auto addUserCallback = [](const DatabaseAddUserRequest &request) + { + Log::debug("Add user callback"); + }; + + DatabaseCallbackFuncs callbackFuncs { createNodeCallback, addNodeCallback, addUserCallback }; + + Database database1("bootstrap.ring.cx", 4222, storagePath1, callbackFuncs); + auto databaseCreateResponse = database1.create(); + DatabaseNode databaseNode = { databaseCreateResponse->getNodeEncryptionKey(), databaseCreateResponse->getRequestHash() }; + auto adminUserKey = databaseCreateResponse->getNodeAdminKeyPair(); + database1.addData(databaseNode, *adminUserKey, DataView{ (void*)"hello, world!", 13 }); + database1.seed(databaseNode); + + Database database2("bootstrap.ring.cx", 4223, storagePath2, callbackFuncs); + database2.seed(databaseNode); +} + +int main(int argc, char **argv) +{ + map<string, function<void()>> testByName; + testByName["standard"] = testStandard; + testByName["two_local_nodes"] = testTwoLocalNodes; + + const char *testName = "all"; + if(argc > 1) + testName = argv[1]; + + if(strcmp(testName, "all") == 0) + { + for(auto &testIt : testByName) + { + Log::debug("Running test: %s", testIt.first.c_str()); + testIt.second(); + } + } + else + { + auto testIt = testByName.find(testName); + if(testIt == testByName.end()) + { + Log::error("There is no test called %s", testName); + exit(1); + } + + Log::debug("Running test: %s", testIt->first.c_str()); + testIt->second(); + } return 0; } |