Best Python code snippet using localstack_python
metric_aggregator.py
Source:metric_aggregator.py
...117 output += f"<details><summary>{operation_tested/operation_counter*100:.2f}% test coverage</summary>\n\n{tmp}\n</details>\n"118 with open(file_name, "a") as fd:119 fd.write(f"{output}\n")120 output = ""121def _init_service_metric_counter() -> Dict:122 metric_recorder = {}123 from localstack.aws.spec import load_service124 for s, provider in SERVICE_PLUGINS.api_provider_specs.items():125 try:126 service = load_service(s)127 ops = {}128 service_attributes = {"pro": "pro" in provider, "community": "default" in provider}129 ops["service_attributes"] = service_attributes130 for op in service.operation_names:131 attributes = {}132 attributes["invoked"] = 0133 attributes["aws_validated"] = False134 attributes["snapshot"] = False135 if hasattr(service.operation_model(op).input_shape, "members"):136 params = {}137 for n in service.operation_model(op).input_shape.members:138 params[n] = 0139 attributes["parameters"] = params140 if hasattr(service.operation_model(op), "error_shapes"):141 exceptions = {}142 for e in service.operation_model(op).error_shapes:143 exceptions[e.name] = 0144 attributes["errors"] = exceptions145 ops[op] = attributes146 metric_recorder[s] = ops147 except Exception:148 LOG.debug(f"cannot load service '{s}'")149 return metric_recorder150def print_usage():151 print("missing argument: directory")152 print("usage: python metric_aggregator.py <dir-to-raw-csv-metric> [amd64|arch64]")153def write_json(file_name: str, metric_dict: dict):154 with open(file_name, "w") as fd:155 fd.write(json.dumps(metric_dict, indent=2, sort_keys=True))156def _print_diff(metric_recorder_internal, metric_recorder_external):157 for key, val in metric_recorder_internal.items():158 for subkey, val in val.items():159 if isinstance(val, dict) and val.get("invoked"):160 if val["invoked"] > 0 and not metric_recorder_external[key][subkey]["invoked"]:161 print(f"found invocation mismatch: {key}.{subkey}")162def append_row_to_raw_collection(collection_raw_csv_file_name, row, arch):163 with open(collection_raw_csv_file_name, "a") as fd:164 writer = csv.writer(fd)165 row.append(arch)166 writer.writerow(row)167def aggregate_recorded_raw_data(168 base_dir: str, collection_raw_csv: Optional[str] = None, collect_for_arch: Optional[str] = ""169) -> dict:170 pathlist = Path(base_dir).rglob("metric-report-raw-data-*.csv")171 recorded = _init_service_metric_counter()172 for path in pathlist:173 print(f"checking {str(path)}")174 with open(path, "r") as csv_obj:175 csv_dict_reader = csv.reader(csv_obj)176 # skip the header177 next(csv_dict_reader)178 for row in csv_dict_reader:179 if collection_raw_csv:180 arch = ""181 if "arm64" in str(path):182 arch = "arm64"183 elif "amd64" in str(path):184 arch = "amd64"185 # only aggregate all if we did not set a specific target to collect...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!