rippled
Loading...
Searching...
No Matches
Peers_test.cpp
1#include <test/jtx.h>
2#include <test/jtx/Env.h>
3
4#include <xrpld/overlay/Cluster.h>
5#include <xrpld/overlay/Overlay.h>
6
7#include <xrpl/protocol/jss.h>
8
9#include <unordered_map>
10
11namespace xrpl {
12
14{
15 void
17 {
18 testcase("Basic request");
19 using namespace test::jtx;
20 Env env{*this};
21
22 // without modification of the cluster, expect an empty set
23 // from this request
24 auto peers = env.rpc("peers")[jss::result];
25 BEAST_EXPECT(peers.isMember(jss::cluster) && peers[jss::cluster].size() == 0);
26 BEAST_EXPECT(peers.isMember(jss::peers) && peers[jss::peers].isNull());
27
28 // insert some nodes in to the cluster
30 for (auto i = 0; i < 3; ++i)
31 {
33
34 std::string name = "Node " + std::to_string(i);
35
36 using namespace std::chrono_literals;
37 env.app().cluster().update(kp.first, name, 200, env.timeKeeper().now() - 10s);
38 nodes.insert(std::make_pair(toBase58(TokenType::NodePublic, kp.first), name));
39 }
40
41 // make request, verify nodes we created match
42 // what is reported
43 peers = env.rpc("peers")[jss::result];
44 if (!BEAST_EXPECT(peers.isMember(jss::cluster)))
45 return;
46 if (!BEAST_EXPECT(peers[jss::cluster].size() == nodes.size()))
47 return;
48 for (auto it = peers[jss::cluster].begin(); it != peers[jss::cluster].end(); ++it)
49 {
50 auto key = it.key().asString();
51 auto search = nodes.find(key);
52 if (!BEAST_EXPECTS(search != nodes.end(), key))
53 continue;
54 if (!BEAST_EXPECT((*it).isMember(jss::tag)))
55 continue;
56 auto tag = (*it)[jss::tag].asString();
57 BEAST_EXPECTS((*it)[jss::tag].asString() == nodes[key], key);
58 }
59 BEAST_EXPECT(peers.isMember(jss::peers) && peers[jss::peers].isNull());
60 }
61
62public:
63 void
64 run() override
65 {
67 }
68};
69
70BEAST_DEFINE_TESTSUITE(Peers, rpc, xrpl);
71
72} // namespace xrpl
A testsuite class.
Definition suite.h:51
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:147
void run() override
Runs the suite.
T end(T... args)
T find(T... args)
T insert(T... args)
T make_pair(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition AccountID.cpp:92
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
Definition Seed.cpp:57
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
T size(T... args)
T to_string(T... args)