Commit.
This commit is contained in:
commit
93496bdd1d
|
@ -0,0 +1 @@
|
||||||
|
user,user
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
from locust import task, FastHttpUser, constant, between
|
||||||
|
from locust.main import main
|
||||||
|
import csv
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class CsvDataReader:
|
||||||
|
__point = 0
|
||||||
|
|
||||||
|
def __init__(self, filename: str, encoding=None):
|
||||||
|
filename = '%s%s%s/%s' % (os.path.dirname(os.path.dirname(__file__)), os.sep, 'Data', filename)
|
||||||
|
try:
|
||||||
|
open(filename).read(4096)
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
encoding = 'utf-8'
|
||||||
|
self.csv_data = [row for row in csv.reader(open(filename, encoding=encoding))]
|
||||||
|
self.csv_data_length = len(self.csv_data)
|
||||||
|
if self.csv_data_length == 0:
|
||||||
|
raise Exception('No data in file %s.' % filename)
|
||||||
|
|
||||||
|
def read(self):
|
||||||
|
data = self.csv_data[self.__point % self.csv_data_length]
|
||||||
|
self.__point += 1
|
||||||
|
return data
|
|
@ -0,0 +1,104 @@
|
||||||
|
from Library.LocustBasic import *
|
||||||
|
|
||||||
|
Account = CsvDataReader('accounts.csv')
|
||||||
|
|
||||||
|
|
||||||
|
class Test(FastHttpUser):
|
||||||
|
token = ''
|
||||||
|
wait_time = between(0.5, 0.8)
|
||||||
|
|
||||||
|
def on_start(self):
|
||||||
|
account = Account.read()
|
||||||
|
with self.client.request(
|
||||||
|
method='POST',
|
||||||
|
url='/api/user/login',
|
||||||
|
data={
|
||||||
|
'username': account[0],
|
||||||
|
'password': account[1]
|
||||||
|
},
|
||||||
|
catch_response=True
|
||||||
|
) as response:
|
||||||
|
pass
|
||||||
|
if response.status_code == 200 and response.json()['code'] == 0:
|
||||||
|
self.token = response.json()['data']['token']
|
||||||
|
else:
|
||||||
|
response.failure(Exception('Login failed.'))
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
@task(30)
|
||||||
|
def api_task(self):
|
||||||
|
with self.client.request(
|
||||||
|
method='GET',
|
||||||
|
url='/api/task?page_size=20&page=1&id=&protocol=&name=&tag=&host_id=&status=',
|
||||||
|
headers={
|
||||||
|
'Auth-Token': self.token
|
||||||
|
},
|
||||||
|
catch_response=True
|
||||||
|
) as response:
|
||||||
|
if response.status_code == 200 and response.json()['code'] == 0:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
response.failure(Exception('%s: %.64s' % (response.status_code, response.text)))
|
||||||
|
|
||||||
|
@task(30)
|
||||||
|
def api_logs(self):
|
||||||
|
with self.client.request(
|
||||||
|
method='GET',
|
||||||
|
url='/api/task/log?page_size=20&page=1&task_id=&protocol=&status=',
|
||||||
|
headers={
|
||||||
|
'Auth-Token': self.token
|
||||||
|
},
|
||||||
|
catch_response=True
|
||||||
|
) as response:
|
||||||
|
if response.status_code == 200 and response.json()['code'] == 0:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
response.failure(Exception('%s: %.64s' % (response.status_code, response.text)))
|
||||||
|
|
||||||
|
@task(25)
|
||||||
|
def api_host(self):
|
||||||
|
with self.client.request(
|
||||||
|
method='GET',
|
||||||
|
url='/api/host?page_size=20&page=1&id=&name=&alias=',
|
||||||
|
headers={
|
||||||
|
'Auth-Token': self.token
|
||||||
|
},
|
||||||
|
catch_response=True
|
||||||
|
) as response:
|
||||||
|
if response.status_code == 200 and response.json()['code'] == 0:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
response.failure(Exception('%s: %.64s' % (response.status_code, response.text)))
|
||||||
|
|
||||||
|
@task(15)
|
||||||
|
def api_user(self):
|
||||||
|
with self.client.request(
|
||||||
|
method='GET',
|
||||||
|
url='/api/user',
|
||||||
|
headers={
|
||||||
|
'Auth-Token': self.token
|
||||||
|
},
|
||||||
|
catch_response=True
|
||||||
|
) as response:
|
||||||
|
if response.status_code == 200 and response.json()['code'] == 0:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
response.failure(Exception('%s: %.64s' % (response.status_code, response.text)))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# Locust file, default self.
|
||||||
|
sys.argv.append('--locustfile=%s' % __file__)
|
||||||
|
# Host to load test.
|
||||||
|
sys.argv.append('--host=http://fanscloud.net:5920')
|
||||||
|
# Host to bind the web interface to. Defaults to '*' (all interfaces)
|
||||||
|
sys.argv.append('--web-host=127.0.0.1')
|
||||||
|
# Peak number of concurrent Locust users.
|
||||||
|
# Primarily used together with --headless or --autostart.
|
||||||
|
sys.argv.append('--users=250')
|
||||||
|
# Rate to spawn users at (users per second).
|
||||||
|
# Primarily used together with --headless or --autostart
|
||||||
|
sys.argv.append('--spawn-rate=10')
|
||||||
|
# Primarily used together with --headless or --autostart
|
||||||
|
sys.argv.append('--run-time=3m')
|
||||||
|
sys.exit(main())
|
Binary file not shown.
Loading…
Reference in New Issue