def make_zeus_testrun_report(env, **kwargs):
    """Builds entities for Zeus-testrun reports in a database.

       Used ``environ`` keys:
           * ``tests``
           * ``test_results``
           * ``status``
           * ``score``
           * ``compilation_result``
           * ``compilation_message``
           * ``submission_id``

       Produced ``environ`` keys:
           * ``report_id``: id of the produced
             :class:`~oioioi.contests.models.SubmissionReport`
    """
    _submission, submission_report = _make_base_report(env, 'TESTRUN')

    if env['compilation_result'] != 'OK':
        return env

    test_name = env['tests'].keys()[0]
    test = env['tests'][test_name]
    test_result = env['test_results'][test_name]
    zeus_result = test_result['zeus_test_result']

    comment = test_result.get('result_string', '')
    if comment.lower() == 'ok':  # Annoying
        comment = ''

    testrun_report = ZeusTestRunReport(submission_report=submission_report)
    testrun_report.status = env['status']
    testrun_report.comment = \
        slice_str(comment, ZeusTestRunReport._meta
        .get_field('comment').max_length)
    testrun_report.time_used = test_result['time_used']
    testrun_report.test_time_limit = test.get('exec_time_limit')
    testrun_report.full_out_size = zeus_result['stdout_size']
    # The server to download from: submission.problem_instance.problem
    testrun_report.full_out_handle = zeus_result['stdout_uid']
    # Output truncated to first 10kB
    testrun_report.output_file.save('out', ContentFile(zeus_result['stdout']))
    testrun_report.save()

    return env
Пример #2
0
def make_zeus_testrun_report(env, **kwargs):
    """Builds entities for Zeus-testrun reports in a database.

       Used ``environ`` keys:
           * ``tests``
           * ``test_results``
           * ``status``
           * ``score``
           * ``compilation_result``
           * ``compilation_message``
           * ``submission_id``

       Produced ``environ`` keys:
           * ``report_id``: id of the produced
             :class:`~oioioi.contests.models.SubmissionReport`
    """
    _submission, submission_report = _make_base_report(env, 'TESTRUN')

    if env['compilation_result'] != 'OK':
        return env

    test_name = env['tests'].keys()[0]
    test = env['tests'][test_name]
    test_result = env['test_results'][test_name]
    zeus_result = test_result['zeus_test_result']

    comment = test_result.get('result_string', '')
    if comment.lower() == 'ok':  # Annoying
        comment = ''

    testrun_report = ZeusTestRunReport(submission_report=submission_report)
    testrun_report.status = env['status']
    testrun_report.comment = \
        slice_str(comment, ZeusTestRunReport._meta
        .get_field('comment').max_length)
    testrun_report.time_used = test_result['time_used']
    testrun_report.test_time_limit = test.get('exec_time_limit')
    testrun_report.full_out_size = zeus_result['stdout_size']
    # The server to download from: submission.problem_instance.problem
    testrun_report.full_out_handle = zeus_result['stdout_uid']
    # Output truncated to first 10kB
    testrun_report.output_file.save('out', ContentFile(zeus_result['stdout']))
    testrun_report.save()
    return env
Пример #3
0
def make_zeus_testrun_report(env, **kwargs):
    """Builds entities for Zeus-testrun reports in a database.

       Used ``environ`` keys:
           * ``tests``
           * ``test_results``
           * ``status``
           * ``score``
           * ``compilation_result``
           * ``compilation_message``
           * ``submission_id``

       Produced ``environ`` keys:
           * ``report_id``: id of the produced
             :class:`~oioioi.contests.models.SubmissionReport`
    """
    _submission, submission_report = _make_base_report(env, "TESTRUN")

    if env["compilation_result"] != "OK":
        return env

    test_name = env["tests"].keys()[0]
    test = env["tests"][test_name]
    test_result = env["test_results"][test_name]
    zeus_result = test_result["zeus_test_result"]

    comment = test_result.get("result_string", "")
    if comment.lower() == "ok":  # Annoying
        comment = ""

    testrun_report = ZeusTestRunReport(submission_report=submission_report)
    testrun_report.status = env["status"]
    testrun_report.comment = Truncator(comment).chars(ZeusTestRunReport._meta.get_field("comment").max_length)
    testrun_report.time_used = test_result["time_used"]
    testrun_report.test_time_limit = test.get("exec_time_limit")
    testrun_report.full_out_size = zeus_result["stdout_size"]
    # The server to download from: submission.problem_instance.problem
    testrun_report.full_out_handle = zeus_result["stdout_uid"]
    # Output truncated to first 10kB
    testrun_report.output_file.save("out", ContentFile(zeus_result["stdout"]))
    testrun_report.save()
    return env
def make_report(env, **kwargs):
    """Builds entities for testrun reports in a database.

       Used ``environ`` keys:
           * ``tests``
           * ``test_results``
           * ``status``
           * ``score``
           * ``compilation_result``
           * ``compilation_message``

       Produced ``environ`` keys:
           * ``report_id``: id of the produced
             :class:`~oioioi.contests.models.SubmissionReport`
    """
    _submission, submission_report = _make_base_report(env, 'TESTRUN')

    if env['compilation_result'] != 'OK':
        return env

    test = env['tests']['test']
    test_result = env['test_results']['test']

    comment = test_result.get('result_string', '')
    if comment.lower() == 'ok':  # Annoying
        comment = ''

    testrun_report = TestRunReport(submission_report=submission_report)
    testrun_report.status = env['status']
    testrun_report.comment = \
            slice_str(comment, TestRunReport._meta
                      .get_field('comment').max_length)
    testrun_report.time_used = test_result['time_used']
    testrun_report.test_time_limit = test.get('exec_time_limit')
    testrun_report.output_file = filetracker_to_django_file(
        test_result['out_file'])
    testrun_report.save()

    return env
Пример #5
0
def make_report(env, **kwargs):
    """Builds entities for testrun reports in a database.

       Used ``environ`` keys:
           * ``tests``
           * ``test_results``
           * ``status``
           * ``score``
           * ``compilation_result``
           * ``compilation_message``

       Produced ``environ`` keys:
           * ``report_id``: id of the produced
             :class:`~oioioi.contests.models.SubmissionReport`
    """
    submission, submission_report = _make_base_report(env, 'TESTRUN')

    if env['compilation_result'] != 'OK':
        return env

    test = env['tests']['test']
    test_result = env['test_results']['test']

    comment = test_result.get('result_string', '')
    if comment.lower() == 'ok':  # Annoying
        comment = ''

    testrun_report = TestRunReport(submission_report=submission_report)
    testrun_report.status = env['status']
    testrun_report.comment = \
            slice_str(comment, TestRunReport._meta
                      .get_field('comment').max_length)
    testrun_report.time_used = test_result['time_used']
    testrun_report.test_time_limit = test.get('exec_time_limit')
    testrun_report.output_file = filetracker_to_django_file(
                                                    test_result['out_file'])
    testrun_report.save()

    return env