From 3b6e64b7846359047a555ef4a3b9ee0326705201 Mon Sep 17 00:00:00 2001 From: Kirill Fedoseev Date: Tue, 26 Nov 2019 17:41:59 +0300 Subject: [PATCH] Keygen restart tests --- demo/validator1/.env.development | 2 ++ demo/validator1/.env.staging | 2 ++ demo/validator2/.env.development | 2 ++ demo/validator2/.env.staging | 2 ++ demo/validator3/.env.development | 2 ++ demo/validator3/.env.staging | 2 ++ src/oracle/docker-compose-test.yml | 2 ++ src/oracle/docker-compose.yml | 2 ++ src/oracle/tss-keygen/keygen.js | 8 ++++++- .../binanceBalance/.env.development | 2 +- .../binanceSend/.env.development | 2 +- tests/.env | 2 +- tests/test/changeThreshold.js | 18 +++++++++++++-- tests/test/utils/keygenController.js | 22 +++++++++++++++++++ tests/test/utils/signerController.js | 4 ++-- 15 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 tests/test/utils/keygenController.js diff --git a/demo/validator1/.env.development b/demo/validator1/.env.development index fea34dc..b27189a 100644 --- a/demo/validator1/.env.development +++ b/demo/validator1/.env.development @@ -27,4 +27,6 @@ VOTES_PROXY_PORT=5001 SIGN_RESTART_PORT=6001 +KEYGEN_RESTART_PORT=7001 + LOG_LEVEL=trace diff --git a/demo/validator1/.env.staging b/demo/validator1/.env.staging index aef801b..b3c1acf 100644 --- a/demo/validator1/.env.staging +++ b/demo/validator1/.env.staging @@ -27,4 +27,6 @@ VOTES_PROXY_PORT=5001 SIGN_RESTART_PORT=6001 +KEYGEN_RESTART_PORT=7001 + LOG_LEVEL=info diff --git a/demo/validator2/.env.development b/demo/validator2/.env.development index ced9a6e..2ac5ed6 100644 --- a/demo/validator2/.env.development +++ b/demo/validator2/.env.development @@ -27,4 +27,6 @@ VOTES_PROXY_PORT=5002 SIGN_RESTART_PORT=6002 +KEYGEN_RESTART_PORT=7002 + LOG_LEVEL=trace diff --git a/demo/validator2/.env.staging b/demo/validator2/.env.staging index 8d064dd..7d0bf69 100644 --- a/demo/validator2/.env.staging +++ b/demo/validator2/.env.staging @@ -27,4 +27,6 @@ VOTES_PROXY_PORT=5002 SIGN_RESTART_PORT=6002 +KEYGEN_RESTART_PORT=7002 + LOG_LEVEL=info diff --git a/demo/validator3/.env.development b/demo/validator3/.env.development index d8eff01..2f3f501 100644 --- a/demo/validator3/.env.development +++ b/demo/validator3/.env.development @@ -27,4 +27,6 @@ VOTES_PROXY_PORT=5003 SIGN_RESTART_PORT=6003 +KEYGEN_RESTART_PORT=7003 + LOG_LEVEL=trace diff --git a/demo/validator3/.env.staging b/demo/validator3/.env.staging index 2eef51d..5ea48ed 100644 --- a/demo/validator3/.env.staging +++ b/demo/validator3/.env.staging @@ -27,4 +27,6 @@ VOTES_PROXY_PORT=5003 SIGN_RESTART_PORT=6003 +KEYGEN_RESTART_PORT=7003 + LOG_LEVEL=info diff --git a/src/oracle/docker-compose-test.yml b/src/oracle/docker-compose-test.yml index 7923909..6daadfa 100644 --- a/src/oracle/docker-compose-test.yml +++ b/src/oracle/docker-compose-test.yml @@ -39,6 +39,8 @@ services: - LOG_LEVEL volumes: - '${PWD}/${TARGET_NETWORK}/keys:/keys' + ports: + - '${KEYGEN_RESTART_PORT}:8001' networks: - test_network signer: diff --git a/src/oracle/docker-compose.yml b/src/oracle/docker-compose.yml index 034b5b6..3532066 100644 --- a/src/oracle/docker-compose.yml +++ b/src/oracle/docker-compose.yml @@ -36,6 +36,8 @@ services: - LOG_LEVEL volumes: - '${PWD}/${TARGET_NETWORK}/keys:/keys' + ports: + - '${KEYGEN_RESTART_PORT}:8001' networks: - keygen-proxy-net - rabbit-keygen-net diff --git a/src/oracle/tss-keygen/keygen.js b/src/oracle/tss-keygen/keygen.js index f2e9828..18fcfc4 100644 --- a/src/oracle/tss-keygen/keygen.js +++ b/src/oracle/tss-keygen/keygen.js @@ -44,6 +44,12 @@ function killKeygen() { exec.execSync('pkill gg18_keygen || true') } +function restart(req, res) { + logger.info('Manual cancelling current keygen attempt') + killKeygen() + res.send('Done') +} + function keygen(keysFile, epoch) { let restartTimeoutId let epochDaemonIntervalId @@ -144,7 +150,7 @@ async function main() { }) } - +app.get('/restart', restart) app.get('/start', (req, res) => { logger.info('Ready to start') ready = true diff --git a/src/test-services/binanceBalance/.env.development b/src/test-services/binanceBalance/.env.development index 9169981..b6021c1 100644 --- a/src/test-services/binanceBalance/.env.development +++ b/src/test-services/binanceBalance/.env.development @@ -1,2 +1,2 @@ FOREIGN_URL=http://http-api:8000 -FOREIGN_ASSET=DEV-BA8 +FOREIGN_ASSET=DEV-9BA diff --git a/src/test-services/binanceSend/.env.development b/src/test-services/binanceSend/.env.development index db94446..9de3d9e 100644 --- a/src/test-services/binanceSend/.env.development +++ b/src/test-services/binanceSend/.env.development @@ -1,4 +1,4 @@ FOREIGN_URL=http://http-api:8000 -FOREIGN_ASSET=DEV-BA8 +FOREIGN_ASSET=DEV-9BA FOREIGN_PRIVATE_KEY=dd5ec5a7abe9d1fff21170ae591085f000fc6fd9ca0107fe047593f44e328e40 diff --git a/tests/.env b/tests/.env index f4cca67..a7cb16f 100644 --- a/tests/.env +++ b/tests/.env @@ -7,5 +7,5 @@ SIDE_RPC_URL=http://ganache_side:8545 FOREIGN_URL=http://http-api:8000 FOREIGN_CHAIN_ID=Binance-Dev -FOREIGN_ASSET=DEV-BA8 +FOREIGN_ASSET=DEV-9BA FOREIGN_PRIVATE_KEY=dd5ec5a7abe9d1fff21170ae591085f000fc6fd9ca0107fe047593f44e328e40 diff --git a/tests/test/changeThreshold.js b/tests/test/changeThreshold.js index fc0f357..6090f42 100644 --- a/tests/test/changeThreshold.js +++ b/tests/test/changeThreshold.js @@ -2,16 +2,21 @@ const assert = require('assert') const { waitPromise, delay } = require('./utils/wait') const { getBepBalance, getBncFlags } = require('./utils/bncController') - +const { getNonce } = require('./utils/sideController') const { controller1, controller2, controller3 } = require('./utils/proxyController') +const { keygenController1 } = require('./utils/keygenController') + +const { validators } = require('../config') module.exports = (newThreshold) => { describe('change threshold', function () { let info let initialInfo + let validatorNonce before(async function () { initialInfo = await controller1.getInfo() + validatorNonce = await getNonce(validators[0]) info = initialInfo }) @@ -89,8 +94,17 @@ module.exports = (newThreshold) => { assert.strictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly') }) - it('should finish keygen process and start funds transfer', async function () { + it('should start keys generation', async function () { this.timeout(120000) + await waitPromise( + () => getNonce(validators[0]), + (nonce) => nonce > validatorNonce + 2 + ) + }) + + it('should restart keygen generation and regenerate keys properly, should start funds transfer', async function () { + this.timeout(360000) + await keygenController1.restart() info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'funds_transfer') const flags = await getBncFlags(initialInfo.foreignBridgeAddress) assert.strictEqual(flags, 0, 'Foreign bridge flags are not set correctly') diff --git a/tests/test/utils/keygenController.js b/tests/test/utils/keygenController.js new file mode 100644 index 0000000..e670eaa --- /dev/null +++ b/tests/test/utils/keygenController.js @@ -0,0 +1,22 @@ +const axios = require('axios') + +function createController(validatorId) { + const url = `http://validator${validatorId}_keygen_1:8001/` + + const keygenClient = axios.create({ + baseURL: url, + timeout: 10000 + }) + + return { + async restart() { + await keygenClient.get('/restart') + } + } +} + +module.exports = { + keygenController1: createController(1), + keygenController2: createController(2), + keygenController3: createController(3) +} diff --git a/tests/test/utils/signerController.js b/tests/test/utils/signerController.js index 6a22a84..98f3eed 100644 --- a/tests/test/utils/signerController.js +++ b/tests/test/utils/signerController.js @@ -3,14 +3,14 @@ const axios = require('axios') function createController(validatorId) { const url = `http://validator${validatorId}_signer_1:8001/` - const sideClient = axios.create({ + const signerClient = axios.create({ baseURL: url, timeout: 10000 }) return { async restart() { - await sideClient.get('/restart') + await signerClient.get('/restart') } } }