def coverage_for_path(path="", changeset=None, repository=DEFAULT_REPOSITORY): """ Aggregate coverage for a path, regardless of its type: * file, gives its coverage percent * directory, gives coverage percent for its direct sub elements files and folders (recursive average) """ gcp = load_cache() if gcp is None: logger.error("No GCP cache available") abort(500) try: if changeset: # Find closest report matching this changeset changeset, _ = gcp.find_closest_report(repository, changeset) else: # Fallback to latest report changeset, _ = gcp.find_report(repository) except Exception as e: logger.warn("Failed to retrieve report: {}".format(e)) abort(404) # Load tests data from GCP try: return gcp.get_coverage(repository, changeset, path) except Exception as e: logger.warn( "Failed to load coverage", repo=repository, changeset=changeset, path=path, error=str(e), ) abort(400)
def coverage_history( repository=DEFAULT_REPOSITORY, path="", start=None, end=None, platform=DEFAULT_FILTER, suite=DEFAULT_FILTER, ): """ List overall coverage from ingested reports over a period of time """ gcp = load_cache() if gcp is None: logger.error("No GCP cache available") abort(500) try: return gcp.get_history(repository, path, start, end, platform, suite) except Exception as e: logger.warn( "Failed to load history", repo=repository, path=path, start=start, end=end, error=str(e), ) abort(400)
def coverage_latest(repository=DEFAULT_REPOSITORY): """ List the last 10 reports available on the server """ gcp = load_cache() if gcp is None: logger.error("No GCP cache available") abort(500) try: return [{ "revision": revision, "push": push_id } for revision, push_id in gcp.list_reports(repository, 10)] except Exception as e: logger.warn("Failed to retrieve latest reports: {}".format(e)) abort(404)
def coverage_filters(repository=DEFAULT_REPOSITORY): """ List all available filters for that repository """ gcp = load_cache() if gcp is None: logger.error("No GCP cache available") abort(500) try: return { "platforms": gcp.get_platforms(repository), "suites": gcp.get_suites(repository), } except Exception as e: logger.warn("Failed to load filters", repo=repository, error=str(e)) abort(400)