| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // Copyright (c) 2000-2018 Ericsson Telecom AB |
| // |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // File: MBT_demo.ttcn |
| // Rev: <RnXnn> |
| // Prodnr: CNL 113 659 |
| // Updated: 2009-10-01 |
| // Contact: http://ttcn.ericsson.se |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| module MBT_demo |
| { |
| |
| import from EPTF_MBT_LGen_Definitions all; |
| import from EPTF_MBT_LGen_Functions all; |
| import from EPTF_CLL_Common_Definitions all; |
| import from EPTF_CLL_Base_Definitions all; |
| import from EPTF_CLL_Base_Functions all; |
| import from EPTF_CLL_RBTScheduler_Functions all; |
| import from EPTF_CLL_LGenBase_Definitions all; |
| import from EPTF_CLL_LGenBase_ConfigFunctions all; |
| import from EPTF_CLL_LGenBase_EventHandlingFunctions all; |
| |
| import from EPTF_SIP_LGen_Definitions all; |
| import from EPTF_SIP_LGen_Functions all; |
| import from EPTF_SIP_Common_Functions all; |
| import from EPTF_SIP_UserDatabase_Functions all; |
| import from EPTF_SIP_Transport_Definitions all; |
| import from EPTF_SIP_Transport_Functions all; |
| import from EPTF_SIP_MessageHandler_Functions all; |
| |
| import from EPTF_HTTP_Transport_Definitions all; |
| import from EPTF_HTTP_Transport_Functions all; |
| |
| import from EPTF_HTTP_Definitions all; |
| import from EPTF_HTTP_Functions all; |
| |
| |
| type component MBT_Demo_LGen_CT extends EPTF_MBT_LGen_CT, EPTF_SIP_LGen_CT, EPTF_SIP_LocalTransport_CT, |
| EPTF_HTTP_LGen_CT,EPTF_HTTP_LocalTransport_CT |
| {} |
| |
| type component MBT_Demo_Tester_CT extends EPTF_MBT_Tester_CT {} |
| |
| type component MBT_Demo_Main_CT extends EPTF_Base_CT {} |
| |
| testcase tc_MBT_HTTP_Demo() runs on MBT_Demo_Main_CT |
| { |
| f_EPTF_Base_init_CT("mtc"); |
| |
| var MBT_Demo_LGen_CT vc_MBT_CT := MBT_Demo_LGen_CT.create; |
| var MBT_Demo_Tester_CT vc_Tester_CT := MBT_Demo_Tester_CT.create; |
| |
| connect(vc_MBT_CT:EPTF_MBT_PCO, vc_Tester_CT:EPTF_MBT_TESTER_PCO); |
| |
| vc_MBT_CT.start(f_MBT_Demo_LGen_HTTP_behavior()); |
| vc_Tester_CT.start(f_MBT_Demo_Tester_HTTP_behavior()); |
| |
| //all component.done; |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| testcase tc_MBT_SIP_Demo() runs on MBT_Demo_Main_CT |
| { |
| f_EPTF_Base_init_CT("mtc"); |
| |
| var MBT_Demo_LGen_CT vc_MBT_CT := MBT_Demo_LGen_CT.create; |
| var MBT_Demo_Tester_CT vc_Tester_CT := MBT_Demo_Tester_CT.create; |
| |
| connect(vc_MBT_CT:EPTF_MBT_PCO, vc_Tester_CT:EPTF_MBT_TESTER_PCO); |
| |
| vc_MBT_CT.start(f_MBT_Demo_LGen_SIP_behavior()); |
| vc_Tester_CT.start(f_MBT_Demo_Tester_SIP_behavior()); |
| |
| //all component.done; |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_MBT_Demo_LGen_HTTP_behavior() runs on MBT_Demo_LGen_CT |
| { |
| //map(self:IPL4_PCO, system:IPL4_PCO); |
| f_EPTF_MBT_init("MBT_Demo_LGen",0, "MBT_") |
| |
| f_EPTF_HTTP_init( |
| pl_selfName:="HTTP_LoadGen", |
| pl_selfId:=0, |
| pl_entityNamePrefix:="HTTP_AppLib_", |
| pl_numEntities:=0) |
| |
| f_EPTF_HTTP_LocalTransport_init_CT( |
| pl_selfName:="EPTF_HTTP_LocalTransport", |
| pl_receiveFunction:=refers(f_EPTF_HTTP_messageReceived), |
| pl_eventReceiveFunction:=refers(f_EPTF_HTTP_eventReceived)) |
| |
| f_EPTF_HTTP_setSendRequestFunction(pl_sendRequest_fp:=refers(f_EPTF_HTTP_LocalTransport_sendMessage)) |
| f_EPTF_HTTP_setConnectionOpenFunction(plf_connectionOpen:=refers(f_EPTF_HTTP_LocalTransport_connectionOpen)) |
| f_EPTF_HTTP_setConnectionCloseFunction(plf_connectionClose:=refers(f_EPTF_HTTP_LocalTransport_connectionClose)) |
| f_EPTF_HTTP_setConnectionHalfCloseFunction(plf_connectionHalfClose:=refers(f_EPTF_HTTP_LocalTransport_connectionHalfClose)) |
| f_EPTF_HTTP_setFreePortOfUserFunction(plf_fpou:=refers(f_EPTF_HTTP_LocalTransport_freePortOfUser)); |
| f_EPTF_HTTP_setClosePortOfUserFunction(plf_cpou:=refers(f_EPTF_HTTP_LocalTransport_closePortOfUser)); |
| |
| f_EPTF_MBT_initLGenFsm |
| ( |
| refers(f_mbt_userfunction), |
| refers(f_EPTF_MBT_HTTP_Demo_fillInDB) |
| ); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_MBT_Demo_Tester_HTTP_behavior() runs on MBT_Demo_Tester_CT |
| { |
| f_EPTF_Base_init_CT("MBT_Demo_Tester"); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_ConfigRequest: |
| { |
| entityGroupName := "MBT_EntityType", |
| noEntities := 1, |
| behaviors := {"MBT_behavior", "HTTP Behavior"}, |
| fsmName := "FSM_MBT" |
| } |
| ); |
| |
| // TODO: activate default altstep, with timeout handling |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_ConfigResponse:?); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"EPTF HTTP: Sends HTTP Request", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_TestStepResponse:{ bName := "HTTP Behavior", iName := "HTTP CHAR Response Message Received", addr := *}); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_CommandRequest:{ quit := {}}); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_MBT_Demo_LGen_SIP_behavior() runs on MBT_Demo_LGen_CT |
| { |
| f_EPTF_MBT_init("MBT_Demo_LGen",0, "MBT_") |
| |
| f_SIP_applibInit("MBT_Demo_LGen"); |
| |
| f_EPTF_SIP_LocalTransport_init("udp"); |
| vf_EPTF_SIP_LocalTransport_receive := refers(f_EPTF_SIP_Message_MsgHandler); //receive callback function on LocalTransport |
| vf_EPTF_SIP_LGen_msgSender := refers(f_EPTF_SIP_LocalTransport_sendSIPMessage); //send callback function on LGen |
| v_removeUAS := refers(fcb_EPTF_SIP_LocalTransport_removeUAS); |
| |
| f_EPTF_MBT_initLGenFsm |
| ( |
| null, |
| refers(f_EPTF_MBT_SIP_Demo_fillInDB) |
| ); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| function f_MBT_Demo_Tester_SIP_behavior() runs on MBT_Demo_Tester_CT |
| { |
| f_EPTF_Base_init_CT("MBT_Demo_Tester"); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_ConfigRequest: |
| { |
| entityGroupName := "MBT_EntityType", |
| noEntities := 1, |
| behaviors := {"MBT_behavior", "HTTP Behavior"}, |
| fsmName := "FSM_MBT" |
| } |
| ); |
| |
| // TODO: activate default altstep, with timeout handling |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_ConfigResponse:?); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"SIPAppLib: StepFunction_init", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"SIPAppLib: StepFunction_createREGISTER", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_TestStepResponse:{ bName := "Behavior_SIP", iName := "401", addr := * }); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"SIPAppLib: StepFunction_createREGISTER", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_TestStepResponse:{ bName := "Behavior_SIP", iName := "200", addr := * }); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"SIPAppLib: StepFunction_createDEREGISTER", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_TestStepResponse:{ bName := "Behavior_SIP", iName := "401", addr := * }); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"SIPAppLib: StepFunction_createDEREGISTER", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.receive(EPTF_MBT_TestStepResponse:{ bName := "Behavior_SIP", iName := "200", addr := * }); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_TestStepRequest: {"SIPAppLib: StepFunction_cleanUp", {}, omit, omit}); |
| |
| EPTF_MBT_TESTER_PCO.send(EPTF_MBT_CommandRequest:{ quit := {}}); |
| |
| f_EPTF_Base_wait4Shutdown(); |
| } |
| |
| // CUSTOM PART |
| |
| function f_mbt_userfunction(in EPTF_LGenBase_TestStepArgs pl_ptr) |
| runs on MBT_Demo_LGen_CT |
| return boolean |
| { |
| v_msgToProcess.response.messageBody:="Ferike"; |
| return true; |
| } |
| |
| function f_EPTF_MBT_SIP_Demo_fillInDB(in EPTF_MBT_ConfigRequest p_req) runs on MBT_Demo_LGen_CT |
| { |
| var integer vl_grpIdx := f_EPTF_LGenBase_entityGrpNameIndex(p_req.entityGroupName); |
| var integer vl_entityIdx := f_EPTF_LGenBase_getEGrpBaseOffset(vl_grpIdx); |
| |
| for (var integer i:=0; i<p_req.noEntities; i:=i+1) |
| { |
| var EPTF_IntegerList vl_bCtx := f_EPTF_LGenBase_getBehaviorCtx(i + vl_entityIdx, v_SIP_myBIdx); |
| f_EPTF_SIP_IPL4asp_SetUserData |
| ( |
| vl_bCtx[0], |
| "10.251.64.2", // local IP |
| {15000, 15001}, |
| "udp", |
| "10.80.36.65", // proxy ip |
| 5060 // proxy port |
| ); |
| |
| f_EPTF_SIP_User_SetUserData( |
| vl_bCtx[0], |
| { |
| { |
| addr := { |
| nameAddr := { |
| displayName := "titansim_user_7465000", |
| addrSpec := { |
| scheme := "sip", |
| userInfo := { |
| userOrTelephoneSubscriber := "titansim_user_7465000", |
| password := omit |
| }, |
| hostPort := { |
| host := "tcj.ics.se", |
| portField := 5060 |
| }, |
| urlParameters := omit, |
| headers := omit |
| } |
| } |
| }, |
| password := "pass2ICS" |
| } |
| }, |
| "10.251.64.2", |
| {15000, 15001}, |
| i + vl_entityIdx //entity index |
| ); |
| |
| f_EPTF_SIP_Session_AddData(vl_bCtx[0], f_EPTF_SIP_getTransport("UDP"),345600); |
| |
| //f_EPTF_SIP_mapUser2TransportUser(vl_bCtx[0], 0); |
| |
| f_EPTF_SIP_IPL4asp_startListening(vl_bCtx[0], true); // Both UDP and TCP |
| } |
| } |
| |
| function f_EPTF_MBT_HTTP_Demo_fillInDB(in EPTF_MBT_ConfigRequest p_req) runs on MBT_Demo_LGen_CT |
| { |
| |
| var integer vl_grpIdx := f_EPTF_LGenBase_entityGrpNameIndex(p_req.entityGroupName); |
| var integer vl_entityIdx := f_EPTF_LGenBase_getEGrpBaseOffset(vl_grpIdx); |
| |
| for (var integer i:=0; i<p_req.noEntities; i:=i+1) |
| { |
| var EPTF_IntegerList vl_bCtx := f_EPTF_LGenBase_getBehaviorCtx(i + vl_entityIdx, v_EPTF_HTTP_myBIdx); |
| |
| |
| var integer vl_connHandle := f_EPTF_HTTP_LocalTransport_newPort( |
| { |
| name:="SingleHTTP_Port"& "_" & int2str(vl_bCtx[0]), |
| localHostInformation := { "192.168.163.130", 50000+vl_bCtx[0]}, |
| remoteHostInformation := { "ttcn.ericsson.se", 80}, |
| instantConnOpen := true, |
| instantConnClose := true, |
| useSSL := false, |
| userFunctions := omit |
| } |
| ) |
| v_EPTF_HTTP_contexts[vl_bCtx[0]] := { |
| method := "GET", |
| uri:= "/", |
| version_major:=1, |
| version_minor:=1, |
| headerLinesIdx := f_EPTF_HTTP_addNewHeaderLines({ |
| {header_name:="Host", header_value:="ttcn.ericsson.se" }, |
| {header_name:="Connection", header_value:="close" } }), |
| authDetails := {"","","","","00000001","MD5","","","","",""}, |
| //authDetails := {"","","","","00000001","MD5",""}, |
| requestPending:=false, |
| connId := vl_connHandle, |
| bodyId :=f_EPTF_HTTP_setCharEntityBody("<HTML>Request.</HTML>"), |
| headerGetterFn:=refers(f_EPTF_HTTP_getHeaderContentForEntity), |
| rawHeaderGetterFn:= null, |
| contentGetterFn:=refers(f_EPTF_HTTP_getCharstringBodyContentForEntity), |
| charBodyHandlerFn:=refers(f_EPTF_HTTP_defaultCharstringBodyHandler) , |
| binaryBodyHandlerFn:= refers(f_EPTF_HTTP_defaultBinaryBodyHandler) |
| |
| } |
| } |
| } |
| |
| } |