Loading scripts/mint.sh +4 −1 Original line number Diff line number Diff line #!/bin/bash mkdir -p /tmp/mint docker run \ -e "SERVER_ENDPOINT=localhost:8014" \ -e "ACCESS_KEY=minioadmin" -e "SECRET_KEY=minioadmin" \ -e "ACCESS_KEY=minioadmin" \ -e "SECRET_KEY=minioadmin" \ --network host \ -v /tmp/mint:/mint/log \ minio/mint:edge scripts/report-mint.py 0 → 100755 +65 −0 Original line number Diff line number Diff line #!/usr/bin/env python3 from dataclasses import dataclass from typing import Any, Dict, Optional import json import sys from pprint import pprint from itertools import groupby # https://github.com/minio/mint#mint-log-format @dataclass class MintLog: name: str function: Optional[str] args: Optional[Dict[str, Any]] duration: int status: str alert: Optional[str] message: Optional[str] error: Optional[str] def from_json(x: Any) -> MintLog: return MintLog( name=x["name"], function=x.get("function"), args=x.get("args"), duration=x["duration"], status=x["status"], alert=x.get("alert"), message=x.get("message"), error=x.get("error"), ) if __name__ == "__main__": log_path = sys.argv[1] with open(log_path) as f: logs = [from_json(json.loads(line.strip())) for line in f.readlines()] for x in logs: if ":" in x.name: name, function = x.name.split(":") x.name = name.strip() x.function = function.strip() groups = {k: list(v) for k, v in groupby(logs, lambda x: x.name)} counts = {} for name, group in groups.items(): pass_count = len(list(x for x in group if x.status == "PASS")) fail_count = len(list(x for x in group if x.status == "FAIL")) na_count = len(list(x for x in group if x.status == "NA")) counts[name] = {"pass": pass_count, "fail": fail_count, "na": na_count} print(f"{name:<20} passed {pass_count:>3}, failed {fail_count:>3}, na {na_count:>3}") print() total_pass_count = sum(c["pass"] for c in counts.values()) total_fail_count = sum(c["fail"] for c in counts.values()) total_na_count = sum(c["na"] for c in counts.values()) name = "summary" print(f"{name:<20} passed {total_pass_count:>3}, failed {total_fail_count:>3}, na {total_na_count:>3}") # TODO: pass more tests assert counts["s3cmd"]["fail"] == 0 Loading
scripts/mint.sh +4 −1 Original line number Diff line number Diff line #!/bin/bash mkdir -p /tmp/mint docker run \ -e "SERVER_ENDPOINT=localhost:8014" \ -e "ACCESS_KEY=minioadmin" -e "SECRET_KEY=minioadmin" \ -e "ACCESS_KEY=minioadmin" \ -e "SECRET_KEY=minioadmin" \ --network host \ -v /tmp/mint:/mint/log \ minio/mint:edge
scripts/report-mint.py 0 → 100755 +65 −0 Original line number Diff line number Diff line #!/usr/bin/env python3 from dataclasses import dataclass from typing import Any, Dict, Optional import json import sys from pprint import pprint from itertools import groupby # https://github.com/minio/mint#mint-log-format @dataclass class MintLog: name: str function: Optional[str] args: Optional[Dict[str, Any]] duration: int status: str alert: Optional[str] message: Optional[str] error: Optional[str] def from_json(x: Any) -> MintLog: return MintLog( name=x["name"], function=x.get("function"), args=x.get("args"), duration=x["duration"], status=x["status"], alert=x.get("alert"), message=x.get("message"), error=x.get("error"), ) if __name__ == "__main__": log_path = sys.argv[1] with open(log_path) as f: logs = [from_json(json.loads(line.strip())) for line in f.readlines()] for x in logs: if ":" in x.name: name, function = x.name.split(":") x.name = name.strip() x.function = function.strip() groups = {k: list(v) for k, v in groupby(logs, lambda x: x.name)} counts = {} for name, group in groups.items(): pass_count = len(list(x for x in group if x.status == "PASS")) fail_count = len(list(x for x in group if x.status == "FAIL")) na_count = len(list(x for x in group if x.status == "NA")) counts[name] = {"pass": pass_count, "fail": fail_count, "na": na_count} print(f"{name:<20} passed {pass_count:>3}, failed {fail_count:>3}, na {na_count:>3}") print() total_pass_count = sum(c["pass"] for c in counts.values()) total_fail_count = sum(c["fail"] for c in counts.values()) total_na_count = sum(c["na"] for c in counts.values()) name = "summary" print(f"{name:<20} passed {total_pass_count:>3}, failed {total_fail_count:>3}, na {total_na_count:>3}") # TODO: pass more tests assert counts["s3cmd"]["fail"] == 0