TestCase::TestCase(unsigned int id, const std::string &description) :
a_id(id),
- a_key(""),
+ a_key1(""),
+ a_key2(""),
a_description((description != "") ? description : (anna::functions::asString("Testcase_%d", id))),
a_state(State::Initialized),
a_startTimestamp(0),
anna::xml::Node* result = parent->createChild("TestCase");
result->createAttribute("Id", a_id);
- if (a_key != "") result->createAttribute("Key", a_key);
+ if (a_key1 != "") result->createAttribute("Key1SessionId", a_key1);
+ if (a_key2 != "") result->createAttribute("Key2Subscriber", a_key2);
result->createAttribute("Description", a_description);
result->createAttribute("State", asText(a_state));
result->createAttribute("StartTimestamp", a_startTimestamp.asString());
throw anna::RuntimeException(anna::functions::asString("Cannot program anymore. The test case %llu (%s) has finished. You must reset it to append new steps (or do it during execution, which is also allowed).", a_id, a_description.c_str()), ANNA_FILE_LOCATION);
}
-std::string TestCase::assertMessage(const anna::DataBlock &db, bool toEntity) noexcept(false) {
-
- std::string key;
+void TestCase::assertMessage(const anna::DataBlock &db, bool toEntity, std::string &key1, std::string &key2) noexcept(false) {
bool isRequest = anna::diameter::codec::functions::isRequest(db);
bool registerKeys = ((isRequest && toEntity) || (!isRequest && !toEntity) /* (*) */);
if (registerKeys) {
TestManager &testManager = TestManager::instantiate();
- key = anna::diameter::helpers::base::functions::getSessionId(db);
- testManager.registerKey1(key, this);
+ key1 = anna::diameter::helpers::base::functions::getSessionId(db);
+ testManager.registerKey1(key1, this);
- key = anna::diameter::helpers::dcca::functions::getSubscriptionIdData(db, anna::diameter::helpers::dcca::AVPVALUES__Subscription_Id_Type::END_USER_E164);
- if (key == "") // try with IMSI
- key = anna::diameter::helpers::dcca::functions::getSubscriptionIdData(db, anna::diameter::helpers::dcca::AVPVALUES__Subscription_Id_Type::END_USER_IMSI);
+ key2 = anna::diameter::helpers::dcca::functions::getSubscriptionIdData(db, anna::diameter::helpers::dcca::AVPVALUES__Subscription_Id_Type::END_USER_E164);
+ if (key2 == "") // try with IMSI
+ key2 = anna::diameter::helpers::dcca::functions::getSubscriptionIdData(db, anna::diameter::helpers::dcca::AVPVALUES__Subscription_Id_Type::END_USER_IMSI);
- if (key != "")
- testManager.registerKey2(key, this);
+ if (key2 != "")
+ testManager.registerKey2(key2, this);
}
-
- return key;
}
void TestCase::addTimeout(const anna::Millisecond &timeout) noexcept(false) {
void TestCase::addSendDiameterXml2e(const anna::DataBlock &db, anna::diameter::comm::OriginHost *host, int stepNumber) noexcept(false) {
assertInitialized();
- a_key = assertMessage(db, true /* to entity */);
+ assertMessage(db, true /* to entity */, a_key1, a_key2);
if (stepNumber != -1) {
const TestStep *stepReferred = getStep(stepNumber);
void TestCase::addSendDiameterXml2c(const anna::DataBlock &db, anna::diameter::comm::OriginHost *host, int stepNumber) noexcept(false) {
assertInitialized();
- a_key = assertMessage(db, false /* to client */);
+ assertMessage(db, false /* to client */, a_key1, a_key2);
if (stepNumber != -1) {
const TestStep *stepReferred = getStep(stepNumber);