Skip to content

Commit 46574f9

Browse files
committed
checking relative-finalization
1 parent 51e049b commit 46574f9

File tree

2 files changed

+49
-9
lines changed

2 files changed

+49
-9
lines changed

scripts/common.sh

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function into_array() {
1414
IFS=$tmp
1515
}
1616

17-
function check_finalization {
17+
function check_finalization() {
1818
local block_to_check=$1
1919
local -n nodes=$2
2020
local -n ports=$3
@@ -30,7 +30,36 @@ function check_finalization {
3030
done
3131
}
3232

33-
function get_best_finalized {
33+
function check_relative_finalization_at_node() {
34+
local node=$1
35+
local rpc_port=$2
36+
local awaited_blocks=$3
37+
38+
local last_block=$(get_last_block $node $rpc_port)
39+
local awaited_finalized=$(($last_block+$awaited_blocks))
40+
41+
log "Last block seen at node $node was $last_block, awaiting block $awaited_finalized to be finalized"
42+
43+
wait_for_finalized_block $awaited_finalized $node $rpc_port
44+
}
45+
46+
function check_relative_finalization() {
47+
local awaited_blocks=$1
48+
local -n nodes=$2
49+
local -n ports=$3
50+
51+
log "checking finalization for $awaited_blocks block(s) in the future"
52+
53+
for i in "${!nodes[@]}"; do
54+
local node=${nodes[$i]}
55+
local rpc_port=${ports[$i]}
56+
57+
log "checking finalization at node $node (${node}:$rpc_port)"
58+
check_relative_finalization_at_node $node $rpc_port $awaited_blocks
59+
done
60+
}
61+
62+
function get_best_finalized() {
3463
local validator=$1
3564
local rpc_port=$2
3665

@@ -48,7 +77,7 @@ function wait_for_finalized_block() {
4877
done
4978
}
5079

51-
function wait_for_block {
80+
function wait_for_block() {
5281
local block=$1
5382
local validator=$2
5483
local rpc_port=$3
@@ -61,12 +90,23 @@ function wait_for_block {
6190
done
6291
}
6392

64-
function get_last_block {
93+
function retrieve_last_block() {
94+
local validator=$1
95+
local rpc_port=$2
96+
97+
docker run --rm --network container:$validator appropriate/curl:latest \
98+
-H "Content-Type: application/json" \
99+
-d '{"id":1, "jsonrpc":"2.0", "method": "chain_getBlock"}' http://127.0.0.1:$rpc_port | jq '.result.block.header.number'
100+
}
101+
102+
function get_last_block() {
65103
local validator=$1
66104
local rpc_port=$2
67105

68-
local last_block_number=$(docker run --rm --network container:$validator appropriate/curl:latest \
69-
-H "Content-Type: application/json" \
70-
-d '{"id":1, "jsonrpc":"2.0", "method": "chain_getBlock"}' http://127.0.0.1:$rpc_port | jq '.result.block.header.number')
71-
printf "%d" $last_block_number
106+
local last_block=0
107+
while [[ -z "$last_block" ]]; do
108+
last_block=$(retrieve_last_block $validator $rpc_port)
109+
sleep 1
110+
done
111+
printf "%d" $last_block
72112
}

scripts/run_consensus_network_delay.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ done
101101

102102
if [[ $CHECK_BLOCK_FINALIZATION -gt 0 ]]; then
103103
log "checking finalization"
104-
check_finalization $CHECK_BLOCK_FINALIZATION NODES NODES_PORTS
104+
check_relative_finalization $CHECK_BLOCK_FINALIZATION NODES NODES_PORTS
105105
log "finalization checked"
106106
fi
107107

0 commit comments

Comments
 (0)