From 953a94885bf4b99ae537728ac9d5d4637df67a8a Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Thu, 1 Sep 2022 14:58:39 +0100 Subject: [PATCH] Tests: run benchmarks in container via Docker --- docs/performance.md | 23 +++-------------------- test/bench/Dockerfile | 26 ++++++++++++++++++++++++++ test/bench/package.json | 4 ++-- test/bench/run-with-docker.sh | 13 +++++++++++++ 4 files changed, 44 insertions(+), 22 deletions(-) create mode 100644 test/bench/Dockerfile create mode 100755 test/bench/run-with-docker.sh diff --git a/docs/performance.md b/docs/performance.md index abc612e2..7d6a0c54 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -46,27 +46,10 @@ The I/O limits of the relevant (de)compression library will generally determine ## Running the benchmark test -Requires _ImageMagick_, _GraphicsMagick_ and _Mapnik_: - -```sh -brew install imagemagick -brew install graphicsmagick -brew install mapnik -``` - -```sh -sudo apt-get install build-essential imagemagick libmagick++-dev graphicsmagick libmapnik-dev -``` - -```sh -sudo yum install ImageMagick-devel ImageMagick-c++-devel GraphicsMagick mapnik-devel -``` +Requires Docker. ```sh git clone https://github.com/lovell/sharp.git -cd sharp -npm install --build-from-source -cd test/bench -npm install -npm test +cd sharp/test/bench +./run-with-docker.sh ``` diff --git a/test/bench/Dockerfile b/test/bench/Dockerfile new file mode 100644 index 00000000..2be38f23 --- /dev/null +++ b/test/bench/Dockerfile @@ -0,0 +1,26 @@ +FROM ubuntu:22.04 +ARG BRANCH=main + +# Install basic dependencies +RUN apt-get -y update && apt-get install -y build-essential curl git + +# Install latest Node.js LTS +RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - +RUN apt-get install -y nodejs + +# Install benchmark dependencies +RUN apt-get install -y imagemagick libmagick++-dev graphicsmagick libmapnik-dev + +# Install sharp +RUN mkdir /tmp/sharp +RUN cd /tmp && git clone --single-branch --branch $BRANCH https://github.com/lovell/sharp.git +RUN cd /tmp/sharp && npm install --build-from-source + +# Install benchmark test +RUN cd /tmp/sharp/test/bench && npm install + +RUN cat /etc/os-release | grep VERSION= +RUN node -v + +WORKDIR /tmp/sharp/test/bench +CMD [ "node", "perf" ] diff --git a/test/bench/package.json b/test/bench/package.json index 8baf3408..71647e67 100644 --- a/test/bench/package.json +++ b/test/bench/package.json @@ -10,13 +10,13 @@ "devDependencies": { "@squoosh/cli": "0.7.2", "@squoosh/lib": "0.4.0", - "async": "3.2.3", + "async": "3.2.4", "benchmark": "2.1.4", "gm": "1.23.1", "imagemagick": "0.1.3", "jimp": "0.16.1", "mapnik": "4.5.9", - "semver": "7.3.5" + "semver": "7.3.7" }, "license": "Apache-2.0", "engines": { diff --git a/test/bench/run-with-docker.sh b/test/bench/run-with-docker.sh new file mode 100755 index 00000000..d28975bf --- /dev/null +++ b/test/bench/run-with-docker.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -e + +if ! type docker >/dev/null; then + echo "Please install docker" + exit 1 +fi + +BRANCH=$(git branch --show-current) +echo "Running sharp performance tests using $BRANCH branch" + +docker build --build-arg "BRANCH=$BRANCH" -t sharp-test-bench . +docker run --rm -it sharp-test-bench