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 ripple {
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(
26 peers.isMember(jss::cluster) && peers[jss::cluster].size() == 0);
27 BEAST_EXPECT(peers.isMember(jss::peers) && peers[jss::peers].isNull());
28
29 // insert some nodes in to the cluster
31 for (auto i = 0; i < 3; ++i)
32 {
33 auto kp = generateKeyPair(
35
36 std::string name = "Node " + std::to_string(i);
37
38 using namespace std::chrono_literals;
39 env.app().cluster().update(
40 kp.first, name, 200, env.timeKeeper().now() - 10s);
42 toBase58(TokenType::NodePublic, kp.first), name));
43 }
44
45 // make request, verify nodes we created match
46 // what is reported
47 peers = env.rpc("peers")[jss::result];
48 if (!BEAST_EXPECT(peers.isMember(jss::cluster)))
49 return;
50 if (!BEAST_EXPECT(peers[jss::cluster].size() == nodes.size()))
51 return;
52 for (auto it = peers[jss::cluster].begin();
53 it != peers[jss::cluster].end();
54 ++it)
55 {
56 auto key = it.key().asString();
57 auto search = nodes.find(key);
58 if (!BEAST_EXPECTS(search != nodes.end(), key))
59 continue;
60 if (!BEAST_EXPECT((*it).isMember(jss::tag)))
61 continue;
62 auto tag = (*it)[jss::tag].asString();
63 BEAST_EXPECTS((*it)[jss::tag].asString() == nodes[key], key);
64 }
65 BEAST_EXPECT(peers.isMember(jss::peers) && peers[jss::peers].isNull());
66 }
67
68public:
69 void
70 run() override
71 {
73 }
74};
75
76BEAST_DEFINE_TESTSUITE(Peers, rpc, ripple);
77
78} // namespace ripple
A testsuite class.
Definition suite.h:52
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:152
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:6
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition AccountID.cpp:95
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
Definition Seed.cpp:57
T size(T... args)
T to_string(T... args)