#!/usr/bin/env python3 """ Test-Skript für die Drucker-Funktionen """ import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) from app import check_printer_status, check_multiple_printers_status from models import get_db_session, Printer def test_ping_function(): """Teste die Ping-Funktion mit localhost""" print("Teste Ping-Funktion...") # Test mit localhost status, active = check_printer_status("127.0.0.1", timeout=3) print(f"Localhost Test: Status={status}, Active={active}") # Test mit ungültiger IP status, active = check_printer_status("192.168.999.999", timeout=2) print(f"Ungültige IP Test: Status={status}, Active={active}") # Test mit leerer IP status, active = check_printer_status("", timeout=1) print(f"Leere IP Test: Status={status}, Active={active}") def test_multiple_printers(): """Teste die Mehrfach-Drucker-Funktion""" print("\nTeste Mehrfach-Drucker-Funktion...") test_printers = [ {'id': 1, 'name': 'Test1', 'ip_address': '127.0.0.1', 'location': 'Test'}, {'id': 2, 'name': 'Test2', 'ip_address': '192.168.1.999', 'location': 'Test'}, {'id': 3, 'name': 'Test3', 'ip_address': '', 'location': 'Test'} ] results = check_multiple_printers_status(test_printers, timeout=3) for printer in test_printers: printer_id = printer['id'] if printer_id in results: status, active = results[printer_id] print(f"Drucker {printer['name']} ({printer['ip_address']}): {status}, {active}") else: print(f"Drucker {printer['name']}: Kein Ergebnis") def test_database_printers(): """Teste mit echten Druckern aus der Datenbank""" print("\nTeste echte Drucker aus der Datenbank...") try: db_session = get_db_session() printers = db_session.query(Printer).all() if not printers: print("Keine Drucker in der Datenbank gefunden") db_session.close() return print(f"Gefunden: {len(printers)} Drucker") for printer in printers: ip_to_check = printer.plug_ip if printer.plug_ip else printer.ip_address print(f"Drucker: {printer.name}, IP: {ip_to_check}") if ip_to_check: status, active = check_printer_status(ip_to_check, timeout=3) print(f" -> Status: {status}, Active: {active}") else: print(f" -> Keine IP-Adresse verfügbar") db_session.close() except Exception as e: print(f"Fehler beim Testen der Datenbank-Drucker: {e}") if __name__ == "__main__": print("=== Drucker-Funktionen Test ===") test_ping_function() test_multiple_printers() test_database_printers() print("\n=== Test abgeschlossen ===")