nix(loadtest): refactor generate_jwt -> generate_target

This makes the next change easier to do, but should be easier to review
step-by-step.
This commit is contained in:
Wolfgang Walther
2026-06-26 19:33:51 +00:00
parent 94be1b7250
commit 2d340e8a8c
+16 -14
View File
@@ -24,12 +24,12 @@ URL = "http://postgrest"
secret_key = b"reallyreallyreallyreallyverysafe" secret_key = b"reallyreallyreallyreallyverysafe"
def generate_jwt( def generate_target(
now: int, now: int,
exp_inc: Optional[int], exp_inc: Optional[int],
rsa_private_key: Optional[jwt.algorithms.RSAAlgorithm], rsa_private_key: Optional[jwt.algorithms.RSAAlgorithm],
) -> str: ) -> list[str]:
"""Generate an HS256 or RS256 JWT""" """Generate a target using an HS256 or RS256 JWT"""
payload = { payload = {
"sub": f"user_{random.getrandbits(32)}", "sub": f"user_{random.getrandbits(32)}",
"iat": now, "iat": now,
@@ -45,13 +45,13 @@ def generate_jwt(
else: else:
key = rsa_private_key key = rsa_private_key
alg = "RS256" alg = "RS256"
return jwt.encode(payload, key, alg) token = jwt.encode(payload, key, alg)
return [
def append_targets(lines: list[str], token: str): f"OPTIONS {URL}/authors_only",
lines.append(f"OPTIONS {URL}/authors_only") f"Authorization: Bearer {token}",
lines.append(f"Authorization: Bearer {token}") "", # blank line to separate requests
lines.append("") # blank line to separate requests ]
# we use this to chain commands on loadtest.nix # we use this to chain commands on loadtest.nix
@@ -150,14 +150,16 @@ def main():
run_postgrest_time = 2 run_postgrest_time = 2
for i in range(ntargets): for i in range(ntargets):
token = generate_jwt(now, run_postgrest_time + i // 1000, rsa_private_key) target = generate_target(
append_targets(lines, token) now, run_postgrest_time + i // 1000, rsa_private_key
)
lines.extend(target)
else: else:
tokens = [generate_jwt(now, None, rsa_private_key) for _ in range(nsamples)] targets = [generate_target(now, None, rsa_private_key) for _ in range(nsamples)]
for i in range(ntargets): for i in range(ntargets):
token = random.choice(tokens) target = random.choice(targets)
append_targets(lines, token) lines.extend(target)
try: try:
with open(args.targets_path, "w") as f: with open(args.targets_path, "w") as f: