Commit e56e07cc authored by schulzs's avatar schulzs
Browse files

Major restructured code based on review

parent 35907f83
Loading
Loading
Loading
Loading
+102 −0
Original line number Diff line number Diff line
/*
 *	@author 	STF 370
 *  @version    $Id $
 *	@desc		This module contains functions which implement the 
 *              configuration of the SUT adapter and mapping of test
 *              components for establishing and tearing down different 
 *              test configurations.
 */

module LibIot_TestConfiguration {
	
	import from LibIot_TestInterface {
		type OracleClient, TestCoordinator, EutTrigger, InterfaceMonitor, OracleServer;
	}
	
	/**
	 * 
	 * @desc initialize the adapter port of MTC
	 */
	function f_cf_adapter_up() runs on TestCoordinator {
		map(self:aPort, system:aPort);
	}
	
	/**
	 * 
	 * @desc uninitialize the adapter port of MTC
	 */
	function f_cf_adapter_down() runs on TestCoordinator {
		unmap(self:aPort, system:aPort);
	}
	
	/**
	 * 
	 * @desc initialize trigger component ports
	 * @param p_driver trigger component
	 */
	function f_cf_user_up(in EutTrigger p_driver) runs on TestCoordinator {
		// connect sync ports
		connect(p_driver:syncPort, self:syncPort);
		// connect TSI ports 
		map(p_driver:tPort, system:tPort);
		// configure oracle
		f_cf_oracle_up(p_driver);
	}
	
	/**
	 * 
	 * @desc uninitialize trigger component ports
	 * @param p_driver trigger component
	 */
	function f_cf_user_down(in EutTrigger p_driver) runs on TestCoordinator {
		// disconnect sync ports
		disconnect(p_driver:syncPort, self:syncPort);
		// disconnect TSI ports 
		unmap(p_driver:tPort, system:tPort);
		// release oracle ports
		f_cf_oracle_down(p_driver);
	}
	
	/**
	* @desc 	configures monitor component: connects to the synchronnization
	* 			port, maps to the TSI port and connects to the oracle 
	* @param 	p_monitor	monitor component 
	*/	
	function f_cf_monitor_up(in InterfaceMonitor p_monitor) runs on TestCoordinator {
		// connect sync ports
		connect(p_monitor:syncPort, self:syncPort);
		connect(p_monitor:xPort, self:xPort);
		// mapp TSI port
		map(p_monitor:mPort, system:mPort);
		// configure oracle
		f_cf_oracle_up(p_monitor);
	}

	/**
	* @desc 	frees monitor component: disconnects the synchronnization
	* 			port, unmaps from the TSI port and disconnects from the oracle 
	* @param 	p_monitor	monitor component 
	*/		
	function f_cf_monitor_down(in InterfaceMonitor p_monitor) runs on TestCoordinator {
		// connect sync ports
		disconnect(p_monitor:syncPort, self:syncPort);
		disconnect(p_monitor:xPort, self:xPort);
		// mapp TSI port
		unmap(p_monitor:mPort, system:mPort);
		// configure oracle
		f_cf_oracle_down(p_monitor);
	}
	
	/**
	* @desc 	creates a monitor component 
	* @param 	p_name	name of the monitor component 
	* @return 			the created monitor component
	*/	
	function f_cf_create_monitor(in charstring p_name) runs on TestCoordinator return InterfaceMonitor {
		var InterfaceMonitor v_monitor := InterfaceMonitor.create(p_name) alive;
		
		return v_monitor; 
	}
	
		
}
 No newline at end of file
+51 −0
Original line number Diff line number Diff line
module AtsIMsIot_TestSystem {

	import from LibIot_TestInterface all;
	
	/**
	* @desc 	interfaces to the SUT 
	*/	
	type component IotSystemInterface {
		port DataPort dPort;
		port EquipmentAccessPort eaPort;
		port AdapterConfigPort acPort;
	}
	
		/**
		* @desc
		*     providing monitoring functionality of involved interfaces. Used as
		*     PTC.
		*/
		type component ImsInterfaceMonitor extends InterfaceMonitor {
			port DataPort dPort;
			port ImsCoordinationPort icpPort;
		}
    	
		/**
		* @desc
		*     used to coordinate the behavior of other components. It is in charge
		*     of controlling the overall execution, manangement of testing phases,
		*     test verdicts collection and synchronization. Used as MTC.
		*/
		type component ImsTestCoordinator extends TestCoordinator {
			port ImsCoordinationPort icpPort;
		}
    	
   	group portDefinitions {
		
 		type port ImsCoordinationPort message {
 			inout SipMessage; 
		}
		
		type port DataPort message {
			in  Request, Response; // SIP
			// TODO DNS .. or union
		}

		
	}
		



}
 No newline at end of file
+0 −144
Original line number Diff line number Diff line
/**
 *  @author   STF370
 *  @version  $
 *            $Id: $
 *  @desc     Common types, templates  and functions for triggering UE actions.
 */
module LibUE {

group LibUEModuleParameters {

  // TODO

} // end group

group LibUEMessageTypes {

  // Requests sent to the UE to trigger a particular action  
  type record UERequest {
    UECommandType cmd,
    charstring params optional
  };
  // Confirmation messages received from the UE
  type record UECnf {
    UECommandType cmd,
    UECommandResult result,
    charstring params optional
  };
  // Indication messages received from the UE
  type record UEInd {
    UECommandType cmd,
    charstring params optional
  };
 type enumerated UECommandType {
    SWITCH_ON_E, 
    SWITCH_OFF_E, 
    INITIATE_REGISTRATION_E,
    INITIATE_DEREGISTRATION_E,
    INITIATE_MO_CALL_E, 
    MT_CALL_IND_E 
    // FFS
  };

 type enumerated UECommandResult {
    SUCCESS_E, 
    ERROR_E
  };


} // end group 



group LibUETemplates {
  
  template UERequest m_UtReq(UECommandType p_Cmd)  := {
    cmd := p_Cmd,
    params := omit
  }
  template UECnf m_Ut_ReqOk (UECommandType p_Cmd) := {
    cmd := p_Cmd,
    result := SUCCESS_E,
    params := *
  }
  template UERequest m_UtMOCallReq(charstring  p_TelNo)  := {
    cmd := INITIATE_MO_CALL_E,
    params := p_TelNo
  }
  template UECnf mw_UtCnfAny  := {
    cmd := ?,
    result := ?,
    params := *
  }


} // end group 

group LibUEInterfaces {
  // To be moved to the interface module

  // Upper tester port
  type port UtPort message {
    out UERequest;
    in  UECnf, UEInd;
  };

  type component UETestDriver
  {
    port UtPort Ut; // Upper tester port connected to the UE
    timer t_UtWait := 10.0;
    var default vc_UtDefault;
  }

} // end group 


group LibUEfunctions {

  /**
   * @desc  Trigger the UE to be switched on 
   */
  function f_UESwitchOn (  ) runs on UETestDriver {
    vc_UtDefault := activate (a_UtDefault());
    t_UtWait.start;
    Ut.send ( m_UtReq( SWITCH_ON_E ) );
    Ut.receive (m_Ut_ReqOk ( SWITCH_ON_E));
    t_UtWait.stop;
  
  }

  /**
   * @desc  Trigger the UE to initiate the registration procedure
   */
  function f_UERegister (  ) runs on UETestDriver {
    vc_UtDefault := activate (a_UtDefault());
    t_UtWait.start;
    Ut.send ( m_UtReq( INITIATE_REGISTRATION_E ) );
    Ut.receive (m_Ut_ReqOk ( INITIATE_REGISTRATION_E));
    t_UtWait.stop;
  
  }

  /**
   * @desc  Trigger the UE to initiate an MO call
   */
  function f_UEMOCall ( charstring p_telNo ) runs on UETestDriver {
    vc_UtDefault := activate (a_UtDefault());
    t_UtWait.start;
    Ut.send ( m_UtMOCallReq( p_telNo) );
    Ut.receive (m_Ut_ReqOk ( INITIATE_MO_CALL_E));
    t_UtWait.stop;
  
  }

  /**
   * @desc  Default handler for UETestDriver
   */
   altstep a_UtDefault() runs on UETestDriver {
     [] Ut.receive(mw_UtCnfAny) {setverdict (inconc);}
     [] t_UtWait.timeout {setverdict (inconc);}
   }

} // end group 

} // end module 
+6 −6
Original line number Diff line number Diff line
@@ -142,8 +142,8 @@ module LibIot_Functions {
    	}
	}
	
	group triggerFunctions {
		function f_sendTriggerCmd(in TriggerCommand p_cmd, in ParameterList p_params) runs on EutTrigger {
	group equipmentOperationFunctions { // TODO Update!
		function f_sendEquipmentCmd(in TriggerCommand p_cmd, in ParameterList p_params) runs on IotEquipmentUser {
			var Status v_status;
			var charstring v_reason := "";
			
@@ -151,17 +151,17 @@ module LibIot_Functions {
				[] tPort.getreply(Trigger:{-,-} value Status:{e_success, *}) -> value v_status {
					if(ispresent(v_status.reason)) {
						v_reason := v_status.reason;
						f_setE2EVerdict(pass, "Trigger command """ & p_cmd & """successful: " & v_reason);
						f_setE2EVerdict(pass, "Equipment command """ & p_cmd & """successful: " & v_reason);
					}else {
						f_setE2EVerdict(pass, "Trigger command successful");
						f_setE2EVerdict(pass, "Equipment command successful");
					}
				}
				[] tPort.getreply(Trigger:{-,-} value ?) -> value  v_status {
					if(ispresent(v_status.reason)) {
						v_reason := v_status.reason;
						f_setE2EVerdict(fail, "Trigger command """ & p_cmd & """unsuccessful: " & v_reason);
						f_setE2EVerdict(fail, "Equipment command """ & p_cmd & """unsuccessful: " & v_reason);
					}else {
						f_setE2EVerdict(fail, "Trigger command unsuccessful: no reason given");
						f_setE2EVerdict(fail, "Equipment command unsuccessful: no reason given");
					}
				}
				[] tPort.catch (timeout) {
Loading