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
5255fi
5356
@@ -98,6 +101,7 @@ POSTGRES_PORT=${POSTGRES_PORT:-5432}
98101POSTGRES_DB=${POSTGRES_DB:- fuzzilli_master}
99102POSTGRES_USER=${POSTGRES_USER:- fuzzilli}
100103POSTGRES_PASSWORD=${POSTGRES_PASSWORD:- fuzzilli123}
104+ POSTGRES_DATA_PATH=${POSTGRES_DATA_PATH:- }
101105V8_BUILD_PATH=${V8_BUILD_PATH:-/ home/ tropic/ vrig/ fuzzilli-vrig-proj/ fuzzbuild}
102106TIMEOUT=${TIMEOUT:- 2500}
103107MIN_MUTATIONS_PER_SAMPLE=${MIN_MUTATIONS_PER_SAMPLE:- 25}
@@ -109,6 +113,9 @@ if [ -n "$POSTGRES_HOST" ]; then
109113 USE_REMOTE_DB=true
110114fi
111115
116+ # Get hostname for fuzzer instance naming
117+ HOSTNAME=$( hostname -s 2> /dev/null || hostname 2> /dev/null || echo " unknown" )
118+
112119echo " =========================================="
113120echo " Starting Distributed Fuzzilli"
114121echo " =========================================="
@@ -131,6 +138,8 @@ echo " V8 Build Path: ${V8_BUILD_PATH}"
131138echo " Timeout: ${TIMEOUT} ms"
132139if [ " $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} "
134143fi
135144echo " "
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
219228EOF
220229done
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+
222271echo " Generated docker-compose files:"
223272if [ " $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
225278fi
226279echo " Workers: ${WORKER_COMPOSE} "
227280echo " "
0 commit comments