Skip to content

Commit f2c6d31

Browse files
authored
Merge pull request #56 from mpretty-cyro/bump-version-number
Increased version number to 1.5.1
2 parents d401ced + 44e7631 commit f2c6d31

File tree

3 files changed

+66
-71
lines changed

3 files changed

+66
-71
lines changed

.drone.jsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ local static_build(name,
356356
clang(17),
357357
full_llvm(17),
358358
debian_build('Debian stable (i386)', docker_base + 'debian-stable/i386'),
359-
debian_build('Debian 11', docker_base + 'debian-bullseye', extra_setup=debian_backports('bullseye', ['cmake'])),
359+
debian_build('Debian 12', docker_base + 'debian-bookworm', extra_setup=debian_backports('bookworm', ['cmake'])),
360360
debian_build('Ubuntu latest', docker_base + 'ubuntu-rolling'),
361361
debian_build('Ubuntu LTS', docker_base + 'ubuntu-lts'),
362362

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ if(CCACHE_PROGRAM)
1717
endif()
1818

1919
project(libsession-util
20-
VERSION 1.5.0
20+
VERSION 1.5.1
2121
DESCRIPTION "Session client utility library"
2222
LANGUAGES ${LANGS})
2323

tests/test_session_network.cpp

Lines changed: 64 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,53 @@ std::optional<service_node> node_for_destination(network_destination destination
5757
return std::nullopt;
5858
}
5959

60+
std::shared_ptr<TestServer> create_test_server(uint16_t port) {
61+
oxen::quic::opt::inbound_alpns server_alpns{"oxenstorage"};
62+
auto server_key_pair = session::ed25519::ed25519_key_pair(to_span(fmt::format("{:032}", port)));
63+
auto server_x25519_pubkey = session::curve25519::to_curve25519_pubkey(
64+
{server_key_pair.first.data(), server_key_pair.first.size()});
65+
auto server_x25519_seckey = session::curve25519::to_curve25519_seckey(
66+
{server_key_pair.second.data(), server_key_pair.second.size()});
67+
auto creds =
68+
oxen::quic::GNUTLSCreds::make_from_ed_seckey(to_string_view(server_key_pair.second));
69+
oxen::quic::Address server_local{port};
70+
session::onionreq::HopEncryption decryptor{
71+
x25519_seckey::from_bytes(to_span(server_x25519_seckey)),
72+
x25519_pubkey::from_bytes(to_span(server_x25519_pubkey)),
73+
true};
74+
75+
auto server_cb = [&](oxen::quic::message m) {
76+
nlohmann::json response{{"hf", {1, 0, 0}}, {"t", 1234567890}, {"version", {2, 8, 0}}};
77+
m.respond(response.dump(), false);
78+
};
79+
80+
auto onion_cb = [&](oxen::quic::message m) {
81+
nlohmann::json response{{"hf", {2, 0, 0}}, {"t", 1234567890}, {"version", {2, 8, 0}}};
82+
m.respond(response.dump(), false);
83+
};
84+
85+
oxen::quic::stream_constructor_callback server_constructor =
86+
[&](oxen::quic::Connection& c, oxen::quic::Endpoint& e, std::optional<int64_t>) {
87+
auto s = e.loop.make_shared<oxen::quic::BTRequestStream>(c, e);
88+
s->register_handler("info", server_cb);
89+
s->register_handler("onion_req", onion_cb);
90+
return s;
91+
};
92+
93+
auto loop = std::make_shared<oxen::quic::Loop>();
94+
auto endpoint = oxen::quic::Endpoint::endpoint(*loop, server_local, server_alpns);
95+
endpoint->listen(creds, server_constructor);
96+
97+
auto node = service_node{
98+
to_string_view(server_key_pair.first),
99+
{2, 8, 0},
100+
INVALID_SWARM_ID,
101+
"127.0.0.1"s,
102+
endpoint->local().port()};
103+
104+
return std::make_shared<TestServer>(loop, endpoint, node);
105+
}
106+
60107
} // namespace
61108

62109
namespace session::network {
@@ -193,61 +240,13 @@ class TestNetwork : public Network {
193240
std::optional<std::string>) {});
194241
}
195242

196-
std::shared_ptr<TestServer> create_test_node(uint16_t port) {
197-
oxen::quic::opt::inbound_alpns server_alpns{"oxenstorage"};
198-
auto server_key_pair =
199-
session::ed25519::ed25519_key_pair(to_span(fmt::format("{:032}", port)));
200-
auto server_x25519_pubkey = session::curve25519::to_curve25519_pubkey(
201-
{server_key_pair.first.data(), server_key_pair.first.size()});
202-
auto server_x25519_seckey = session::curve25519::to_curve25519_seckey(
203-
{server_key_pair.second.data(), server_key_pair.second.size()});
204-
auto creds = oxen::quic::GNUTLSCreds::make_from_ed_seckey(
205-
to_string_view(server_key_pair.second));
206-
oxen::quic::Address server_local{port};
207-
session::onionreq::HopEncryption decryptor{
208-
x25519_seckey::from_bytes(to_span(server_x25519_seckey)),
209-
x25519_pubkey::from_bytes(to_span(server_x25519_pubkey)),
210-
true};
211-
212-
auto server_cb = [&](oxen::quic::message m) {
213-
nlohmann::json response{{"hf", {1, 0, 0}}, {"t", 1234567890}, {"version", {2, 8, 0}}};
214-
m.respond(response.dump(), false);
215-
};
216-
217-
auto onion_cb = [&](oxen::quic::message m) {
218-
nlohmann::json response{{"hf", {2, 0, 0}}, {"t", 1234567890}, {"version", {2, 8, 0}}};
219-
m.respond(response.dump(), false);
220-
};
221-
222-
oxen::quic::stream_constructor_callback server_constructor =
223-
[&](oxen::quic::Connection& c, oxen::quic::Endpoint& e, std::optional<int64_t>) {
224-
auto s = e.loop.make_shared<oxen::quic::BTRequestStream>(c, e);
225-
s->register_handler("info", server_cb);
226-
s->register_handler("onion_req", onion_cb);
227-
return s;
228-
};
229-
230-
auto loop = std::make_shared<oxen::quic::Loop>();
231-
auto endpoint = oxen::quic::Endpoint::endpoint(*loop, server_local, server_alpns);
232-
endpoint->listen(creds, server_constructor);
233-
234-
auto node = service_node{
235-
to_string_view(server_key_pair.first),
236-
{2, 8, 0},
237-
INVALID_SWARM_ID,
238-
"127.0.0.1"s,
239-
endpoint->local().port()};
240-
241-
return std::make_shared<TestServer>(loop, endpoint, node);
242-
}
243-
244243
std::pair<std::vector<std::shared_ptr<TestServer>>, onion_path> create_test_path() {
245244
std::vector<std::shared_ptr<TestServer>> path_servers;
246245
std::vector<service_node> path_nodes;
247246
path_nodes.reserve(3);
248247

249248
for (auto i = 0; i < 3; ++i) {
250-
path_servers.emplace_back(create_test_node(static_cast<uint16_t>(1000 + i)));
249+
path_servers.emplace_back(create_test_server(static_cast<uint16_t>(1000 + i)));
251250
path_nodes.emplace_back(path_servers[i]->node);
252251
}
253252

@@ -1073,19 +1072,15 @@ TEST_CASE("Network", "[network][build_path]") {
10731072

10741073
TEST_CASE("Network", "[network][find_valid_path]") {
10751074
auto ed_pk = "4cb76fdc6d32278e3f83dbf608360ecc6b65727934b85d2fb86862ff98c46ab7"_hexbytes;
1075+
auto test_server = create_test_server(500);
10761076
auto target = test_node(ed_pk, 1);
1077-
auto test_service_node = service_node{
1078-
"decaf007f26d3d6f9b845ad031ffdf6d04638c25bb10b8fffbbe99135303c4b9"_hexbytes,
1079-
{2, 8, 0},
1080-
INVALID_SWARM_ID,
1081-
"144.76.164.202",
1082-
uint16_t{35400}};
1083-
auto network = TestNetwork(std::nullopt, true, false, false);
10841077
auto info = request_info::make(target, std::nullopt, std::nullopt, 0ms);
1078+
1079+
auto network = TestNetwork(std::nullopt, true, false, false);
10851080
auto invalid_path = onion_path{
10861081
"Test",
1087-
{test_service_node, nullptr, nullptr, nullptr},
1088-
{test_service_node},
1082+
{test_server->node, nullptr, nullptr, nullptr},
1083+
{test_server->node},
10891084
uint8_t{0}};
10901085

10911086
// It returns nothing when given no path options
@@ -1099,7 +1094,7 @@ TEST_CASE("Network", "[network][find_valid_path]") {
10991094

11001095
network.establish_connection(
11011096
"Test",
1102-
test_service_node,
1097+
test_server->node,
11031098
3s,
11041099
[&prom](connection_info conn_info, std::optional<std::string> error) {
11051100
prom.set_value({std::move(conn_info), error});
@@ -1111,11 +1106,11 @@ TEST_CASE("Network", "[network][find_valid_path]") {
11111106
auto valid_path = onion_path{
11121107
"Test",
11131108
std::move(result.first),
1114-
std::vector<service_node>{test_service_node},
1109+
std::vector<service_node>{test_server->node},
11151110
uint8_t{0}};
11161111

11171112
// It excludes paths which include the IP of the target
1118-
auto shared_ip_info = request_info::make(test_service_node, std::nullopt, std::nullopt, 0ms);
1113+
auto shared_ip_info = request_info::make(test_server->node, std::nullopt, std::nullopt, 0ms);
11191114
CHECK_FALSE(network.find_valid_path(shared_ip_info, {valid_path}).has_value());
11201115

11211116
// It returns a path when there is a valid one
@@ -1130,7 +1125,7 @@ TEST_CASE("Network", "[network][find_valid_path]") {
11301125
TEST_CASE("Network", "[network][build_path_if_needed]") {
11311126
auto ed_pk = "4cb76fdc6d32278e3f83dbf608360ecc6b65727934b85d2fb86862ff98c46ab7"_hexbytes;
11321127
auto target = test_node(ed_pk, 0);
1133-
;
1128+
11341129
std::optional<TestNetwork> network;
11351130
auto invalid_path = onion_path{
11361131
"Test", connection_info{target, nullptr, nullptr, nullptr}, {target}, uint8_t{0}};
@@ -1226,8 +1221,8 @@ TEST_CASE("Network", "[network][build_path_if_needed]") {
12261221
}
12271222

12281223
TEST_CASE("Network", "[network][establish_connection]") {
1224+
auto test_server = create_test_server(500);
12291225
auto network = TestNetwork(std::nullopt, true, true, false);
1230-
auto test_server = network.create_test_node(500);
12311226
std::promise<std::pair<connection_info, std::optional<std::string>>> prom;
12321227

12331228
network.establish_connection(
@@ -1253,7 +1248,7 @@ TEST_CASE("Network", "[network][check_request_queue_timeouts]") {
12531248
// Test that it doesn't start checking for timeouts when the request doesn't have
12541249
// a build paths timeout
12551250
network.emplace(std::nullopt, true, true, false);
1256-
test_server.emplace(network->create_test_node(501));
1251+
test_server.emplace(create_test_server(501));
12571252
network->send_onion_request(
12581253
(*test_server)->node,
12591254
to_vector("{\"method\":\"info\",\"params\":{}}"),
@@ -1270,7 +1265,7 @@ TEST_CASE("Network", "[network][check_request_queue_timeouts]") {
12701265
// Test that it does start checking for timeouts when the request has a
12711266
// paths build timeout
12721267
network.emplace(std::nullopt, true, true, false);
1273-
test_server.emplace(network->create_test_node(502));
1268+
test_server.emplace(create_test_server(502));
12741269
network->ignore_calls_to("build_path");
12751270
network->send_onion_request(
12761271
(*test_server)->node,
@@ -1288,7 +1283,7 @@ TEST_CASE("Network", "[network][check_request_queue_timeouts]") {
12881283
// Test that it fails the request with a timeout if it has a build path timeout
12891284
// and the path build takes too long
12901285
network.emplace(std::nullopt, true, true, false);
1291-
test_server.emplace(network->create_test_node(503));
1286+
test_server.emplace(create_test_server(503));
12921287
network->ignore_calls_to("build_path");
12931288
network->send_onion_request(
12941289
(*test_server)->node,
@@ -1312,8 +1307,8 @@ TEST_CASE("Network", "[network][check_request_queue_timeouts]") {
13121307
}
13131308

13141309
TEST_CASE("Network", "[network][send_request]") {
1310+
auto test_server = create_test_server(500);
13151311
auto network = TestNetwork(std::nullopt, true, true, false);
1316-
auto test_server = network.create_test_node(500);
13171312
std::promise<Result> prom;
13181313

13191314
network.establish_connection(
@@ -1365,8 +1360,8 @@ TEST_CASE("Network", "[network][send_request]") {
13651360
}
13661361

13671362
TEST_CASE("Network", "[network][send_onion_request]") {
1363+
auto test_server = create_test_server(500);
13681364
auto network = TestNetwork(std::nullopt, true, true, false);
1369-
auto test_server = network.create_test_node(500);
13701365
auto [test_path_servers, test_path] = network.create_test_path();
13711366
network.handle_onion_requests_as_plaintext = true;
13721367
network.set_paths(PathType::standard, {test_path});
@@ -1407,8 +1402,8 @@ TEST_CASE("Network", "[network][send_onion_request]") {
14071402
}
14081403

14091404
TEST_CASE("Network", "[network][c][network_send_onion_request]") {
1405+
auto test_server_cpp = create_test_server(500);
14101406
auto test_network = std::make_unique<TestNetwork>(std::nullopt, true, true, false);
1411-
auto test_server_cpp = test_network->create_test_node(500);
14121407
std::optional<std::pair<std::vector<std::shared_ptr<TestServer>>, onion_path>> test_path_data;
14131408
test_path_data.emplace(test_network->create_test_path());
14141409
test_network->handle_onion_requests_as_plaintext = true;

0 commit comments

Comments
 (0)