Skip to content

Commit 5f54fcc

Browse files
committed
fix bugs
1 parent 393c6bb commit 5f54fcc

File tree

4 files changed

+51
-24
lines changed

4 files changed

+51
-24
lines changed

build.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import logging
55
from utils import run_command
66

7-
def build_sqlancer_image(script_log, docker_log, embedded, dbms, force_rebuild=False):
7+
def build_sqlancer_image(script_log, docker_log, embedded, dbms='mysql', force_rebuild=False):
88
context_dir = "./sqlancer"
99
if embedded == "yes":
1010
dockerfile_path = f"./{dbms}/Dockerfile"
@@ -23,7 +23,7 @@ def build_sqlancer_image(script_log, docker_log, embedded, dbms, force_rebuild=F
2323

2424
if force_rebuild:
2525
script_log.info("Rebuilding SQLancer image: sqlancer:latest ...")
26-
run_command(
26+
run_command(
2727
["docker", "build", "--no-cache", "-f", dockerfile_path, "-t", "sqlancer:latest", context_dir],
2828
docker_log
2929
)
@@ -68,27 +68,28 @@ def build_network(script_log, docker_log, network_name="sqlancer-net"):
6868
sys.exit(1)
6969

7070
def build_db_image(cfg, use_cache, script_log, docker_log, custom=False, dockerfile_path=""):
71-
image = f"{cfg['image_name']}:{cfg['tag']}"
71+
if cfg["embedded"] == "no":
72+
image = f"{cfg['image_name']}:{cfg['tag']}"
7273

73-
if not use_cache and not custom:
74-
script_log.info("Pulling db image: %s ...", image)
75-
run_command(["docker", "pull", image], docker_log)
76-
script_log.info("DB image pulled: %s", image)
77-
elif custom:
78-
build_cmd = ["docker", "build", "-t", image, os.path.dirname(dockerfile_path)]
79-
if not use_cache:
80-
build_cmd.insert(2, "--no-cache")
81-
script_log.info("Building db image: %s ...", image)
82-
run_command(build_cmd, docker_log)
83-
script_log.info("DB image built: %s ...", image)
84-
else:
85-
script_log.info("DB image already exists: %s", image)
74+
if not use_cache and not custom:
75+
script_log.info("Pulling db image: %s ...", image)
76+
run_command(["docker", "pull", image], docker_log)
77+
script_log.info("DB image pulled: %s", image)
78+
elif custom:
79+
build_cmd = ["docker", "build", "-t", image, os.path.dirname(dockerfile_path)]
80+
if not use_cache:
81+
build_cmd.insert(2, "--no-cache")
82+
script_log.info("Building db image: %s ...", image)
83+
run_command(build_cmd, docker_log)
84+
script_log.info("DB image built: %s ...", image)
85+
else:
86+
script_log.info("DB image already exists: %s", image)
8687

8788

88-
def build_environment(cfg, use_cache, script_log, docker_log, custom=False, dockerfile_path=""):
89+
def build_environment(cfg, use_cache, script_log, docker_log, dbms='mysql', custom=False, dockerfile_path=""):
8990
script_log.info("==============================Building environment==============================")
9091
build_network(script_log, docker_log)
91-
build_sqlancer_image(script_log, docker_log, cfg["embedded"], cfg["dbms"], force_rebuild=False)
92+
build_sqlancer_image(script_log, docker_log, cfg["embedded"], dbms, force_rebuild=False)
9293
if cfg["embedded"] == "no":
9394
build_db_image(cfg, use_cache, script_log, docker_log, custom, dockerfile_path)
9495
script_log.info("==============================Building environment==============================")

sqlancer/entrypoint.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,23 @@ for i in {1..60}; do
1919
done
2020

2121

22-
CMD="java -jar sqlancer-*.jar --num-threads \"$SQLANCER_THREADS\" --timeout-seconds \"$SQLANCER_TIMEOUT\" --host \"$SQLANCER_HOST\" \"$SQLANCER_DBMS\" --oracle \"$SQLANCER_ORACLE\""
23-
22+
CMD="java -jar sqlancer-*.jar \
23+
--num-threads \"$SQLANCER_THREADS\" \
24+
--timeout-seconds \"$SQLANCER_TIMEOUT\""
2425

2526
if [ "$(printf '%s' "${SQLANCER_USERNAME:-}" | tr '[:lower:]' '[:upper:]')" != "N/A" ]; then
2627
CMD="$CMD --username \"$SQLANCER_USERNAME\""
2728
fi
2829

29-
3030
if [ "$(printf '%s' "${SQLANCER_PASSWORD:-}" | tr '[:lower:]' '[:upper:]')" != "N/A" ]; then
3131
CMD="$CMD --password \"$SQLANCER_PASSWORD\""
3232
fi
3333

3434

35+
# 3) 最后统一追加 host、DBMS、oracle
36+
CMD="$CMD --host \"$SQLANCER_HOST\" \"$SQLANCER_DBMS\" --oracle \"$SQLANCER_ORACLE\""
37+
38+
3539
echo "Running: $CMD" | tee -a "$LOG_FILE"
3640

3741
eval "$CMD" 2>&1 | tee -a "$LOG_FILE" | grep --line-buffered "Executed"

sqlite/Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
FROM ubuntu:20.04
2+
ENV DEBIAN_FRONTEND=noninteractive
3+
4+
RUN apt-get update && \
5+
apt-get install -y openjdk-17-jdk maven git jq netcat sqlite3 && \
6+
rm -rf /var/lib/apt/lists/*
7+
8+
WORKDIR /root/sqlancer
9+
10+
ARG SQLITE_JDBC_VERSION=3.45.1.0
11+
12+
RUN git clone https://github.com/sqlancer/sqlancer.git . && \
13+
mvn -q versions:use-dep-version \
14+
-Dincludes=org.xerial:sqlite-jdbc \
15+
-DdepVersion=${SQLITE_JDBC_VERSION} \
16+
-DforceVersion=true && \
17+
mvn -q clean package -DskipTests
18+
19+
COPY entrypoint.sh /root/entrypoint.sh
20+
RUN chmod +x /root/entrypoint.sh
21+
22+
CMD ["/root/entrypoint.sh"]

start.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ def main():
5252
# print(f"[WARNING] Skipping {dbms}, missing config file.")
5353
continue
5454
cfg = load_json(config_path)
55-
build_environment(cfg, use_cache, script_log, docker_log)
55+
build_environment(cfg, use_cache, script_log, docker_log, dbms)
5656
test_single(cfg, script_log, docker_log, sqlancer_log, run_dir, use_cache)
5757

5858
elif args.dbms:
5959
if not args.config:
6060
parser.error("Single DBMS test requires --config")
6161
cfg = load_json(args.config)
62-
build_environment(cfg, use_cache, script_log, docker_log)
62+
build_environment(cfg, use_cache, script_log, docker_log, args.dbms)
6363
test_single(cfg, script_log, docker_log, sqlancer_log, run_dir, use_cache)
6464
else:
6565
parser.error("Must specify either --dbms or --dockerfile")
@@ -73,7 +73,7 @@ def main():
7373
if not os.path.exists(config_path):
7474
# print(f"[WARNING] Skipping {dbms}, missing config file.")
7575
continue
76-
cfg = load_json(config_path)
76+
cfg = load_json(config_path)
7777
build_db_image(cfg, use_cache, script_log, docker_log)
7878
elif args.dbms:
7979
config_path = os.path.join(args.dbms, "config.json")

0 commit comments

Comments
 (0)