From f30168fa5285f4f389d4d25de3f041567126034d Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Wed, 27 Sep 2023 16:32:44 +0800 Subject: [PATCH 1/3] add full diff objects to output --- pkg/diff_dump.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/pkg/diff_dump.go b/pkg/diff_dump.go index 3b7bcc2..c02693f 100644 --- a/pkg/diff_dump.go +++ b/pkg/diff_dump.go @@ -70,16 +70,35 @@ func writeDiff(outputDir string, number int, diff *statediff.StateObject) { } defer f.Close() for _, item := range diff.IPLDs { - if _, err = f.WriteString("ipld," + item.CID + "\n"); err != nil { + s := fmt.Sprintf("ipld,%s,%x\n", + item.CID, + item.Content, + ) + if _, err = f.WriteString(s); err != nil { panic(err) } } for _, item := range diff.Nodes { - if _, err = f.WriteString("state," + item.AccountWrapper.CID + "\n"); err != nil { + s := fmt.Sprintf("state,%s,%x,%t,%v,%v,%s,%x\n", + item.AccountWrapper.CID, + item.AccountWrapper.LeafKey, + item.Removed, + item.AccountWrapper.Account.Nonce, + item.AccountWrapper.Account.Balance, + item.AccountWrapper.Account.Root, + item.AccountWrapper.Account.CodeHash, + ) + if _, err = f.WriteString(s); err != nil { panic(err) } for _, storage := range item.StorageDiff { - if _, err = f.WriteString("storage," + storage.CID + "\n"); err != nil { + s := fmt.Sprintf("storage,%s,%x,%t,%x\n", + storage.CID, + storage.LeafKey, + storage.Removed, + storage.Value, + ) + if _, err = f.WriteString(s); err != nil { panic(err) } } -- 2.45.2 From eab53b9a715cb58fdb628a0fd0aa1f663056732b Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Wed, 27 Sep 2023 16:33:04 +0800 Subject: [PATCH 2/3] clean up script --- scripts/compare-diffs.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/scripts/compare-diffs.sh b/scripts/compare-diffs.sh index 371a53e..51e116b 100755 --- a/scripts/compare-diffs.sh +++ b/scripts/compare-diffs.sh @@ -14,15 +14,13 @@ shift $((OPTIND - 1)) A=${1:-geth} B=${2:-plugeth} -if [[ -n "$output_dir" ]]; then - mkdir -p $output_dir - A_OUTPUT="$output_dir/A" - B_OUTPUT="$output_dir/B" -else - A_OUTPUT=$(mktemp -d -t A_XXXX) - B_OUTPUT=$(mktemp -d -t B_XXXX) +if [[ -z "$output_dir" ]]; then + output_dir=$(mktemp -d) fi +A_OUTPUT="$output_dir/A" +B_OUTPUT="$output_dir/B" + ./dumpdiff.$A $A_OUTPUT ./dumpdiff.$B $B_OUTPUT @@ -34,5 +32,4 @@ for file in $(ls $A_OUTPUT); do mv $tmpfile "$dir/$file" done (set -x; diff "${A_OUTPUT}/$file" "${B_OUTPUT}/$file") - echo Files match: "$PLUGIN_OUTPUT/$file" "$GETH_OUTPUT/$file" done -- 2.45.2 From a012a70220029d3225650cb8ecb471f42aabae74 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Wed, 27 Sep 2023 16:48:11 +0800 Subject: [PATCH 3/3] fix readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbbcac2..68247cd 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,6 @@ Use `scripts/compare-diffs.sh` to compare outputs of `go-ethereum/statediff` and ./scripts/compare-diffs.sh -d _var/ geth plugeth # Compare geth-statediff and the plugin using parallel iterators: - ./scripts/compare-diffs.sh -d _var/ geth plugeth + ./scripts/compare-diffs.sh -d _var/ geth plugeth-parallel A zero exit code indicates identical outputs, modulo possible duplicate nodes. -- 2.45.2