diff --git a/backend/cmd/main.go b/backend/cmd/main.go index a8ad0e2a9..2f18bc11d 100644 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -12,6 +12,7 @@ import ( "net/http" _ "net/http/pprof" "os" + "os/exec" "os/signal" "path" "runtime" @@ -105,6 +106,13 @@ func main() { trace.Fatal().Err(err).Msg("setting up ADJ") } + test := exec.Command("python3", "testadj.py") + out, err := test.CombinedOutput() + if err != nil || len(out) != 0 { + fmt.Printf("\nPython test failed:\nError: %v\nOutput: %s\n", err, string(out)) + os.Exit(1) + } + podData, err := pod_data.NewPodData(adj.Boards, adj.Info.Units) if err != nil { fmt.Println(err) diff --git a/backend/cmd/testpython.py b/backend/cmd/testadj.py similarity index 90% rename from backend/cmd/testpython.py rename to backend/cmd/testadj.py index 955e63f6e..72ba3c160 100644 --- a/backend/cmd/testpython.py +++ b/backend/cmd/testadj.py @@ -1,12 +1,10 @@ import os import json -from collections import Counter def validate_json_structure(data): errors = [] - if "board_id" in data: if not isinstance(data["board_id"], int): errors.append(f"'board_id' debe ser un entero, pero se encontró: {type(data['board_id']).__name__}.") @@ -15,13 +13,13 @@ def validate_json_structure(data): if not isinstance(data["board_ip"], str): errors.append(f"'board_ip' debe ser una cadena, pero se encontró: {type(data['board_ip']).__name__}.") - + if "measurements" in data: if not isinstance(data["measurements"], list): errors.append("La clave 'measurements' debe ser una lista.") else: for measurement in data["measurements"]: - if isinstance(measurement, dict): + if isinstance(measurement, dict): required_keys = ["id", "name", "type", "podUnits", "displayUnits"] for key in required_keys: if key not in measurement: @@ -40,17 +38,17 @@ def validate_json_structure(data): errors.append(f"El 'podUnits' debe ser una cadena en: {measurement}") if "podUnits" in measurement and not isinstance(measurement["podUnits"], str): errors.append(f"El 'podUnits' debe ser una cadena en: {measurement}") #esto se puede quitar (json 516) - elif not isinstance(measurement, str): + elif not isinstance(measurement, str): errors.append("Cada elemento en 'measurements' debe ser un objeto o una cadena (nombre de archivo).") - + if "packets" in data: if not isinstance(data["packets"], list): errors.append("La clave 'packets' debe ser una lista.") else: for packet in data["packets"]: - if isinstance(packet, dict): - required_keys = ["id", "name", "type","variable"] + if isinstance(packet, dict): + required_keys = ["id", "name", "type","variable"] for key in required_keys: if key not in packet: errors.append(f"Falta la clave '{key}' en un objeto de 'packets'.") @@ -69,7 +67,7 @@ def validate_json_structure(data): errors.append(f"Cada elemento en 'variables' debe ser un objeto en: {packet}") if "name" not in variable: errors.append(f"Falta la clave 'name' en un objeto de 'variables' en: {packet}") - elif not isinstance(packet, str): + elif not isinstance(packet, str): errors.append("Cada elemento en 'packets' debe ser un objeto o una cadena (nombre de archivo).") return errors @@ -78,19 +76,19 @@ def validate_json_structure(data): def validate_json_folder(folder_path): boards_file_path = os.path.join(folder_path, "boards.json") - + try: with open(boards_file_path, 'r') as boards_file: boards_data = json.load(boards_file) boards = boards_data.get("boards", {}) - - + + board_keys = list(boards.keys()) duplicate_keys = [key for key in board_keys if board_keys.count(key) > 1] - + if duplicate_keys: print(f"Error: El archivo boards.json contiene claves duplicadas: {', '.join(duplicate_keys)}") - return + return except json.JSONDecodeError as e: print(f"Error al decodificar JSON en {boards_file_path}: {e}") @@ -99,7 +97,7 @@ def validate_json_folder(folder_path): print(f"Error al procesar el archivo {boards_file_path}: {e}") return - + for board_name, board_file_path in boards.items(): full_path = os.path.join(folder_path, board_file_path) try: @@ -110,19 +108,14 @@ def validate_json_folder(folder_path): print(f"Errores encontrados en {full_path} para la placa '{board_name}':") for error in errors: print(f"- {error}") - else: - print(f"{full_path} para la placa '{board_name}' está bien estructurado.") + except json.JSONDecodeError as e: print(f"Error al decodificar JSON en {full_path}: {e}") except Exception as e: - print(f"Error al procesar el archivo {full_path}: {e}") - - + print(f"Error al procesar el archivo {full_path}: {e}") -if os.path.exists('./JSON_ADE/'): - print("La carpeta JSON_ADE existe") -else: +if os.path.exists('./JSON_ADE/') == False: print("La carpeta JSON_ADE no existe") if __name__ == "__main__": - validate_json_folder("./JSON_ADE/") + validate_json_folder("./JSON_ADE/")