xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
test
rpc
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
17
namespace
xrpl
{
18
19
class
Peers_test
:
public
beast::unit_test::Suite
20
{
21
void
22
testRequest
()
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
35
std::unordered_map<std::string, std::string>
nodes;
36
for
(
auto
i = 0; i < 3; ++i)
37
{
38
auto
kp =
generateKeyPair
(
KeyType::Secp256k1
,
generateSeed
(
"seed"
+
std::to_string
(i)));
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
68
public
:
69
void
70
run
()
override
71
{
72
testRequest
();
73
}
74
};
75
76
BEAST_DEFINE_TESTSUITE
(Peers,
rpc
,
xrpl
);
77
78
}
// namespace xrpl
std::string
beast::unit_test::Suite
A testsuite class.
Definition
suite.h:52
beast::unit_test::Suite::testcase
TestcaseT testcase
Memberspace for declaring test cases.
Definition
suite.h:155
xrpl::Peers_test
Definition
Peers_test.cpp:20
xrpl::Peers_test::run
void run() override
Runs the suite.
Definition
Peers_test.cpp:70
xrpl::Peers_test::testRequest
void testRequest()
Definition
Peers_test.cpp:22
std::unordered_map::end
T end(T... args)
std::unordered_map::find
T find(T... args)
std::unordered_map::insert
T insert(T... args)
std::make_pair
T make_pair(T... args)
xrpl::rpc
API version numbers used in later API versions.
Definition
ApiVersion.h:36
xrpl::test::jtx
Definition
Oracle_test.cpp:34
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::KeyType::Secp256k1
@ Secp256k1
Definition
KeyType.h:9
xrpl::toBase58
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition
AccountID.cpp:95
xrpl::generateSeed
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
Definition
Seed.cpp:58
xrpl::generateKeyPair
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
Definition
SecretKey.cpp:338
xrpl::TokenType::NodePublic
@ NodePublic
Definition
tokens.h:21
xrpl::BEAST_DEFINE_TESTSUITE
BEAST_DEFINE_TESTSUITE(AccountTxPaging, app, xrpl)
std::unordered_map::size
T size(T... args)
string
std::to_string
T to_string(T... args)
unordered_map
utility
Generated by
1.17.0