mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-20 19:56:00 +00:00
Simplify backend mock access for unittests (#1062)
This commit is contained in:
@@ -92,7 +92,7 @@ TEST_F(ETLTransformerTest, StopsOnWriteConflict)
|
||||
EXPECT_CALL(ledgerPublisher_, publish(_)).Times(0);
|
||||
|
||||
transformer_ = std::make_unique<TransformerType>(
|
||||
dataPipe_, mockBackendPtr, ledgerLoader_, ledgerPublisher_, amendmentBlockHandler_, 0, state_
|
||||
dataPipe_, backend, ledgerLoader_, ledgerPublisher_, amendmentBlockHandler_, 0, state_
|
||||
);
|
||||
|
||||
transformer_->waitTillFinished(); // explicitly joins the thread
|
||||
@@ -100,9 +100,7 @@ TEST_F(ETLTransformerTest, StopsOnWriteConflict)
|
||||
|
||||
TEST_F(ETLTransformerTest, StopsOnEmptyFetchResponse)
|
||||
{
|
||||
MockBackend* rawBackendPtr = dynamic_cast<MockBackend*>(mockBackendPtr.get());
|
||||
ASSERT_NE(rawBackendPtr, nullptr);
|
||||
mockBackendPtr->cache().setFull(); // to avoid throwing exception in updateCache
|
||||
backend->cache().setFull(); // to avoid throwing exception in updateCache
|
||||
|
||||
auto const blob = hexStringToBinaryString(RAW_HEADER);
|
||||
auto const response = std::make_optional<FakeFetchResponse>(blob);
|
||||
@@ -112,21 +110,21 @@ TEST_F(ETLTransformerTest, StopsOnEmptyFetchResponse)
|
||||
return std::nullopt;
|
||||
return response; // NOLINT (performance-no-automatic-move)
|
||||
});
|
||||
ON_CALL(*rawBackendPtr, doFinishWrites).WillByDefault(Return(true));
|
||||
ON_CALL(*backend, doFinishWrites).WillByDefault(Return(true));
|
||||
|
||||
// TODO: most of this should be hidden in a smaller entity that is injected into the transformer thread
|
||||
EXPECT_CALL(dataPipe_, popNext).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, startWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeLedger(_, _)).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, startWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeLedger(_, _)).Times(AtLeast(1));
|
||||
EXPECT_CALL(ledgerLoader_, insertTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeAccountTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeNFTs).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeNFTTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, doFinishWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeAccountTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeNFTs).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeNFTTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, doFinishWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(ledgerPublisher_, publish(_)).Times(AtLeast(1));
|
||||
|
||||
transformer_ = std::make_unique<TransformerType>(
|
||||
dataPipe_, mockBackendPtr, ledgerLoader_, ledgerPublisher_, amendmentBlockHandler_, 0, state_
|
||||
dataPipe_, backend, ledgerLoader_, ledgerPublisher_, amendmentBlockHandler_, 0, state_
|
||||
);
|
||||
|
||||
// after 10ms we start spitting out empty responses which means the extractor is finishing up
|
||||
@@ -137,31 +135,29 @@ TEST_F(ETLTransformerTest, StopsOnEmptyFetchResponse)
|
||||
|
||||
TEST_F(ETLTransformerTest, DoesNotPublishIfCanNotBuildNextLedger)
|
||||
{
|
||||
MockBackend* rawBackendPtr = dynamic_cast<MockBackend*>(mockBackendPtr.get());
|
||||
ASSERT_NE(rawBackendPtr, nullptr);
|
||||
mockBackendPtr->cache().setFull(); // to avoid throwing exception in updateCache
|
||||
backend->cache().setFull(); // to avoid throwing exception in updateCache
|
||||
|
||||
auto const blob = hexStringToBinaryString(RAW_HEADER);
|
||||
auto const response = std::make_optional<FakeFetchResponse>(blob);
|
||||
|
||||
ON_CALL(dataPipe_, popNext).WillByDefault(Return(response));
|
||||
ON_CALL(*rawBackendPtr, doFinishWrites).WillByDefault(Return(false)); // emulate write failure
|
||||
ON_CALL(*backend, doFinishWrites).WillByDefault(Return(false)); // emulate write failure
|
||||
|
||||
// TODO: most of this should be hidden in a smaller entity that is injected into the transformer thread
|
||||
EXPECT_CALL(dataPipe_, popNext).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, startWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeLedger(_, _)).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, startWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeLedger(_, _)).Times(AtLeast(1));
|
||||
EXPECT_CALL(ledgerLoader_, insertTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeAccountTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeNFTs).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, writeNFTTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*rawBackendPtr, doFinishWrites).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeAccountTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeNFTs).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, writeNFTTransactions).Times(AtLeast(1));
|
||||
EXPECT_CALL(*backend, doFinishWrites).Times(AtLeast(1));
|
||||
|
||||
// should not call publish
|
||||
EXPECT_CALL(ledgerPublisher_, publish(_)).Times(0);
|
||||
|
||||
transformer_ = std::make_unique<TransformerType>(
|
||||
dataPipe_, mockBackendPtr, ledgerLoader_, ledgerPublisher_, amendmentBlockHandler_, 0, state_
|
||||
dataPipe_, backend, ledgerLoader_, ledgerPublisher_, amendmentBlockHandler_, 0, state_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user