diff options
Diffstat (limited to 'RPCTests/modules')
-rw-r--r-- | RPCTests/modules/ethconsole.js | 97 | ||||
m--------- | RPCTests/modules/ethereum-console | 0 | ||||
-rw-r--r-- | RPCTests/modules/startnode.js | 27 | ||||
-rw-r--r-- | RPCTests/modules/testutils.js | 69 | ||||
-rw-r--r-- | RPCTests/modules/utils.js | 35 |
5 files changed, 193 insertions, 35 deletions
diff --git a/RPCTests/modules/ethconsole.js b/RPCTests/modules/ethconsole.js new file mode 100644 index 000000000..d3ee707bb --- /dev/null +++ b/RPCTests/modules/ethconsole.js @@ -0,0 +1,97 @@ +const fs = require('fs'); +var lastResponse; +var nodes = {}; + +module.exports = { + +startNode: function startNode (nodeExec, dataDir, genesisPath, listeningPort, finished) +{ + var utils = require('./utils.js'); + var spawn = require('child_process').spawn + var options = [ + '--private', 'privatechain', + '-d', dataDir, + '--config', genesisPath, + '--ipcpath', dataDir + '/geth.ipc', + '--ipc', + '--listen', listeningPort, + '--test' + ] + utils.cLog('starting node') + utils.cLog(nodeExec + ' ' + options.join(' ')) + var node = spawn(nodeExec, options) + node.stdout.on('data', (data) => { + utils.cLog(`stdout: ${data}`) + }) + node.stderr.on('data', (data) => { + utils.cLog(`stderr: ${data}`) + }) + node.on('close', (code) => { + utils.cLog(`child process exited with code ${code}`) + }) + + nodes[dataDir] = node; + utils.sleep(6000).then(() => { + utils.cLog("Node Started"); + finished(); + }); +}, + +stopNode: function stopNode(dataDir, finished) +{ + nodes[dataDir].kill(); + var utils = require('./utils.js'); + utils.sleep(1000).then(() => { + finished(); + }); +}, + + +runScriptOnNode: function runScriptOnNode(dataDir, jsScript, args, finished) +{ + var utils = require('./utils.js'); + var ipcPath = dataDir + '/geth.ipc'; + + var Web3 = require('./ethereum-console/node_modules/web3'); + var web3admin = require('./ethereum-console/web3Admin.js'); + var net = require('net'); + + utils.cLog("Connecting to node at " + ipcPath); + var web3 = new Web3(new Web3.providers.IpcProvider(ipcPath, net)); + web3admin.extend(web3); + global.web3 = web3; + + var onScriptCallback = function (err, data) + { + utils.cLog(data); + lastResponse = data; + finished(); + } + global.callback = onScriptCallback; + global.args = args; + + var vm = require('vm'); + utils.cLog("Executing " + jsScript + " ..."); + fs.readFile(jsScript, 'utf8', function (err, data) + { + if (err) + { + utils.cLog(err); + finished(); + } + else + { + var script = new vm.Script(data); + - script.runInThisContext(); + } + }); +}, + + +getLastResponse: function getLastResponse() +{ + return lastResponse; +} + +}//exports + diff --git a/RPCTests/modules/ethereum-console b/RPCTests/modules/ethereum-console new file mode 160000 +Subproject 4dbc626aab094b10d859c78059285138774da70 diff --git a/RPCTests/modules/startnode.js b/RPCTests/modules/startnode.js deleted file mode 100644 index f0877b065..000000000 --- a/RPCTests/modules/startnode.js +++ /dev/null @@ -1,27 +0,0 @@ -function startNode (nodeExec, dataDir, genesisPath, listeningPort) -{ - var spawn = require('child_process').spawn - var options = [ - '--private', 'privatechain', - '-d', dataDir, - '--config', genesisPath, - '--ipcpath', dataDir + '/geth.ipc', - '--ipc', - '--listen', listeningPort, - '--test' - ] - console.log('starting node') - console.log(nodeExec + ' ' + options.join(' ')) - var node = spawn(nodeExec, options) - node.stdout.on('data', (data) => { - console.log(`stdout: ${data}`) - }) - node.stderr.on('data', (data) => { - console.log(`stderr: ${data}`) - }) - node.on('close', (code) => { - console.log(`child process exited with code ${code}`) - }) -} - -module.exports = startNode diff --git a/RPCTests/modules/testutils.js b/RPCTests/modules/testutils.js new file mode 100644 index 000000000..7128c6972 --- /dev/null +++ b/RPCTests/modules/testutils.js @@ -0,0 +1,69 @@ +const fs = require('fs'); +var utils = require('./utils.js'); +var tests = {}; +var testCount = 0; + +module.exports = { + +generateCustomGenesis: function generateCustomGenesis(path, originalPath, accountName, finished) +{ + var onFileRead = function (err, data) {}; + fs.readFile(originalPath, 'utf8', (err, data) => { onFileRead (err,data) }); + + onFileRead = function (err, data) + { + if (err) + throw err; + + data = data.replace("[ADDRESS]", accountName); + fs.writeFile(path, data, (err) => { + if (err) + throw err; + finished(); + }); + } +}, + +readTestsInFolder: function readTestsInFolder(path) +{ + var res = utils.listFiles(path); + res.forEach(function(file) { + var testn = file.indexOf("test"); + var slashn = file.indexOf("_"); + if (testn != -1 && slashn != -1) + { + testNumber = parseInt(file.substring(testn + 4, slashn)); + var noden = file.indexOf("node"); + var slashn = file.indexOf("_", slashn+1); + var tmpFile = file.indexOf("~"); + if (noden != -1 && slashn != -1 && tmpFile == -1) + { + if (tests[testNumber]) + console.log("Error: dublicate test found " + file); + else + { + var testObject = {}; + testObject.file = file; + testObject.node = file.substring(noden + 4, slashn); + tests[testNumber] = testObject; + testCount++; + } + } + } + }); +}, + +getTestCount: function getTestCount() +{ + return testCount; +}, + +getTestNumber: function getTestNumber(n) +{ + if(n < testCount); + return tests[n]; +} + + +}//modules + diff --git a/RPCTests/modules/utils.js b/RPCTests/modules/utils.js index 763c9894e..24e9bd811 100644 --- a/RPCTests/modules/utils.js +++ b/RPCTests/modules/utils.js @@ -1,7 +1,5 @@ const fs = require('fs'); -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); - } +var debug = true; module.exports = { @@ -9,14 +7,20 @@ module.exports = { return new Promise(resolve => setTimeout(resolve, ms)); }, + setDebug: function setDebug(value) { debug = value; }, + + getDebug: function getDebug() { return debug; }, - mkdir: function mkdir(path, callback, arg) { + cLog: function cLog(value) { if (debug) console.log(value); }, + + testLog: function testLog(value) { console.log(value); }, + + mkdir: function mkdir(path) { try { fs.mkdirSync(path); } catch(e) { if ( e.code != 'EEXIST' ) throw e; } - callback(arg); }, rmdir: function rmdir(path) { @@ -33,12 +37,27 @@ module.exports = { } }, - readFile: function readFile(path, callback) { - fs.readFile(path, 'utf8', (err, data) => { callback (err, data) }); + readFile: function readFile(path, callback, cb) { + fs.readFile(path, 'utf8', (err, data) => { callback (err, data, cb) }); }, writeFile: function writeFile(path, data) { fs.writeFile(path, data, (err) => { if (err) throw err;}); + }, + + listFiles: function listFiles(dir) { + + var results = []; + fs.readdirSync(dir).forEach(function(file) { + file = dir+'/'+file; + var stat = fs.statSync(file); + + if (stat && stat.isDirectory()) { + results = results.concat(listFiles(file)) + } else results.push(file); + }); + + return results; } -} +} //exports |