Browse Source

Added integration test script, verified constant memory usage

  * New script to create a new webhook and call it

  * Used that script to profile the web server and verify constant
    memory usage

  * Updated the README.md file to include the Content-Type header when
    calling via `curl'
master
Peter J. Jones 1 year ago
parent
commit
77a9efd746
Signed by: Peter Jones <pjones@devalot.com> GPG Key ID: 9DAFAA8D01941E49
2 changed files with 58 additions and 0 deletions
  1. 1
    0
      README.md
  2. 57
    0
      test/integration.sh

+ 1
- 0
README.md View File

@@ -60,6 +60,7 @@ feed that JSON data into a waiting script.
example we'll pretend that the secret code is `XXX`.

$ curl --data url=https://player.vimeo.com/video/148946917 \
-H "Content-Type: application/json" \
http://localhost:3000/hooks/XXX

This leads to the `download-video.sh` script running and being

+ 57
- 0
test/integration.sh View File

@@ -0,0 +1,57 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash coreutils curl gnused
# shellcheck shell=bash

################################################################################
set -e
set -u

################################################################################
top="$(realpath "$(dirname "$0")"/..)"

################################################################################
port=8080

################################################################################
# Number of times to run the created hook.
runs=${WEBHOOKS_REQUESTS:-10000}

################################################################################
# Which binary to use:
bin=$top/dist/build/webhooks/webhooks

################################################################################
payload=$top/examples/epub.json

################################################################################
export personal_webhooks_datadir="$top"

################################################################################
# Step 1: Create a new webhook:
code=$($bin create --append /dev/null | cut -d: -f2 | sed 's/ //g')

################################################################################
# Step 2: Start the server:
$bin server --port "$port" +RTS "$@" &
pid=$!
sleep 2 # Give it a chance to start

################################################################################
# Step 3: Issue requests:
for _ in $(seq 1 "$runs"); do

curl \
--silent --output /dev/null \
--data-binary @"$payload" \
-H "Content-Type: application/json" \
http://localhost:"$port"/hooks/"$code"
done

################################################################################
# Step 4: Kill the server:
kill -INT "$pid"

# Local Variables:
# mode: sh
# sh-shell: bash
# End:

Loading…
Cancel
Save