Beispiel #1
0
def execute_regressiontest(request, response, tool, scheduler):
    values = unpack_regression_values(request)

    if isinstance(values, list):
        response['missing'] = values
        return response

    request.GET._mutable = True

    response1 = RESPONSE.copy()
    request1 = request
    response2 = RESPONSE.copy()
    request2 = request

    request1.GET._mutable = True
    request2.GET._mutable = True

    request1.GET['metric'] = values['metric']
    request2.GET['metric'] = values['metric']

    if 'start_first' in values and 'start_second' in values:
        now = dt.datetime.now()
        d1 = dt.datetime.strptime(values['start_first'], '%d-%m-%Y|%H:%M:%S')
        d2 = dt.datetime.strptime(values['start_second'], '%d-%m-%Y|%H:%M:%S')

        if d1 > now and d2 > now:
            request1.GET['delay'] = (d1 - now).total_seconds()
            request2.GET['delay'] = (d2 - now).total_seconds()
        else:
            response['error'] = 'One or both starting times lie in the past.'

    elif 'domain_first' in values and 'domain_second' in values:
        request1.GET['domain'] = values['domain_first']
        request2.GET['domain'] = values['domain_second']

    if tool == 'Locust':
        response1 = execute_locust(request1, response1, scheduler)
        response2 = execute_locust(request2, response2, scheduler)
    else:
        response1 = execute_jmeter(request1, response1, scheduler)
        response2 = execute_jmeter(request2, response2, scheduler)

    if "missing" in response1 or 'missing' in response2:
        response['error'] = 'Something went wrong executing your tests.'
    else:
        response['tool'] = response1['tool']
        response['config'] = response1['config']
        response['hash1'] = response1['hash']
        response['hash2'] = response2['hash']

    return response
Beispiel #2
0
def data(request, api='', _id=''):
    report = LoadtestReport(request, RESPONSE.copy(), api, _id, None)
    response = report.collect_data()

    if api:
        return HttpResponse(response)

    return render(request, 'Presenter/' + report.data_template, response)
Beispiel #3
0
def tasks(request, api=None):
    user = User(request)
    response = RESPONSE.copy()
    response['tasks'] = {}

    for task in user.get_tasks():
        if user.valid(task):
            response['tasks'][task] = user.config['tasks'][task]['status']

    return render(request, 'Analyzer/Tasks.html', response)
Beispiel #4
0
def data_compare(request, api='', _id=''):
    id1, id2 = _id.split('-')

    report = CompareReport(request, RESPONSE.copy(), api, id1, id2, None)
    response = report.collect_data()

    if api:
        return HttpResponse(response)

    return render(request, 'Presenter/' + report.data_template, response)
Beispiel #5
0
def my(request, what=''):
    user = User(request)
    response = RESPONSE.copy()

    if what == 'tasks':
        response['tasks'] = user.get_tasks()

    elif what == 'reports':
        response['reports'] = 'TODO, nothing to see'

    response['hash'] = user.hash

    return render(request, 'My.html', response)
Beispiel #6
0
def regressiontest(request, tool=None, api=None):
    response = RESPONSE.copy()

    response = execute_regressiontest(request, response, tool, scheduler)

    if api:
        if "missing" not in response:
            scheduler.add_task_callback(response['hash1'],
                                        request.GET['callback1'])
            scheduler.add_task_callback(response['hash2'],
                                        request.GET['callback2'])

        return HttpResponse(dump(response))

    return render(request, 'Analyzer/AnalysisRegression.html', response)
Beispiel #7
0
def report_id(request, api='', _id='', export=None):
    report = LoadtestReport(request, RESPONSE.copy(), api, _id, export)

    response, zipped = report.collect_report()

    if api:
        return HttpResponse(report.collect_report_result())

    if export == "export":
        response = HttpResponse(zipped[1],
                                content_type='application/force-download')
        response['Content-Disposition'] = 'attachment; filename=' + zipped[0]
        return response

    return render(request, 'Presenter/' + report.report_template, response)
Beispiel #8
0
def loadtest(request, tool=None, api=None):
    response = RESPONSE.copy()

    if tool == "locust":
        response = execute_locust(request, response, scheduler)
    else:
        response = execute_jmeter(request, response, scheduler)

    if api:
        if "missing" not in response:
            scheduler.add_task_callback(response['hash'],
                                        request.GET['callback'])

        return HttpResponse(dump(response))

    return render(request, 'Analyzer/AnalysisLoadtest.html', response)
Beispiel #9
0
def stresstest(request, tool=None, api=None):
    response = RESPONSE.copy()

    return HttpResponse('TODO')