test(traces): le traceur n'apparie une réponse qu'à la ligne de sa requête (brief 4 T6)

Contre-épreuve T4 : sans le contrôle d'identifiant du traceur, aucun test ne cassait — le
SocketScheduler écarte déjà les réponses obsolètes en amont. Ce test unitaire éprouve la
seconde garde seule (autre requête, aucune requête, réponse en double). socketscheduler :
34 fonctions, 117 / 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-17 12:24:02 +02:00
parent 6c44a4e091
commit 10683744d2

View File

@ -133,6 +133,7 @@ private slots:
void testTraceWriteFailureChangesNoDecision();
void testTokenIsInNoTrace();
void testTraceLineSize();
void testTracerPairsTheResponseByRequestId();
private:
//! Banc commun ; \p avecOptimiseur faux = rien n'est configuré.
@ -1919,5 +1920,29 @@ void TestSocketScheduler::testTraceLineSize()
qPrintable(QStringLiteral("%1 o par ligne rule-based").arg(r)));
}
void TestSocketScheduler::testTracerPairsTheResponseByRequestId()
{
// Le traceur seul : une réponse ne complète QUE la ligne de SA requête. En service, le
// SocketScheduler écarte déjà les réponses obsolètes ; cette garde est la seconde.
const QString d = m_dossierTraces.path() + "/appariement";
QDir().mkpath(d);
OptimizerTrace::Reglage r;
r.active = true;
r.dossier = d;
const QDateTime t0 = utcDateTime(QDate(2026, 6, 8), QTime(13, 0, 0));
{
OptimizerTracer tr(r);
tr.noterCycle({{"t", "a"}, {"strategy", "rules"}}, t0, 7);
tr.noterReponse(6, {{"result", QVariantMap{{"faux", true}}}}, 1); // une autre requête
tr.noterReponse(0, {{"result", QVariantMap{{"faux", true}}}}, 1); // aucune requête
tr.noterReponse(7, {{"result", QVariantMap{{"bon", true}}}}, 12);
tr.noterReponse(7, {{"result", QVariantMap{{"double", true}}}}, 13); // déjà complétée
} // le destructeur vide la file
const QList<QVariantMap> l = traces(d, 1);
QCOMPARE(l.count(), 1);
QCOMPARE(l.first().value("response").toMap(), (QVariantMap{{"result", QVariantMap{{"bon", true}}}}));
QCOMPARE(l.first().value("latencyMs").toInt(), 12);
}
QTEST_MAIN(TestSocketScheduler)
#include "testsocketscheduler.moc"