Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

GHA: extrinsic ordering, new filter to generate a summary #3631

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions .github/workflows/extrinsic-ordering-check-from-bin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ on:
inputs:
reference_url:
description: The WebSocket url of the reference node
default: wss://rpc.polkadot.io
default: wss://kusama-rpc.polkadot.io
chevdor marked this conversation as resolved.
Show resolved Hide resolved
required: true
binary_url:
description: A url to a Linux binary for the node containing the runtime to test
default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.10/polkadot
required: true
chain:
description: The name of the chain under test. Usually, you would pass a local chain
default: polkadot-local
default: kusama-local
required: true

jobs:
Expand All @@ -27,6 +27,8 @@ jobs:
REF_URL: ${{github.event.inputs.reference_url}}

steps:
- uses: actions/checkout@v2

- name: Fetch binary
run: |
echo Fetching $BIN_URL
Expand All @@ -46,17 +48,26 @@ jobs:
echo "Date: $(date)" >> output.txt
echo "Reference: $REF_URL" >> output.txt
echo "Target version: $VERSION" >> output.txt
echo "-------------------------------------------" >> output.txt
echo "Chain: $CHAIN" >> output.txt
echo "----------------------------------------------------------------------" >> output.txt

- name: Pull polkadot-js-tools image
run: docker pull jacogr/polkadot-js-tools
TriplEight marked this conversation as resolved.
Show resolved Hide resolved

- name: Compare the metadata
run: |
CMD="docker run --network host jacogr/polkadot-js-tools metadata $REF_URL ws://localhost:9944"
CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata $REF_URL ws://localhost:9944"
echo -e "Running:\n$CMD"
$CMD >> output.txt
sed -z -i 's/\n\n/\n/g' output.txt
cat output.txt | egrep -n -i ''
SUMMARY=$(./scripts/github/extrinsic-ordering-filter.sh output.txt)
echo -e $SUMMARY
echo -e $SUMMARY >> output.txt

- name: Show result
run: cat output.txt
run: |
cat output.txt

- name: Stop our local node
run: pkill polkadot
Expand Down
55 changes: 55 additions & 0 deletions scripts/github/extrinsic-ordering-filter.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/usr/bin/env bash
# This script is used in a Github Workflow. It helps filtering out what is interesting
# when comparing metadata and spot what would require a tx version bump.

# shellcheck disable=SC2002,SC2086

FILE=$1

# Higlight indexes that were deleted
function find_deletions() {
echo "\n## Deletions\n"
RES=$(cat "$FILE" | grep -n '\[\-\]' | tr -s " ")
if [ "$RES" ]; then
echo "$RES" | awk '{ printf "%s\\n", $0 }'
else
echo "n/a"
fi
}

# Highlight indexes that have been deleted
function find_index_changes() {
echo "\n## Index changes\n"
RES=$(cat "$FILE" | grep -E -n -i 'idx:\s*([0-9]+)\s*(->)\s*([0-9]+)' | tr -s " ")
if [ "$RES" ]; then
echo "$RES" | awk '{ printf "%s\\n", $0 }'
else
echo "n/a"
fi
}

# Highlight values that decreased
function find_decreases() {
echo "\n## Decreases\n"
OUT=$(cat "$FILE" | grep -E -i -o '([0-9]+)\s*(->)\s*([0-9]+)' | awk '$1 > $3 { printf "%s;", $0 }')
IFS=$';' LIST=("$OUT")
unset RES
for line in "${LIST[@]}"; do
RES="$RES\n$(cat "$FILE" | grep -E -i -n \"$line\" | tr -s " ")"
done

if [ "$RES" ]; then
echo "$RES" | awk '{ printf "%s\\n", $0 }' | sort -u -g | uniq
else
echo "n/a"
fi
}

echo "\n------------------------------ SUMMARY -------------------------------"
echo "\n⚠️ This filter is here to help spotting changes that should be reviewed carefully."
echo "\n⚠️ It catches only index changes, deletions and value decreases".

find_deletions "$FILE"
find_index_changes "$FILE"
find_decreases "$FILE"
echo "\n----------------------------------------------------------------------\n"