demo / src /pages /Testing.py
ElmiraManavi
add "all" as testbatch
0969bd1
import base64
import json
import streamlit as st
from dotenv import load_dotenv
from project import Config
from services.db_service import init_connection
from services.mq_service import create_out_adapter
from services.test_creator import TestCreator
load_dotenv()
config = Config()
config.display()
out_adapter = create_out_adapter(config, config.queue_dest_test_trigger)
db = init_connection()
test_creator = TestCreator(db)
st.title("Testing")
st.write(f"Es sind {db.testdata_1.count_documents({})} Testdatensätze vorhanden.")
with st.form("Testkonfiguration"):
batch_id = st.selectbox("Testbatch wählen", [0, 1, 2, 3, "Alle"])
start_test = st.form_submit_button("Starte Test")
if start_test:
if batch_id == "Alle":
batch = list(db.testdata_1.find({}))
else:
batch = list(db.testdata_1.find({"batch_id": batch_id}))
record_ids = [str(data["_id"]) for data in batch]
test_id = test_creator.create(record_ids)
if test_id:
st.info(f"Starte Test mit {len(batch)} Testdaten, Test-ID: {str(test_id)}")
st.write(f"**Testdaten aus dem Batch:**")
for testdata in batch:
id = str(testdata["_id"])
url = testdata.get("url")
html = testdata.get("html", None)
if html:
html = html.decode("utf-8")
else: html = ""
data = testdata.get("data")
st.write(f"Data ID: {id}")
st.write(f"URL: {url}")
st.write("___")
try:
message = {
"url": url,
"body": base64.b64encode(html.encode("utf-8")).decode("utf-8"),
"meta": [{
"service_name": "demo-service",
"queue_dest": "storehtml-out",
"test_id": str(test_id),
"record_id": id,
}]
}
encoded = json.dumps(message).encode("utf-8")
out_adapter.send_message(encoded)
print(f"Sent {url}")
except Exception as e:
st.error(f"Fehler beim senden in die Message Queue: {e}")
else:
st.error("Fehler beim anlegen des Tests")