Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
libnice
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
libnice
Commits
1771bc79
Commit
1771bc79
authored
Feb 25, 2014
by
Olivier Crête
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tests: Fix horribly raciness in test-new-dribble
parent
91b93b44
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
48 deletions
+87
-48
tests/test-new-dribble.c
tests/test-new-dribble.c
+87
-48
No files found.
tests/test-new-dribble.c
View file @
1771bc79
...
...
@@ -73,15 +73,17 @@
static
GCond
*
stun_thread_signal_ptr
=
&
stun_thread_signal
;
#endif
static
GMainLoop
*
global_mainloop
;
static
NiceComponentState
global_lagent_state
=
NICE_COMPONENT_STATE_LAST
;
static
NiceComponentState
global_ragent_state
=
NICE_COMPONENT_STATE_LAST
;
static
GCancellable
*
global_cancellable
;
static
gboolean
exit_stun_thread
=
FALSE
;
static
gboolean
lagent_candidate_gathering_done
=
FALSE
;
static
gboolean
ragent_candidate_gathering_done
=
FALSE
;
static
guint
global_ls_id
,
global_rs_id
;
static
gboolean
data_received
=
FALSE
;
static
gboolean
drop_stun_packets
=
FALSE
;
static
gboolean
got_stun_packet
=
FALSE
;
static
gboolean
send_stun
=
FALSE
;
static
const
uint16_t
known_attributes
[]
=
{
0
...
...
@@ -204,10 +206,11 @@ recv_packet:
buf_len
=
stun_agent_finish_message
(
agent
,
&
response
,
NULL
,
0
);
send_buf:
g_
main_loop_quit
(
global_mainloop
);
g_
cancellable_cancel
(
global_cancellable
);
g_debug
(
"Ready to send a STUN response"
);
g_assert
(
g_mutex_trylock
(
stun_mutex_ptr
));
while
(
global_lagent_state
<
NICE_COMPONENT_STATE_CONNECTING
)
{
got_stun_packet
=
TRUE
;
while
(
send_stun
)
{
g_debug
(
"Waiting for signal. State is %d"
,
global_lagent_state
);
g_cond_wait
(
stun_signal_ptr
,
stun_mutex_ptr
);
}
...
...
@@ -282,7 +285,7 @@ static void cb_candidate_gathering_done(NiceAgent *agent, guint stream_id, gpoin
g_debug
(
"ragent finished gathering candidates"
);
ragent_candidate_gathering_done
=
TRUE
;
}
g_
main_loop_quit
(
global_mainloop
);
g_
cancellable_cancel
(
global_cancellable
);
}
static
void
cb_nice_recv
(
NiceAgent
*
agent
,
guint
stream_id
,
guint
component_id
,
guint
len
,
gchar
*
buf
,
gpointer
user_data
)
...
...
@@ -299,7 +302,7 @@ static void cb_nice_recv (NiceAgent *agent, guint stream_id, guint component_id,
g_debug
(
"test-dribblemode:%s: ragent recieved %d bytes : quit mainloop"
,
G_STRFUNC
,
len
);
data_received
=
TRUE
;
g_
main_loop_quit
(
global_mainloop
);
g_
cancellable_cancel
(
global_cancellable
);
}
}
...
...
@@ -320,9 +323,10 @@ static void cb_component_state_changed (NiceAgent *agent, guint stream_id, guint
if
(
GPOINTER_TO_UINT
(
data
)
==
1
&&
state
==
NICE_COMPONENT_STATE_FAILED
)
{
g_debug
(
"Signalling STUN response since connchecks failed"
);
g_mutex_lock
(
stun_mutex_ptr
);
send_stun
=
TRUE
;
g_cond_signal
(
stun_signal_ptr
);
g_mutex_unlock
(
stun_mutex_ptr
);
g_
main_loop_quit
(
global_mainloop
);
g_
cancellable_cancel
(
global_cancellable
);
}
if
(
GPOINTER_TO_UINT
(
data
)
==
1
&&
state
==
NICE_COMPONENT_STATE_READY
)
{
...
...
@@ -346,6 +350,7 @@ static void swap_candidates(NiceAgent *local, guint local_id, NiceAgent *remote,
if
(
signal_stun_reply
)
{
g_mutex_lock
(
stun_mutex_ptr
);
send_stun
=
TRUE
;
g_cond_signal
(
stun_signal_ptr
);
g_mutex_unlock
(
stun_mutex_ptr
);
}
...
...
@@ -444,12 +449,14 @@ static void init_test(NiceAgent *lagent, NiceAgent *ragent, gboolean connect_new
}
data_received
=
FALSE
;
got_stun_packet
=
FALSE
;
send_stun
=
FALSE
;
nice_agent_attach_recv
(
lagent
,
global_ls_id
,
NICE_COMPONENT_TYPE_RTP
,
g_main_
loop_get_context
(
global_mainloop
),
g_main_
context_default
(
),
cb_nice_recv
,
LEFT_AGENT
);
nice_agent_attach_recv
(
ragent
,
global_rs_id
,
NICE_COMPONENT_TYPE_RTP
,
g_main_
loop_get_context
(
global_mainloop
),
g_main_
context_default
(
),
cb_nice_recv
,
RIGHT_AGENT
);
}
...
...
@@ -465,18 +472,20 @@ static void standard_test(NiceAgent *lagent, NiceAgent *ragent)
{
g_debug
(
"test-dribblemode:%s"
,
G_STRFUNC
);
got_stun_packet
=
FALSE
;
init_test
(
lagent
,
ragent
,
FALSE
);
nice_agent_gather_candidates
(
lagent
,
global_ls_id
);
g_main_loop_run
(
global_mainloop
);
while
(
!
got_stun_packet
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_GATHERING
&&
!
lagent_candidate_gathering_done
);
nice_agent_gather_candidates
(
ragent
,
global_rs_id
);
if
(
!
ragent_candidate_gathering_done
)
{
g_main_loop_run
(
global_mainloop
);
while
(
!
ragent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
ragent_candidate_gathering_done
);
}
set_credentials
(
lagent
,
global_ls_id
,
ragent
,
global_rs_id
);
...
...
@@ -485,7 +494,9 @@ static void standard_test(NiceAgent *lagent, NiceAgent *ragent)
lagent
,
global_ls_id
,
TRUE
);
g_main_loop_run
(
global_mainloop
);
while
(
!
data_received
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
global_lagent_state
>=
NICE_COMPONENT_STATE_CONNECTED
&&
data_received
);
...
...
@@ -493,7 +504,9 @@ static void standard_test(NiceAgent *lagent, NiceAgent *ragent)
swap_candidates
(
lagent
,
global_ls_id
,
ragent
,
global_rs_id
,
FALSE
);
g_main_loop_run
(
global_mainloop
);
while
(
!
lagent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
lagent_candidate_gathering_done
);
...
...
@@ -515,21 +528,24 @@ static void bad_credentials_test(NiceAgent *lagent, NiceAgent *ragent)
"wrong2"
,
"wrong2"
);
nice_agent_gather_candidates
(
lagent
,
global_ls_id
);
g_main_loop_run
(
global_mainloop
);
while
(
!
got_stun_packet
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_GATHERING
&&
!
lagent_candidate_gathering_done
);
nice_agent_gather_candidates
(
ragent
,
global_rs_id
);
if
(
!
ragent_candidate_gathering_done
)
{
g_main_loop_run
(
global_mainloop
);
while
(
!
ragent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
ragent_candidate_gathering_done
);
}
swap_candidates
(
ragent
,
global_rs_id
,
lagent
,
global_ls_id
,
FALSE
);
g_main_loop_run
(
global_mainloop
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_FAILED
);
while
(
global_lagent_state
!=
NICE_COMPONENT_STATE_FAILED
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
// Set the correct credentials and swap candidates
set_credentials
(
lagent
,
global_ls_id
,
ragent
,
global_rs_id
);
...
...
@@ -541,14 +557,19 @@ static void bad_credentials_test(NiceAgent *lagent, NiceAgent *ragent)
ragent
,
global_rs_id
,
FALSE
);
g_main_loop_run
(
global_mainloop
);
while
(
!
data_received
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
data_received
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_READY
);
g_assert
(
global_ragent_state
>=
NICE_COMPONENT_STATE_CONNECTED
);
// Wait for lagent to finish gathering candidates
g_main_loop_run
(
global_mainloop
);
while
(
!
lagent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
lagent_candidate_gathering_done
);
cleanup
(
lagent
,
ragent
);
...
...
@@ -563,23 +584,30 @@ static void bad_candidate_test(NiceAgent *lagent,NiceAgent *ragent)
init_test
(
lagent
,
ragent
,
FALSE
);
nice_agent_gather_candidates
(
lagent
,
global_ls_id
);
g_main_loop_run
(
global_mainloop
);
while
(
!
got_stun_packet
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_GATHERING
&&
!
lagent_candidate_gathering_done
);
nice_agent_gather_candidates
(
ragent
,
global_rs_id
);
if
(
!
ragent_candidate_gathering_done
)
{
g_main_loop_run
(
global_mainloop
);
while
(
!
ragent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
ragent_candidate_gathering_done
);
}
add_bad_candidate
(
lagent
,
global_ls_id
,
cand
);
// lagent will finish candidate gathering causing this mainloop to quit
g_main_loop_run
(
global_mainloop
);
while
(
!
lagent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
// connchecks will fail causing this mainloop to quit
g_main_loop_run
(
global_mainloop
);
while
(
global_lagent_state
!=
NICE_COMPONENT_STATE_FAILED
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_FAILED
&&
!
data_received
);
...
...
@@ -593,11 +621,13 @@ static void bad_candidate_test(NiceAgent *lagent,NiceAgent *ragent)
ragent
,
global_rs_id
,
FALSE
);
g_main_loop_run
(
global_mainloop
);
while
(
!
data_received
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
lagent_candidate_gathering_done
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_READY
);
g_assert
(
global_lagent_state
>=
NICE_COMPONENT_STATE_CONNECTED
);
g_assert
(
global_ragent_state
>=
NICE_COMPONENT_STATE_CONNECTED
);
cleanup
(
lagent
,
ragent
);
...
...
@@ -611,26 +641,34 @@ static void new_candidate_test(NiceAgent *lagent, NiceAgent *ragent)
set_credentials
(
lagent
,
global_ls_id
,
ragent
,
global_rs_id
);
nice_agent_gather_candidates
(
lagent
,
global_ls_id
);
g_main_loop_run
(
global_mainloop
);
while
(
!
got_stun_packet
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
global_lagent_state
==
NICE_COMPONENT_STATE_GATHERING
&&
!
lagent_candidate_gathering_done
);
nice_agent_gather_candidates
(
ragent
,
global_rs_id
);
if
(
!
ragent_candidate_gathering_done
)
{
g_main_
loop_run
(
global_mainloop
);
}
while
(
!
ragent_candidate_gathering_done
)
g_main_
context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
// Wait for data
g_main_loop_run
(
global_mainloop
);
while
(
!
data_received
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
data_received
);
// Data arrived, signal STUN thread to send STUN response
g_mutex_lock
(
stun_mutex_ptr
);
send_stun
=
TRUE
;
g_cond_signal
(
stun_signal_ptr
);
g_mutex_unlock
(
stun_mutex_ptr
);
// Wait for lagent to finish gathering candidates
g_main_loop_run
(
global_mainloop
);
while
(
!
lagent_candidate_gathering_done
||
!
lagent_candidate_gathering_done
)
g_main_context_iteration
(
NULL
,
TRUE
);
g_cancellable_reset
(
global_cancellable
);
g_assert
(
lagent_candidate_gathering_done
);
g_assert
(
ragent_candidate_gathering_done
);
...
...
@@ -664,16 +702,19 @@ int main(void)
NiceAgent
*
lagent
=
NULL
,
*
ragent
=
NULL
;
GThread
*
stun_thread
=
NULL
;
NiceAddress
baseaddr
;
GSource
*
src
;
g_type_init
();
global_mainloop
=
g_main_loop_new
(
NULL
,
FALSE
);
global_cancellable
=
g_cancellable_new
();
src
=
g_cancellable_source_new
(
global_cancellable
);
g_source_set_dummy_callback
(
src
);
g_source_attach
(
src
,
NULL
);
g_source_unref
(
src
);
#if !GLIB_CHECK_VERSION(2,31,8)
g_thread_init
(
NULL
);
stun_thread
=
g_thread_create
(
stun_thread_func
,
global_mainloop
,
TRUE
,
NULL
);
stun_thread
=
g_thread_create
(
stun_thread_func
,
NULL
,
TRUE
,
NULL
);
stun_mutex_ptr
=
g_mutex_new
();
stun_signal_ptr
=
g_cond_new
();
#else
...
...
@@ -686,10 +727,8 @@ int main(void)
g_mutex_lock
(
stun_thread_mutex_ptr
);
g_cond_wait
(
stun_thread_signal_ptr
,
stun_thread_mutex_ptr
);
lagent
=
nice_agent_new
(
g_main_loop_get_context
(
global_mainloop
),
NICE_COMPATIBILITY_RFC5245
);
ragent
=
nice_agent_new
(
g_main_loop_get_context
(
global_mainloop
),
NICE_COMPATIBILITY_RFC5245
);
lagent
=
nice_agent_new
(
NULL
,
NICE_COMPATIBILITY_RFC5245
);
ragent
=
nice_agent_new
(
NULL
,
NICE_COMPATIBILITY_RFC5245
);
g_object_set
(
G_OBJECT
(
lagent
),
"controlling-mode"
,
TRUE
,
NULL
);
g_object_set
(
G_OBJECT
(
ragent
),
"controlling-mode"
,
FALSE
,
NULL
);
...
...
@@ -734,7 +773,7 @@ int main(void)
g_mutex_free
(
stun_mutex_ptr
);
g_cond_free
(
stun_signal_ptr
);
#endif
g_
main_loop_unref
(
global_mainloop
);
g_
object_unref
(
global_cancellable
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment