Beispiel #1
0
def get_results(request):
    results = TestResult.objects.extra(
        select={
            "http_net": "http_errors_perc || '/' || net_errors_perc",
            "duration": "to_char(dt_finish - dt_start, 'HH24:MI:SS')",
            "dt_finish":
            "to_char(dt_finish at time zone 'MSK', 'YYYY-MM-DD HH24:MI:SS')",
            "comment": "comments"
        })
    results = results.values("id", "test_name", "target", "version", "rps",
                             "q99", "q90", "q50", "graph_url", "generator",
                             "dt_finish", "session_id", "scenario_path",
                             "group", "test_status", "ticket_id", "user",
                             "duration", "http_net", "comment")
    results = user_filter(request, results)
    sort_param = request_get_value(request, "sort")
    if sort_param:
        order = request_get_value(request, "order")
        if not order:
            order = "asc"
        if order == "asc":
            results = results.order_by(sort_param)
        else:
            results = results.order_by("-%s" % sort_param)
    query = """SELECT tmp.id, STRING_AGG(tmp.name, ' ') gen_type_list FROM
                        ( SELECT trgt.testresult_id id, gt.name FROM salts_testresult_generator_types trgt
                          JOIN salts_generatortype gt ON trgt.generatortype_id = gt.id
                          GROUP BY testresult_id, name
                          ORDER BY testresult_id, name
                        ) tmp
                GROUP BY id
            """
    gen_types_results = TestResult.objects.raw(query)
    gen_types = {}
    for r in gen_types_results:
        gen_types[r.id] = r.gen_type_list
    results = list(results)
    for r in results:
        if r["id"] in gen_types:
            r["gen_type_list"] = gen_types[r["id"]]
        else:
            r["gen_type_list"] = ""
        r["generator"] = "%s / %s" % (r["generator"], r["gen_type_list"])
        r['edit_url'] = edit_page_url(request, r['user'])

    offset = request_get_value(request, "offset")
    limit = request_get_value(request, "limit")

    response_dict = {}
    response_dict["total"] = len(results)
    if offset and limit:
        offset = int(offset)
        limit = int(limit)
        results = results[offset:offset + limit]
    response_dict["rows"] = results

    response = HttpResponse(json.dumps(response_dict),
                            content_type="application/json")
    add_version(response)
    return response
Beispiel #2
0
 def get(self, request):
     response = None
     if request_get_value(request, 'a'):
         response = self.get_test_status(request)
     else:
         context = generate_context(request)
         response = render_to_response('run_test.html', context)
     add_version(response)
     return response
Beispiel #3
0
def get_tank_status(request):
    log.info("get_tank_status: request.GET: %s" % request.GET)
    tank_id = request.GET.get('tank_id')
    if tank_id:
        tanks = Tank.objects.filter(id=tank_id)
    else:
        tanks = Tank.objects.all()
    results = []
    for t in tanks:
        shooting = t.shooting_set.exclude(
            start__isnull=True).order_by('-start').first()
        if not shooting:
            continue
        username = ''
        if shooting.user:
            if shooting.user.username == 'ltbot':
                username = shooting.alt_name  # временно, для консольных
                # тестов, чтобы обойти
                # аутентификацию
            else:
                username = shooting.user.username
        scenario_path = shooting.scenario.scenario_path
        values = {'id': t.id, 'host': t.host,
                  'username': username,
                  'gitlab_url': '%s%s' % (LT_GITLAB,
                                          shooting.scenario.scenario_path),
                  'scenario_name': \
                    ini_manager.get_scenario_name(scenario_path),
                  'status': shooting.status,
                  'countdown': remainedtime(shooting),
                  'shooting_id': shooting.id,
                  'ticket_id': shooting.ticket_id}
        port = tank_manager.read_from_lock(t.id, 'web_console_port')
        if port:
            values['webconsole'] = "%s:%s" % (t.host, port)
        if shooting.ticket_id:
            values['ticket_url'] = '%s%s' % (LT_JIRA, shooting.ticket_id)
        if shooting.status in ['F', 'I']:
            tr = TestResult.objects.filter(session_id=shooting.session_id)
            if tr:
                values['test_result'] = tr[0].id
        results.append(values)
    sort_param = request_get_value(request, 'sort')
    if sort_param:
        order = request_get_value(request, 'order')
        if not order:
            order = 'asc'
        reverse = order == 'desc'
        results = sorted(results, key=itemgetter('id'), reverse=reverse)

    response_dict = {}
    response_dict['total'] = len(results)
    response_dict['rows'] = results
    response = HttpResponse(json.dumps(response_dict),
                            content_type='application/json')
    add_version(response)
    return response
Beispiel #4
0
def salts_logout(request):
    context = {}
    context['info'] = u"Вы успешно вышли"
    response = views.logout(request,
                            template_name="registration/login.html",
                            extra_context=context)
    response = views.login(request,
                           template_name="registration/login.html",
                           extra_context=context)
    add_version(response)
    return response
Beispiel #5
0
def show_trends_page(request):
    context = generate_context(request)
    response = render_to_response("graph_trends.html", context)
    add_version(response)
    return response
Beispiel #6
0
def tank_monitoring(request):
    context = generate_context(request)
    response = render_to_response('tank_monitoring.html', context)
    add_version(response)
    return response
Beispiel #7
0
def show_results_page(request):
    context = generate_context(request)
    response = render_to_response('testresult_list.html', context)
    add_version(response)
    return response