Browse Source

Merge pull request #1806 from winsvega/newtests

Specifing concrete test when filling testsuite
cl-refactor
Gav Wood 10 years ago
parent
commit
0b9aa24aad
  1. 10
      test/TestHelper.cpp
  2. 2
      test/TestHelper.h
  3. 160
      test/libethereum/StateTestsFiller/stSolidityTestFiller.json
  4. 9
      test/libethereum/state.cpp

10
test/TestHelper.cpp

@ -715,11 +715,10 @@ Options::Options()
vmtrace = true; vmtrace = true;
else if (arg == "--filltests") else if (arg == "--filltests")
fillTests = true; fillTests = true;
else if (arg.compare(0, 7, "--stats") == 0) else if (arg == "--stats" && i + 1 < argc)
{ {
stats = true; stats = true;
if (arg.size() > 7) statsOutFile = argv[i + 1];
statsOutFile = arg.substr(8); // skip '=' char
} }
else if (arg == "--performance") else if (arg == "--performance")
performance = true; performance = true;
@ -741,6 +740,11 @@ Options::Options()
inputLimits = true; inputLimits = true;
bigData = true; bigData = true;
} }
else if (arg == "--singletest" && i + 1 < argc)
{
singleTest = true;
singleTestName = argv[i + 1];
}
} }
} }

2
test/TestHelper.h

@ -188,6 +188,8 @@ public:
/// Test selection /// Test selection
/// @{ /// @{
bool singleTest = false;
std::string singleTestName;
bool performance = false; bool performance = false;
bool quadratic = false; bool quadratic = false;
bool memory = false; bool memory = false;

160
test/libethereum/StateTestsFiller/stSolidityTestFiller.json

@ -1,4 +1,156 @@
{ {
"ContractInheritance" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "1000000000000000000000",
"currentNumber" : "120",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"expect" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"storage" : {
"0x" : "0x01"
}
}
},
"pre" :
{
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"balance" : "100000",
"//" : "contract base ",
"//" : "{ ",
"//" : " function methodA() returns (uint32) ",
"//" : " { ",
"//" : " return 1; ",
"//" : " } ",
"//" : "} ",
"//" : " ",
"//" : "contract frombase is base ",
"//" : "{ ",
"//" : " function methodA() returns (uint32) ",
"//" : " { ",
"//" : " return 2; ",
"//" : " } ",
"//" : "} ",
"//" : " ",
"//" : "contract main ",
"//" : "{ ",
"//" : " bool returnValue; ",
"//" : " function run() returns (bool) ",
"//" : " { ",
"//" : " returnValue = testInheretance(); ",
"//" : " return returnValue; ",
"//" : " } ",
"//" : " ",
"//" : " function testInheretance() returns (bool res) ",
"//" : " { ",
"//" : " res = true; ",
"//" : " base contract1; ",
"//" : " if (contract1.methodA() != 1) ",
"//" : " return false; ",
"//" : " ",
"//" : " frombase contract2; ",
"//" : " if (contract2.methodA() != 2) ",
"//" : " return false; ",
"//" : " } ",
"//" : "} ",
"code" : "0x6000357c0100000000000000000000000000000000000000000000000000000000900480633e0bca3b1461003a578063c04062261461004c57005b610042610099565b8060005260206000f35b61005461005e565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006000600060019250825060018273ffffffffffffffffffffffffffffffffffffffff166381bda09b60206000827c010000000000000000000000000000000000000000000000000000000002600052600460006000866161da5a03f16100fd57005b505060005163ffffffff1614156101135761011c565b60009250610194565b60028173ffffffffffffffffffffffffffffffffffffffff166381bda09b60206000827c010000000000000000000000000000000000000000000000000000000002600052600460006000866161da5a03f161017457005b505060005163ffffffff16141561018a57610193565b60009250610194565b5b50509056",
"nonce" : "0",
"storage" : {
}
},
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "50000000",
"nonce" : "0",
"code" : "",
"storage": {}
}
},
"transaction" :
{
"data" : "run()",
"data" : "0xc0406226",
"gasLimit" : "35000000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87",
"value" : "0"
}
},
"TestOverflow" : {
"env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "45678256",
"currentGasLimit" : "1000000000000000000000",
"currentNumber" : "120",
"currentTimestamp" : 1,
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
},
"expect" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"storage" : {
"0x" : "0x01"
}
}
},
"pre" :
{
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"balance" : "100000",
"//" : "contract main ",
"//" : "{ ",
"//" : " bool returnValue; ",
"//" : " function run() returns (bool) ",
"//" : " { ",
"//" : " returnValue = testOverflow(); ",
"//" : " return returnValue; ",
"//" : " } ",
"//" : " ",
"//" : " function testOverflow() returns (bool res) ",
"//" : " { ",
"//" : " res = true; ",
"//" : " uint256 a = 115792089237316195423570985008687907853269984665640564039457584007913129639935; ",
"//" : " if (a + 1 != 0) ",
"//" : " return false; ",
"//" : " ",
"//" : " uint32 b = 4294967295; ",
"//" : " if (b + 1 != 0) ",
"//" : " return false; ",
"//" : " ",
"//" : " uint64 c = 18446744073709551615; ",
"//" : " if (c + 1 != 0) ",
"//" : " return false; ",
"//" : " } ",
"//" : "} ",
"code" : "0x6000357c0100000000000000000000000000000000000000000000000000000000900480638040cac41461003a578063c04062261461004c57005b610042610099565b8060005260206000f35b61005461005e565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006000600060006001935083507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925060006001840114156100db576100e4565b6000935061013b565b63ffffffff915060006001830163ffffffff1614156101025761010b565b6000935061013b565b67ffffffffffffffff905060006001820167ffffffffffffffff1614156101315761013a565b6000935061013b565b5b5050509056",
"nonce" : "0",
"storage" : {
}
},
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
"balance" : "50000000",
"nonce" : "0",
"code" : "",
"storage": {}
}
},
"transaction" :
{
"data" : "run()",
"data" : "0xc0406226",
"gasLimit" : "35000000",
"gasPrice" : "1",
"nonce" : "0",
"secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
"to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87",
"value" : "0"
}
},
"TestStoreGasPrices" : { "TestStoreGasPrices" : {
"env" : { "env" : {
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
@ -125,10 +277,14 @@
"//" : " if (ripemd160('teststring') != 0xcd566972b5e50104011a92b59fa8e0b1234851ae) ", "//" : " if (ripemd160('teststring') != 0xcd566972b5e50104011a92b59fa8e0b1234851ae) ",
"//" : " return false; ", "//" : " return false; ",
"//" : " ", "//" : " ",
"//" : " //ecrecover ", "//" : " if (ecrecover(0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c, ",
"//" : " 28, 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f, ",
"//" : " 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) ",
"//" : " != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b) ",
"//" : " return false; ",
"//" : " } ", "//" : " } ",
"//" : "} ", "//" : "} ",
"code" : "0x7c01000000000000000000000000000000000000000000000000000000006000350463c04062268114610039578063e0a9fd281461004b57005b61004161005d565b8060005260206000f35b61005361009d565b8060005260206000f35b600061006761009d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016919091179081905560ff16905090565b7f74657374737472696e67000000000000000000000000000000000000000000006000908152600190600a90207f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d14156100f6576100fe565b5060006101eb565b60026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a01600060008560325a03f161013c57005b506000517f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d111141561016c57610174565b5060006101eb565b60036020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a01600060008560325a03f16101b257005b506000517fcd566972b5e50104011a92b59fa8e0b1234851ae00000000000000000000000014156101e2576101ea565b5060006101eb565b5b9056", "code" : "0x6000357c010000000000000000000000000000000000000000000000000000000090048063c04062261461003a578063e0a9fd281461004c57005b61004261005e565b8060005260206000f35b610054610099565b8060005260206000f35b6000610068610099565b600060006101000a81548160ff02191690830217905550600060009054906101000a900460ff169050610096565b90565b60006001905080507f43c4b4524adb81e4e9a5c4648a98e9d320e3908ac5b6c889144b642cd08ae16d60010260407f74657374737472696e67000000000000000000000000000000000000000000008152600a016040900360402014156100ff57610108565b600090506102ec565b7f3c8727e019a42b444667a587b6001251becadabbb36bfed8087a92c18882d11160010260026020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f161016b57005b50600051141561017a57610183565b600090506102ec565b73cd566972b5e50104011a92b59fa8e0b1234851ae6c010000000000000000000000000260036020600060007f74657374737472696e67000000000000000000000000000000000000000000008152600a0160006000856161da5a03f16101e657005b506000516c010000000000000000000000000214156102045761020d565b600090506102ec565b73a94f5374fce5edbc8e2a8697c15331677e6ebf0b60016020600060007f18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c6001028152602001601c81526020017f73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f60010281526020017feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549600102815260200160006000856161da5a03f16102bd57005b5060005173ffffffffffffffffffffffffffffffffffffffff1614156102e2576102eb565b600090506102ec565b5b9056",
"nonce" : "0", "nonce" : "0",
"storage" : { "storage" : {
} }

9
test/libethereum/state.cpp

@ -43,9 +43,14 @@ void doStateTests(json_spirit::mValue& v, bool _fillin)
{ {
for (auto& i: v.get_obj()) for (auto& i: v.get_obj())
{ {
std::cout << " " << i.first << "\n";
mObject& o = i.second.get_obj(); mObject& o = i.second.get_obj();
if (test::Options::get().singleTest && test::Options::get().singleTestName != i.first)
{
o.clear();
continue;
}
std::cout << " " << i.first << std::endl;
BOOST_REQUIRE(o.count("env") > 0); BOOST_REQUIRE(o.count("env") > 0);
BOOST_REQUIRE(o.count("pre") > 0); BOOST_REQUIRE(o.count("pre") > 0);
BOOST_REQUIRE(o.count("transaction") > 0); BOOST_REQUIRE(o.count("transaction") > 0);
@ -62,7 +67,7 @@ void doStateTests(json_spirit::mValue& v, bool _fillin)
} }
catch (Exception const& _e) catch (Exception const& _e)
{ {
cnote << "Exception:\n" << diagnostic_information(_e); cnote << "Exception: " << diagnostic_information(_e);
theState.commit(); theState.commit();
} }
catch (std::exception const& _e) catch (std::exception const& _e)

Loading…
Cancel
Save