import time
import os
from locust import Locust, events, task, TaskSet
import RepoBenchmark
startdir = os.getcwd()
class Timer(object):
def __init__(self, request_type):
self.start_time = time.time()
self.request_type = request_type
def report_failure(self, name, e):
total_time = int((time.time() - self.start_time) * 1000)
events.request_failure.fire(request_type=self.request_type, name=name, response_time=total_time, exception=e)
def report_success(self, name, count):
total_time = int((time.time() - self.start_time) * 1000)
events.request_success.fire(request_type=self.request_type, name=name, response_time=total_time, response_length=count)
class P4RepoTasks(TaskSet):
min_wait = 1000
max_wait = 10000
request_type = "p4"
def __init__(self, *args, **kwargs):
super(P4RepoTasks, self).__init__(*args, **kwargs)
self.config = RepoBenchmark.readConfig(startdir)
self.min_wait = self.config["general"]["min_wait"]
self.max_wait = self.config["general"]["max_wait"]
def on_start(self):
name = "sync"
count = 0
t = Timer(self.request_type)
try:
self.rb = RepoBenchmark.P4Benchmark(startdir, self.config)
existed = self.rb.createWorkspace()
if not existed:
name = "init_sync"
count = self.rb.syncWorkspace()
except Exception as e:
t.report_failure(name, e)
else:
t.report_success(name, count)
@task(10)
def editFiles(self):
start_time = time.time()
name = "edit/add/delete"
count = 0
t = Timer(self.request_type)
try:
count = self.rb.basicFileActions()
except Exception as e:
t.report_failure(name, e)
else:
t.report_success(name, count)
name = "commit"
t = Timer(self.request_type)
try:
self.rb.commit()
except Exception as e:
t.report_failure(name, e)
else:
t.report_success(name, count)
class P4RepoTestLocust(Locust):
"""Will be imported and then run by locust"""
task_set = P4RepoTasks
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #6 | 24711 | Robert Cowham | Restructure and tidy up | ||
| #5 | 19799 | Robert Cowham | Refactored to put some common stuff in RepoLocust.py | ||
| #4 | 19798 | Robert Cowham |
Log exceptions. Refactor Svn as well |
||
| #3 | 19797 | Robert Cowham | Refactored timing | ||
| #2 | 19796 | Robert Cowham | Refactored into taskset | ||
| #1 | 19773 | Robert Cowham | Initial version of benchmark scripts |