mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Improve preferred ledger calculation:
This changeset ensures the preferred ledger calculation properly distinguishes the absence of trusted validations from a preferred ledger which is the genesis ledger.
This commit is contained in:
@@ -58,9 +58,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
boost::optional<std::uint32_t> loadFee_;
|
||||
|
||||
public:
|
||||
Node(PeerID nodeID, clock_type const& c)
|
||||
: c_(c)
|
||||
, nodeID_(nodeID)
|
||||
Node(PeerID nodeID, clock_type const& c) : c_(c), nodeID_(nodeID)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -292,7 +290,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
}
|
||||
};
|
||||
|
||||
Ledger const genesisLedger{Ledger::MakeGenesis{}};
|
||||
Ledger const genesisLedger{Ledger::MakeGenesis{}};
|
||||
|
||||
void
|
||||
testAddValidation()
|
||||
@@ -349,8 +347,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(
|
||||
ValStatus::badSeq == harness.add(n.validate(ledgerAB)));
|
||||
// Cannot send the same partial validation sequence
|
||||
BEAST_EXPECT(
|
||||
ValStatus::badSeq == harness.add(n.partial(ledgerAB)));
|
||||
BEAST_EXPECT(ValStatus::badSeq == harness.add(n.partial(ledgerAB)));
|
||||
|
||||
// Now trusts the newest ledger too
|
||||
harness.clock().advance(1s);
|
||||
@@ -425,9 +422,8 @@ class Validations_test : public beast::unit_test::suite
|
||||
TestHarness harness(h.oracle);
|
||||
Node n = harness.makeNode();
|
||||
|
||||
auto process = [&](Ledger & lgr)
|
||||
{
|
||||
if(doFull)
|
||||
auto process = [&](Ledger& lgr) {
|
||||
if (doFull)
|
||||
return harness.add(n.validate(lgr));
|
||||
return harness.add(n.partial(lgr));
|
||||
};
|
||||
@@ -458,7 +454,6 @@ class Validations_test : public beast::unit_test::suite
|
||||
Ledger ledgerA = h["a"];
|
||||
Ledger ledgerAB = h["ab"];
|
||||
|
||||
|
||||
using Trigger = std::function<void(TestValidations&)>;
|
||||
|
||||
std::vector<Trigger> triggers = {
|
||||
@@ -492,8 +487,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(
|
||||
harness.vals().getNodesAfter(ledgerA, ledgerA.id()) == 0);
|
||||
BEAST_EXPECT(
|
||||
harness.vals().getPreferred(genesisLedger) ==
|
||||
std::make_pair(Ledger::Seq{0}, Ledger::ID{0}));
|
||||
harness.vals().getPreferred(genesisLedger) == boost::none);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,8 +605,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
ValStatus::current == harness.add(node.validate(ledgerA)));
|
||||
|
||||
{
|
||||
hash_set<PeerID> const expectedKeys = {a.nodeID(),
|
||||
b.nodeID()};
|
||||
hash_set<PeerID> const expectedKeys = {a.nodeID(), b.nodeID()};
|
||||
BEAST_EXPECT(harness.vals().getCurrentNodeIDs() == expectedKeys);
|
||||
}
|
||||
|
||||
@@ -627,8 +620,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
ValStatus::current == harness.add(node.partial(ledgerAC)));
|
||||
|
||||
{
|
||||
hash_set<PeerID> const expectedKeys = {a.nodeID(),
|
||||
b.nodeID()};
|
||||
hash_set<PeerID> const expectedKeys = {a.nodeID(), b.nodeID()};
|
||||
BEAST_EXPECT(harness.vals().getCurrentNodeIDs() == expectedKeys);
|
||||
}
|
||||
|
||||
@@ -695,7 +687,6 @@ class Validations_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(
|
||||
sorted(harness.vals().fees(id, baseFee)) ==
|
||||
sorted(expectedFees));
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@@ -836,8 +827,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
};
|
||||
|
||||
// Empty (no ledgers)
|
||||
BEAST_EXPECT(
|
||||
harness.vals().getPreferred(ledgerA) == pref(genesisLedger));
|
||||
BEAST_EXPECT(harness.vals().getPreferred(ledgerA) == boost::none);
|
||||
|
||||
// Single ledger
|
||||
BEAST_EXPECT(ValStatus::current == harness.add(a.validate(ledgerB)));
|
||||
@@ -1069,8 +1059,12 @@ class Validations_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(
|
||||
vals.getNodesAfter(this->genesisLedger, genesisLedger.id()) ==
|
||||
trustedVals.size());
|
||||
BEAST_EXPECT(
|
||||
vals.getPreferred(this->genesisLedger).second == testID);
|
||||
if (trustedVals.empty())
|
||||
BEAST_EXPECT(
|
||||
vals.getPreferred(this->genesisLedger) == boost::none);
|
||||
else
|
||||
BEAST_EXPECT(
|
||||
vals.getPreferred(this->genesisLedger)->second == testID);
|
||||
BEAST_EXPECT(vals.getTrustedForLedger(testID) == trustedVals);
|
||||
BEAST_EXPECT(
|
||||
vals.numTrustedForLedger(testID) == trustedVals.size());
|
||||
@@ -1127,7 +1121,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
auto& vals = harness.vals();
|
||||
BEAST_EXPECT(vals.currentTrusted() == trustedVals);
|
||||
BEAST_EXPECT(
|
||||
vals.getPreferred(genesisLedger).second == v.ledgerID());
|
||||
vals.getPreferred(genesisLedger)->second == v.ledgerID());
|
||||
BEAST_EXPECT(
|
||||
vals.getNodesAfter(genesisLedger, genesisLedger.id()) == 0);
|
||||
|
||||
@@ -1136,8 +1130,7 @@ class Validations_test : public beast::unit_test::suite
|
||||
// make acquiring ledger available
|
||||
h["ab"];
|
||||
BEAST_EXPECT(vals.currentTrusted() == trustedVals);
|
||||
BEAST_EXPECT(
|
||||
vals.getPreferred(genesisLedger).second == genesisLedger.id());
|
||||
BEAST_EXPECT(vals.getPreferred(genesisLedger) == boost::none);
|
||||
BEAST_EXPECT(
|
||||
vals.getNodesAfter(genesisLedger, genesisLedger.id()) == 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user