def status(name, dashboard_url): """Get the status of a benchmark run, or all runs if no name is given""" loaded = setup_client_from_config() client = ApiClient(in_cluster=False, url=dashboard_url, load_config=not loaded) ret = client.get_runs() runs = ret.result().json() if name is None: # List all runs for run in runs: del run["job_id"] del run["job_metadata"] click.echo(tabulate(runs, headers="keys")) return try: run = next(r for r in runs if r["name"] == name) except StopIteration: click.echo("Run not found") return del run["job_id"] del run["job_metadata"] click.echo(tabulate([run], headers="keys")) loss = client.get_run_metrics(run["id"], metric_filter="val_global_loss @ 0", last_n=1) prec = client.get_run_metrics(run["id"], metric_filter="val_global_Prec@1 @ 0", last_n=1) loss = loss.result() prec = prec.result() if loss.status_code < 300 and "val_global_loss @ 0" in loss.json(): val = loss.json()["val_global_loss @ 0"][0] click.echo("Current Global Loss: {0:.2f} ({1})".format( float(val["value"]), val["date"])) else: click.echo("No Validation Loss Data yet") if prec.status_code < 300 and "val_global_Prec@1 @ 0" in prec.json(): val = prec.json()["val_global_Prec@1 @ 0"][0] click.echo("Current Global Precision: {0:.2f} ({1})".format( float(val["value"]), val["date"])) else: click.echo("No Validation Precision Data yet")
def test_get_run_metrics(mocker, kubernetes_api_client_node_port): mocker.patch("kubernetes.config.load_kube_config") rg = mocker.patch("concurrent.futures.ThreadPoolExecutor") rg.return_value.submit.return_value.result.return_value.json.return_value = "a" client = ApiClient(in_cluster=False) result = client.get_run_metrics("1", since=datetime.datetime.now(), summarize=100) assert result is not None assert result.result().json() == "a"