1
0
mirror of https://github.com/ltcptgeneral/cs239-caching.git synced 2025-04-04 21:33:27 +00:00
cs239-caching/tests/basic_latency_hitrate.py
Arthur Lu dee97f09c2 add get user id endpoint (/users),
fix issue in tiered cache,
update basic test with new user id set
2025-02-21 19:39:09 +00:00

36 lines
947 B
Python

# Tests latency and hit rate of endpoints. Can be configured with weighted averages for various endpoints.
import requests
import random
import json
baseurl = "http://localhost:8000"
endpoints = {
"/user/{user_id}": 1
}
user_ids = json.loads(requests.get(baseurl + "/users").content)["ids"]
random.seed(0)
def generate_random():
x = random.choices(list(endpoints.keys()), list(endpoints.values()))[0] # select randomly from endpoint (keys) with weight (values)
random_user = str(random.choice(user_ids))
x = x.replace("{user_id}", random_user)
return baseurl + x
times = []
hits = []
for i in range(1000):
url = generate_random()
response = requests.get(url)
content = json.loads(response.content)
times.append(content["time_ms"])
hits.append(content["source"] == "cache")
print(f"average response time (ms): {sum(times) / len(times)}")
print(f"hits: {sum(hits)} misses: {len(hits) - sum(hits)}")