|
from locust import HttpUser, task, between
|
|
import random
|
|
import uuid
|
|
|
|
class RantCommunityUser(HttpUser):
|
|
wait_time = between(1, 5)
|
|
host = "http://127.0.0.1:8111"
|
|
|
|
def on_start(self):
|
|
self.token_id = random.randint(1, 1000)
|
|
self.token_key = str(uuid.uuid4())
|
|
self.user_id = random.randint(1, 1000)
|
|
self.username = f"user_{self.user_id}"
|
|
self.password = "testpassword123"
|
|
|
|
@task(2)
|
|
def home_page(self):
|
|
self.client.get(f"/?sort=recent")
|
|
|
|
@task(2)
|
|
def rant_detail(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.get(f"/rant/{rant_id}")
|
|
|
|
@task(2)
|
|
def profile_page(self):
|
|
user_id = random.randint(1, 100)
|
|
tab = random.choice(["rants", "comments", "favorites"])
|
|
self.client.get(f"/profile/{user_id}?tab={tab}")
|
|
|
|
@task(1)
|
|
def search_page(self):
|
|
term = random.choice(["test", "rant", "community"])
|
|
self.client.get(f"/search?term={term}")
|
|
|
|
@task(1)
|
|
def notifications(self):
|
|
self.client.get("/notifications")
|
|
|
|
@task(1)
|
|
def classic_page(self):
|
|
self.client.get("/classic")
|
|
|
|
@task(1)
|
|
def login(self):
|
|
self.client.post("/login", data={
|
|
"username": self.username,
|
|
"password": self.password
|
|
})
|
|
|
|
@task(1)
|
|
def logout(self):
|
|
self.client.get("/logout")
|
|
|
|
@task(1)
|
|
def register_user(self):
|
|
self.client.post("/api/users", data={
|
|
"email": f"{self.username}@example.com",
|
|
"username": self.username,
|
|
"password": self.password,
|
|
"type": 1,
|
|
"app": 3
|
|
})
|
|
|
|
@task(1)
|
|
def auth_token(self):
|
|
self.client.post("/api/users/auth-token", data={
|
|
"username": self.username,
|
|
"password": self.password,
|
|
"app": 3
|
|
})
|
|
|
|
@task(3)
|
|
def get_rants(self):
|
|
self.client.get(f"/api/rant/rants?sort=recent&limit=20&skip=0&app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(2)
|
|
def create_rant(self):
|
|
self.client.post("/api/rant/rants", data={
|
|
"rant": "This is a test rant",
|
|
"tags": "test,example",
|
|
"type": 1,
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(2)
|
|
def get_rant(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.get(f"/api/rant/rants/{rant_id}?app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(1)
|
|
def update_rant(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.post(f"/api/rant/rants/{rant_id}", data={
|
|
"rant": "Updated test rant",
|
|
"tags": "test,updated",
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def delete_rant(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.delete(f"/api/rant/rants/{rant_id}?app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(2)
|
|
def vote_rant(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.post(f"/api/rant/rants/{rant_id}/vote", data={
|
|
"vote": random.choice([1, -1]),
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def favorite_rant(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.post(f"/api/rant/rants/{rant_id}/favorite", data={
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def unfavorite_rant(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.post(f"/api/rant/rants/{rant_id}/unfavorite", data={
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(2)
|
|
def create_comment(self):
|
|
rant_id = random.randint(1, 100)
|
|
self.client.post(f"/api/rant/rants/{rant_id}/comments", data={
|
|
"comment": "Test comment",
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def get_comment(self):
|
|
comment_id = random.randint(1, 100)
|
|
self.client.get(f"/api/comments/{comment_id}?app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(1)
|
|
def update_comment(self):
|
|
comment_id = random.randint(1, 100)
|
|
self.client.post(f"/api/comments/{comment_id}", data={
|
|
"comment": "Updated test comment",
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def delete_comment(self):
|
|
comment_id = random.randint(1, 100)
|
|
self.client.delete(f"/api/comments/{comment_id}?app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(1)
|
|
def vote_comment(self):
|
|
comment_id = random.randint(1, 100)
|
|
self.client.post(f"/api/comments/{comment_id}/vote", data={
|
|
"vote": random.choice([1, -1]),
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def get_profile(self):
|
|
user_id = random.randint(1, 100)
|
|
self.client.get(f"/api/users/{user_id}?app=3&token_id={self.token_id}&token_key={self.token_key}&auth_user_id={self.user_id}")
|
|
|
|
@task(1)
|
|
def get_user_id(self):
|
|
self.client.get(f"/api/get-user-id?username={self.username}&app=3")
|
|
|
|
@task(1)
|
|
def search(self):
|
|
term = random.choice(["test", "rant", "community"])
|
|
self.client.get(f"/api/rant/search?term={term}&app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(1)
|
|
def get_notifications(self):
|
|
self.client.get(f"/api/users/me/notif-feed?ext_prof=1&app=3&token_id={self.token_id}&token_key={self.token_key}&user_id={self.user_id}")
|
|
|
|
@task(1)
|
|
def clear_notifications(self):
|
|
self.client.delete(f"/api/users/me/notif-feed", data={
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def edit_profile(self):
|
|
self.client.post("/api/users/me/edit-profile", data={
|
|
"profile_about": "Test about",
|
|
"profile_skills": "Python,Testing",
|
|
"profile_location": "Test City",
|
|
"profile_website": "http://example.com",
|
|
"profile_github": "http://github.com/test",
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def forgot_password(self):
|
|
self.client.post("/api/users/forgot-password", data={
|
|
"username": self.username,
|
|
"app": 3
|
|
})
|
|
|
|
@task(1)
|
|
def resend_confirmation(self):
|
|
self.client.post("/api/users/me/resend-confirm", data={
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def mark_news_read(self):
|
|
news_id = str(uuid.uuid4())
|
|
self.client.post("/api/users/me/mark-news-read", data={
|
|
"news_id": news_id,
|
|
"app": 3,
|
|
"token_id": self.token_id,
|
|
"token_key": self.token_key,
|
|
"user_id": self.user_id
|
|
})
|
|
|
|
@task(1)
|
|
def get_upload(self):
|
|
filename = f"test_{random.randint(1, 100)}.jpg"
|
|
self.client.get(f"/uploads/{filename}")
|