Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
11321ed
Refactor tx_pool_latency_analysis configuration to include QPS parame…
tosettil-polimi Jun 11, 2025
1eaed2f
change task config
mriccobene Jun 11, 2025
31355d6
Enhance transaction latency analysis by implementing synchronized arr…
tosettil-polimi Jun 11, 2025
578e7c7
Merge branches 'feat/txpool-latency-qps' and 'feat/txpool-latency-qps…
tosettil-polimi Jun 11, 2025
c7fd1cf
Revert "Enhance transaction latency analysis by implementing synchron…
tosettil-polimi Jun 11, 2025
aaf38a7
refactoring, check p2p message vs tx
mriccobene Jun 11, 2025
105b3bd
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 11, 2025
7e3a25d
initial refactoring (to complete)
mriccobene Jun 11, 2025
68a79da
Refactor tx_pool_latency_analysis task configuration to use QPS and a…
tosettil-polimi Jun 11, 2025
2e66ef5
Merge branch 'feat/txpool-latency-qps' of https://github.com/noku-tea…
tosettil-polimi Jun 11, 2025
7c9edb4
solve concurrency problem
mriccobene Jun 11, 2025
80b125c
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 11, 2025
80e805c
small fixes
mriccobene Jun 11, 2025
ec057e1
check tx index range
mriccobene Jun 11, 2025
24abc5d
fix(get_task_result_api)
tosettil-polimi Jun 11, 2025
f467aec
fix(server)
tosettil-polimi Jun 11, 2025
4797f11
fix(execution-spec-tests-execute.yaml)
tosettil-polimi Jun 11, 2025
76c21e9
fix(build-release)
tosettil-polimi Jun 11, 2025
fe2616f
fix(build-release)
tosettil-polimi Jun 11, 2025
f5ecd52
feat(res/execution-spec-tests-styles.css)
tosettil-polimi Jun 11, 2025
3f92c91
feat(test_run)
tosettil-polimi Jun 11, 2025
4f13d9c
refactor(build-master.yml): update Docker repository and improve wiki…
tosettil-polimi Jun 11, 2025
fba8c06
fix p2p event loop error condition
mriccobene Jun 11, 2025
189aca8
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 11, 2025
fc7b70b
fix(run_shell)
tosettil-polimi Jun 11, 2025
56958ab
Merge branch 'feat/txpool-latency-qps' of https://github.com/noku-tea…
tosettil-polimi Jun 11, 2025
7017704
lint
tosettil-polimi Jun 11, 2025
56090ec
lint(server)
tosettil-polimi Jun 11, 2025
32ac9fd
lint
tosettil-polimi Jun 11, 2025
d9be867
lint
tosettil-polimi Jun 11, 2025
bfc0dfe
Update tx-pool-check-short.yaml: modify transaction pool analysis tas…
tosettil-polimi Jun 12, 2025
a687a3b
replace QPS with TPS
mriccobene Jun 12, 2025
bfb27b4
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 12, 2025
0548169
fix loop boundary
mriccobene Jun 12, 2025
6a9550f
Update transaction generation logic to extend test duration and impro…
tosettil-polimi Jun 12, 2025
4615a7c
Reduce transaction duration in tx-pool-check-short.yaml from 30 secon…
tosettil-polimi Jun 12, 2025
9c60e2b
Swap names and titles of transaction pool analysis tasks in tx-pool-c…
tosettil-polimi Jun 12, 2025
5b62916
complete throughput task
mriccobene Jun 12, 2025
afbac70
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 12, 2025
242bdee
Rename transaction variable in tx pool throughput analysis task for c…
tosettil-polimi Jun 12, 2025
d107976
Merge branch 'feat/txpool-latency-qps' of https://github.com/noku-tea…
tosettil-polimi Jun 12, 2025
e3e1f90
rename mean_throughput
mriccobene Jun 12, 2025
906f6d4
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 12, 2025
0d4cc69
Add duplicated p2p event logging and counting in tx pool latency anal…
tosettil-polimi Jun 12, 2025
c367316
Merge branch 'feat/txpool-latency-qps' of https://github.com/noku-tea…
tosettil-polimi Jun 12, 2025
bcb9b78
Implement coordinated omission events counting in tx pool latency ana…
tosettil-polimi Jun 12, 2025
fa627bb
Remove logging of duplicated p2p events in tx pool latency analysis
tosettil-polimi Jun 12, 2025
ba0435d
Add TODO for timeout implementation in duplicated p2p event handling …
tosettil-polimi Jun 12, 2025
0b9308c
Implement coordinated omission events logging and output in tx pool t…
tosettil-polimi Jun 12, 2025
56a5cd2
Swap names and titles of latency and throughput analysis tasks in tx-…
tosettil-polimi Jun 12, 2025
04b7e0a
fix
mriccobene Jun 12, 2025
77f0ff4
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 12, 2025
7e8d27f
fix tx gen and parsing
mriccobene Jun 12, 2025
fa51f57
move exit check
mriccobene Jun 12, 2025
7198f56
Swap names and titles of throughput and latency analysis tasks in tx-…
tosettil-polimi Jun 12, 2025
821938b
add logs; more uniform code
mriccobene Jun 12, 2025
4c26372
Merge remote-tracking branch 'origin/feat/txpool-latency-qps' into fe…
mriccobene Jun 12, 2025
cda4c6a
fix termination condition
mriccobene Jun 12, 2025
1a14769
Enhance readUntil function to support context for timeout handling an…
tosettil-polimi Jun 13, 2025
cbe8f5d
Update error message in readUntil function to use a simplified format…
tosettil-polimi Jun 13, 2025
e26bacc
Refactor tx-pool-check.yaml to update transaction pool latency and th…
tosettil-polimi Jun 13, 2025
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
363 changes: 173 additions & 190 deletions .github/workflows/build-master.yml

Large diffs are not rendered by default.

225 changes: 113 additions & 112 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

name: Build Release

on:
Expand All @@ -18,133 +19,133 @@ jobs:
ref: ${{ github.sha }}
release: "v${{ inputs.version }}"
docker: true
docker_repository: "ethpandaops/assertoor"
docker_repository: "noku-team/assertoor"
docker_tag_prefix: "v${{ inputs.version }}"
additional_tags: "['v${{ inputs.version }}','latest']"
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}

create_release:
name: Create Release
needs: [build_binaries]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 100
ref: ${{ github.sha }}
- name: "Generate release changelog"
id: changelog
run: |
git fetch --tags
prev_tag=$(git tag --sort=-version:refname | grep -e "^v[0-9.]*$" | head -n 1)
echo "previous release: $prev_tag"
if [ "$prev_tag" ]; then
changelog=$(git log --oneline --no-decorate $prev_tag..HEAD)
else
changelog=$(git log --oneline --no-decorate)
fi
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo " - ${changelog//$'\n'/$'\n' - }" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 100
ref: ${{ github.sha }}
- name: "Generate release changelog"
id: changelog
run: |
git fetch --tags
prev_tag=$(git tag --sort=-version:refname | grep -e "^v[0-9.]*$" | head -n 1)
echo "previous release: $prev_tag"
if [ "$prev_tag" ]; then
changelog=$(git log --oneline --no-decorate $prev_tag..HEAD)
else
changelog=$(git log --oneline --no-decorate)
fi
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo " - ${changelog//$'\n'/$'\n' - }" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

# download build artifacts
- name: "Download build artifacts"
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0

# create draft release
- name: Create latest release
uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4
id: create_release
with:
draft: true
prerelease: false
release_name: "v${{ inputs.version }}"
tag_name: "v${{ inputs.version }}"
body: |
### Changes
${{ steps.changelog.outputs.changelog }}

### Release Artifacts
Please read through the [wiki](https://github.com/ethpandaops/assertoor/wiki) for setup & configuration instructions.
| Release File | Description |
| ------------- | ------------- |
| [assertoor_${{ inputs.version }}_windows_amd64.zip](https://github.com/ethpandaops/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_windows_amd64.zip) | assertoor executables for windows/amd64 |
| [assertoor_${{ inputs.version }}_linux_amd64.tar.gz](https://github.com/ethpandaops/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_linux_amd64.tar.gz) | assertoor executables for linux/amd64 |
| [assertoor_${{ inputs.version }}_linux_arm64.tar.gz](https://github.com/ethpandaops/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_linux_arm64.tar.gz) | assertoor executables for linux/arm64 |
| [assertoor_${{ inputs.version }}_darwin_amd64.tar.gz](https://github.com/ethpandaops/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_darwin_amd64.tar.gz) | assertoor executable for macos/amd64 |
| [assertoor_${{ inputs.version }}_darwin_arm64.tar.gz](https://github.com/ethpandaops/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_darwin_arm64.tar.gz) | assertoor executable for macos/arm64 |
env:
GITHUB_TOKEN: ${{ github.token }}

# generate & upload release artifacts
- name: "Generate release package: assertoor_${{ inputs.version }}_windows_amd64.zip"
run: |
cd assertoor_windows_amd64
zip -r -q ../assertoor_${{ inputs.version }}_windows_amd64.zip .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_windows_amd64.zip"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_windows_amd64.zip
asset_name: assertoor_${{ inputs.version }}_windows_amd64.zip
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}

- name: "Generate release package: assertoor_${{ inputs.version }}_linux_amd64.tar.gz"
run: |
cd assertoor_linux_amd64
tar -czf ../assertoor_${{ inputs.version }}_linux_amd64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_linux_amd64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_linux_amd64.tar.gz
asset_name: assertoor_${{ inputs.version }}_linux_amd64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}
# create draft release
- name: Create latest release
uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4
id: create_release
with:
draft: true
prerelease: false
release_name: "v${{ inputs.version }}"
tag_name: "v${{ inputs.version }}"
body: |
### Changes
${{ steps.changelog.outputs.changelog }}

- name: "Generate release package: assertoor_${{ inputs.version }}_linux_arm64.tar.gz"
run: |
cd assertoor_linux_arm64
tar -czf ../assertoor_${{ inputs.version }}_linux_arm64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_linux_arm64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_linux_arm64.tar.gz
asset_name: assertoor_${{ inputs.version }}_linux_arm64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}
### Release Artifacts
Please read through the [wiki](https://github.com/noku-team/assertoor/wiki) for setup & configuration instructions.
| Release File | Description |
| ------------- | ------------- |
| [assertoor_${{ inputs.version }}_windows_amd64.zip](https://github.com/noku-team/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_windows_amd64.zip) | assertoor executables for windows/amd64 |
| [assertoor_${{ inputs.version }}_linux_amd64.tar.gz](https://github.com/noku-team/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_linux_amd64.tar.gz) | assertoor executables for linux/amd64 |
| [assertoor_${{ inputs.version }}_linux_arm64.tar.gz](https://github.com/noku-team/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_linux_arm64.tar.gz) | assertoor executables for linux/arm64 |
| [assertoor_${{ inputs.version }}_darwin_amd64.tar.gz](https://github.com/noku-team/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_darwin_amd64.tar.gz) | assertoor executable for macos/amd64 |
| [assertoor_${{ inputs.version }}_darwin_arm64.tar.gz](https://github.com/noku-team/assertoor/releases/download/v${{ inputs.version }}/assertoor_${{ inputs.version }}_darwin_arm64.tar.gz) | assertoor executable for macos/arm64 |
env:
GITHUB_TOKEN: ${{ github.token }}

- name: "Generate release package: assertoor_${{ inputs.version }}_darwin_amd64.tar.gz"
run: |
cd assertoor_darwin_amd64
tar -czf ../assertoor_${{ inputs.version }}_darwin_amd64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_darwin_amd64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_darwin_amd64.tar.gz
asset_name: assertoor_${{ inputs.version }}_darwin_amd64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}
# generate & upload release artifacts
- name: "Generate release package: assertoor_${{ inputs.version }}_windows_amd64.zip"
run: |
cd assertoor_windows_amd64
zip -r -q ../assertoor_${{ inputs.version }}_windows_amd64.zip .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_windows_amd64.zip"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_windows_amd64.zip
asset_name: assertoor_${{ inputs.version }}_windows_amd64.zip
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}

- name: "Generate release package: assertoor_${{ inputs.version }}_linux_amd64.tar.gz"
run: |
cd assertoor_linux_amd64
tar -czf ../assertoor_${{ inputs.version }}_linux_amd64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_linux_amd64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_linux_amd64.tar.gz
asset_name: assertoor_${{ inputs.version }}_linux_amd64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}

- name: "Generate release package: assertoor_${{ inputs.version }}_linux_arm64.tar.gz"
run: |
cd assertoor_linux_arm64
tar -czf ../assertoor_${{ inputs.version }}_linux_arm64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_linux_arm64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_linux_arm64.tar.gz
asset_name: assertoor_${{ inputs.version }}_linux_arm64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}

- name: "Generate release package: assertoor_${{ inputs.version }}_darwin_amd64.tar.gz"
run: |
cd assertoor_darwin_amd64
tar -czf ../assertoor_${{ inputs.version }}_darwin_amd64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_darwin_amd64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_darwin_amd64.tar.gz
asset_name: assertoor_${{ inputs.version }}_darwin_amd64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}

- name: "Generate release package: assertoor_${{ inputs.version }}_darwin_arm64.tar.gz"
run: |
cd assertoor_darwin_arm64
tar -czf ../assertoor_${{ inputs.version }}_darwin_arm64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_darwin_arm64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_darwin_arm64.tar.gz
asset_name: assertoor_${{ inputs.version }}_darwin_arm64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}
- name: "Generate release package: assertoor_${{ inputs.version }}_darwin_arm64.tar.gz"
run: |
cd assertoor_darwin_arm64
tar -czf ../assertoor_${{ inputs.version }}_darwin_arm64.tar.gz .
- name: "Upload release artifact: assertoor_${{ inputs.version }}_darwin_arm64.tar.gz"
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./assertoor_${{ inputs.version }}_darwin_arm64.tar.gz
asset_name: assertoor_${{ inputs.version }}_darwin_arm64.tar.gz
asset_content_type: application/octet-stream
env:
GITHUB_TOKEN: ${{ github.token }}
2 changes: 1 addition & 1 deletion pkg/coordinator/tasks/run_shell/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ func (t *Task) storeTaskResults(summaryFile *resultFile, resultDir string) {
TaskID: uint64(t.ctx.Index),
Type: "result",
Index: fileIdx,
Name: file.Name(),
Name: fmt.Sprintf("%v%v", prefix, file.Name()),
Size: uint64(len(data)),
Data: data,
}); err3 != nil {
Expand Down
33 changes: 18 additions & 15 deletions pkg/coordinator/tasks/tx_pool_latency_analysis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,36 +9,39 @@ The `tx_pool_latency_analysis` task evaluates latency of transaction processing
- **`privateKey`**:
The private key of the account to use for sending transactions.

- **`txCount`**:
The total number of transactions to send.
- **`tps`**:
The total number of transactions to send in one second.

- **`duration_s`**:
The test duration (the number of transactions to send is calculated as `tps * duration_s`).

- **`measureInterval`**:
The interval at which the script logs progress (e.g., every 100 transactions).

- **`highLatency`**:
The expected average transaction latency in milliseconds.

- **`failOnHighLatency`**:
Whether the task should fail if the measured latency exceeds `highLatency`.


### Outputs

- **`tx_count`**:
The total number of transactions sent.

- **`avg_latency_ms`**:
The average latency of the transactions in milliseconds.
- **`min_latency_mus`**:
The min latency of the transactions in microseconds.

- **`max_latency_mus`**:
The max latency of the transactions in microseconds.

- **`tx_pool_latency_hdr_plot`**:
The HDR plot of the transaction pool latency.

### Defaults

```yaml
- name: tx_pool_latency_analysis
config:
txCount: 15000
tps: 100
duration_s: 10
measureInterval: 1000
highLatency: 5000
failOnHighLatency: false
configVars:
privateKey: "tx_pool_latency_analysis"
privateKey: "walletPrivkey"
```


10 changes: 4 additions & 6 deletions pkg/coordinator/tasks/tx_pool_latency_analysis/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,17 @@ package txpoollatencyanalysis
type Config struct {
PrivateKey string `yaml:"privateKey" json:"privateKey"`

TxCount int `yaml:"txCount" json:"txCount"`
TPS int `yaml:"tps" json:"tps"`
Duration_s int `yaml:"duration_s" json:"duration_s"`
MeasureInterval int `yaml:"measureInterval" json:"measureInterval"`
HighLatency int64 `yaml:"highLatency" json:"highLatency"`
FailOnHighLatency bool `yaml:"failOnHighLatency" json:"failOnHighLatency"`
SecondsBeforeRunning int64 `yaml:"secondsBeforeRunning" json:"secondsBeforeRunning"`
}

func DefaultConfig() Config {
return Config{
TxCount: 1000,
TPS: 100,
Duration_s: 60,
MeasureInterval: 100,
HighLatency: 5000, // in microseconds
FailOnHighLatency: true,
SecondsBeforeRunning: 0,
}
}
Expand Down
Loading
Loading