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"));
Updated by hidden over 2 years ago
- Status changed from New to In Progress
- Customer set to CARIAD
- Topic set to ADTF::Recorder
- Platform Windows 10 64bit added
Updated by hidden over 2 years ago
- Status changed from In Progress to Customer Feedback Required
Hallo Dennis,
beim 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"));
Updated by hidden over 2 years ago
Hallo Florian,
danke das hat mir schon sehr weitergeholfen. Es funktioniert jetzt auch.
Viele Grüße
Dennis
Updated by hidden over 2 years ago
- Project changed from 30 to Public Support
- Subject changed from Create Instance of Recorder in Catch Test to Create instance of recorder in catch2 test
- Description updated (diff)
- Status changed from Customer Feedback Required to To Be Closed
- Private changed from Yes to No
- Resolution set to Solved Issue