Skip to content

Instantly share code, notes, and snippets.

@nseinlet
Created April 3, 2019 08:51
Show Gist options
  • Save nseinlet/dd28e7788e30adefbfab32b94b214eb3 to your computer and use it in GitHub Desktop.
Save nseinlet/dd28e7788e30adefbfab32b94b214eb3 to your computer and use it in GitHub Desktop.
odoo logs 2 locust load test
#!/usr/bin/python3
import sys
# grep -v /longpolling openerp.log.1 | grep 127.0.0.1 | grep get | grep -v /event/get_country_event_list | grep -v /im_livechat/ | grep -v trial_do |grep -v /static/ | grep -v assets | grep -v button_immediate | grep -v /web | grep -v /xmlrpc/ | grep -v /yodlee/ | grep -v /plaid/ | awk ' { print $14 }' | sort | uniq -c | sort -nr > urls20190403.log
if __name__ == '__main__':
if len(sys.argv) < 6:
print("Usage : logs2taskset.py host min_wait max_wait logfile taskfile")
else:
logfile = sys.argv[4]
taskfile = sys.argv[5]
task_num = 0
with open(logfile, 'r') as my_log:
with open(taskfile, 'w') as my_task:
my_task.write("""
# -*- coding: utf-8 -*-
from locust import HttpLocust, TaskSet, task
from requests.adapters import HTTPAdapter
class MyTaskSet(TaskSet):
""")
for line in my_log:
l = [r.replace("\n", "").replace("\\", "").replace('"', '""') for r in line.split(" ") if r]
my_task.write("""
@task(%s)
def task_%s(self):
self.client.request("get", "%s")
""" % (l[0], task_num, l[1]))
task_num += 1
my_task.write("""
class MyLocust(HttpLocust):
host = "%s"
task_set = MyTaskSet
min_wait = %s
max_wait = %s
""" % (sys.argv[1], sys.argv[2], sys.argv[3]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment