mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-25 02:11:55 +01:00
Load test with multiple different snapshots.
This commit is contained in:
parent
173fc4cec2
commit
8514b3d710
@ -1,6 +1,25 @@
|
|||||||
from locust import HttpLocust, task, TaskSet
|
from locust import HttpLocust, task, TaskSet
|
||||||
from random import randrange
|
from random import randrange
|
||||||
|
|
||||||
|
def random_element(xs):
|
||||||
|
return xs[randrange(len(xs))]
|
||||||
|
|
||||||
|
def select_snapshot():
|
||||||
|
_snapshots = [
|
||||||
|
"lts",
|
||||||
|
"nightly",
|
||||||
|
"lts-9.10",
|
||||||
|
"lts-9.7",
|
||||||
|
"lts-9.6",
|
||||||
|
"lts-9.5",
|
||||||
|
"lts-8.8",
|
||||||
|
"nightly-2017-07-05",
|
||||||
|
"nightly-2017-05-30",
|
||||||
|
"nightly-2017-03-25",
|
||||||
|
"lts-7.20",
|
||||||
|
]
|
||||||
|
return random_element(_snapshots)
|
||||||
|
|
||||||
class HoogleQueries(TaskSet):
|
class HoogleQueries(TaskSet):
|
||||||
@task
|
@task
|
||||||
def hoogle_queries(self):
|
def hoogle_queries(self):
|
||||||
@ -21,18 +40,25 @@ class HoogleQueries(TaskSet):
|
|||||||
"bimap",
|
"bimap",
|
||||||
"inject"
|
"inject"
|
||||||
]
|
]
|
||||||
|
_snapshot = select_snapshot()
|
||||||
for q in _hoogle_queries:
|
for q in _hoogle_queries:
|
||||||
self.client.get("/lts/hoogle?q=" + q, name="/lts/hoogle?q=[:query]")
|
self.client.get("/" + _snapshot + "/hoogle?q=" + q, name="/:snapshot/hoogle?q=[:query]")
|
||||||
|
|
||||||
|
@task
|
||||||
|
def stop(self):
|
||||||
|
self.interrupt()
|
||||||
|
|
||||||
|
class Documentation(TaskSet):
|
||||||
|
@task
|
||||||
|
def docs(self):
|
||||||
|
_snapshot = select_snapshot()
|
||||||
|
self.client.get("/" + _snapshot + "/docs", name="/:snapshot/docs")
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.interrupt()
|
self.interrupt()
|
||||||
|
|
||||||
class PackageBrowser(TaskSet):
|
class PackageBrowser(TaskSet):
|
||||||
@task(50)
|
|
||||||
def list_packages(self):
|
|
||||||
self.client.get("/lts")
|
|
||||||
|
|
||||||
@task(10)
|
@task(10)
|
||||||
def browse_package(self):
|
def browse_package(self):
|
||||||
# TODO: Get packages to test from up-to-date listing on Stackage, move out of here
|
# TODO: Get packages to test from up-to-date listing on Stackage, move out of here
|
||||||
@ -51,21 +77,31 @@ class PackageBrowser(TaskSet):
|
|||||||
"text",
|
"text",
|
||||||
"universe"
|
"universe"
|
||||||
]
|
]
|
||||||
self.client.get("/lts/package/" + _packages[randrange(len(_packages))], name="/lts/package/:package")
|
_snapshot = select_snapshot()
|
||||||
|
self.client.get("/" + _snapshot + "/package/" + random_element(_packages), name="/:snapshot/package/:package")
|
||||||
|
|
||||||
@task(2)
|
@task(2)
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.interrupt()
|
self.interrupt()
|
||||||
|
|
||||||
class TopLevelPages(TaskSet):
|
class Snapshots(TaskSet):
|
||||||
@task(30)
|
@task
|
||||||
def docs(self):
|
def updateSnapshots(self):
|
||||||
self.client.get("/docs")
|
self.client.get("/download/snapshots.json")
|
||||||
|
|
||||||
|
@task
|
||||||
|
def stop(self):
|
||||||
|
self.interrupt()
|
||||||
|
|
||||||
|
class TopLevelPages(TaskSet):
|
||||||
@task(20)
|
@task(20)
|
||||||
def install(self):
|
def install(self):
|
||||||
self.client.get("/install")
|
self.client.get("/install")
|
||||||
|
|
||||||
|
@task(10)
|
||||||
|
def lts(self):
|
||||||
|
self.client.get("/lts")
|
||||||
|
|
||||||
@task(5)
|
@task(5)
|
||||||
def nightly(self):
|
def nightly(self):
|
||||||
self.client.get("/nightly")
|
self.client.get("/nightly")
|
||||||
@ -80,9 +116,11 @@ class TopLevelPages(TaskSet):
|
|||||||
|
|
||||||
class UserBehaviour(TaskSet):
|
class UserBehaviour(TaskSet):
|
||||||
tasks = {
|
tasks = {
|
||||||
HoogleQueries : 2,
|
HoogleQueries : 5,
|
||||||
PackageBrowser : 2,
|
PackageBrowser : 2,
|
||||||
TopLevelPages : 1
|
Documentation : 2,
|
||||||
|
Snapshots : 1,
|
||||||
|
TopLevelPages : 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
class WebsiteUser(HttpLocust):
|
class WebsiteUser(HttpLocust):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user