Support Request #15307
closedCreate instance of recorder in catch2 test
Description
Supportanfrage
ich versuche gerade einen Test zu schreiben für einen Filter namens recorder_trigger,
der je nachdem in welcher Range sich Input Signale befinden eine Datfile Aufnahme startet oder stopt.
Jetzt habe ich das Problem, dass ich nicht weiß wie ich in ADTF3 eine Instanz des Recorders für den Test erstellen kann.
Ich habe es mit folgendem versucht aber bekomme dann einen Fehler zur Runtime
REQUIRE_OK(_runtime->CreateInstance("adtfdat_file_recorder.streaming_sink.adtf.cid", pFilterRecorder, "recorder")); adtf::base::set_property_by_path<adtf::util::cString>(*pConfigRecorder, "filename", "$(SRC_DIR)/test_result/Test_StopRecording.dat");
In meinem Filter selber kann ich den Recorder ohne Problem ansteuern mit
adtf::filter::interface_client<adtf::services::ant::IRecorder> m_oRecorderClient = CreateInterfaceClient<adtf::services::ant::IRecorder>("recorder_control"); m_oRecorderClient->Start("");
allerdings weiß ich nicht wie ich in einem Test eine Instanz des Recorders erstelle.
Lösung
Ein Zusammenspiel mehrere Filter empfehle ich dir das cSessionTestSystem, dann erstellst du einfach eine Session und lädst diese, dann sind alle Plugins vorhanden.
Alternativ kannst du das natürlich händisch machen, wichtig, du musst bei deinem cTestSystem auf das Recorder plugin laden, Snippet:
cMyTestSystem(): cTestSystem(strTestUrl)
{
// ..
LoadPlugin("adtf_recorder.adtfplugin");
// ...
}
Dann kannst du dir den Recorder holen:
object_ptr<INamedGraphObject> pRecorder;
REQUIRE(IS_OK(_runtime->CreateInstance(CID_RECORDER, pRecorder)));
pRecorder->SetName("recorder");
Und Properties setzen:
IConfiguration* pRecorderConfig = ucom_cast<IConfiguration*>(pRecorder.Get());
REQUIRE_OK(set_property<cString>(*pRecorderConfig, "filename", "$(SRC_DIR)/test_result/Test_StopRecording.dat"));