xrpld
Loading...
Searching...
No Matches
Peers_test.cpp
1#include <test/jtx/Env.h>
2
3#include <xrpld/overlay/Cluster.h>
4
5#include <xrpl/beast/unit_test/suite.h>
6#include <xrpl/protocol/KeyType.h>
7#include <xrpl/protocol/PublicKey.h>
8#include <xrpl/protocol/SecretKey.h>
9#include <xrpl/protocol/Seed.h>
10#include <xrpl/protocol/jss.h>
11#include <xrpl/protocol/tokens.h>
12
13#include <string>
14#include <unordered_map>
15#include <utility>
16
17namespace xrpl {
18
20{
21 void
23 {
24 testcase("Basic request");
25 using namespace test::jtx;
26 Env env{*this};
27
28 // without modification of the cluster, expect an empty set
29 // from this request
30 auto peers = env.rpc("peers")[jss::result];
31 BEAST_EXPECT(peers.isMember(jss::cluster) && peers[jss::cluster].size() == 0);
32 BEAST_EXPECT(peers.isMember(jss::peers) && peers[jss::peers].isNull());
33
34 // insert some nodes in to the cluster
36 for (auto i = 0; i < 3; ++i)
37 {
39
40 std::string const name = "Node " + std::to_string(i);
41
42 using namespace std::chrono_literals;
43 env.app().getCluster().update(kp.first, name, 200, env.timeKeeper().now() - 10s);
44 nodes.insert(std::make_pair(toBase58(TokenType::NodePublic, kp.first), name));
45 }
46
47 // make request, verify nodes we created match
48 // what is reported
49 peers = env.rpc("peers")[jss::result];
50 if (!BEAST_EXPECT(peers.isMember(jss::cluster)))
51 return;
52 if (!BEAST_EXPECT(peers[jss::cluster].size() == nodes.size()))
53 return;
54 for (auto it = peers[jss::cluster].begin(); it != peers[jss::cluster].end(); ++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 const tag = (*it)[jss::tag].asString();
63 BEAST_EXPECTS(tag == 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
77
78} // namespace xrpl
A testsuite class.
Definition suite.h:50
TestcaseT testcase
Memberspace for declaring test cases.
Definition suite.h:149
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:93
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
Definition Seed.cpp:58
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
BEAST_DEFINE_TESTSUITE(AccountTxPaging, app, xrpl)
T size(T... args)
T to_string(T... args)