40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
# retoor <retoor@molodetz.nl>
|
|
import random
|
|
|
|
from locust import HttpUser, between, task
|
|
|
|
PAGES = ["/", "/rol", "/standaard", "/flyers", "/memes", "/mensen", "/binnen", "/docs"]
|
|
|
|
|
|
class Reader(HttpUser):
|
|
wait_time = between(0.5, 2.0)
|
|
|
|
def on_start(self):
|
|
response = self.client.get("/rol", headers={"Accept": "application/json"}, name="/rol [json]")
|
|
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):
|
|
self.client.get("/standaard", headers={"Accept": "application/json"}, name="/standaard [json]")
|
|
|
|
@task(1)
|
|
def join_form(self):
|
|
self.client.post(
|
|
"/binnen",
|
|
data={"name": f"Load {random.randint(1, 10**6)}", "contact": "load@example.invalid", "repo_url": "", "message": "", "website": ""},
|
|
name="/binnen [post]",
|
|
)
|