diff --git a/test/unitTest/conversation/call.cpp b/test/unitTest/conversation/call.cpp index 85a3162955e104eeaf0bc3fc8cbf66c77b07ef67..67624ddd9c1170a77abfa46c5bb79d4ec95cef34 100644 --- a/test/unitTest/conversation/call.cpp +++ b/test/unitTest/conversation/call.cpp @@ -43,6 +43,7 @@ struct ConvData bool conferenceChanged {false}; bool conferenceRemoved {false}; std::string hostState {}; + std::string state {}; std::vector<std::map<std::string, std::string>> messages {}; }; @@ -220,6 +221,10 @@ ConversationCallTest::connectSignals() else if (details["PEER_NUMBER"].find(carlaUri) != std::string::npos) carlaData_.hostState = state; } + } else if (accountId == bobId) { + bobData_.state = state; + } else if (accountId == carlaId) { + carlaData_.state = state; } cv.notify_one(); })); @@ -439,12 +444,12 @@ ConversationCallTest::testRejoinCall() aliceData_.conferenceChanged = false; auto bobCall = libjami::placeCallWithMedia(bobId, destination, {}); cv.wait_for(lk, 30s, [&]() { - return aliceData_.conferenceChanged && bobData_.hostState == "CURRENT"; + return aliceData_.conferenceChanged && bobData_.hostState == "CURRENT" && bobData_.state == "CURRENT"; }); aliceData_.conferenceChanged = false; libjami::placeCallWithMedia(carlaId, destination, {}); cv.wait_for(lk, 30s, [&]() { - return aliceData_.conferenceChanged && carlaData_.hostState == "CURRENT"; + return aliceData_.conferenceChanged && carlaData_.hostState == "CURRENT" && carlaData_.state == "CURRENT"; }); CPPUNIT_ASSERT(libjami::getParticipantList(aliceId, confId).size() == 3); diff --git a/test/unitTest/conversation/conversation.cpp b/test/unitTest/conversation/conversation.cpp index 3d73603f0feb11601a7db624f3cbeb9cccd1818b..c13b53caf1e29dd18def438d1a049ec11975cb81 100644 --- a/test/unitTest/conversation/conversation.cpp +++ b/test/unitTest/conversation/conversation.cpp @@ -588,28 +588,28 @@ ConversationTest::testMergeAfterMigration() auto carlaUri = carlaAccount->getUsername(); aliceAccount->trackBuddyPresence(carlaUri, true); carlaAccount->trackBuddyPresence(aliceUri, true); - auto convId = libjami::startConversation(aliceId); std::mutex mtx; std::unique_lock<std::mutex> lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; - bool conversationReady = false; + bool conversationReady = false, conversationAliceReady = false; confHandlers.insert(libjami::exportable_callback<libjami::ConversationSignal::ConversationReady>( [&](const std::string& accountId, const std::string& /* conversationId */) { - if (accountId == carlaId) { + if (accountId == aliceId) + conversationAliceReady = true; + else if (accountId == carlaId) conversationReady = true; - cv.notify_one(); - } + cv.notify_one(); })); std::string carlaGotMessage, aliceGotMessage; confHandlers.insert(libjami::exportable_callback<libjami::ConversationSignal::MessageReceived>( [&](const std::string& accountId, const std::string& conversationId, std::map<std::string, std::string> message) { - if (accountId == carlaId && conversationId == convId) { + if (accountId == carlaId) { carlaGotMessage = message["id"]; - } else if (accountId == aliceId && conversationId == convId) { + } else if (accountId == aliceId) { aliceGotMessage = message["id"]; } cv.notify_one(); @@ -628,13 +628,20 @@ ConversationTest::testMergeAfterMigration() })); libjami::registerSignalHandlers(confHandlers); + auto convId = libjami::startConversation(aliceId); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return conversationAliceReady; })); + + aliceGotMessage = ""; aliceAccount->convModule()->addConversationMember(convId, carlaUri, false); + CPPUNIT_ASSERT(cv.wait_for(lk, 60s, [&] { return !aliceGotMessage.empty(); })); // Cp conversations & convInfo auto repoPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations"; auto repoPathCarla = fileutils::get_data_dir() + DIR_SEPARATOR_STR + carlaAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations"; + auto p = std::filesystem::path(repoPathCarla); + fileutils::recursive_mkdir(p.parent_path()); std::filesystem::copy(repoPathAlice, repoPathCarla, std::filesystem::copy_options::recursive); auto ciPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID() + DIR_SEPARATOR_STR + "convInfo"; @@ -648,6 +655,8 @@ ConversationTest::testMergeAfterMigration() repo.join(); std::filesystem::remove_all(repoPathAlice); + p = std::filesystem::path(repoPathAlice); + fileutils::recursive_mkdir(p.parent_path()); std::filesystem::copy(repoPathCarla, repoPathAlice, std::filesystem::copy_options::recursive); // Makes different heads diff --git a/test/unitTest/ice/ice_media_cand_exchange.cpp b/test/unitTest/ice/ice_media_cand_exchange.cpp index fe94ccc515721502caf35e7891490826e77ceb31..210edc87ef956edb5718892e1ca7d0f8679830ab 100644 --- a/test/unitTest/ice/ice_media_cand_exchange.cpp +++ b/test/unitTest/ice/ice_media_cand_exchange.cpp @@ -67,7 +67,7 @@ struct CallData std::vector<Signal> signals_; std::condition_variable cv_ {}; std::mutex mtx_; - bool accountRegistered_ {false}; + bool deviceAnnounced_ {false}; bool upnpEnabled_ {false}; bool turnEnabled_ {false}; IpAddr dest_ {}; @@ -478,13 +478,13 @@ IceMediaCandExchangeTest::setupAccounts(CallData& aliceData, } auto details = account->getVolatileAccountDetails(); - auto daemonStatus = details[libjami::Account::ConfProperties::Registration::STATUS]; + auto deviceAnnounced = details[libjami::Account::VolatileProperties::DEVICE_ANNOUNCED]; if (accountId == aliceData.accountId_) { - aliceData.accountRegistered_ = daemonStatus == "REGISTERED"; + aliceData.deviceAnnounced_ = deviceAnnounced == "true"; aliceData.cv_.notify_one(); } else if (accountId == bobData.accountId_) { - bobData.accountRegistered_ = daemonStatus == "REGISTERED"; + bobData.deviceAnnounced_ = deviceAnnounced == "true"; bobData.cv_.notify_one(); } else { JAMI_ERR("Account with ID [%s] is unknown", accountId.c_str()); @@ -523,7 +523,7 @@ IceMediaCandExchangeTest::configureAccount(CallData& user, const char* accountTy user.accountId_.c_str()); std::unique_lock<std::mutex> lock {user.mtx_}; CPPUNIT_ASSERT( - user.cv_.wait_for(lock, std::chrono::seconds(60), [&] { return user.accountRegistered_; })); + user.cv_.wait_for(lock, std::chrono::seconds(60), [&] { return user.deviceAnnounced_; })); } void @@ -792,8 +792,8 @@ IceMediaCandExchangeTest::jami_account_with_turn() JAMI_INFO("=== Begin test %s ===", __FUNCTION__); auto accountType = libjami::Account::ProtocolNames::RING; - setupAccounts(aliceData_, bobData_, accountType); + setupAccounts(aliceData_, bobData_, accountType); bobData_.turnEnabled_ = true; aliceData_.turnEnabled_ = true;