Demo modification to test multi send, allow to save and restore initial after-deployment blockchain state
This commit is contained in:
parent
98b4679080
commit
f4150a3324
|
@ -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`)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue