aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGav Wood <g@ethdev.com>2014-10-23 03:04:49 +0800
committerGav Wood <g@ethdev.com>2014-10-23 03:04:49 +0800
commit7356e6f4290e0852b77482537e58d9b1254721e2 (patch)
tree6668c388d01bca5c637d17e7ff3df0a3afe548c4
parente987e1a69289fcf05abb25a3d087681b8347b021 (diff)
parent60a7ff58a1c6061a838b5d50b7f24d1ac05193b9 (diff)
downloaddexon-solidity-7356e6f4290e0852b77482537e58d9b1254721e2.tar.gz
dexon-solidity-7356e6f4290e0852b77482537e58d9b1254721e2.tar.zst
dexon-solidity-7356e6f4290e0852b77482537e58d9b1254721e2.zip
Merge pull request #405 from CJentzsch/randomTestCreater
Random test creater optimization
-rw-r--r--createRandomTest.cpp55
1 files changed, 42 insertions, 13 deletions
diff --git a/createRandomTest.cpp b/createRandomTest.cpp
index 874869a5..28e4342d 100644
--- a/createRandomTest.cpp
+++ b/createRandomTest.cpp
@@ -42,11 +42,7 @@ void doMyTests(json_spirit::mValue& v);
int main(int argc, char *argv[])
{
- if (argc != 2)
- {
- cout << "usage: createRandomTest <filename>\n";
- return 0;
- }
+ g_logVerbosity = 0;
// create random code
@@ -64,14 +60,48 @@ int main(int argc, char *argv[])
string randomCode;
for (int i = 0; i < lengthOfCode; ++i)
- randomCode += toHex(toCompactBigEndian(randGen()));
+ {
+ uint8_t opcode = randGen();
+
+ // disregard all invalid commands, except of one (0x10)
+ if (dev::eth::isValidInstruction(dev::eth::Instruction(opcode)) || opcode == 0x10)
+ randomCode += toHex(toCompactBigEndian(opcode));
+ else
+ i--;
+ }
- // read template test file
+ const string s =\
+"{\n\
+ \"randomVMtest\": {\n\
+ \"env\" : {\n\
+ \"previousHash\" : \"5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6\",\n\
+ \"currentNumber\" : \"0\",\n\
+ \"currentGasLimit\" : \"1000000\",\n\
+ \"currentDifficulty\" : \"256\",\n\
+ \"currentTimestamp\" : 1,\n\
+ \"currentCoinbase\" : \"2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\"\n\
+ },\n\
+ \"pre\" : {\n\
+ \"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n\
+ \"balance\" : \"1000000000000000000\",\n\
+ \"nonce\" : 0,\n\
+ \"code\" : \"random\",\n\
+ \"storage\": {}\n\
+ }\n\
+ },\n\
+ \"exec\" : {\n\
+ \"address\" : \"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n\
+ \"origin\" : \"cd1722f3947def4cf144679da39c4c32bdc35681\",\n\
+ \"caller\" : \"cd1722f3947def4cf144679da39c4c32bdc35681\",\n\
+ \"value\" : \"1000000000000000000\",\n\
+ \"data\" : \"\",\n\
+ \"gasPrice\" : \"100000000000000\",\n\
+ \"gas\" : \"10000\"\n\
+ }\n\
+ }\n\
+}";
mValue v;
- boost::filesystem::path p(__FILE__);
- boost::filesystem::path dir = p.parent_path();
- string s = asString(contents(dir.string() + "/randomTestFiller.json"));
read_string(s, v);
// insert new random code
@@ -80,9 +110,8 @@ int main(int argc, char *argv[])
// execute code in vm
doMyTests(v);
- // write new test
- string filename = argv[1];
- writeFile(filename, asBytes(json_spirit::write_string(v, true)));
+ // stream to output for further handling by the bash script
+ cout << json_spirit::write_string(v, true);
return 0;
}