diff --git a/docker-compose.seed.yml b/docker-compose.seed.yml new file mode 100644 index 0000000..355c857 --- /dev/null +++ b/docker-compose.seed.yml @@ -0,0 +1,9 @@ +services: + seed: + build: ./seed-data + networks: + - front-tier + restart: "no" + +networks: + front-tier: \ No newline at end of file diff --git a/seed-data/Dockerfile b/seed-data/Dockerfile new file mode 100644 index 0000000..18e55e8 --- /dev/null +++ b/seed-data/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.9-slim + +# add apache bench (ab) tool +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + apache2-utils \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /seed + +COPY . . + +# create POST data files with ab friendly formats +RUN python make-data.py + +CMD /seed/generate-votes.sh \ No newline at end of file diff --git a/seed-data/generate-votes.sh b/seed-data/generate-votes.sh new file mode 100755 index 0000000..2f82563 --- /dev/null +++ b/seed-data/generate-votes.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# create 3000 votes (2000 for option a, 1000 for option b) +ab -n 1000 -c 50 -p posta -T "application/x-www-form-urlencoded" http://vote/ +ab -n 1000 -c 50 -p postb -T "application/x-www-form-urlencoded" http://vote/ +ab -n 1000 -c 50 -p posta -T "application/x-www-form-urlencoded" http://vote/ diff --git a/seed-data/make-data.py b/seed-data/make-data.py new file mode 100644 index 0000000..def9f97 --- /dev/null +++ b/seed-data/make-data.py @@ -0,0 +1,13 @@ +# this creates urlencode-friendly files without EOL +import urllib.parse + +outfile = open('postb', 'w') +params = ({ 'vote': 'b' }) +encoded = urllib.parse.urlencode(params) +outfile.write(encoded) +outfile.close() +outfile = open('posta', 'w') +params = ({ 'vote': 'a' }) +encoded = urllib.parse.urlencode(params) +outfile.write(encoded) +outfile.close()