Skip to content

Commit 2c42547

Browse files
committed
added storage specification
1 parent fe30496 commit 2c42547

File tree

1 file changed

+55
-2
lines changed

1 file changed

+55
-2
lines changed

Scripts/start-distributed.sh

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
# - POSTGRES_DB: Database name (default: fuzzilli_master)
1717
# - POSTGRES_USER: Database user (default: fuzzilli)
1818
# - POSTGRES_PASSWORD: PostgreSQL password (default: fuzzilli123)
19+
# - POSTGRES_DATA_PATH: Custom path for PostgreSQL data directory on host (e.g., /vdc/postgres-data)
20+
# If set, uses bind mount instead of Docker named volume
1921
# - SYNC_INTERVAL: Sync interval in seconds (default: 60)
2022
# - TIMEOUT: Execution timeout in ms (default: 2500)
2123
# - MIN_MUTATIONS_PER_SAMPLE: Minimum mutations per sample (default: 25)
@@ -48,6 +50,7 @@ if [ $# -eq 0 ]; then
4850
echo " POSTGRES_DB - Database name (default: fuzzilli_master)"
4951
echo " POSTGRES_USER - Database user (default: fuzzilli)"
5052
echo " POSTGRES_PASSWORD - PostgreSQL password (default: fuzzilli123)"
53+
echo " POSTGRES_DATA_PATH - Custom path for PostgreSQL data (e.g., /vdc/postgres-data)"
5154
exit 1
5255
fi
5356

@@ -98,6 +101,7 @@ POSTGRES_PORT=${POSTGRES_PORT:-5432}
98101
POSTGRES_DB=${POSTGRES_DB:-fuzzilli_master}
99102
POSTGRES_USER=${POSTGRES_USER:-fuzzilli}
100103
POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-fuzzilli123}
104+
POSTGRES_DATA_PATH=${POSTGRES_DATA_PATH:-}
101105
V8_BUILD_PATH=${V8_BUILD_PATH:-/home/tropic/vrig/fuzzilli-vrig-proj/fuzzbuild}
102106
TIMEOUT=${TIMEOUT:-2500}
103107
MIN_MUTATIONS_PER_SAMPLE=${MIN_MUTATIONS_PER_SAMPLE:-25}
@@ -109,6 +113,9 @@ if [ -n "$POSTGRES_HOST" ]; then
109113
USE_REMOTE_DB=true
110114
fi
111115

116+
# Get hostname for fuzzer instance naming
117+
HOSTNAME=$(hostname -s 2>/dev/null || hostname 2>/dev/null || echo "unknown")
118+
112119
echo "=========================================="
113120
echo "Starting Distributed Fuzzilli"
114121
echo "=========================================="
@@ -131,6 +138,8 @@ echo " V8 Build Path: ${V8_BUILD_PATH}"
131138
echo " Timeout: ${TIMEOUT}ms"
132139
if [ "$USE_REMOTE_DB" = true ]; then
133140
echo " Database: ${POSTGRES_USER}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
141+
elif [ -n "$POSTGRES_DATA_PATH" ]; then
142+
echo " PostgreSQL Data Path: ${POSTGRES_DATA_PATH}"
134143
fi
135144
echo ""
136145

@@ -160,7 +169,7 @@ for i in $(seq 1 $NUM_WORKERS); do
160169
container_name: fuzzer-worker-${i}
161170
environment:
162171
- POSTGRES_URL=${POSTGRES_URL}
163-
- FUZZER_INSTANCE_NAME=fuzzer-${i}
172+
- FUZZER_INSTANCE_NAME=fuzzer-${HOSTNAME}-${i}
164173
- TIMEOUT=${TIMEOUT}
165174
- MIN_MUTATIONS_PER_SAMPLE=${MIN_MUTATIONS_PER_SAMPLE}
166175
- DEBUG_LOGGING=${DEBUG_LOGGING}
@@ -219,9 +228,53 @@ for i in $(seq 1 $NUM_WORKERS); do
219228
EOF
220229
done
221230

231+
# Generate master compose file if using custom data path
232+
if [ "$USE_REMOTE_DB" = false ] && [ -n "$POSTGRES_DATA_PATH" ]; then
233+
echo "Generating master compose file with custom data path..."
234+
# Create directory if it doesn't exist
235+
mkdir -p "${POSTGRES_DATA_PATH}"
236+
237+
# Generate master compose file with bind mount
238+
cat > "${MASTER_COMPOSE}" <<EOF
239+
version: '3.8'
240+
241+
services:
242+
postgres-master:
243+
image: postgres:15-alpine
244+
container_name: fuzzilli-postgres-master
245+
environment:
246+
POSTGRES_DB: ${POSTGRES_DB}
247+
POSTGRES_USER: ${POSTGRES_USER}
248+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
249+
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
250+
ports:
251+
- "5432:5432"
252+
volumes:
253+
- ${POSTGRES_DATA_PATH}:/var/lib/postgresql/data
254+
- ${PROJECT_ROOT}/postgres-init.sql:/docker-entrypoint-initdb.d/init.sql
255+
healthcheck:
256+
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
257+
interval: 10s
258+
timeout: 5s
259+
retries: 5
260+
restart: unless-stopped
261+
networks:
262+
- fuzzing-network
263+
264+
networks:
265+
fuzzing-network:
266+
driver: bridge
267+
268+
EOF
269+
fi
270+
222271
echo "Generated docker-compose files:"
223272
if [ "$USE_REMOTE_DB" = false ]; then
224-
echo " Master: ${MASTER_COMPOSE}"
273+
if [ -n "$POSTGRES_DATA_PATH" ]; then
274+
echo " Master: ${MASTER_COMPOSE} (generated with custom data path: ${POSTGRES_DATA_PATH})"
275+
else
276+
echo " Master: ${MASTER_COMPOSE}"
277+
fi
225278
fi
226279
echo " Workers: ${WORKER_COMPOSE}"
227280
echo ""

0 commit comments

Comments
 (0)