def get(self, build: Build): """ Return a list of test cases for a given build. """ job_ids = db.session.query(Job.id).filter(Job.build_id == build.id).subquery() query = db.session.query( TestCase.hash, TestCase.name, array_agg_row( TestCase.id, TestCase.job_id, TestCase.duration, TestCase.result ).label( "runs" ), ).filter( TestCase.job_id.in_(job_ids) ).group_by( TestCase.hash, TestCase.name ) result = request.args.get("result") if result: try: query = query.filter(TestCase.result == getattr(Result, result)) except AttributeError: raise NotImplementedError query = query.order_by( ( array_agg(TestCase.result).label("results").contains([Result.failed]) ).desc(), TestCase.name.asc(), ) return self.paginate_with_schema(testcases_schema, query)
def get(self, build: Build): """ Return a list of failure reasons for a given build. """ query = (db.session.query( FailureReason.reason, array_agg_row(FailureReason.id, FailureReason.job_id).label("runs"), ).filter(FailureReason.build_id == build.id).group_by( FailureReason.reason)) query = query.order_by(FailureReason.reason.asc()) return self.paginate_with_schema(failurereasons_schema, query)
def get(self, revision: Revision): """ Return a list of test cases for a given revision. """ build = fetch_build_for_revision(revision) if not build: return self.respond(status=404) build_ids = [original.id for original in build.original] job_query = db.session.query(Job.id).filter( Job.build_id.in_(build_ids)) result = request.args.get("allowed_failures") if result == "false": job_query = job_query.filter(Job.allow_failure == False) # NOQA job_ids = job_query.subquery() query = (db.session.query( TestCase.hash, TestCase.name, array_agg_row(TestCase.id, TestCase.job_id, TestCase.duration, TestCase.result).label("runs"), ).filter(TestCase.job_id.in_(job_ids)).group_by( TestCase.hash, TestCase.name)) result = request.args.get("result") if result: try: query = query.filter( TestCase.result == getattr(Result, result)) except AttributeError: raise NotImplementedError query = query.order_by( (array_agg(TestCase.result).label("results").contains( [Result.failed])).desc(), TestCase.name.asc(), ) schema = AggregateTestCaseSummarySchema(many=True, strict=True, exclude=("build", )) return self.paginate_with_schema(schema, query)
def get(self, revision: Revision): """ Return a list of failure reasons for a given revision. """ build = fetch_build_for_revision(revision) if not build: return self.respond(status=404) build_ids = [original.id for original in build.original] query = (db.session.query( FailureReason.reason, array_agg_row(FailureReason.id, FailureReason.job_id).label("runs"), ).filter(FailureReason.build_id.in_(build_ids)).group_by( FailureReason.reason)) query = query.order_by(FailureReason.reason.asc()) return self.paginate_with_schema(failurereasons_schema, query)
def get(self, build: Build): """ Return a list of test cases for a given build. """ job_query = db.session.query(Job.id).filter(Job.build_id == build.id) result = request.args.get("allowed_failures") if result == "false": job_query = job_query.filter(Job.allow_failure == False) # NOQA job_ids = job_query.subquery() query = ( db.session.query( TestCase.hash, TestCase.name, array_agg_row( TestCase.id, TestCase.job_id, TestCase.duration, TestCase.result ).label("runs"), ) .filter(TestCase.job_id.in_(job_ids)) .group_by(TestCase.hash, TestCase.name) ) result = request.args.get("result") if result: try: query = query.filter(TestCase.result == getattr(Result, result)) except AttributeError: raise NotImplementedError query = query.order_by( ( array_agg(TestCase.result).label("results").contains([Result.failed]) ).desc(), TestCase.name.asc(), ) schema = AggregateTestCaseSummarySchema( many=True, strict=True, context={"build": build} ) return self.paginate_with_schema(schema, query)
def get(self, build: Build): """ Return a list of failure reasons for a given build. """ job_query = db.session.query(Job.id).filter(Job.build_id == build.id) result = request.args.get("allowed_failures") if result == "false": job_query = job_query.filter(Job.allow_failure == False) # NOQA job_ids = job_query.subquery() query = (db.session.query( FailureReason.reason, array_agg_row(FailureReason.id, FailureReason.job_id).label("runs"), ).filter(FailureReason.job_id.in_(job_ids)).group_by( FailureReason.reason)) query = query.order_by(FailureReason.reason.asc()) return self.paginate_with_schema(failurereasons_schema, query)
def get(self, repo: Repository, test_hash: str): query = ( db.session.query( Build.id.label("build_id"), Build.number, TestCase.hash, TestCase.name, array_agg_row(TestCase.id, TestCase.job_id, TestCase.duration, TestCase.result).label("runs"), ) # .join(Job, Job.id == TestCase.job_id) # .join(Build, Build.id == Job.build_id) .filter( TestCase.hash == test_hash, TestCase.repository_id == repo.id, Build.id == Job.build_id, Job.id == TestCase.job_id, ).group_by(Build.id, Build.number, TestCase.hash, TestCase.name)) result = request.args.get("result") if result: try: query = query.filter( TestCase.result == getattr(Result, result)) except AttributeError: raise NotImplementedError query = query.order_by( Build.number.desc(), (array_agg(TestCase.result).label("results").contains( [Result.failed])).desc(), TestCase.name.asc(), ) schema = AggregateTestCaseSummarySchema(many=True, strict=True, context={"repo": repo}) return self.paginate_with_schema(schema, query)