diff options
-rwxr-xr-x | benchmark-http | 51 | ||||
-rwxr-xr-x | create-token | 44 |
2 files changed, 95 insertions, 0 deletions
diff --git a/benchmark-http b/benchmark-http new file mode 100755 index 0000000..0ad11b0 --- /dev/null +++ b/benchmark-http @@ -0,0 +1,51 @@ +#!/bin/sh +# Copyright (C) 2018 Lars Wirzenius +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -eu + +rm -rf tmp +mkdir tmp +mkdir tmp/store + +token="$(./create-token < test-key)" + +cat > tmp/conf <<EOF +{ + "log": "tmp/log", + "pid": "tmp/pid", + "store": "tmp/store", + "signing-key-filename": "test-key.pub" +} +EOF + +cat > tmp/data <<EOF +{ + "foo": "bar" +} +EOF + +stop() { + kill "$(cat tmp/pid)" +} +trap stop EXIT + +/usr/sbin/daemonize -o tmp.out -e tmp.err -c . "$(pwd)/muck_poc" tmp/conf +sleep 2 + +ab -n10000 -c2 \ + -T application/json \ + -p tmp/data \ + -H "Authorization: Bearer $token" \ + http://127.0.0.1:12765/res diff --git a/create-token b/create-token new file mode 100755 index 0000000..7496f97 --- /dev/null +++ b/create-token @@ -0,0 +1,44 @@ +#!/usr/bin/python3 +# Copyright (C) 2017 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +import sys +import time + +import Crypto.PublicKey.RSA + +import apifw + +key_text = sys.stdin.read() +key = Crypto.PublicKey.RSA.importKey(key_text) + +iss = 'test-issuer' +aud = 'test-audience' +sub = 'test-subject' +scope = 'create update show delete' +lifetime = 24 * 60 * 60 + +now = time.time() +claims = { + 'iss': iss, + 'sub': sub, + 'aud': aud, + 'exp': now + lifetime, + 'scope': scope, +} + +token = apifw.create_token(claims, key) +sys.stdout.write(token.decode('ascii')) |