Skip to content

Commit 5ee7381

Browse files
authored
Add logs about duration of SDK initialization (#23)
* Add logs about duration of SDK initialization * Move initialization to handle_playing
1 parent 203741e commit 5ee7381

File tree

6 files changed

+44
-7
lines changed

6 files changed

+44
-7
lines changed
File renamed without changes.

lib/agora/agora_sink.ex renamed to lib/agora/sink.ex

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ defmodule Membrane.Agora.Sink do
55
"""
66
use Membrane.Sink
77

8+
require Membrane.Logger
89
require Membrane.Pad, as: Pad
910

1011
alias Membrane.Agora.Sink.Native
@@ -61,10 +62,26 @@ defmodule Membrane.Agora.Sink do
6162
end
6263

6364
@impl true
64-
def handle_setup(_ctx, state) do
65-
{:ok, native_state} =
65+
def handle_playing(_ctx, state) do
66+
native_state =
6667
try do
67-
Native.create(state.app_id, state.token, state.channel_name, state.user_id)
68+
start_time = Membrane.Time.os_time()
69+
70+
{:ok, native_state} =
71+
Native.create(state.app_id, state.token, state.channel_name, state.user_id)
72+
73+
duration = Membrane.Time.os_time() - start_time
74+
duration_ms = Membrane.Time.as_milliseconds(duration, :round)
75+
Membrane.Logger.info("Agora SDK initialization took: #{duration_ms} ms")
76+
77+
if duration_ms > 500 do
78+
Membrane.Logger.warning("""
79+
Agora SDK initialization took #{duration_ms} ms which is longer than expected.
80+
The initial demand made by this sink might be delayed.
81+
""")
82+
end
83+
84+
native_state
6885
rescue
6986
_e in UndefinedFunctionError ->
7087
reraise(
File renamed without changes.

lib/agora/agora_source.ex renamed to lib/agora/source.ex

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ defmodule Membrane.Agora.Source do
55
"""
66
use Membrane.Source
77

8+
require Membrane.Logger
9+
810
alias Membrane.Agora.Source.Native
911
alias Membrane.Buffer
1012

@@ -62,9 +64,25 @@ defmodule Membrane.Agora.Source do
6264

6365
@impl true
6466
def handle_playing(_ctx, state) do
65-
{:ok, native_state} =
67+
native_state =
6668
try do
67-
Native.create(state.app_id, state.token, state.channel_name, state.user_id, self())
69+
start_time = Membrane.Time.os_time()
70+
71+
{:ok, native_state} =
72+
Native.create(state.app_id, state.token, state.channel_name, state.user_id, self())
73+
74+
duration = Membrane.Time.os_time() - start_time
75+
duration_ms = Membrane.Time.as_milliseconds(duration, :round)
76+
Membrane.Logger.info("Agora SDK initialization took: #{duration_ms} ms")
77+
78+
if duration_ms > 500 do
79+
Membrane.Logger.warning("""
80+
Agora SDK initialization took #{duration_ms} ms which is longer than expected.
81+
The initial demand made by this sink might be delayed.
82+
""")
83+
end
84+
85+
native_state
6886
rescue
6987
_e in UndefinedFunctionError ->
7088
reraise(
File renamed without changes.

test/integration_test.exs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,23 @@ defmodule Membrane.Agora.IntegrationTest do
2222
custom_args: [audio: output_audio, video: output_video, framerate: framerate]
2323
)
2424

25+
Process.sleep(1_000)
26+
2527
{:ok, _supervisor, sender_pipeline} =
2628
Membrane.Testing.Pipeline.start_link(
2729
module: SenderPipeline,
2830
custom_args: [audio: input_audio, video: input_video, framerate: framerate]
2931
)
3032

31-
assert_start_of_stream(receiver_pipeline, :video_sink, :input, 10_000)
33+
assert_start_of_stream(receiver_pipeline, :video_sink, :input, 15_000)
3234
assert_start_of_stream(receiver_pipeline, :audio_sink)
3335

3436
assert_end_of_stream(sender_pipeline, :sink, Pad.ref(:video, _), 30_000)
3537
assert_end_of_stream(sender_pipeline, :sink, Pad.ref(:audio, _), 30_000)
3638

3739
Membrane.Pipeline.terminate(sender_pipeline)
3840

39-
assert_end_of_stream(receiver_pipeline, :video_sink, :input, 10_000)
41+
assert_end_of_stream(receiver_pipeline, :video_sink, :input, 15_000)
4042
assert_end_of_stream(receiver_pipeline, :audio_sink)
4143

4244
Membrane.Pipeline.terminate(receiver_pipeline)

0 commit comments

Comments
 (0)