diff options
author | Determinant <[email protected]> | 2019-06-28 19:19:57 -0400 |
---|---|---|
committer | Determinant <[email protected]> | 2019-06-28 19:19:57 -0400 |
commit | ad427b9a7b27e2ae16fc8cb21d612794f4a71955 (patch) | |
tree | a03d1158da6292eaf9c7523d3f630f0e980f8dfc /test | |
parent | b8bdd8237ca51439995e1990bbc4f39f8a96fbfe (diff) |
add a minimal working example
Diffstat (limited to 'test')
-rw-r--r-- | test/.gitignore | 1 | ||||
-rw-r--r-- | test/CMakeLists.txt | 3 | ||||
-rw-r--r-- | test/test_p2p_min.cpp | 49 |
3 files changed, 53 insertions, 0 deletions
diff --git a/test/.gitignore b/test/.gitignore index f50f029..50e25ba 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -4,6 +4,7 @@ test_msgnet test_p2p test_p2p_tls test_p2p_stress +test_p2p_min test_queue bench_network Makefile diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0a1d3f1..15cd414 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -41,6 +41,9 @@ target_link_libraries(test_p2p_tls salticidae_static) add_executable(test_p2p_stress test_p2p_stress.cpp) target_link_libraries(test_p2p_stress salticidae_static) +add_executable(test_p2p_min test_p2p_min.cpp) +target_link_libraries(test_p2p_min salticidae_static) + add_executable(test_queue test_queue.cpp) target_link_libraries(test_queue salticidae_static pthread) diff --git a/test/test_p2p_min.cpp b/test/test_p2p_min.cpp new file mode 100644 index 0000000..a221d79 --- /dev/null +++ b/test/test_p2p_min.cpp @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2019 Ava Labs, Inc. + * + * Author: Ted Yin <[email protected]> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include <memory> +#include "salticidae/event.h" +#include "salticidae/network.h" + +using Net = salticidae::PeerNetwork<uint8_t>; + +int main() { + std::vector<std::pair<salticidae::NetAddr, std::unique_ptr<Net>>> nodes; + Net::Config config; + salticidae::EventContext ec; + config.ping_period(2); + nodes.resize(4); + for (size_t i = 0; i < nodes.size(); i++) + { + salticidae::NetAddr addr("127.0.0.1:" + std::to_string(10000 + i)); + auto &net = (nodes[i] = std::make_pair(addr, std::make_unique<Net>(ec, config))).second; + net->start(); + net->listen(addr); + } + for (size_t i = 0; i < nodes.size(); i++) + for (size_t j = 0; j < nodes.size(); j++) + if (i != j) + nodes[i].second->add_peer(nodes[j].first); + ec.dispatch(); + return 0; +} |