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 10 months 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.
60 60
      example we'll pretend that the secret code is `XXX`.
61 61
 
62 62
         $ curl --data url=https://player.vimeo.com/video/148946917 \
63
+            -H "Content-Type: application/json" \
63 64
             http://localhost:3000/hooks/XXX
64 65
 
65 66
      This leads to the `download-video.sh` script running and being

+ 57
- 0
test/integration.sh View File

@@ -0,0 +1,57 @@
1
+#! /usr/bin/env nix-shell
2
+#! nix-shell -i bash -p bash coreutils curl gnused
3
+# shellcheck shell=bash
4
+
5
+################################################################################
6
+set -e
7
+set -u
8
+
9
+################################################################################
10
+top="$(realpath "$(dirname "$0")"/..)"
11
+
12
+################################################################################
13
+port=8080
14
+
15
+################################################################################
16
+# Number of times to run the created hook.
17
+runs=${WEBHOOKS_REQUESTS:-10000}
18
+
19
+################################################################################
20
+# Which binary to use:
21
+bin=$top/dist/build/webhooks/webhooks
22
+
23
+################################################################################
24
+payload=$top/examples/epub.json
25
+
26
+################################################################################
27
+export personal_webhooks_datadir="$top"
28
+
29
+################################################################################
30
+# Step 1: Create a new webhook:
31
+code=$($bin create --append /dev/null | cut -d: -f2 | sed 's/ //g')
32
+
33
+################################################################################
34
+# Step 2: Start the server:
35
+$bin server --port "$port" +RTS "$@" &
36
+pid=$!
37
+sleep 2 # Give it a chance to start
38
+
39
+################################################################################
40
+# Step 3: Issue requests:
41
+for _ in $(seq 1 "$runs"); do
42
+
43
+  curl \
44
+    --silent --output /dev/null \
45
+    --data-binary @"$payload" \
46
+    -H "Content-Type: application/json" \
47
+    http://localhost:"$port"/hooks/"$code"
48
+done
49
+
50
+################################################################################
51
+# Step 4: Kill the server:
52
+kill -INT "$pid"
53
+
54
+# Local Variables:
55
+#   mode: sh
56
+#   sh-shell: bash
57
+# End:

Loading…
Cancel
Save