1782
1782
{megaco_update_conn_info, protocol_version, ?VERSION},
1783
1783
{megaco_update_conn_info, segment_send, 1},
1784
1784
{megaco_update_conn_info, max_pdu_size, 128},
1786
1786
{megaco_callback, handle_trans_request, NotifyReqVerify},
1787
1787
{megaco_callback, handle_trans_ack, AckVerify, 5000},
1788
1788
megaco_stop_user,
3401
3401
d("[MG] start the simulation"),
3402
3402
{ok, MgId} = megaco_test_megaco_generator:exec(Mg, MgEvSeq),
3404
%% Await MGC ready for segments
3405
d("await MGC trigger event"),
3408
{ready_for_segments, mgc, Pid1} ->
3409
d("received MGC trigger event"),
3412
d("timeout waiting for MGC trigger event: ~p",
3413
[megaco_test_lib:flush()]),
3414
?ERROR(timeout_MGC_trigger_event)
3417
%% Await MG ready for segments
3418
d("await MG trigger event"),
3421
{ready_for_segments, mg, Pid2} ->
3422
d("received MG trigger event"),
3425
d("timeout waiting for MG trigger event: ~p",
3426
[megaco_test_lib:flush()]),
3427
?ERROR(timeout_MG_trigger_event)
3430
%% Instruct the MG to continue
3431
d("send continue to MG"),
3432
MgPid ! {continue_with_segments, self()},
3436
%% Instruct the MGC to continue
3437
d("send continue to MGC"),
3438
MgcPid ! {continue_with_segments, self()},
3404
3440
d("await the generator reply(s)"),
3405
3441
await_completion([MgcId, MgId]),
3490
3526
SegmentRep7 = ssmmsr1_mgc_segment_reply_msg(Mid, TransId, 7, false),
3491
3527
SegmentRep8 = ssmmsr1_mgc_segment_reply_msg(Mid, TransId, 8, true),
3492
3528
TransAck = ssmmsr1_mgc_trans_ack_msg(Mid, TransId),
3529
ReadyForSegments = ssmmsr1_mgc_ready_for_segments_fun(),
3493
3530
EvSeq = [{debug, true},
3494
3531
{decode, DecodeFun},
3495
3532
{encode, EncodeFun},
3497
3534
{expect_accept, any},
3498
3535
{expect_receive, "service-change-request", {ScrVerifyFun, 5000}},
3499
3536
{send, "service-change-reply", ServiceChangeRep},
3500
{expect_nothing, 1000},
3537
%% {expect_nothing, 1000},
3538
{trigger, "segment send sync trigger", ReadyForSegments},
3501
3539
{send, "notify request", NotifyReq},
3502
3540
{expect_receive, "notify reply: segment 1", {NrVerifyFun1, 1000}},
3503
3541
{expect_receive, "notify reply: segment 2", {NrVerifyFun2, 1000}},
3569
ssmmsr1_mgc_ready_for_segments_fun() ->
3572
io:format("ssmmsr1_mgc_ready_for_segments_fun -> entry~n", []),
3573
TC ! {ready_for_segments, mgc, self()},
3575
{continue_with_segments, TC} ->
3576
io:format("ssmmsr1_mgc_ready_for_segments_fun -> "
3577
"received continue~n", []),
3531
3582
ssmmsr1_mgc_encode_msg_fun(Mod, Conf) ->
3533
3584
Mod:encode_message(Conf, M)
3803
3854
Tids = [Tid1, Tid2, Tid3, Tid4, Tid5, Tid6, Tid7, Tid8],
3804
3855
NotifyReqVerify = ssmmsr1_mg_verify_notify_request_fun(Tids),
3805
3856
AckVerify = ssmmsr1_mg_verify_ack_fun(),
3857
ReadyForSegments = ssmmsr1_mg_ready_for_segments_fun(),
3808
3860
{megaco_trace, disable},
3819
3871
{megaco_callback, handle_connect, ConnectVerify},
3820
3872
{megaco_callback, handle_trans_reply, ServiceChangeReplyVerify},
3821
3873
{megaco_update_conn_info, protocol_version, ?VERSION},
3822
{megaco_update_conn_info, reply_timer, 12000},
3874
{megaco_update_conn_info, reply_timer, 20000},
3823
3875
{megaco_update_conn_info, segment_send, 3},
3824
3876
{megaco_update_conn_info, max_pdu_size, 128},
3878
{trigger, ReadyForSegments},
3826
3879
{megaco_callback, handle_trans_request, NotifyReqVerify},
3827
3880
{megaco_callback, handle_trans_ack, AckVerify, 15000},
3828
3881
megaco_stop_user,
3888
ssmmsr1_mg_ready_for_segments_fun() ->
3891
io:format("ssmmsr1_mg_ready_for_segments_fun -> entry~n", []),
3892
TC ! {ready_for_segments, mg, self()},
3894
{continue_with_segments, TC} ->
3895
io:format("ssmmsr1_mg_ready_for_segments_fun -> "
3896
"received continue~n", []),
3835
3901
ssmmsr1_mg_verify_handle_connect_fun() ->
3836
3902
fun(Ev) -> ssmmsr1_mg_verify_handle_connect(Ev) end.
4101
4167
d("[MG] start the simulation"),
4102
4168
{ok, MgId} = megaco_test_megaco_generator:exec(Mg, MgEvSeq),
4170
%% Await MGC ready for segments
4171
d("await MGC trigger event"),
4174
{ready_for_segments, mgc, Pid1} ->
4175
d("received MGC trigger event"),
4178
d("timeout waiting for MGC trigger event: ~p",
4179
[megaco_test_lib:flush()]),
4180
?ERROR(timeout_MGC_trigger_event)
4183
%% Await MG ready for segments
4184
d("await MG trigger event"),
4187
{ready_for_segments, mg, Pid2} ->
4188
d("received MG trigger event"),
4191
d("timeout waiting for MG trigger event: ~p",
4192
[megaco_test_lib:flush()]),
4193
?ERROR(timeout_MG_trigger_event)
4196
%% Instruct the MG to continue
4197
d("send continue to MG"),
4198
MgPid ! {continue_with_segments, self()},
4202
%% Instruct the MGC to continue
4203
d("send continue to MGC"),
4204
MgcPid ! {continue_with_segments, self()},
4104
4206
d("await the generator reply(s)"),
4105
4207
await_completion([MgcId, MgId]),
4164
4266
ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(2, false, TransId,
4165
4267
TermId2, CtxId2),
4167
%% ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(3, false, TransId,
4168
%% TermId3, CtxId3),
4170
%% ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(4, false, TransId,
4171
%% TermId4, CtxId4),
4173
%% ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(5, false, TransId,
4174
%% TermId5, CtxId5),
4176
%% ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(6, false, TransId,
4177
%% TermId6, CtxId6),
4179
%% ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(7, false, TransId,
4180
%% TermId7, CtxId7),
4182
%% ssmmsr2_mgc_verify_notify_reply_segment_msg_fun(8, true, TransId,
4183
%% TermId8, CtxId8),
4184
4268
SegmentRep1 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 1, false),
4185
%% SegmentRep2 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 2, false),
4186
%% SegmentRep3 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 3, false),
4187
%% SegmentRep4 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 4, false),
4188
%% SegmentRep5 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 5, false),
4189
%% SegmentRep6 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 6, false),
4190
%% SegmentRep7 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 7, false),
4191
%% SegmentRep8 = ssmmsr2_mgc_segment_reply_msg(Mid, TransId, 8, true),
4192
%% TransAck = ssmmsr2_mgc_trans_ack_msg(Mid, TransId),
4269
ReadyForSegments = ssmmsr2_mgc_ready_for_segments_fun(),
4193
4270
EvSeq = [{debug, true},
4194
4271
{decode, DecodeFun},
4195
4272
{encode, EncodeFun},
4197
4274
{expect_accept, any},
4198
4275
{expect_receive, "service-change-request", {ScrVerifyFun, 5000}},
4199
4276
{send, "service-change-reply", ServiceChangeRep},
4200
{expect_nothing, 1000},
4277
%% {expect_nothing, 1000},
4278
{trigger, "segment send sync trigger", ReadyForSegments},
4201
4279
{send, "notify request", NotifyReq},
4202
4280
{expect_receive, "notify reply: segment 1", {NrVerifyFun1, 1000}},
4203
4281
{send, "segment reply 1", SegmentRep1},
4204
4282
{expect_receive, "notify reply: segment 2", {NrVerifyFun2, 1000}},
4205
%% {expect_nothing, 1000},
4206
4283
{expect_closed, 20000},
4288
ssmmsr2_mgc_ready_for_segments_fun() ->
4291
io:format("ssmmsr2_mgc_ready_for_segments_fun -> entry~n", []),
4292
TC ! {ready_for_segments, mgc, self()},
4294
{continue_with_segments, TC} ->
4295
io:format("ssmmsr2_mgc_ready_for_segments_fun -> "
4296
"received continue~n", []),
4211
4301
ssmmsr2_mgc_encode_msg_fun(Mod, Conf) ->
4213
4303
Mod:encode_message(Conf, M)
4483
4573
Tids = [Tid1, Tid2, Tid3, Tid4, Tid5, Tid6, Tid7, Tid8],
4484
4574
NotifyReqVerify = ssmmsr2_mg_verify_notify_request_fun(Tids),
4485
4575
AckVerify = ssmmsr2_mg_verify_ack_fun(),
4576
ReadyForSegments = ssmmsr2_mg_ready_for_segments_fun(),
4488
4579
{megaco_trace, disable},
4502
4593
{megaco_update_conn_info, reply_timer, 12000},
4503
4594
{megaco_update_conn_info, segment_send, 1},
4504
4595
{megaco_update_conn_info, max_pdu_size, 128},
4597
{trigger, ReadyForSegments},
4506
4598
{megaco_callback, handle_trans_request, NotifyReqVerify},
4507
4599
{megaco_callback, handle_trans_ack, AckVerify, 15000},
4508
4600
megaco_stop_user,
4607
ssmmsr2_mg_ready_for_segments_fun() ->
4610
io:format("ssmmsr2_mg_ready_for_segments_fun -> entry~n", []),
4611
TC ! {ready_for_segments, mg, self()},
4613
{continue_with_segments, TC} ->
4614
io:format("ssmmsr2_mg_ready_for_segments_fun -> "
4615
"received continue~n", []),
4515
4620
ssmmsr2_mg_verify_handle_connect_fun() ->
4516
4621
fun(Ev) -> ssmmsr2_mg_verify_handle_connect(Ev) end.
4852
4957
{listen, 2944},
4853
4958
{expect_accept, any},
4854
4959
{expect_receive, "service-change-request", {ScrVerifyFun, 5000}},
4855
4962
{send, "service-change-reply", ServiceChangeRep},
4856
4963
{expect_receive, "notify-request(1)", {NrVerifyFun, 4000}},
4857
4966
{send, "notify reply - segment 1", NotifyRep1},
4858
4967
{expect_receive, "segment reply 1", {SrVerifyFun1, 2000}},
4859
4970
{send, "notify reply - segment 2", NotifyRep2},
4860
4971
{expect_receive, "segment reply 2", {SrVerifyFun2, 2000}},
4861
4974
{send, "notify reply - segment 3 (last)", NotifyRep3},
4862
4975
{expect_receive, "segment reply 3 (last)", {SrVerifyFun3, 2000}},
4863
4976
{expect_receive, "ack", {AckVerifyFun, 4000}},
5335
5448
rsmp_mg_verify_notify_reply(
5336
5449
{handle_trans_reply, _CH, ?VERSION, {ok, {SN, Last, [AR]}}, _}, SN, Tid)
5337
when ((SN == 3) and (Last == true)) or
5338
((SN =/= 3) and (Last == false)) ->
5450
when ((SN =:= 3) andalso (Last =:= true)) orelse
5451
((SN =/= 3) andalso (Last =:= false)) ->
5339
5452
(catch rsmp_mg_do_verify_notify_reply(Tid, AR));
5453
rsmp_mg_verify_notify_reply(
5454
{handle_trans_reply, _CH, Version, {ok, {SN1, Last, ARs}}, _}, SN2, Tid) ->
5455
io:format("rsmp_mg_verify_notify_reply -> unknown reply"
5462
"~n", [Version, SN1, Last, ARs, SN2, Tid]),
5463
Crap = {unexpected_segment_data, [SN1, Last, ARs, SN2, Tid]},
5340
5465
rsmp_mg_verify_notify_reply(Crap, SN, Tid) ->
5341
5466
io:format("rsmp_mg_verify_notify_reply -> unknown reply"
7599
7724
?ERROR({failed, Reply})
7602
await_completion(Ids, Timeout) ->
7603
case megaco_test_generator_lib:await_completion(Ids, Timeout) of
7605
d("OK => Reply: ~n~p", [Reply]),
7607
{error, {OK, ERROR}} ->
7610
"~n ERROR: ~p", [OK, ERROR]),
7611
?ERROR({failed, ERROR});
7613
d("ERROR => Reply: ~n~p", [Reply]),
7614
?ERROR({failed, Reply})
7727
%% await_completion(Ids, Timeout) ->
7728
%% case megaco_test_generator_lib:await_completion(Ids, Timeout) of
7730
%% d("OK => Reply: ~n~p", [Reply]),
7732
%% {error, {OK, ERROR}} ->
7735
%% "~n ERROR: ~p", [OK, ERROR]),
7736
%% ?ERROR({failed, ERROR});
7737
%% {error, Reply} ->
7738
%% d("ERROR => Reply: ~n~p", [Reply]),
7739
%% ?ERROR({failed, Reply})
7618
7743
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%