Project

General

Profile

Actions

Support Request #15307

closed

Create instance of recorder in catch2 test

Added by hidden over 2 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Customer:
CARIAD
Department:
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 10 64bit
Topic:
ADTF::Recorder
FAQ Links:

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"));

Actions #1

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
Actions #2

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"));

Actions #3

Updated by hidden over 2 years ago

Hallo Florian,

danke das hat mir schon sehr weitergeholfen. Es funktioniert jetzt auch.

Viele Grüße
Dennis

Actions #4

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
Actions #5

Updated by hidden over 2 years ago

  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF