Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

version 0.2.0 deveop #143

Merged
merged 38 commits into from
Sep 15, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1312997
--showhash show full hash
winsvega Aug 11, 2021
936bfb2
spDataObject move requester
winsvega Aug 12, 2021
2bb26a6
support difficulty from tool. swithc to rlp when sending transactions…
winsvega Aug 19, 2021
6a025f8
less memory copy. move to smart pointers WIP
winsvega Aug 19, 2021
ce83692
state test fillers parsing memory WIP
winsvega Aug 20, 2021
c73fa86
remove oldStyle account export
winsvega Aug 20, 2021
2cb650d
StateTestFillerTransaction spPointerMove
winsvega Aug 20, 2021
9246869
do not build error strings for warnings before the flag
winsvega Aug 20, 2021
ad910c5
cache hash as string calculation in FH types
winsvega Aug 21, 2021
6926c17
cache value asString convertion
winsvega Aug 21, 2021
c3d2f67
State and Account on smartPointers WIP
winsvega Aug 21, 2021
0d21d16
Account on spDataObject
winsvega Aug 21, 2021
4fb8cde
test x of y debug log
winsvega Aug 22, 2021
7dd3eb0
RUNNING AND FILLING ALL TESTS WORKS
winsvega Aug 22, 2021
225b07b
sort data only on export
winsvega Aug 22, 2021
b96307e
fix LegacyTests run on old sorted hash calculation
winsvega Aug 22, 2021
5242549
fix test x out of y calculation using boost
winsvega Aug 23, 2021
a2f3786
skip legacy tests hash verification bacause of sorting
winsvega Aug 23, 2021
615b333
fix calculate filler hash on threads issue
winsvega Aug 23, 2021
f6d3589
fix boost test cases calculation
winsvega Aug 23, 2021
cf02184
thread join time WIP
winsvega Aug 25, 2021
88e34b6
print warning on old test verion or retesteth version vs tests
winsvega Aug 29, 2021
a7a9787
test_rawTransaction
winsvega Aug 31, 2021
449e958
ttTransaction test suite WIP
winsvega Aug 31, 2021
235bd26
ttTransaction Test suite
winsvega Sep 1, 2021
01dae6a
make json verifications maps static so not to construct it every time
winsvega Sep 1, 2021
99e2183
prioritize structure check before throwing any exceptions
winsvega Sep 1, 2021
9679751
version 0.2.0
winsvega Sep 2, 2021
ca97d3f
50 ms thread wait
winsvega Sep 2, 2021
3fe832c
thread protect spPointers
winsvega Sep 2, 2021
06c64b5
fix initializers
winsvega Sep 3, 2021
7c39217
t9n tool support
winsvega Sep 4, 2021
6b5946b
--forceupdate option
winsvega Sep 5, 2021
09f9745
export test only if there were changes
winsvega Sep 5, 2021
db66e36
move thread logic to ThreadManager
winsvega Sep 5, 2021
5ccafb6
macOS Mutex
winsvega Sep 6, 2021
f368575
t9n return hash
winsvega Sep 8, 2021
71e9f78
try 25ms thread wait
winsvega Sep 9, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
prioritize structure check before throwing any exceptions
  • Loading branch information
winsvega committed Sep 1, 2021
commit 99e2183ccd64a31f31c5ecba0bafc327f0e6cbf3
16 changes: 8 additions & 8 deletions retesteth/session/ToolBackend/ToolChainHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ namespace toolimpl
{
ToolParams::ToolParams(DataObject const& _data)
{
REQUIRE_JSONFIELDS(_data, "ToolParams " + _data.getKey(),
{{"fork", {{DataType::String}, jsonField::Required}},
{"muirGlacierForkBlock", {{DataType::String}, jsonField::Optional}},
{"constantinopleForkBlock", {{DataType::String}, jsonField::Optional}},
{"byzantiumForkBlock", {{DataType::String}, jsonField::Optional}},
{"londonForkBlock", {{DataType::String}, jsonField::Optional}},
{"homesteadForkBlock", {{DataType::String}, jsonField::Optional}}});

const bigint unreachable = 10000000000;
if (_data.count("homesteadForkBlock"))
m_homesteadForkBlock = spVALUE(new VALUE(_data.atKey("homesteadForkBlock")));
Expand All @@ -37,14 +45,6 @@ ToolParams::ToolParams(DataObject const& _data)
m_londonForkBlock = spVALUE(new VALUE(_data.atKey("londonForkBlock")));
else
m_londonForkBlock = spVALUE(new VALUE(unreachable));

REQUIRE_JSONFIELDS(_data, "ToolParams " + _data.getKey(),
{{"fork", {{DataType::String}, jsonField::Required}},
{"muirGlacierForkBlock", {{DataType::String}, jsonField::Optional}},
{"constantinopleForkBlock", {{DataType::String}, jsonField::Optional}},
{"byzantiumForkBlock", {{DataType::String}, jsonField::Optional}},
{"londonForkBlock", {{DataType::String}, jsonField::Optional}},
{"homesteadForkBlock", {{DataType::String}, jsonField::Optional}}});
}

// We simulate the client backend side here, so thats why number5 is hardcoded
Expand Down
25 changes: 12 additions & 13 deletions retesteth/testStructures/configs/ClientConfigFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@ ClientConfigFile::ClientConfigFile(fs::path const& _clientConfigPath)

void ClientConfigFile::initWithData(DataObject const& _data)
{
// Limit sections in the file
REQUIRE_JSONFIELDS(_data, "ClientConfigFile " + _data.getKey(),
{{"name", {{DataType::String}, jsonField::Required}},
{"socketType", {{DataType::String}, jsonField::Required}},
{"socketAddress", {{DataType::String, DataType::Array}, jsonField::Required}},
{"initializeTime", {{DataType::String}, jsonField::Optional}},
{"checkLogsHash", {{DataType::Bool}, jsonField::Optional}},
{"forks", {{DataType::Array}, jsonField::Required}},
{"additionalForks", {{DataType::Array}, jsonField::Required}},
{"exceptions", {{DataType::Object}, jsonField::Required}},
{"fieldReplace", {{DataType::Object}, jsonField::Optional}}});

string const sErrorPath = "ClientConfig (" + m_configFilePath.string() + ") ";
m_name = _data.atKey("name").asString();

Expand Down Expand Up @@ -140,19 +152,6 @@ void ClientConfigFile::initWithData(DataObject const& _data)
m_fieldRaplce[el->getKey()] = el->asString();
}
}

// Limit sections in the file
REQUIRE_JSONFIELDS(_data, "ClientConfigFile " + _data.getKey(),
{{"name", {{DataType::String}, jsonField::Required}},
{"socketType", {{DataType::String}, jsonField::Required}},
{"socketAddress", {{DataType::String, DataType::Array}, jsonField::Required}},
{"initializeTime", {{DataType::String}, jsonField::Optional}},
{"checkLogsHash", {{DataType::Bool}, jsonField::Optional}},
{"forks", {{DataType::Array}, jsonField::Required}},
{"additionalForks", {{DataType::Array}, jsonField::Required}},
{"exceptions", {{DataType::Object}, jsonField::Required}},
{"fieldReplace", {{DataType::Object}, jsonField::Optional}}
});
}

std::vector<IPADDRESS> const& ClientConfigFile::socketAdresses() const
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,25 @@ BlockchainTestBlock::BlockchainTestBlock(DataObject const& _data)
{
try
{
REQUIRE_JSONFIELDS(_data, "BlockchainTestBlock " + _data.getKey(),
{{"rlp", {{DataType::String}, jsonField::Required}},
{"chainname", {{DataType::String}, jsonField::Optional}}, // User information
{"blocknumber", {{DataType::String}, jsonField::Optional}}, // User information
{"transactions", {{DataType::Array}, jsonField::Optional}},
{"transactionSequence", {{DataType::Array}, jsonField::Optional}},
{"uncleHeaders", {{DataType::Array}, jsonField::Optional}},
{"expectException", {{DataType::String}, jsonField::Optional}}, // User information
{"expectExceptionALL", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionByzantium", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionHomestead", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionEIP150", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionEIP158", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionFrontier", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionConstantinople", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionConstantinopleFix", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionIstanbul", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"blockHeader", {{DataType::Object}, jsonField::Optional}}});

if (_data.count("chainname"))
m_chainName = _data.atKey("chainname").asString();
if (_data.count("blocknumber"))
Expand Down Expand Up @@ -40,25 +59,6 @@ BlockchainTestBlock::BlockchainTestBlock(DataObject const& _data)
m_uncles.push_back(readBlockHeader(un));
}
m_rlp = spBYTES(new BYTES(_data.atKey("rlp").asString()));

REQUIRE_JSONFIELDS(_data, "BlockchainTestBlock " + _data.getKey(),
{{"rlp", {{DataType::String}, jsonField::Required}},
{"chainname", {{DataType::String}, jsonField::Optional}}, // User information
{"blocknumber", {{DataType::String}, jsonField::Optional}}, // User information
{"transactions", {{DataType::Array}, jsonField::Optional}},
{"transactionSequence", {{DataType::Array}, jsonField::Optional}},
{"uncleHeaders", {{DataType::Array}, jsonField::Optional}},
{"expectException", {{DataType::String}, jsonField::Optional}}, // User information
{"expectExceptionALL", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionByzantium", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionHomestead", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionEIP150", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionEIP158", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionFrontier", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionConstantinople", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionConstantinopleFix", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"expectExceptionIstanbul", {{DataType::String}, jsonField::Optional}}, // Legacy field
{"blockHeader", {{DataType::Object}, jsonField::Optional}}});
}
catch (std::exception const& _ex)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,76 +10,74 @@ BlockchainTestEnv::BlockchainTestEnv(DataObject const& _data)
{
try
{
m_currentCoinbase = spFH20(new FH20(_data.atKey("coinbase")));
m_currentDifficulty = spVALUE(new VALUE(_data.atKey("difficulty")));
m_currentNumber = spVALUE(new VALUE(_data.atKey("number")));
m_currentTimestamp = spVALUE(new VALUE(_data.atKey("timestamp")));
m_previousHash = spFH32(new FH32(_data.atKey("parentHash")));
m_currentExtraData = spBYTES(new BYTES(_data.atKey("extraData")));
m_currentNonce = spFH8(new FH8(_data.atKey("nonce")));
m_currentMixHash = spFH32(new FH32(_data.atKey("mixHash")));
m_currentGasLimit = spVALUE(new VALUE(_data.atKey("gasLimit")));

if (!_data.count("baseFeePerGas"))
{
// Legacy header Allowed fields for this structure
REQUIRE_JSONFIELDS(_data, "GenesisBlockHeader(BlockchainTestEnv) " + _data.getKey(),
{{"bloom", {{DataType::String}, jsonField::Optional}},
{"logsBloom", {{DataType::String}, jsonField::Optional}},
{"coinbase", {{DataType::String}, jsonField::Optional}},
{"author", {{DataType::String}, jsonField::Optional}},
{"miner", {{DataType::String}, jsonField::Optional}},
{"difficulty", {{DataType::String}, jsonField::Required}},
{"extraData", {{DataType::String}, jsonField::Required}},
{"gasLimit", {{DataType::String}, jsonField::Required}},
{"gasUsed", {{DataType::String}, jsonField::Required}},
{"hash", {{DataType::String}, jsonField::Optional}},
{"mixHash", {{DataType::String}, jsonField::Optional}},
{"nonce", {{DataType::String}, jsonField::Optional}},
{"number", {{DataType::String}, jsonField::Required}},
{"parentHash", {{DataType::String}, jsonField::Required}},
{"receiptTrie", {{DataType::String}, jsonField::Optional}},
{"receiptsRoot", {{DataType::String}, jsonField::Optional}},
{"stateRoot", {{DataType::String}, jsonField::Required}},
{"timestamp", {{DataType::String}, jsonField::Required}},
{"transactionsTrie", {{DataType::String}, jsonField::Optional}},
{"transactionsRoot", {{DataType::String}, jsonField::Optional}},
{"sha3Uncles", {{DataType::String}, jsonField::Optional}},
{"uncleHash", {{DataType::String}, jsonField::Optional}}
});
{"logsBloom", {{DataType::String}, jsonField::Optional}},
{"coinbase", {{DataType::String}, jsonField::Optional}},
{"author", {{DataType::String}, jsonField::Optional}},
{"miner", {{DataType::String}, jsonField::Optional}},
{"difficulty", {{DataType::String}, jsonField::Required}},
{"extraData", {{DataType::String}, jsonField::Required}},
{"gasLimit", {{DataType::String}, jsonField::Required}},
{"gasUsed", {{DataType::String}, jsonField::Required}},
{"hash", {{DataType::String}, jsonField::Optional}},
{"mixHash", {{DataType::String}, jsonField::Optional}},
{"nonce", {{DataType::String}, jsonField::Optional}},
{"number", {{DataType::String}, jsonField::Required}},
{"parentHash", {{DataType::String}, jsonField::Required}},
{"receiptTrie", {{DataType::String}, jsonField::Optional}},
{"receiptsRoot", {{DataType::String}, jsonField::Optional}},
{"stateRoot", {{DataType::String}, jsonField::Required}},
{"timestamp", {{DataType::String}, jsonField::Required}},
{"transactionsTrie", {{DataType::String}, jsonField::Optional}},
{"transactionsRoot", {{DataType::String}, jsonField::Optional}},
{"sha3Uncles", {{DataType::String}, jsonField::Optional}},
{"uncleHash", {{DataType::String}, jsonField::Optional}}});
}
else
{
// EIP1559 style
m_currentBaseFee = spVALUE(new VALUE(_data.atKey("baseFeePerGas")));

// Allowed fields for this structure
REQUIRE_JSONFIELDS(_data, "GenesisBlockHeader(BlockchainTestEnv) " + _data.getKey(),
{{"bloom", {{DataType::String}, jsonField::Optional}},
{"logsBloom", {{DataType::String}, jsonField::Optional}},
{"coinbase", {{DataType::String}, jsonField::Optional}},
{"author", {{DataType::String}, jsonField::Optional}},
{"miner", {{DataType::String}, jsonField::Optional}},
{"difficulty", {{DataType::String}, jsonField::Required}},
{"extraData", {{DataType::String}, jsonField::Required}},
{"gasLimit", {{DataType::String}, jsonField::Required}},
{"baseFeePerGas", {{DataType::String}, jsonField::Required}},
{"gasUsed", {{DataType::String}, jsonField::Required}},
{"hash", {{DataType::String}, jsonField::Optional}},
{"mixHash", {{DataType::String}, jsonField::Optional}},
{"nonce", {{DataType::String}, jsonField::Optional}},
{"number", {{DataType::String}, jsonField::Required}},
{"parentHash", {{DataType::String}, jsonField::Required}},
{"receiptTrie", {{DataType::String}, jsonField::Optional}},
{"receiptsRoot", {{DataType::String}, jsonField::Optional}},
{"stateRoot", {{DataType::String}, jsonField::Required}},
{"timestamp", {{DataType::String}, jsonField::Required}},
{"transactionsTrie", {{DataType::String}, jsonField::Optional}},
{"transactionsRoot", {{DataType::String}, jsonField::Optional}},
{"sha3Uncles", {{DataType::String}, jsonField::Optional}},
{"uncleHash", {{DataType::String}, jsonField::Optional}}
});
{"logsBloom", {{DataType::String}, jsonField::Optional}},
{"coinbase", {{DataType::String}, jsonField::Optional}},
{"author", {{DataType::String}, jsonField::Optional}},
{"miner", {{DataType::String}, jsonField::Optional}},
{"difficulty", {{DataType::String}, jsonField::Required}},
{"extraData", {{DataType::String}, jsonField::Required}},
{"gasLimit", {{DataType::String}, jsonField::Required}},
{"baseFeePerGas", {{DataType::String}, jsonField::Required}},
{"gasUsed", {{DataType::String}, jsonField::Required}},
{"hash", {{DataType::String}, jsonField::Optional}},
{"mixHash", {{DataType::String}, jsonField::Optional}},
{"nonce", {{DataType::String}, jsonField::Optional}},
{"number", {{DataType::String}, jsonField::Required}},
{"parentHash", {{DataType::String}, jsonField::Required}},
{"receiptTrie", {{DataType::String}, jsonField::Optional}},
{"receiptsRoot", {{DataType::String}, jsonField::Optional}},
{"stateRoot", {{DataType::String}, jsonField::Required}},
{"timestamp", {{DataType::String}, jsonField::Required}},
{"transactionsTrie", {{DataType::String}, jsonField::Optional}},
{"transactionsRoot", {{DataType::String}, jsonField::Optional}},
{"sha3Uncles", {{DataType::String}, jsonField::Optional}},
{"uncleHash", {{DataType::String}, jsonField::Optional}}});

// EIP1559 style
m_currentBaseFee = spVALUE(new VALUE(_data.atKey("baseFeePerGas")));
}

m_currentCoinbase = spFH20(new FH20(_data.atKey("coinbase")));
m_currentDifficulty = spVALUE(new VALUE(_data.atKey("difficulty")));
m_currentNumber = spVALUE(new VALUE(_data.atKey("number")));
m_currentTimestamp = spVALUE(new VALUE(_data.atKey("timestamp")));
m_previousHash = spFH32(new FH32(_data.atKey("parentHash")));
m_currentExtraData = spBYTES(new BYTES(_data.atKey("extraData")));
m_currentNonce = spFH8(new FH8(_data.atKey("nonce")));
m_currentMixHash = spFH32(new FH32(_data.atKey("mixHash")));
m_currentGasLimit = spVALUE(new VALUE(_data.atKey("gasLimit")));
}
catch (std::exception const& _ex)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,17 @@ BlockchainTestFillerBlock::BlockchainTestFillerBlock(spDataObject& _data, NonceM
{
try
{
REQUIRE_JSONFIELDS(_data, "BlockchainTestFillerBlock " + _data->getKey(),
{{"rlp", {{DataType::String}, jsonField::Optional}},
{"chainname", {{DataType::String}, jsonField::Optional}},
{"donotimportonclient", {{DataType::String}, jsonField::Optional}},
{"blocknumber", {{DataType::String}, jsonField::Optional}},
{"chainnetwork", {{DataType::String}, jsonField::Optional}},
{"transactions", {{DataType::Array}, jsonField::Optional}},
{"uncleHeaders", {{DataType::Array}, jsonField::Optional}},
{"expectException", {{DataType::Object}, jsonField::Optional}},
{"blockHeader", {{DataType::Object}, jsonField::Optional}}});

if (_data->count("rlp"))
{
m_rlp = spBYTES(new BYTES(_data->atKey("rlp")));
Expand Down Expand Up @@ -73,17 +84,6 @@ BlockchainTestFillerBlock::BlockchainTestFillerBlock(spDataObject& _data, NonceM
m_overwriteHeaderByForkMap.emplace(el, overwrite);
}
}

REQUIRE_JSONFIELDS(_data, "BlockchainTestFillerBlock " + _data->getKey(),
{{"rlp", {{DataType::String}, jsonField::Optional}},
{"chainname", {{DataType::String}, jsonField::Optional}},
{"donotimportonclient", {{DataType::String}, jsonField::Optional}},
{"blocknumber", {{DataType::String}, jsonField::Optional}},
{"chainnetwork", {{DataType::String}, jsonField::Optional}},
{"transactions", {{DataType::Array}, jsonField::Optional}},
{"uncleHeaders", {{DataType::Array}, jsonField::Optional}},
{"expectException", {{DataType::Object}, jsonField::Optional}},
{"blockHeader", {{DataType::Object}, jsonField::Optional}}});
}
catch (std::exception const& _ex)
{
Expand Down
Loading