Integration Test

This commit is contained in:
Niklas Aumueller 2026-02-23 20:03:11 +01:00
parent d9d6c29881
commit ad25db7834
10 changed files with 3488 additions and 25 deletions

2
.idea/vcs.xml generated
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/lib/intellij-community" vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

Binary file not shown.

File diff suppressed because it is too large Load Diff

1956
logs/mqtt_simulator.log Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,12 @@
package vassistent.service;
import vassistent.model.DatabaseEntry;
import vassistent.model.RatioPoint;
import vassistent.util.Logger;
import java.io.File;
import java.sql.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@ -18,7 +16,7 @@ public class DataPersistenceService {
private final String DB_URL;
public DataPersistenceService() {
this("jdbc:sqlite:data/health.db");
DB_URL = "jdbc:sqlite:data/health.db";
createDatabaseFolder();
init();
}
@ -43,12 +41,6 @@ public class DataPersistenceService {
}
private void init() {
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
Logger.error("DB", "SQLite JDBC Driver nicht gefunden", e);
}
try (
Connection c = DriverManager.getConnection(DB_URL); Statement s = c.createStatement()) {

View File

@ -33,12 +33,25 @@ public class ProcessManagerService {
try {
String script = config.getProperty("mqtt_sim.script");
String python = config.getProperty("python.path");
ProcessBuilder pb = new ProcessBuilder("python", script);
ProcessBuilder pb = new ProcessBuilder(python, script);
pb.redirectErrorStream(true);
pb.directory(new File("."));
pythonProcess = pb.start();
// Output Thread starten
/*new Thread(() -> {
try (var reader = pythonProcess.inputReader()) {
String line;
while ((line = reader.readLine()) != null) {
Logger.info("PYTHON", line);
}
} catch (Exception e) {
Logger.error("PROCESS", "Python Output Reader Fehler", e);
}
}).start();*/
Logger.info("PROCESS", "Mqtt Simulator gestartet");
} catch (IOException e) {
Logger.error("PROCESS", "Mqtt Simulator Start fehlgeschlagen", e);

View File

@ -15,7 +15,7 @@ public class UnrealWebSocketService {
public UnrealWebSocketService(String serverUrl) {
this.serverUri = URI.create(serverUrl);
connect();
//connect();
}
private void connect() {

View File

@ -57,7 +57,7 @@ public class AppWindow extends JFrame {
JTabbedPane tabs = new JTabbedPane();
streamingView = new PixelStreamingView(
"http://google.com",
"http://localhost",
false,
false
);

View File

@ -1,14 +1,17 @@
# ===== MODE =====
app.mode=test
# ===== PYTHON =====
python.path="C:\\Program Files\\PyManager\\python.exe"
# ===== MQTT CLIENT =====
mqtt.topic="PREDICTION"
mqtt.topic=PREDICTION
# ===== MQTT SIMULATOR =====
mqtt_sim.enabled=true
mqtt_sim.script=scripts/mqtt_simulator.py
mqtt_sim.script=src/main/resources/scripts/mqtt_simulator.py
# ===== UNREAL ENGINE =====
unreal.enabled=true
unreal.enabled=false
unreal.executable=external/unreal/avatar.exe
unreal.signalling_server.script=external/unreal/start.bat

View File

@ -2,6 +2,7 @@ import paho.mqtt.client as mqtt
import sys
import random
import time
import logging
# ===== KONFIGURATION =====
BROKER = "127.0.0.1"
@ -13,15 +14,27 @@ QOS = 0
INTERVAL_SECONDS = 10
# ==========================
# Logging konfigurieren (Console + Datei)
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("logs/mqtt_simulator.log"),
logging.StreamHandler(sys.stdout)
]
)
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Erfolgreich mit Broker verbunden")
logging.info("Erfolgreich mit Broker verbunden")
else:
print(f"Verbindung fehlgeschlagen mit Code {rc}")
logging.error(f"Verbindung fehlgeschlagen mit Code {rc}")
def main():
logging.info("Python script gestartet")
client = mqtt.Client()
if USERNAME and PASSWORD:
@ -30,25 +43,30 @@ def main():
client.on_connect = on_connect
try:
client.connect(BROKER, PORT, 60)
client.loop_start() # Non-blocking loop
logging.info(f"Verbinde mit Broker {BROKER}:{PORT}")
print("Starte kontinuierliches Senden... (STRG+C zum Beenden)")
client.connect(BROKER, PORT, 60)
client.loop_start()
logging.info("Starte kontinuierliches Senden...")
while True:
message = random.randint(0, 1)
client.publish(TOPIC, message, qos=QOS)
print(f"Gesendet an '{TOPIC}': {message}")
logging.info(f"Gesendet an '{TOPIC}': {message}")
time.sleep(INTERVAL_SECONDS)
except KeyboardInterrupt:
print("\nBeende Publisher...")
logging.info("Publisher manuell beendet")
client.loop_stop()
client.disconnect()
sys.exit(0)
except Exception as e:
print("Fehler:", e)
logging.exception("Unerwarteter Fehler")
sys.exit(1)