feat: Add network id to ledger feed (#2505)

Fixes #2350.
This commit is contained in:
Sergey Kuznetsov
2025-09-04 16:58:50 +01:00
committed by GitHub
parent a62084a4f0
commit 26ef25f864
6 changed files with 38 additions and 20 deletions

View File

@@ -30,6 +30,7 @@
#include <boost/json/parse.hpp>
#include <gtest/gtest.h>
#include <cstdint>
#include <memory>
#include <ostream>
#include <string>
@@ -46,6 +47,7 @@ protected:
std::shared_ptr<TestedFeed> testFeedPtr = std::make_shared<TestedFeed>(ctx_);
MockSession* mockSessionPtr = dynamic_cast<MockSession*>(sessionPtr.get());
StrictMockAmendmentCenterSharedPtr mockAmendmentCenterPtr_;
uint32_t const networkID{123};
};
namespace feed::impl {

View File

@@ -60,12 +60,13 @@ TEST_F(FeedLedgerTest, SubPub)
"ledger_time": 0,
"fee_base": 1,
"reserve_base": 3,
"reserve_inc": 2
"reserve_inc": 2,
"network_id": 123
})JSON";
boost::asio::io_context ioContext;
util::spawn(ioContext, [this](boost::asio::yield_context yield) {
EXPECT_CALL(*mockSessionPtr, onDisconnect);
auto res = testFeedPtr->sub(yield, backend_, sessionPtr);
auto res = testFeedPtr->sub(yield, backend_, sessionPtr, networkID);
// check the response
EXPECT_EQ(res, json::parse(kLEDGER_RESPONSE));
});
@@ -82,7 +83,8 @@ TEST_F(FeedLedgerTest, SubPub)
"reserve_base": 10,
"reserve_inc": 0,
"validated_ledgers": "10-31",
"txn_count": 8
"txn_count": 8,
"network_id": 123
})JSON";
// test publish
@@ -90,13 +92,13 @@ TEST_F(FeedLedgerTest, SubPub)
auto const ledgerHeader2 = createLedgerHeader(kLEDGER_HASH, 31);
auto fee2 = ripple::Fees();
fee2.reserve = 10;
testFeedPtr->pub(ledgerHeader2, fee2, "10-31", 8);
testFeedPtr->pub(ledgerHeader2, fee2, "10-31", 8, networkID);
// test unsub, after unsub the send should not be called
testFeedPtr->unsub(sessionPtr);
EXPECT_EQ(testFeedPtr->count(), 0);
EXPECT_CALL(*mockSessionPtr, send(_)).Times(0);
testFeedPtr->pub(ledgerHeader2, fee2, "10-31", 8);
testFeedPtr->pub(ledgerHeader2, fee2, "10-31", 8, networkID);
}
TEST_F(FeedLedgerTest, AutoDisconnect)
@@ -115,7 +117,8 @@ TEST_F(FeedLedgerTest, AutoDisconnect)
"ledger_time": 0,
"fee_base": 1,
"reserve_base": 3,
"reserve_inc": 2
"reserve_inc": 2,
"network_id": 123
})JSON";
web::SubscriptionContextInterface::OnDisconnectSlot slot;
@@ -123,7 +126,7 @@ TEST_F(FeedLedgerTest, AutoDisconnect)
boost::asio::io_context ioContext;
util::spawn(ioContext, [this](boost::asio::yield_context yield) {
auto res = testFeedPtr->sub(yield, backend_, sessionPtr);
auto res = testFeedPtr->sub(yield, backend_, sessionPtr, networkID);
// check the response
EXPECT_EQ(res, json::parse(kLEDGER_RESPONSE));
});
@@ -142,5 +145,5 @@ TEST_F(FeedLedgerTest, AutoDisconnect)
auto fee2 = ripple::Fees();
fee2.reserve = 10;
// no error
testFeedPtr->pub(ledgerHeader2, fee2, "10-31", 8);
testFeedPtr->pub(ledgerHeader2, fee2, "10-31", 8, networkID);
}

View File

@@ -43,6 +43,7 @@
#include <xrpl/protocol/STObject.h>
#include <algorithm>
#include <cstdint>
#include <memory>
#include <optional>
#include <vector>
@@ -75,6 +76,7 @@ protected:
std::make_shared<SubscriptionManager>(Execution(2), backend_, mockAmendmentCenterPtr_);
web::SubscriptionContextPtr session_ = std::make_shared<MockSession>();
MockSession* sessionPtr_ = dynamic_cast<MockSession*>(session_.get());
uint32_t const networkID_ = 123;
};
using SubscriptionManagerTest = SubscriptionManagerBaseTest<util::async::SyncExecutionContext>;
@@ -271,6 +273,8 @@ TEST_F(SubscriptionManagerTest, BookChangesTest)
TEST_F(SubscriptionManagerTest, LedgerTest)
{
backend_->setRange(10, 30);
subscriptionManagerPtr_->setNetworkID(networkID_);
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30);
EXPECT_CALL(*backend_, fetchLedgerBySequence).WillOnce(testing::Return(ledgerHeader));
@@ -288,7 +292,8 @@ TEST_F(SubscriptionManagerTest, LedgerTest)
"ledger_time": 0,
"fee_base": 1,
"reserve_base": 3,
"reserve_inc": 2
"reserve_inc": 2,
"network_id": 123
})JSON";
boost::asio::io_context ctx;
util::spawn(ctx, [this](boost::asio::yield_context yield) {
@@ -314,7 +319,8 @@ TEST_F(SubscriptionManagerTest, LedgerTest)
"reserve_base": 10,
"reserve_inc": 0,
"validated_ledgers": "10-31",
"txn_count": 8
"txn_count": 8,
"network_id": 123
})JSON";
EXPECT_CALL(*sessionPtr_, send(sharedStringJsonEq(kLEDGER_PUB)));
subscriptionManagerPtr_->pubLedger(ledgerHeader2, fee2, "10-31", 8);