Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: script to compare fresh install time #103

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
.git
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ test
dist
img
ci
.dockerignore
Dockerfile
14 changes: 14 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Build ipfs-npm from src. Used in test/perf/docker-race.sh
FROM node:10.15.3
MAINTAINER olizilla <oli@tableflip.io>

WORKDIR /opt/npm-on-ipfs

# Create a docker cache layer for just the deps. This means less rebuilding if
# only the source code changes
COPY package.json /opt/npm-on-ipfs
RUN npm install --quiet

# Copy the src dir to the image, and add `ipfs-npm` to the PATH.
COPY ./src /opt/npm-on-ipfs/src
RUN npm link
38 changes: 38 additions & 0 deletions test/perf/docker-race.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash

# Compare the first install times of a module via npm and ipfs-npm.
# Using Docker here to ensure we are using fresh caches for each run.
#
# Usage:
#
# ./docker-race.sh [npm module]
#
# NOTE: On first run this will create a local image called ipfs-npm, from the
# Dockerfile at the root of this project. To update it with the latest source,
# rebuild the image:
#
# docker build -t ipfs-npm .
#
# or simply delete it and let the script re-build it
#
# docker image rm ipfs-npm -f
#
MODULE=${1:-iim}
IPFS_NPM_IMAGE=ipfs-npm
REFERENCE_IMAGE=node:10.15.3

if $(docker image ls | grep -q $IPFS_NPM_IMAGE)
then
echo "found ipfs-npm Docker image"
else
echo "building docker image for ipfs-npm, this will take a moment"
docker build -t $IPFS_NPM_IMAGE ../../
olizilla marked this conversation as resolved.
Show resolved Hide resolved
fi

echo ""
echo "---- ipfs-npm flavour ----"
time docker run $IPFS_NPM_IMAGE ipfs-npm install -g $MODULE
olizilla marked this conversation as resolved.
Show resolved Hide resolved

echo ""
echo "---- npm flavour ----"
time docker run $REFERENCE_IMAGE npm install -g $MODULE
olizilla marked this conversation as resolved.
Show resolved Hide resolved