Skip to content

Commit f1eed3d

Browse files
committed
Add dev/load for distributed load testing
1 parent 96a9aca commit f1eed3d

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

dev/load/cortex.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
- name: load
2+
kind: RealtimeAPI
3+
predictor:
4+
type: python
5+
path: predictor.py
6+
log_level: debug
7+
config:
8+
endpoint: http://a76d3b3343f1a43e8a5dd1f556689215-14bf49c6f95638fb.elb.us-west-2.amazonaws.com/iris-classifier
9+
data: { "sepal_length": 2.2, "sepal_width": 3.6, "petal_length": 1.4, "petal_width": 3.3 }
10+
sleep: 0.8
11+
num_requests: 1000
12+
autoscaling:
13+
min_replicas: 50
14+
max_replicas: 50
15+
compute:
16+
cpu: 1.3

dev/load/predictor.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import requests
2+
import time
3+
from cortex_internal.lib.log import logger as cortex_logger
4+
5+
6+
class PythonPredictor:
7+
def __init__(self, config):
8+
num_success = 0
9+
num_fail = 0
10+
for i in range(config["num_requests"]):
11+
if i > 0:
12+
time.sleep(config["sleep"])
13+
response = requests.post(config["endpoint"], json=config["data"], timeout=3600)
14+
if response.status_code == 200:
15+
num_success += 1
16+
else:
17+
num_fail += 1
18+
cortex_logger.error(
19+
"ERROR",
20+
extra={"error": True, "code": response.status_code, "body": response.text},
21+
)
22+
23+
cortex_logger.warn(
24+
"FINISHED",
25+
extra={"finished": True, "num_success": num_success, "num_fail": num_fail},
26+
)
27+
28+
def predict(self, payload):
29+
return "ok"

0 commit comments

Comments
 (0)