2026-10-05 09:36:20 +02:00
|
|
|
# retoor <retoor@molodetz.nl>
|
|
|
|
|
import random
|
|
|
|
|
|
|
|
|
|
from locust import HttpUser, between, task
|
|
|
|
|
|
2026-10-05 11:25:41 +02:00
|
|
|
PAGES = ["/", "/roll", "/standard", "/flyers", "/memes", "/people", "/join", "/docs"]
|
2026-10-05 09:36:20 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class Reader(HttpUser):
|
|
|
|
|
wait_time = between(0.5, 2.0)
|
|
|
|
|
|
|
|
|
|
def on_start(self):
|
2026-10-05 11:25:41 +02:00
|
|
|
response = self.client.get("/roll", headers={"Accept": "application/json"}, name="/roll [json]")
|
2026-10-05 09:36:20 +02:00
|
|
|
self.slugs = [post["slug"] for post in response.json().get("posts", [])] if response.ok else []
|
|
|
|
|
|
|
|
|
|
@task(6)
|
|
|
|
|
def home(self):
|
|
|
|
|
self.client.get("/")
|
|
|
|
|
|
|
|
|
|
@task(4)
|
|
|
|
|
def listing(self):
|
|
|
|
|
self.client.get(random.choice(PAGES), name="[page]")
|
|
|
|
|
|
|
|
|
|
@task(3)
|
|
|
|
|
def post(self):
|
|
|
|
|
if self.slugs:
|
|
|
|
|
self.client.get(f"/posts/{random.choice(self.slugs)}", name="/posts/[slug]")
|
|
|
|
|
|
|
|
|
|
@task(1)
|
|
|
|
|
def json_face(self):
|
2026-10-05 11:25:41 +02:00
|
|
|
self.client.get("/standard", headers={"Accept": "application/json"}, name="/standard [json]")
|
2026-10-05 09:36:20 +02:00
|
|
|
|
|
|
|
|
@task(1)
|
|
|
|
|
def join_form(self):
|
|
|
|
|
self.client.post(
|
2026-10-05 11:25:41 +02:00
|
|
|
"/join",
|
2026-10-05 09:36:20 +02:00
|
|
|
data={"name": f"Load {random.randint(1, 10**6)}", "contact": "load@example.invalid", "repo_url": "", "message": "", "website": ""},
|
2026-10-05 11:25:41 +02:00
|
|
|
name="/join [post]",
|
2026-10-05 09:36:20 +02:00
|
|
|
)
|