Projektarbeit-MYP/backend/app/test_printers.py

86 lines
2.8 KiB
Python

#!/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 ===")