Information
We are currently investigating an issue with the editor of some pages. Please save your work and avoid to create new pages until this banner is gone.
...
In a work performed in collaboration with CTA, we prepared a small prototype to mock-up the ContainerServices class in C++. This mock-up allowed to retrieve components and make them interact, without requiring a CORBA connection and making it possible to do simple integration testings without ACS running and taking advantage of unit testing framework.
The benefits of this comes from performance and simplicity of the testing environment.
For reference, an ACS ticket already exists for integrating this prototype into ACS:
Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
There are several limitations, some of which could be mitigated by extending the ContainerServices mock-up functionalities. At the moment of writing:
...
The getCORBAComponent method was also extended in order to return the component from 'comps' the std::map:
Code Block | ||||
---|---|---|---|---|
| ||||
CORBA::Object* MockContainerServices::getCORBAComponent(const char* name){ if (comps.find(name) == comps.end()) { maciErrType::CannotGetComponentExImpl ex(__FILE__, __LINE__, "MockContainerServices::getComponent"); ex.setCURL(name); throw ex; } return CORBA::Object::_duplicate(comps[name].in()); } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
MockContainerServices* mcs = nullptr; setUp() { mcs = new MockContainerServices(cn, nullptr); mcs->activateComponent<MaciTestComponentImpl>("TEST_COMP1"); mcs->activateComponent<MaciTestComponentImpl>("TEST_COMP2"); } cleanUp() { mcs.deactivateComponent->deactivateComponent("TEST_COMP1"); mcs.deactivateComponent->deactivateComponent("TEST_COMP2"); delete mcs; mcs = nullptr; } //The tests should not know anything about the changes we've done, but they rely on this mcs instance just for convenience test_example() { MACI_TEST::MaciTestComponent_var comp = mcs->getComponent<MACI_TEST::MaciTestComponent>("TEST_COMP1"); comp->some_method(...); //If some_method retrieves a component, it should also work normally, since on creation, we passed an instance of MockContainerServices } |
...