Demo modification to test multi send, allow to save and restore initial after-deployment blockchain state

This commit is contained in:
Kirill Fedoseev 2019-10-16 22:40:25 +03:00
parent 98b4679080
commit f4150a3324
6 changed files with 55 additions and 23 deletions

View File

@ -33,6 +33,18 @@ const windows = terminal.windows()
const wins = [] const wins = []
function saveBlockchainData () {
console.log('Saving blockchain data')
curApp.doShellScript('zip -r ./demo/ganache_home_backup.zip ./demo/ganache_home_db')
curApp.doShellScript('zip -r ./demo/ganache_side_backup.zip ./demo/ganache_side_db')
}
function reloadBlockchainData () {
console.log('Reloading blockchain data')
curApp.doShellScript('unzip -d . ./demo/ganache_home_backup.zip')
curApp.doShellScript('unzip -d . ./demo/ganache_side_backup.zip')
}
function closeOldWindows () { function closeOldWindows () {
for (let i in windows) { for (let i in windows) {
try { try {
@ -80,7 +92,7 @@ function openNewWindows () {
} }
function apiRequestBackground (url) { function apiRequestBackground (url) {
const response = curApp.doShellScript(`curl -X GET "${url}"`) const response = curApp.doShellScript(`curl -s -X GET "${url}"`)
try { try {
return JSON.parse(response) return JSON.parse(response)
} catch (e) { } catch (e) {
@ -94,11 +106,11 @@ function exec (n, script) {
function wait (n) { function wait (n) {
while (wins[n - 1].selectedTab().busy()) { while (wins[n - 1].selectedTab().busy()) {
delay(0.3) delay(0.2)
} }
} }
function execSync(n, script) { function execSync (n, script) {
exec(n, script) exec(n, script)
wait(n) wait(n)
} }
@ -116,7 +128,7 @@ function waitLog (n, log) {
if (s) { if (s) {
return s return s
} }
delay(0.3) delay(0.2)
} while (true) } while (true)
} }
@ -126,7 +138,7 @@ function waitApi (n, url, check) {
const checkerRes = check ? check(res) : true const checkerRes = check ? check(res) : true
if (checkerRes) if (checkerRes)
return checkerRes return checkerRes
delay(0.3) delay(3)
} while (true) } while (true)
} }
@ -157,12 +169,12 @@ function getBncTokenBalance (address) {
} }
function waitBncTokenBalance (address, balance) { function waitBncTokenBalance (address, balance) {
do { while (true) {
const newBalance = getBncTokenBalance(address) const newBalance = getBncTokenBalance(address)
if (Math.abs(newBalance - balance) < 0.0001) if (Math.abs(newBalance - balance) < 0.0001)
return newBalance return newBalance
delay(0.3) delay(3)
} while (true) }
} }
function getEthTokenBalance (address) { function getEthTokenBalance (address) {
@ -171,12 +183,12 @@ function getEthTokenBalance (address) {
} }
function waitEthTokenBalance (address, balance) { function waitEthTokenBalance (address, balance) {
do { while (true) {
const newBalance = getEthTokenBalance(address) const newBalance = getEthTokenBalance(address)
if (Math.abs(newBalance - balance) < 0.0001) if (Math.abs(newBalance - balance) < 0.0001)
return newBalance return newBalance
delay(0.3) delay(3)
} while (true) }
} }
function apiRequest (n, url, suffix) { function apiRequest (n, url, suffix) {
@ -223,9 +235,10 @@ function testEthToBnc () {
return true return true
}) })
userAccounts.forEach(({ privateKey }, i) => { userAccounts.forEach((account, i) => {
exec(4, `PRIVATE_KEY=${privateKey} ./src/test-services/ethereumSend/run.sh bridge ${5 + i}`) exec(4, `PRIVATE_KEY=${account.privateKey} ./src/test-services/ethereumSend/run.sh bridge ${5 + i}`)
wait(4) wait(4)
account.ethBalance -= 5 + i
}) })
const delta = (9 + userAccounts.length) * userAccounts.length / 2 const delta = (9 + userAccounts.length) * userAccounts.length / 2
@ -250,9 +263,10 @@ function testBncToEth () {
return true return true
}) })
userAccounts.forEach(({ privateKey }, i) => { userAccounts.forEach((account , i) => {
exec(4, `PRIVATE_KEY=${privateKey} ./src/test-services/binanceSend/run.sh ${bridgeBncAddress} ${3 + i}`) exec(4, `PRIVATE_KEY=${account.privateKey} ./src/test-services/binanceSend/run.sh ${bridgeBncAddress} ${3 + i}`)
wait(4) wait(4)
account.bncBalance -= 3 + i
}) })
const delta = (5 + userAccounts.length) * userAccounts.length / 2 const delta = (5 + userAccounts.length) * userAccounts.length / 2
@ -339,9 +353,18 @@ function run () {
clean() clean()
execSync(4, `./demo/start-environment.sh`) if ($.getenv('RELOAD') !== 'true') {
execSync(4, `./demo/start-environment.sh`)
prefundEthAddresses()
saveBlockchainData()
} else {
reloadBlockchainData()
execSync(4, `./demo/start-environment.sh`)
}
prefundEthAddresses()
prefundBncAddresses() prefundBncAddresses()
initBalances() initBalances()
@ -351,8 +374,14 @@ function run () {
exec(3, `N=3 ./demo/validator-demo.sh`) exec(3, `N=3 ./demo/validator-demo.sh`)
// wait until binance account willl be generated // wait until binance account willl be generated
let log = waitLog(1, 'Generated multisig account in binance chain') waitLog(1, 'Generated multisig account in binance chain')
bridgeBncAddress = /tbnb\w+/.exec(log)[0] waitApi(1, '/info', res => {
if (res.epoch === 1) {
bridgeBncAddress = res.foreignBridgeAddress
return true
}
return false
})
// prefund binance account // prefund binance account
execSync(4, `./src/test-services/binanceSend/run.sh ${bridgeBncAddress} 100 0.1`) execSync(4, `./src/test-services/binanceSend/run.sh ${bridgeBncAddress} 100 0.1`)

View File

@ -1,3 +1,5 @@
#!/bin/bash #!/bin/bash
osascript -l JavaScript ./demo/scenarios/macos/main.jxa RELOAD=${RELOAD:=false}
RELOAD="$RELOAD" osascript -l JavaScript ./demo/scenarios/macos/main.jxa

View File

@ -21,6 +21,7 @@ start_dev_blockchain_networks() {
docker kill ganache_side > /dev/null 2>&1 || true docker kill ganache_side > /dev/null 2>&1 || true
docker network create blockchain_side > /dev/null 2>&1 || true docker network create blockchain_side > /dev/null 2>&1 || true
docker run -d --network blockchain_side --rm --name ganache_side -v "$SIDE_GANACHE_DB:/app/db" \ docker run -d --network blockchain_side --rm --name ganache_side -v "$SIDE_GANACHE_DB:/app/db" \
-p "8545:8545" \
trufflesuite/ganache-cli:latest \ trufflesuite/ganache-cli:latest \
-m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 33 -q --db /app/db -b 3 --noVMErrorsOnRPCResponse -m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 33 -q --db /app/db -b 3 --noVMErrorsOnRPCResponse

View File

@ -3,7 +3,7 @@ HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
HOME_START_BLOCK=1 HOME_START_BLOCK=1
BLOCKS_RANGE_SIZE=50 BLOCKS_RANGE_SIZE=25
SIDE_RPC_URL=http://ganache_side:8545 SIDE_RPC_URL=http://ganache_side:8545
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc

View File

@ -3,7 +3,7 @@ HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
HOME_START_BLOCK=1 HOME_START_BLOCK=1
BLOCKS_RANGE_SIZE=50 BLOCKS_RANGE_SIZE=25
SIDE_RPC_URL=http://ganache_side:8545 SIDE_RPC_URL=http://ganache_side:8545
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc

View File

@ -3,7 +3,7 @@ HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
HOME_START_BLOCK=1 HOME_START_BLOCK=1
BLOCKS_RANGE_SIZE=50 BLOCKS_RANGE_SIZE=25
SIDE_RPC_URL=http://ganache_side:8545 SIDE_RPC_URL=http://ganache_side:8545
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc