def get_testcase_results_csv(self, job_id, suite_name, case_name): """ Name ---- `get_testcase_results_csv` (`job_id`, `suite_name`, `case_name`) Description ----------- Get the test case results of given job id, suite and test case name in CSV format. Arguments --------- `job_id`: string Job id for which the results are required. `suite_name`: string Name of the suite for which the results are required. `case_name`: string Name of the test case for which the results are required. Return value ------------ This function returns an XML-RPC structures of test case results in CSV format, provided the user is authenticated with an username and token. """ self._authenticate() if not job_id: raise xmlrpclib.Fault(400, "Bad request: TestJob id was not " "specified.") try: job = TestJob.get_by_job_number(job_id) if not job.can_view(self.user): raise xmlrpclib.Fault( 401, "Permission denied for user to job %s" % job_id) output = io.BytesIO() writer = csv.DictWriter( output, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() test_suite = job.testsuite_set.get(name=suite_name) test_case = test_suite.testcase_set.get(name=case_name) writer.writerow(export_testcase(test_case)) except TestJob.DoesNotExist: raise xmlrpclib.Fault(404, "Specified job not found.") except TestSuite.DoesNotExist: raise xmlrpclib.Fault(404, "Specified test suite not found.") except TestCase.DoesNotExist: raise xmlrpclib.Fault(404, "Specified test case not found.") return output.getvalue()
def testjob_stream(suites, pseudo_buffer): fieldnames = testcase_export_fields() writer = csv.DictWriter(pseudo_buffer, fieldnames=fieldnames) # writer.writeheader does not return the string while writer.writerow # does. Copy writeheader code from csv.py and yield the value. yield writer.writerow(dict(zip(fieldnames, fieldnames))) for test_suite in suites: for test_case in test_suite.testcase_set.all(): yield writer.writerow(export_testcase(test_case))
def test_export(self): job = TestJob.from_yaml_and_user( self.factory.make_job_yaml(), self.user) test_suite = TestSuite.objects.get_or_create(name='lava', job=job)[0] test_case = TestCase( name='name', suite=test_suite, result=TestCase.RESULT_FAIL ) self.assertTrue( any( map(lambda v: v in testcase_export_fields(), export_testcase(test_case).keys()) ) )
def suite_csv(request, job, pk): job = get_object_or_404(TestJob, pk=job) test_suite = get_object_or_404(TestSuite, name=pk, job=job) response = HttpResponse(content_type='text/csv') filename = "lava_%s.csv" % test_suite.name response['Content-Disposition'] = 'attachment; filename="%s"' % filename writer = csv.DictWriter( response, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() for row in test_suite.test_cases.all(): writer.writerow(export_testcase(row)) return response
def testjob_csv(request, job): job = get_object_or_404(TestJob, pk=job) check_request_auth(request, job) response = HttpResponse(content_type='text/csv') filename = "lava_%s.csv" % job.id response['Content-Disposition'] = 'attachment; filename="%s"' % filename writer = csv.DictWriter( response, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() for test_suite in job.testsuite_set.all(): for row in test_suite.testcase_set.all(): writer.writerow(export_testcase(row)) return response
def get_testjob_results_csv(self, job_id): """ Name ---- `get_testjob_results_csv` (`job_id`) Description ----------- Get the job results of given job id in CSV format. Arguments --------- `job_id`: string Job id for which the results are required. Return value ------------ This function returns an XML-RPC structures of job results in CSV format, provided the user is authenticated with an username and token. """ self._authenticate() if not job_id: raise xmlrpclib.Fault(400, "Bad request: TestJob id was not " "specified.") try: job = TestJob.get_by_job_number(job_id) if not job.can_view(self.user): raise xmlrpclib.Fault( 401, "Permission denied for user to job %s" % job_id) output = io.BytesIO() writer = csv.DictWriter( output, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() for test_suite in job.testsuite_set.all(): for row in test_suite.testcase_set.all(): writer.writerow(export_testcase(row)) except TestJob.DoesNotExist: raise xmlrpclib.Fault(404, "Specified job not found.") return output.getvalue()
def suite_csv(request, job, pk): job = get_object_or_404(TestJob, pk=job) check_request_auth(request, job) test_suite = get_object_or_404(TestSuite, name=pk, job=job) querydict = request.GET offset = querydict.get('offset', default=None) limit = querydict.get('limit', default=None) response = HttpResponse(content_type='text/csv') filename = "lava_%s.csv" % test_suite.name response['Content-Disposition'] = 'attachment; filename="%s"' % filename writer = csv.DictWriter(response, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() testcases = get_testcases_with_limit(test_suite, limit, offset) for row in testcases: writer.writerow(export_testcase(row)) return response
def suite_csv(request, job, pk): job = get_object_or_404(TestJob, pk=job) check_request_auth(request, job) test_suite = get_object_or_404(TestSuite, name=pk, job=job) querydict = request.GET offset = querydict.get('offset', default=None) limit = querydict.get('limit', default=None) response = HttpResponse(content_type='text/csv') filename = "lava_%s.csv" % test_suite.name response['Content-Disposition'] = 'attachment; filename="%s"' % filename writer = csv.DictWriter( response, quoting=csv.QUOTE_ALL, extrasaction='ignore', fieldnames=testcase_export_fields()) writer.writeheader() testcases = get_testcases_with_limit(test_suite, limit, offset) for row in testcases: writer.writerow(export_testcase(row)) return response