Skip to content

Commit 07ed097

Browse files
committed
fix: test flakiness for rln prover test
1 parent 69bdb38 commit 07ed097

File tree

2 files changed

+104
-16
lines changed

2 files changed

+104
-16
lines changed

β€Žbuild-rln-enabled-sequencer.shβ€Ž

Lines changed: 102 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,54 @@ echo -e " Custom Besu: ${CUSTOM_BESU_DIR}"
2626
BESU_PACKAGE_TAG="beta-v2.1-rc16.2-20250521134911-f6cb0f2"
2727
BESU_BASE_IMAGE="consensys/linea-besu-package:${BESU_PACKAGE_TAG}"
2828

29+
# Publish options (can be overridden by flags or env)
30+
PUSH_IMAGES=${PUSH_IMAGES:-false}
31+
REGISTRY=${REGISTRY:-}
32+
NAMESPACE=${NAMESPACE:-}
33+
BESU_IMAGE_NAME=${BESU_IMAGE_NAME:-linea-besu-minimal-rln}
34+
RLN_PROVER_IMAGE_NAME=${RLN_PROVER_IMAGE_NAME:-status-rln-prover}
35+
IMAGE_TAG_SUFFIX=${IMAGE_TAG_SUFFIX:-}
36+
37+
print_usage() {
38+
cat << USAGE
39+
Usage: $(basename "$0") [options]
40+
41+
Options:
42+
--push Push images to a registry after build (default: ${PUSH_IMAGES})
43+
--registry <host> Registry host (e.g. ghcr.io, docker.io)
44+
--namespace <ns> Namespace/org (e.g. status-im)
45+
--besu-name <name> Besu image repository name (default: ${BESU_IMAGE_NAME})
46+
--prover-name <name> RLN prover image repository name (default: ${RLN_PROVER_IMAGE_NAME})
47+
--tag-suffix <suffix> Optional tag suffix to append after timestamp (e.g. -dev)
48+
-h, --help Show this help
49+
50+
Environment vars:
51+
PUSH_IMAGES, REGISTRY, NAMESPACE, BESU_IMAGE_NAME, RLN_PROVER_IMAGE_NAME, IMAGE_TAG_SUFFIX
52+
USAGE
53+
}
54+
55+
# Simple args parser
56+
while [[ $# -gt 0 ]]; do
57+
case "$1" in
58+
--push)
59+
PUSH_IMAGES=true; shift ;;
60+
--registry)
61+
REGISTRY="$2"; shift 2 ;;
62+
--namespace)
63+
NAMESPACE="$2"; shift 2 ;;
64+
--besu-name)
65+
BESU_IMAGE_NAME="$2"; shift 2 ;;
66+
--prover-name)
67+
RLN_PROVER_IMAGE_NAME="$2"; shift 2 ;;
68+
--tag-suffix)
69+
IMAGE_TAG_SUFFIX="$2"; shift 2 ;;
70+
-h|--help)
71+
print_usage; exit 0 ;;
72+
*)
73+
echo -e "${YELLOW}Unknown option: $1${NC}"; print_usage; exit 1 ;;
74+
esac
75+
done
76+
2977
echo -e "${BLUE}πŸ¦€ Building RLN Bridge Rust Library for Linux...${NC}"
3078
cd "${LINEA_SEQUENCER_DIR}/sequencer/src/main/rust/rln_bridge"
3179

@@ -202,7 +250,8 @@ rm -f extract-deps.sh
202250

203251
# Build the minimal custom image
204252
TIMESTAMP=$(date +%Y%m%d%H%M%S)
205-
BESU_IMAGE_TAG="linea-besu-minimal-rln:${TIMESTAMP}"
253+
TAG_WITH_TIME="${TIMESTAMP}${IMAGE_TAG_SUFFIX}"
254+
BESU_IMAGE_TAG="${BESU_IMAGE_NAME}:${TAG_WITH_TIME}"
206255

207256
echo -e "${YELLOW}πŸ”¨ Building Docker image...${NC}"
208257
docker build --platform linux/amd64 -t "$BESU_IMAGE_TAG" .
@@ -211,25 +260,64 @@ echo -e "${GREEN}βœ… Minimal custom Besu image built: $BESU_IMAGE_TAG${NC}"
211260

212261
echo -e "${BLUE}🐳 Building RLN Prover Docker image...${NC}"
213262
cd "$STATUS_RLN_PROVER_DIR"
214-
RLN_PROVER_TAG="status-rln-prover:${TIMESTAMP}"
263+
RLN_PROVER_TAG="${RLN_PROVER_IMAGE_NAME}:${TAG_WITH_TIME}"
215264
docker build --platform linux/amd64 -t "$RLN_PROVER_TAG" .
216265

217266
echo -e "${GREEN}βœ… RLN Prover image built: $RLN_PROVER_TAG${NC}"
218267

268+
###############################################
269+
# Optional: Push images to a registry
270+
###############################################
271+
272+
BESU_IMAGE_REMOTE="$BESU_IMAGE_TAG"
273+
RLN_PROVER_IMAGE_REMOTE="$RLN_PROVER_TAG"
274+
275+
if [[ -n "$REGISTRY" || -n "$NAMESPACE" ]]; then
276+
BESU_IMAGE_REMOTE="${REGISTRY:+${REGISTRY}/}${NAMESPACE:+${NAMESPACE}/}${BESU_IMAGE_NAME}:${TAG_WITH_TIME}"
277+
RLN_PROVER_IMAGE_REMOTE="${REGISTRY:+${REGISTRY}/}${NAMESPACE:+${NAMESPACE}/}${RLN_PROVER_IMAGE_NAME}:${TAG_WITH_TIME}"
278+
fi
279+
280+
if [[ "$PUSH_IMAGES" == "true" ]]; then
281+
echo -e "${BLUE}πŸ“€ Pushing images to registry...${NC}"
282+
echo -e " Besu: ${BESU_IMAGE_REMOTE}"
283+
echo -e " RLN Prover: ${RLN_PROVER_IMAGE_REMOTE}"
284+
docker tag "$BESU_IMAGE_TAG" "$BESU_IMAGE_REMOTE"
285+
docker push "$BESU_IMAGE_REMOTE"
286+
docker tag "$RLN_PROVER_TAG" "$RLN_PROVER_IMAGE_REMOTE"
287+
docker push "$RLN_PROVER_IMAGE_REMOTE"
288+
echo -e "${GREEN}βœ… Images pushed successfully${NC}"
289+
fi
290+
219291
echo -e "${BLUE}πŸ“ Updating Docker Compose...${NC}"
220292
COMPOSE_FILE="${SCRIPT_DIR}/docker/compose-spec-l2-services-rln.yml"
221293
if [[ -f "$COMPOSE_FILE" ]]; then
222294
# Create backup
223295
cp "$COMPOSE_FILE" "${COMPOSE_FILE}.backup.$(date +%Y%m%d%H%M%S)"
224-
225-
# Update only the sequencer and l2-node-besu images
226-
sed -i.tmp "s|image: linea-besu.*:.*|image: ${BESU_IMAGE_TAG}|g" "$COMPOSE_FILE"
227-
sed -i.tmp "s|image: status-rln-prover:.*|image: ${RLN_PROVER_TAG}|g" "$COMPOSE_FILE"
228-
rm -f "${COMPOSE_FILE}.tmp"
229-
296+
297+
# Update image lines for specific services only
298+
awk -v besu_img="$BESU_IMAGE_REMOTE" -v rln_img="$RLN_PROVER_IMAGE_REMOTE" '
299+
/^[[:space:]]*container_name:[[:space:]]*sequencer$/ { tgt = "besu" }
300+
/^[[:space:]]*container_name:[[:space:]]*l2-node-besu$/ { tgt = "besu" }
301+
/^[[:space:]]*container_name:[[:space:]]*rln-prover$/ { tgt = "rln" }
302+
/^[[:space:]]*container_name:[[:space:]]*karma-service$/ { tgt = "rln" }
303+
{
304+
if (tgt != "" && $0 ~ /^[[:space:]]*image:[[:space:]]*/) {
305+
match($0, /^[[:space:]]*/); lead = substr($0, 1, RLENGTH);
306+
if (tgt == "besu") {
307+
print lead "image: " besu_img;
308+
} else {
309+
print lead "image: " rln_img;
310+
}
311+
tgt = "";
312+
next;
313+
}
314+
print $0;
315+
}
316+
' "$COMPOSE_FILE" > "${COMPOSE_FILE}.tmp" && mv "${COMPOSE_FILE}.tmp" "$COMPOSE_FILE"
317+
230318
echo -e "${GREEN}βœ… Updated Docker Compose with minimal images:${NC}"
231-
echo -e " Besu: $BESU_IMAGE_TAG"
232-
echo -e " RLN Prover: $RLN_PROVER_TAG"
319+
echo -e " sequencer, l2-node-besu -> ${BESU_IMAGE_REMOTE}"
320+
echo -e " rln-prover, karma-service -> ${RLN_PROVER_IMAGE_REMOTE}"
233321
fi
234322

235323
# Clean up build directory
@@ -240,14 +328,14 @@ echo -e "${GREEN}πŸŽ‰ Minimal Build Complete!${NC}"
240328
echo -e "${BLUE}πŸ“‹ Built Components:${NC}"
241329
echo -e " Custom Sequencer JAR: $(basename "$SEQUENCER_JAR")"
242330
echo -e " RLN Library: librln_bridge.so (Linux x86-64)"
243-
echo -e " Minimal Besu Image: $BESU_IMAGE_TAG"
244-
echo -e " RLN Prover Image: $RLN_PROVER_TAG"
331+
echo -e " Minimal Besu Image: $BESU_IMAGE_REMOTE"
332+
echo -e " RLN Prover Image: $RLN_PROVER_IMAGE_REMOTE"
245333
echo
246334
echo -e "${YELLOW}πŸš€ Next Steps:${NC}"
247335
echo -e " 1. Run: ${GREEN}make start-env-with-rln${NC}"
248336
echo -e " 2. Test gasless transactions"
249337
echo -e " 3. Check logs: ${GREEN}docker logs sequencer${NC}"
250338
echo
251339
echo -e "${BLUE}πŸ”§ Environment Variables:${NC}"
252-
echo -e " export BESU_IMAGE_TAG=${BESU_IMAGE_TAG}"
253-
echo -e " export RLN_PROVER_IMAGE_TAG=${RLN_PROVER_TAG}"
340+
echo -e " export BESU_IMAGE_REF=${BESU_IMAGE_REMOTE}"
341+
echo -e " export RLN_PROVER_IMAGE_REF=${RLN_PROVER_IMAGE_REMOTE}"

β€Žrln-prover/prover/src/proof_service_tests.rsβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ mod tests {
3232
const TX_HASH_1: [u8; 32] = [0x011; 32];
3333
const TX_HASH_1_2: [u8; 32] = [0x12; 32];
3434

35-
// Set to 10 seconds as 5 seconds can cause failures on Mac M1 machines.
36-
const PROOF_VERIFY_TEST_TIMEOUT: u64 = 10;
35+
// Increase timeout to reduce CI flakiness on slower runners.
36+
const PROOF_VERIFY_TEST_TIMEOUT: u64 = 30;
3737

3838
#[derive(thiserror::Error, Debug)]
3939
enum AppErrorExt {

0 commit comments

Comments
Β (0)