You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 28, 2023. It is now read-only.
Copy file name to clipboardExpand all lines: README.md
+54-46Lines changed: 54 additions & 46 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,9 +6,7 @@ This project aims to provide a complete set of tools needed to do simple perform
6
6
7
7
This repository contains configuration that makes it easy for everyone to reproduce performance comparisons of different HTTP based API gateway/manager products. The configuration and tests are open source, and contributions are encouraged.
8
8
9
-
To simplify the tests suite, three roles are defined: *consumer*, *gateway* and *webserver*. Each of the roles have a simple specification, which makes it easy to swap software components for the different roles. It is also easy to add clonfiguration for new software components.
10
-
11
-
To run a performance test, each role must be filled by exactly one software component.
9
+
To simplify the tests suite, three roles are defined: *consumer*, *gateway* and *webserver*. To run a performance test, each role must be filled by exactly one software component.
12
10
13
11
For performance comparisons, multiple performance tests are executed where one role switches software component (typically the gateway) between each run.
14
12
@@ -20,70 +18,77 @@ The tests cover a limited set of features which are considered as basic function
20
18
21
19
Requests sent directly from the consumer to the webserver. The gateway is not part of the request handling, and does therefore not affect the results.
The requests should be sent according to the following specifications.
22
+
23
+
| Property | Value |
24
+
|----------------|--------------|
25
+
| Request method | GET |
26
+
| Protocol | http |
27
+
| Host | webserver |
28
+
| Port | 8888 |
29
+
| Request path | /test00 |
30
+
| Headers |*none*|
26
31
27
32
**Test 01: HTTP routing**
28
33
29
34
Proxy consumer requests through the gateway to the upstream webserver.
30
35
31
-
| Property | Value |
32
-
|-------------|--------------------------------|
33
-
| Request | GET http://gateway:8080/test01|
36
+
| Property | Value |
37
+
|----------------|--------------|
38
+
| Request method | GET |
39
+
| Protocol | http |
40
+
| Host | gateway |
41
+
| Port | 8080 |
42
+
| Request path | /test01 |
43
+
| Headers |*none*|
34
44
35
45
**Test 02: Key based authentication and authorization**
36
46
37
47
Authenticate, authorize and proxy consumer requests through the gateway to the upstream webserver.
38
48
39
-
| Property | Value |
40
-
|-------------|--------------------------------|
41
-
| Request | GET http://gateway:8080/test02|
42
-
| Header | apikey=key02 |
49
+
| Property | Value |
50
+
|----------------|--------------|
51
+
| Request method | GET |
52
+
| Protocol | http |
53
+
| Host | gateway |
54
+
| Port | 8080 |
55
+
| Request path | /test02 |
56
+
| Headers | apikey=key02 |
57
+
43
58
44
59
**Test 03: Key based auth and rate limiting (high limit)**
45
60
46
61
Authenticate, authorize and proxy consumer requests through the gateway to the upstream webserver. All requests should be counted, but none should exceed the rate limitation.
47
62
48
-
| Property | Value |
49
-
|-------------|--------------------------------|
50
-
| Request | GET http://gateway:8080/test03|
51
-
| Header | apikey=key03 |
63
+
| Property | Value |
64
+
|----------------|--------------|
65
+
| Request method | GET |
66
+
| Protocol | http |
67
+
| Host | gateway |
68
+
| Port | 8080 |
69
+
| Request path | /test03 |
70
+
| Headers | apikey=key03 |
52
71
53
72
**Test 04: Key based auth and rate limit of 1 rps**
54
73
55
74
Authenticate, authorize and proxy consumer requests through the gateway to the upstream webserver. Only one request is allowed per second. The rest of the requests should be rejected.
56
75
57
-
| Property | Value |
58
-
|-------------|--------------------------------|
59
-
| Request | GET http://gateway:8080/test04|
60
-
| Header | apikey=key04 |
76
+
| Property | Value |
77
+
|----------------|--------------|
78
+
| Request method | GET |
79
+
| Protocol | http |
80
+
| Host | gateway |
81
+
| Port | 8080 |
82
+
| Request path | /test04 |
83
+
| Headers | apikey=key04 |
61
84
62
85
## Roles specification
63
86
64
-
There are three roles involved; consumers, gateways and webservers.
65
-
66
87
### Consumers
67
88
68
89
Configuration for each type of consumer is put in subdirectories in the ``consumers/`` directory. Each subdirectory should contain a ``deploy`` file that can be executed to install and prepare the consumer for load generation.
69
90
70
-
Wrappers to run the different tests should be put in ``/usr/local/bin/`` inside the consumer instance and named ``test00``, ``test01``, ..., ``textXX``.
71
-
72
-
**Reference test** (``test00``):
73
-
74
-
| Property | Value |
75
-
|-------------|-----------|
76
-
| Protocol | http |
77
-
| Target host | webserver |
78
-
| Target port | 8888 |
79
-
80
-
**Other tests** (``test01, ...``):
81
-
82
-
| Property | Value |
83
-
|-------------|---------|
84
-
| Protocol | http |
85
-
| Target host | gateway |
86
-
| Target port | 8080 |
91
+
Wrappers to run the different tests should be put in ``/usr/local/bin/`` inside the consumer instance and named ``test00``, ``test01``, ..., ``textXX``. The wrappers should execute requests according to the test specifications.
87
92
88
93
### Gateways
89
94
@@ -107,7 +112,10 @@ Configuration for each web server is put in subdirectories in the ``webservers/`
107
112
108
113
## Execution
109
114
110
-
Three instances running CentOS 7 x86_64 are needed to execute the tests, each which fulfills the role of the *consumer*, *gateway* or *webserver*.
115
+
* Three instances running CentOS 7 x86_64 are needed to execute the tests, each which fulfills the role of the *consumer*, *gateway* or *webserver*.
116
+
* Selinux should be disabled.
117
+
* The EPEL7 repository should be enabled.
118
+
* Root access is required.
111
119
112
120
### Deployment examples
113
121
@@ -148,11 +156,11 @@ Build the three virtual instances using Vagrant.
0 commit comments