Skip to content
Snippets Groups Projects
Commit c16041fc authored by Mohamed Chibani's avatar Mohamed Chibani
Browse files

ut_sip_basic_calls: enable scenario with all media disabled

Gitlab: #570

Change-Id: I87f476082f0f04b342e737e523eae976b0717bca
parent b34d1a3c
Branches
Tags
No related merge requests found
...@@ -85,17 +85,14 @@ private: ...@@ -85,17 +85,14 @@ private:
// Test cases. // Test cases.
void audio_only_test(); void audio_only_test();
void audio_video_test(); void audio_video_test();
void peer_disable_media(); void peer_answer_with_all_media_disabled();
CPPUNIT_TEST_SUITE(SipBasicCallTest); CPPUNIT_TEST_SUITE(SipBasicCallTest);
CPPUNIT_TEST(audio_only_test); CPPUNIT_TEST(audio_only_test);
CPPUNIT_TEST(audio_video_test); CPPUNIT_TEST(audio_video_test);
#if 0 // Test when the peer answers with all the media disabled (RTP port = 0)
// Test when the peer answers will all media disabled (RTP port = 0) CPPUNIT_TEST(peer_answer_with_all_media_disabled);
// For now, this test will cause a crash. Must be enabled once the
// crash is fixed
CPPUNIT_TEST(peer_disable_media);
#endif
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
// Event/Signal handlers // Event/Signal handlers
...@@ -113,6 +110,7 @@ private: ...@@ -113,6 +110,7 @@ private:
// Helpers // Helpers
void audio_video_call(std::vector<MediaAttribute> offer, void audio_video_call(std::vector<MediaAttribute> offer,
std::vector<MediaAttribute> answer, std::vector<MediaAttribute> answer,
bool expectedToSucceed = true,
bool validateMedia = true); bool validateMedia = true);
static void configureTest(CallData& bob, CallData& alice); static void configureTest(CallData& bob, CallData& alice);
static std::string getUserAlias(const std::string& callId); static std::string getUserAlias(const std::string& callId);
...@@ -314,7 +312,7 @@ SipBasicCallTest::waitForSignal(CallData& callData, ...@@ -314,7 +312,7 @@ SipBasicCallTest::waitForSignal(CallData& callData,
const std::string& expectedSignal, const std::string& expectedSignal,
const std::string& expectedEvent) const std::string& expectedEvent)
{ {
const std::chrono::seconds TIME_OUT {30}; const std::chrono::seconds TIME_OUT {10};
std::unique_lock<std::mutex> lock {callData.mtx_}; std::unique_lock<std::mutex> lock {callData.mtx_};
// Combined signal + event (if any). // Combined signal + event (if any).
...@@ -418,6 +416,7 @@ SipBasicCallTest::configureTest(CallData& aliceData, CallData& bobData) ...@@ -418,6 +416,7 @@ SipBasicCallTest::configureTest(CallData& aliceData, CallData& bobData)
void void
SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer, SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer,
std::vector<MediaAttribute> answer, std::vector<MediaAttribute> answer,
bool expectedToSucceed,
bool validateMedia) bool validateMedia)
{ {
JAMI_INFO("=== Begin test %s ===", __FUNCTION__); JAMI_INFO("=== Begin test %s ===", __FUNCTION__);
...@@ -452,8 +451,10 @@ SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer, ...@@ -452,8 +451,10 @@ SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer,
// Answer the call. // Answer the call.
DRing::acceptWithMedia(bobData_.callId_, MediaAttribute::mediaAttributesToMediaMaps(answer)); DRing::acceptWithMedia(bobData_.callId_, MediaAttribute::mediaAttributesToMediaMaps(answer));
if (expectedToSucceed) {
// Wait for media negotiation complete signal. // Wait for media negotiation complete signal.
CPPUNIT_ASSERT(waitForSignal(bobData_, CPPUNIT_ASSERT(
waitForSignal(bobData_,
DRing::CallSignal::MediaNegotiationStatus::name, DRing::CallSignal::MediaNegotiationStatus::name,
DRing::Media::MediaNegotiationStatusEvents::NEGOTIATION_SUCCESS)); DRing::Media::MediaNegotiationStatusEvents::NEGOTIATION_SUCCESS));
...@@ -464,10 +465,10 @@ SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer, ...@@ -464,10 +465,10 @@ SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer,
JAMI_INFO("BOB answered the call [%s]", bobData_.callId_.c_str()); JAMI_INFO("BOB answered the call [%s]", bobData_.callId_.c_str());
// Wait for media negotiation complete signal. // Wait for media negotiation complete signal.
CPPUNIT_ASSERT(waitForSignal(aliceData_, CPPUNIT_ASSERT(
waitForSignal(aliceData_,
DRing::CallSignal::MediaNegotiationStatus::name, DRing::CallSignal::MediaNegotiationStatus::name,
DRing::Media::MediaNegotiationStatusEvents::NEGOTIATION_SUCCESS)); DRing::Media::MediaNegotiationStatusEvents::NEGOTIATION_SUCCESS));
// Validate Alice's media // Validate Alice's media
if (validateMedia) { if (validateMedia) {
auto activeMediaList = Manager::instance().getMediaAttributeList(aliceData_.callId_); auto activeMediaList = Manager::instance().getMediaAttributeList(aliceData_.callId_);
...@@ -504,6 +505,15 @@ SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer, ...@@ -504,6 +505,15 @@ SipBasicCallTest::audio_video_call(std::vector<MediaAttribute> offer,
// Bob hang-up. // Bob hang-up.
JAMI_INFO("Hang up BOB's call and wait for ALICE to hang up"); JAMI_INFO("Hang up BOB's call and wait for ALICE to hang up");
DRing::hangUp(bobData_.callId_); DRing::hangUp(bobData_.callId_);
} else {
// The media negotiation for the call is expected to fail, so we
// should receive the signal.
CPPUNIT_ASSERT(
waitForSignal(bobData_, DRing::CallSignal::StateChange::name, StateEvent::FAILURE));
}
// The hang-up signal will be emitted on caller's side (Alice) in both
// success failure scenarios.
CPPUNIT_ASSERT( CPPUNIT_ASSERT(
waitForSignal(aliceData_, DRing::CallSignal::StateChange::name, StateEvent::HUNGUP)); waitForSignal(aliceData_, DRing::CallSignal::StateChange::name, StateEvent::HUNGUP));
...@@ -587,7 +597,7 @@ SipBasicCallTest::audio_video_test() ...@@ -587,7 +597,7 @@ SipBasicCallTest::audio_video_test()
} }
void void
SipBasicCallTest::peer_disable_media() SipBasicCallTest::peer_answer_with_all_media_disabled()
{ {
auto const bobAcc = Manager::instance().getAccount<SIPAccount>(bobData_.accountId_); auto const bobAcc = Manager::instance().getAccount<SIPAccount>(bobData_.accountId_);
...@@ -610,7 +620,7 @@ SipBasicCallTest::peer_disable_media() ...@@ -610,7 +620,7 @@ SipBasicCallTest::peer_disable_media()
answer.emplace_back(video); answer.emplace_back(video);
// Run the scenario // Run the scenario
audio_video_call(offer, answer, false); audio_video_call(offer, answer, false, false);
} }
} // namespace test } // namespace test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment