mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-05 09:46:53 +00:00
Add Antithesis intrumentation (#5042)
* Copy Antithesis SDK version 0.4.0 to directory external/ * Add build option `voidstar` to enable instrumentation with Antithesis SDK * Define instrumentation macros ASSERT and UNREACHABLE in terms of regular C assert * Replace asserts with named ASSERT or UNREACHABLE * Add UNREACHABLE to LogicError * Document instrumentation macros in CONTRIBUTING.md
This commit is contained in:
committed by
Ed Hennis
parent
f64cf9187a
commit
d7e949193f
@@ -55,7 +55,9 @@ TxMeta::TxMeta(uint256 const& txid, std::uint32_t ledger, STObject const& obj)
|
||||
|
||||
auto affectedNodes =
|
||||
dynamic_cast<STArray const*>(obj.peekAtPField(sfAffectedNodes));
|
||||
assert(affectedNodes);
|
||||
ASSERT(
|
||||
affectedNodes != nullptr,
|
||||
"ripple::TxMeta::TxMeta(STObject) : type cast succeeded");
|
||||
if (affectedNodes)
|
||||
mNodes = *affectedNodes;
|
||||
|
||||
@@ -106,7 +108,9 @@ TxMeta::setAffectedNode(
|
||||
mNodes.push_back(STObject(type));
|
||||
STObject& obj = mNodes.back();
|
||||
|
||||
assert(obj.getFName() == type);
|
||||
ASSERT(
|
||||
obj.getFName() == type,
|
||||
"ripple::TxMeta::setAffectedNode : field type match");
|
||||
obj.setFieldH256(sfLedgerIndex, node);
|
||||
obj.setFieldU16(sfLedgerEntryType, nodeType);
|
||||
}
|
||||
@@ -127,14 +131,18 @@ TxMeta::getAffectedAccounts() const
|
||||
if (index != -1)
|
||||
{
|
||||
auto inner = dynamic_cast<STObject const*>(&it.peekAtIndex(index));
|
||||
assert(inner);
|
||||
ASSERT(
|
||||
inner != nullptr,
|
||||
"ripple::getAffectedAccounts : STObject type cast succeeded");
|
||||
if (inner)
|
||||
{
|
||||
for (auto const& field : *inner)
|
||||
{
|
||||
if (auto sa = dynamic_cast<STAccount const*>(&field))
|
||||
{
|
||||
assert(!sa->isDefault());
|
||||
ASSERT(
|
||||
!sa->isDefault(),
|
||||
"ripple::getAffectedAccounts : account is set");
|
||||
if (!sa->isDefault())
|
||||
list.insert(sa->value());
|
||||
}
|
||||
@@ -145,7 +153,10 @@ TxMeta::getAffectedAccounts() const
|
||||
(field.getFName() == sfTakerGets))
|
||||
{
|
||||
auto lim = dynamic_cast<STAmount const*>(&field);
|
||||
assert(lim);
|
||||
ASSERT(
|
||||
lim != nullptr,
|
||||
"ripple::getAffectedAccounts : STAmount type cast "
|
||||
"succeeded");
|
||||
|
||||
if (lim != nullptr)
|
||||
{
|
||||
@@ -175,7 +186,9 @@ TxMeta::getAffectedNode(SLE::ref node, SField const& type)
|
||||
mNodes.push_back(STObject(type));
|
||||
STObject& obj = mNodes.back();
|
||||
|
||||
assert(obj.getFName() == type);
|
||||
ASSERT(
|
||||
obj.getFName() == type,
|
||||
"ripple::TxMeta::getAffectedNode(SLE::ref) : field type match");
|
||||
obj.setFieldH256(sfLedgerIndex, index);
|
||||
obj.setFieldU16(sfLedgerEntryType, node->getFieldU16(sfLedgerEntryType));
|
||||
|
||||
@@ -190,7 +203,7 @@ TxMeta::getAffectedNode(uint256 const& node)
|
||||
if (n.getFieldH256(sfLedgerIndex) == node)
|
||||
return n;
|
||||
}
|
||||
assert(false);
|
||||
UNREACHABLE("ripple::TxMeta::getAffectedNode(uint256) : node not found");
|
||||
Throw<std::runtime_error>("Affected node not found");
|
||||
return *(mNodes.begin()); // Silence compiler warning.
|
||||
}
|
||||
@@ -199,7 +212,7 @@ STObject
|
||||
TxMeta::getAsObject() const
|
||||
{
|
||||
STObject metaData(sfTransactionMetaData);
|
||||
assert(mResult != 255);
|
||||
ASSERT(mResult != 255, "ripple::TxMeta::getAsObject : result is set");
|
||||
metaData.setFieldU8(sfTransactionResult, mResult);
|
||||
metaData.setFieldU32(sfTransactionIndex, mIndex);
|
||||
metaData.emplace_back(mNodes);
|
||||
@@ -213,7 +226,9 @@ TxMeta::addRaw(Serializer& s, TER result, std::uint32_t index)
|
||||
{
|
||||
mResult = TERtoInt(result);
|
||||
mIndex = index;
|
||||
assert((mResult == 0) || ((mResult > 100) && (mResult <= 255)));
|
||||
ASSERT(
|
||||
(mResult == 0) || ((mResult > 100) && (mResult <= 255)),
|
||||
"ripple::TxMeta::addRaw : valid TER input");
|
||||
|
||||
mNodes.sort([](STObject const& o1, STObject const& o2) {
|
||||
return o1.getFieldH256(sfLedgerIndex) < o2.getFieldH256(sfLedgerIndex);
|
||||
|
||||
Reference in New Issue
Block a user