blob: e74cca27eb3101dc4fb11d829c7d8165ceb9c4a1 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
// //
// Copyright (c) 2000-2019 Ericsson Telecom AB //
// //
// All rights reserved. This program and the accompanying materials //
// are made available under the terms of the Eclipse Public License v2.0 //
// which accompanies this distribution, and is available at //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html //
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// Module: Rendezvous_Demo
//
// Purpose:
// Creates and manages a RendezvousServer to provide synchronization among various entities.
//
///////////////////////////////////////////////////////////
module EPTF_Rendezvous_Demo
{
import from EPTF_CLL_RendezvousClient_Functions all;
import from EPTF_CLL_Rendezvous_Functions all;
import from EPTF_CLL_Rendezvous_Definitions all;
import from EPTF_CLL_Base_Functions all;
import from EPTF_CLL_Base_Definitions all;
type component SYSTEM_CT{
}
type component MAIN_CT extends EPTF_Base_CT{
}
type component Client_CT extends EPTF_RendezvousClient_CT{
}
function f_RendezvousClient_Behaviour1(in charstring pl_selfName, in
EPTF_Rendezvous_CT pl_server) runs on Client_CT{
log("----- Client Behaviour START -------");
f_EPTF_RendezvousClient_init_CT(pl_selfName,pl_server);
var integer vl_Idx;
vl_Idx:=f_EPTF_RendezvousClient_StartWaitForATrigger(100);
if(f_EPTF_RendezvousClient_WaitForResponse(vl_Idx))
{
log("---Trigger received---");
}
setverdict(pass);
log("----- Client Behaviour stop -------");
f_EPTF_Base_cleanup_CT();
}
function f_RendezvousClient_Behaviour2(in charstring pl_selfName, in
EPTF_Rendezvous_CT pl_server) runs on Client_CT{
log("----- Client Behaviour START -------");
f_EPTF_RendezvousClient_init_CT(pl_selfName,pl_server);
var integer vl_Idx;
timer t_wait := 2.0;
t_wait.start;
t_wait.timeout
{
vl_Idx:=f_EPTF_RendezvousClient_StartWaitForATrigger(100);
}
if(f_EPTF_RendezvousClient_WaitForResponse(vl_Idx))
{
log("---Trigger received---");
}
setverdict(pass);
log("----- Client Behaviour stop -------");
f_EPTF_Base_cleanup_CT();
}
function f_RendezvousClient_WaitForNTrigger_Behaviour(in charstring pl_selfName, in
EPTF_Rendezvous_CT pl_server) runs on Client_CT{
log("----- Client WaitForNTrigger Behaviour START -------");
f_EPTF_RendezvousClient_init_CT(pl_selfName,pl_server);
var integer vl_Idx;
vl_Idx:=f_EPTF_RendezvousClient_StartWaitForNTrigger(11,3);
if(f_EPTF_RendezvousClient_WaitForResponse(vl_Idx))
{
log("---Trigger received---");
}
setverdict(pass);
log("----- Client Behaviour stop -------");
f_EPTF_Base_cleanup_CT();
}
function f_logBusy(in charstring rendezvousID, in integer rendezvousID_int) runs on Client_CT{
log(f_EPTF_Base_selfName(), " got a NOTIFY!: ", rendezvousID, rendezvousID_int);
setverdict(pass);
}
function f_RendezvousClient_StateTrigger_Behaviour(in charstring pl_selfName, in
EPTF_Rendezvous_CT pl_server, in boolean perm:= false) runs on Client_CT{
log("----- Client StateNTrigger Behaviour START -------");
f_EPTF_RendezvousClient_init_CT(pl_selfName,pl_server);
f_EPTF_RendezvousClient_SubscribeToState("User23456_BUSY", refers(f_logBusy), perm);
timer t_waitProv := 4.0;
t_waitProv.start;
t_waitProv.timeout;
if (perm){
f_EPTF_RendezvousClient_Unsubscribe("User23456_BUSY");
} else {
f_EPTF_RendezvousClient_SubscribeToState("User23456_BUSY", refers(f_logBusy), perm);
}
t_waitProv.start;
t_waitProv.timeout;
log("----- Client Behaviour stop -------");
f_EPTF_Base_cleanup_CT();
}
function f_RendezvousClient_StateTrigger_Behaviour1(in charstring pl_selfName, in
EPTF_Rendezvous_CT pl_server) runs on Client_CT{
log("----- Client StateTrigger Behaviour START -------");
f_EPTF_RendezvousClient_init_CT(pl_selfName,pl_server);
timer t_waitProv := 2.0;
t_waitProv.start;
t_waitProv.timeout;
f_EPTF_RendezvousClient_NewState("User23456_BUSY",2345);
t_waitProv.start;
t_waitProv.timeout;
f_EPTF_RendezvousClient_NewState("User23456_BUSY");
t_waitProv.start;
t_waitProv.timeout;
setverdict(pass);
log("----- Client Behaviour stop -------");
f_EPTF_Base_cleanup_CT();
}
function f_RendezvousServer_behaviour(charstring pl_selfName) runs on EPTF_Rendezvous_CT {
log("----- RendezvousServer START -------");
f_EPTF_Rendezvous_init_CT(pl_selfName);
timer t_waitProv := 15.0;
t_waitProv.start;
alt {
[] t_waitProv.timeout{
t_waitProv.start;repeat;
}
}
setverdict(pass);
f_EPTF_Base_cleanup_CT();
log("----- RendezvousServer shutdown -------");
}
testcase tc_WaitForATriggerDemo() runs on MAIN_CT system SYSTEM_CT{
//Server
var EPTF_Rendezvous_CT ct_server := EPTF_Rendezvous_CT.create;
//Starting Server
ct_server.start(f_RendezvousServer_behaviour("RendezvousServer"));
//Client1
var Client_CT ct_client1 := Client_CT.create;
//Starting Client
ct_client1.start(f_RendezvousClient_Behaviour1("RendezvousClient1", ct_server));
//Client2
var Client_CT ct_client2 := Client_CT.create;
//Starting Client
ct_client2.start(f_RendezvousClient_Behaviour2("RendezvousClient2", ct_server));
timer T_main := 10.0;
T_main.start;
alt {
[] ct_server.done {}
[] T_main.timeout{}
}
//all component.done;
f_EPTF_Base_cleanup_CT();
}
testcase tc_StateTriggerDemo() runs on MAIN_CT system SYSTEM_CT{
//Server
var EPTF_Rendezvous_CT ct_server := EPTF_Rendezvous_CT.create;
//Starting Server
ct_server.start(f_RendezvousServer_behaviour("RendezvousServer"));
//Client1
var Client_CT ct_client1 := Client_CT.create;
//Starting Client
ct_client1.start(f_RendezvousClient_StateTrigger_Behaviour("RendezvousClient1", ct_server, true));
//Client2
var Client_CT ct_client2 := Client_CT.create;
//Starting Client
ct_client2.start(f_RendezvousClient_StateTrigger_Behaviour1("RendezvousClient2", ct_server));
//Client3
var Client_CT ct_client3 := Client_CT.create;
//Starting Client
ct_client3.start(f_RendezvousClient_StateTrigger_Behaviour("RendezvousClient3", ct_server));
timer T_main := 15.0;
T_main.start;
alt {
[] ct_server.done {}
[] T_main.timeout{}
}
//all component.done;
f_EPTF_Base_cleanup_CT();
}
testcase tc_WaitForNTriggerDemo() runs on MAIN_CT system SYSTEM_CT{
//Server
var EPTF_Rendezvous_CT ct_server := EPTF_Rendezvous_CT.create;
//Starting Server
ct_server.start(f_RendezvousServer_behaviour("RendezvousServer"));
//Client1
var Client_CT ct_client1 := Client_CT.create;
//Starting Client
ct_client1.start(f_RendezvousClient_WaitForNTrigger_Behaviour("RendezvousClient1", ct_server));
//Client2
var Client_CT ct_client2 := Client_CT.create;
//Starting Client
ct_client2.start(f_RendezvousClient_WaitForNTrigger_Behaviour("RendezvousClient2", ct_server));
//Client3
var Client_CT ct_client3 := Client_CT.create;
//Starting Client
ct_client3.start(f_RendezvousClient_WaitForNTrigger_Behaviour("RendezvousClient3", ct_server));
timer T_main := 15.0;
T_main.start;
alt {
[] ct_server.done {}
[] T_main.timeout{}
}
//all component.done;
f_EPTF_Base_cleanup_CT();
}
control
{
execute(tc_WaitForATriggerDemo());
execute(tc_WaitForNTriggerDemo());
execute(tc_StateTriggerDemo());
}
} // end of module