Commit 42f2bec7 authored by berge's avatar berge
Browse files

Preparing test suite setup and first testcase

parent c8131cea
Loading
Loading
Loading
Loading
+136 −0
Original line number Diff line number Diff line
/**
 *  
 *  @author     ETSI / STF510
 *  @version    $URL$
 *              $Id$
 *  @desc       Module containing functions for SmartAppliances
 *
 */
module SmartAppliances_Functions {
	
	// LibOneM2M
	import from OneM2M_TestSystem all;
	import from OneM2M_Functions all;
	import from OneM2M_Templates all;
	import from OneM2M_Types all;
	
	// LibSmartAppliances
	import from SmartAppliances_Templates all;
	
	group configFunctions {
		
		/**
		 * @desc Ports mapping and default behaviour activation for Config XX
		 */
		function f_cf0XXUp() runs on AeTester system AeSystem {
			
			map(self:mcaPort, system:mcaPort);
			map(self:acPort, system:acPort);
			activate(a_ae_default_sap());
		}
		
		/**
		 * @desc Ports unmapping for Config XX
		 */
		function f_cf0XXDown() runs on AeTester system AeSystem {
			
			unmap(self:mcaPort, system:mcaPort);
			unmap(self:acPort, system:acPort);
		}
		
	} // end configFunctions
	
	group aeFunctions {
		
		group altstepFunctions {
			
			/**
			  * @desc	Ae altstep (SAP - TODO: merge in oneM2M)
			  */
			altstep a_ae_default_sap() runs on AeTester {
    		    			  		
				var MsgIn v_request;    		    			  		
    		    			  		
				[] mcaPort.receive(mw_request(?)) -> value v_request {
					log("a_default: WARNING: Unexpected request received");
					mcaPort.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier)));
					repeat;
				}
				
				[] mcaPort.receive {
					log("a_default: WARNING: Unexpected message received");
					repeat;
				}
			}	
			
		} // end altstepFunctions
		
		group preambleFunctions {
			
			/**
			 * @desc	Waits for AE registration request and process it 		
			 * @verdict	inconc if no AE registration request is received 
			 */
			function f_ae_preamble_registerAe() runs on AeTester {
    		
    			var MsgIn v_request;
    			var AE_optional v_ae;
    			var integer v_resourceId;
    		
    			tc_ac.start;
    			alt {    				
    				[] mcaPort.receive(mw_request(mw_createAe)) -> value v_request {
    					// TODO: answer registration request
    					
    					v_ae := valueof(v_request.primitive.requestPrimitive.primitiveContent.any_1[0].AE_optional);
						v_ae.resourceType := v_request.primitive.requestPrimitive.resourceType;
						v_ae.parentID := "~"; // FIXME: to be checked
						v_ae.creationTime := fx_generateTimestamp();
						v_ae.lastModifiedTime := v_ae.creationTime;	
										
						v_resourceId := lengthof(vc_resourcesList) - 1;						
						v_ae.resourceID := "ae" & int2char(v_resourceId);
						v_ae.aE_ID := "ae" & int2char(v_resourceId);
						v_ae.resourceName := "ae" & int2char(v_resourceId);
						
						v_request.primitive.requestPrimitive.primitiveContent.any_1[0].AE_optional := v_ae;
						f_setResource(v_request.primitive.requestPrimitive.primitiveContent, -1);

						mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_request.primitive.requestPrimitive.requestIdentifier, v_request.primitive.requestPrimitive.primitiveContent)));  					
						log("Preamble: Application registered successfuly");
    				}
    					
    				[] tc_ac.timeout {
    					setverdict(inconc, testcasename() & ": AE registration request not received");
    					stop;
    				}	 
    				   	
    			}    		
			}			
			
		} // end preambleFunctions
		
		group postambleFunctions {
			
			/**
			 * @desc Default postamble
			 * @verdict 
			 */
			function f_ae_postamble_default() runs on AeTester {
				// currently empty
			}
			
		} // end postambleFunctions
	
	} // end aeFunctions
	
	group externalFunctions {

		/**
		 * @desc Generates a oneM2M timestamp based on current time. 
		 * 		 Format shall be YYYYMMDDTHHMMSS 
		 */		
		external function fx_generateTimestamp() return charstring;
		
	}
}
 No newline at end of file
+96 −0
Original line number Diff line number Diff line
/**
 *  
 *  @author     ETSI / STF510
 *  @version    $URL$
 *              $Id$
 *  @desc       Module containing templates for SmartAppliances
 *
 */
module SmartAppliances_Templates {
	
	// LibOneM2M
	import from OneM2M_TestSystem all;
	import from OneM2M_Types all;
	import from OneM2M_Pixits all;
	
	group primitives {
		
		/** 
		 * @desc Base template for response sending operations
		 * @param p_responsePrimitive
		 */
		template (value) MsgOut m_response(in template (value) ResponsePrimitive p_responsePrimitive, in template (omit) AttributeList_1 p_nullFields := omit ) := {
			primitive := { responsePrimitive := p_responsePrimitive},
			host := PX_HOST_ADDRESS,
			xmlNamespace := PX_XML_NAMESPACE,
			protocolBinding := PX_PROTOCOL_BINDING,
			serialization := PX_SERIALIZATION, 
			nullFields := p_nullFields
		};
		
	} // end primitives
		
	group RequestPrimitives {
	
		group Create {
			
			/**
			 * @desc Reception template for AE registration
			 */
			template RequestPrimitive mw_createAe := {
				operation := int1,
				to_ := ?,
				from_ := *,
				requestIdentifier := ?,
				resourceType := int2,
				primitiveContent := {
					any_1 := {{AE_optional := ?}}	
				},
				role := *,
				originatingTimestamp := *,
				requestExpirationTimestamp := *,
				resultExpirationTimestamp := *,
				operationExecutionTime := *,
				responseType := *,
				resultPersistence := *,
				resultContent := *,
				eventCategory := *,
				deliveryAggregation := *,
				groupRequestIdentifier := *,
				filterCriteria := *,
				discoveryResultType := *	

			};
		} // end Create
		
	} // end RequestPrimitives
		
	group ResponsePrimitives {
		
		/**
		 * @desc  Base template for sending ResponsePrimitive
		 * @param p_statusCode	Status code
		 * @param p_requestId	Request ID of the corresponding request
		 */
		template (value) ResponsePrimitive m_responsePrimitive(in ResponseStatusCode p_statusCode, in RequestID p_requestId) := {
			responseStatusCode := p_statusCode,
			requestIdentifier := p_requestId,
			primitiveContent := omit,
			to_ := omit,
			from_ := omit,
			originatingTimestamp := omit,
			resultExpirationTimestamp := omit,
			eventCategory := omit
		};
		
		/**
		 * @desc  Base template for sending ResponsePrimitive
		 * @param p_statusCode	Status code
		 * @param p_requestId	Request ID of the corresponding request
		 */
		template (value) ResponsePrimitive m_responsePrimitive_content(in ResponseStatusCode p_statusCode, in RequestID p_requestId, in PrimitiveContent p_content) modifies m_responsePrimitive := {
			primitiveContent := p_content			
		}

	} // end ResponsePrimitives
}
 No newline at end of file
+10 −1
Original line number Diff line number Diff line
/**
 *  
 *  @author     ETSI
 *  @author     ETSI / STF510
 *  @version    $URL$
 *              $Id$
 *  @desc       Module containing test cases for SmartAppliances
@@ -8,12 +8,21 @@
 */
module SmartAppliances_TestSystem {

	// LibOneM2M
	import from OneM2M_TestSystem all;
	
	/**
	 * @desc SUT component for SmartAppliances (oneM2M AE)
	 * @see	 AeSystem	
	 */
	type component SmartAppliancesSystem extends AeSystem {
		
	}
	
	/**
	 * @desc Tester component for SmartAppliances (oneM2M CSE)
	 * @see	 AeTester
	 */
	type component SmartAppliancesTester extends AeTester {
		
	}
+1 −2
Original line number Diff line number Diff line
/**
 *  
 *  @author     ETSI
 *  @author     ETSI / STF510
 *  @version    $URL$
 *              $Id$
 *  @desc       Test control module for SmartAppliances
@@ -8,7 +8,6 @@
 */
module SmartAppliances_TestControl {


	import from SmartAppliances_Testcases all;	

	control {
+49 −20
Original line number Diff line number Diff line
/**
 *  
 *  @author     ETSI
 *  @author     ETSI / STF510
 *  @version    $URL$
 *              $Id$
 *  @desc       Module containing test cases for SmartAppliances
@@ -8,10 +8,17 @@
 */
module SmartAppliances_Testcases {

	import from SmartAppliances_TestSystem all;
	// LibOneM2M
	import from OneM2M_Functions all;
	import from OneM2M_Templates all;

	// LibSmartAppliances
	import from SmartAppliances_TestSystem all;
	import from SmartAppliances_Functions all;
	
	group g_saref {
		
	testcase TC_SAP_XXX() runs on SmartAppliancesTester system SmartAppliancesSystem {
    	testcase TC_SAP_SAREF_BV_001() runs on SmartAppliancesTester system SmartAppliancesSystem {
        				
    		// Local variables
    							   
@@ -23,11 +30,33 @@ module SmartAppliances_Testcases {
    		// Test adapter configuration
    	
    		// Preamble
			f_ae_preamble_registerAe();
    						
    		// Test Body
    		tc_ac.start;
    		alt {
    			[] mcaPort.receive {
    				/* TODO: requires onM2M release 2 */
    				
					setverdict(pass, testcasename() & ": Correct request received");
    			}
    			
				[] mcaPort.receive(mw_request(?)) {
					setverdict(fail, testcasename() & ": Incorrect request received");
				}
    			
				[] tc_ac.timeout {
					setverdict(inconc, testcasename() & ": No CREATE request received");
				}	    			
    		}
    
    		// Postamble
		f_postamble_deleteResources();
    		f_ae_postamble_default();
    	
    		// Tear down
			f_cf0XXDown();	
    
    	}
    	
	} // end g_saref
}
 No newline at end of file