Skip to content

fix: repair E2E integration test end to end - #303

Merged
tock-ibm merged 1 commit into
hyperledger:mainfrom
cendhu:fix/e2e-integration-test
Sep 24, 2026
Merged

tock-ibm merged 1 commit into
hyperledger:mainfrom
cendhu:fix/e2e-integration-test

Conversation

@cendhu

@cendhu cendhu commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Problem

integration/test/run-e2e.sh failed at Arma bootstrap and never reached loadgen:

panic: error launching consensus, err: failed to validate bootstrap config: smartbft RequestMaxBytes must be equal or greater than BatchingConfig RequestMaxBytes

Fixing each failure surfaced the next. Eight in total.

Fixes, in the order they blocked the run

  1. networkconfig/arma_config.yaml — smartbft requestmaxbytes was 10240, batching RequestMaxBytes is 1048576. Orderer requires smartbft >= batching; all four roles panicked.
  2. Makefile — $(BUILD_DIR)/% had no prerequisites, so make treated stale binaries as up to date. bin/configtxgen was months old and linked fabric-x-common v0.2.1, which does not encode the arma BlockValidation signature policy → invalid block validation policy: policy type is not signature. Added FORCE so go install decides freshness.
  3. networkconfig/configtx.yaml — added SnapshotEndorsement and CheckpointEndorsement. The committer sidecar resolves both from the config block and dropped block 0 without them: policy not found in channel config: /Channel/Application/SnapshotEndorsement.
  4. loadgen.yaml — load-profile.key.size and transaction.read-write-count.const do not match the loadgen schema ('load-profile.transaction.read-write-count' expected type 'uint32', got unconvertible type 'map[string]interface {}'). Use transaction.key-size and a scalar read-write-count.
  5. explorer entrypoint — the image start.sh ignores CMD args and reads EXPLORER_CONFIG_PATH, so the mounted config was never used: Error: open /home/explorer/config.yaml: no such file or directory. Set the env var instead of passing --config.
  6. explorer TLS — the sidecar deliver service requires mtls, but explorer.yaml used mode: none → error reading server preface: EOF, 0 blocks ingested. Point it at the same client credentials loadgen uses and mount the artifacts dir.
  7. clean-docker.sh — explorer and postgres were never removed, leaking containers and port 8080 between runs.
  8. refs.conf — bump explorer to v0.1.2.

Verification

Fresh build (build-e2e.sh --fabric-x-local-path=$PWD) then full unattended run:

SUCCESS: E2E test passed (10002 transactions committed)
SUCCESS: Explorer has ingested 10101 transactions (>= 10002)

Exit status 0. Cleanup verified: no containers, no test_e2e network, no leftover processes.

@cendhu
cendhu requested a review from tock-ibm September 17, 2026 15:00
The E2E test failed at Arma bootstrap and never reached loadgen. Fixing each
failure in sequence surfaced seven more; the run now completes with exit 0
(10002 TXs committed, explorer ingested 10101).

Fixes, in the order they blocked the run:

- arma_config.yaml: smartbft requestmaxbytes was 10240 while batching
  RequestMaxBytes is 1048576. The orderer rejects bootstrap unless smartbft
  >= batching, so all four roles panicked.
- Makefile: `$(BUILD_DIR)/%` had no prerequisites, so make treated stale
  binaries as up to date. bin/configtxgen was months old and linked
  fabric-x-common v0.2.1, which does not encode the arma BlockValidation
  signature policy; arma then rejected the config block. Added FORCE so
  `go install` decides freshness.
- configtx.yaml: added SnapshotEndorsement and CheckpointEndorsement
  application policies. The committer sidecar resolves both from the config
  block and dropped block 0 without them.
- loadgen.yaml: `load-profile.key.size` and `transaction.read-write-count.const`
  do not match the loadgen schema; use `transaction.key-size` and a scalar
  `read-write-count`.
- explorer: the image entrypoint ignores CMD args and reads
  EXPLORER_CONFIG_PATH, so the mounted config was never used. Set the env var
  instead of passing --config.
- explorer: the sidecar deliver service requires mtls, but explorer.yaml used
  mode none, which failed with "error reading server preface: EOF". Point it
  at the same client credentials loadgen uses and mount the artifacts dir.
- clean-docker.sh: explorer and postgres were never removed, leaking
  containers and port 8080 between runs.
- refs.conf: bump explorer to v0.1.2.
-e
Signed-off-by: Senthilnathan <cendhu@gmail.com>
@cendhu
cendhu force-pushed the fix/e2e-integration-test branch from 846faef to c3ab13a Compare September 23, 2026 13:56
@tock-ibm
tock-ibm merged commit e343a4d into hyperledger:main Sep 24, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants