$Suite $SuiteId ABR $SuiteOverviewPart $Begin_SuiteStructure $SuiteId ABR $StandardsRef /* ATM Forum Traffic Management (TM) Specification V4.0, Section 5.10 on ABR */ $PICSref /* */ $PIXITref /* ATM Forum 99-0105R1 Section 6 */ $TestMethods /* Distributed */ $Comment /* Test Method includes Upper Tester (UT), Lower Tester (LT), and Coordination Control (CON). */ $Structure&Objectives $End_Structure&Objectives $Comment /* */ $End_SuiteStructure $Begin_TestCaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T1 $SelectExprId $Description /* Verify that after connection setup, when the IUT has data to send, then it sends an FRM cell first. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T2 $SelectExprId $Description /* Verify that the IUT turns around an FRM from the LT with contents unchanged except the DIR (=1) bit. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T3 $SelectExprId $Description /* Verify that a) after the IUT receives a BRM with BN=0, it will set its ACR=ACR+RIF*PCR (S.8), and b) after sending Nrm-1 cells, it will send an FRM with CCR<=ACR. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T4 $SelectExprId $Description /* Verify that while transmitting data and FRM cells according to (S.3), the IUT will increase the ACR by RIF*PCR up to a value <= PCR as each FRM is returned by the LT (S.8) */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T5 $SelectExprId $Description /* Verify that the IUT, when receiving a BRM with lower rate in the ER field, will reduce its ACR to the value of ER. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T6 $SelectExprId $Description /* Verify that the IUT will maintain its current ACR when receiving a BRM with NI=1. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T7 $SelectExprId $Description /* Verify that the IUT will reduce ACR=ICR and send an FRM with CCR=ICR when it does not receive a BRM within time interal ADT and Trm respectively, and when ACR>ICR and number of outstanding FRMCRM. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T10 $SelectExprId $Description /* Verify that the IUT will reduce the ACR when receiving a BRM with CI=1. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T11 $SelectExprId $Description /* Verify that (1) when receiving a sequence of data with EFCI=1, the IUT will turn around an FRM cell with CI=1 (D.1 and D.2.a); and (2) when there are multiple BRM cells to be sent, either all but one are to be dropped or all of their contents be updated. (D.3 and D.4). */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T12 $SelectExprId Internal_Congestion $Description /* Verify that when the IUT is in internal congestion condition, it turns around a BRM cell with BN=0. In addition, it may generate a BRM with BN=1. In both cases, contents of the fields of both BRMs will be set by CI=1 and/or ER is reduced. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T13 $SelectExprId Internal_Congestion $Description /* Verify that the IUT may generate a BRM on its own when internally congested. */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T14 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T15 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T16 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T17 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T18 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T19 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T20 $SelectExprId $Description /* */ $End_CaseIndex $CaseIndex $TestGroupRef ABR/ $TestCaseId T21 $SelectExprId $Description /* */ $End_CaseIndex $Comment /* */ $End_TestCaseIndex $Begin_TestStepIndex $StepIndex $TestStepRef ABR/ $TestStepId Absorb_Data $Description /* */ $End_StepIndex $StepIndex $TestStepRef ABR/ $TestStepId Receive_Data $Description /* */ $End_StepIndex $StepIndex $TestStepRef ABR/ $TestStepId Receive_Data_FRM $Description /* */ $End_StepIndex $StepIndex $TestStepRef ABR/ $TestStepId T1_preamble $Description /* */ $End_StepIndex $StepIndex $TestStepRef ABR/ $TestStepId UNEXPECTED $Description /* */ $End_StepIndex $StepIndex $TestStepRef ABR/ $TestStepId UT_Send $Description /* */ $End_StepIndex $StepIndex $TestStepRef ABR/ $TestStepId UT_Send_Receive $Description /* */ $End_StepIndex $Comment /* */ $End_TestStepIndex $End_SuiteOverviewPart $DeclarationsPart $TS_TypeDefs $Begin_SimpleTypeDefs $SimpleTypeDef $SimpleTypeId HEXSTR1 $SimpleTypeDefinition HEXSTRING[1] $End_SimpleTypeDef $SimpleTypeDef $SimpleTypeId INTEGER_LEN $SimpleTypeDefinition INTEGER(0..255) $End_SimpleTypeDef $Comment /* */ $End_SimpleTypeDefs $ASN1_TypeDefs $Begin_ASN1_TypeDef $ASN1_TypeId Header_ie $Comment /* Cell Header */ $ASN1_TypeDefinition SEQUENCE { GFC BIT STRING(SIZE(4)), VPI BIT STRING(SIZE(8)), VCI BIT STRING(SIZE(16)), PTI BIT STRING(SIZE(3)), CLP BIT STRING(SIZE(1)), HEC OCTET STRING(SIZE(1)) } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId Rate_ie $Comment /* Exponsential form of rate information in RM cells */ $ASN1_TypeDefinition SEQUENCE { res BIT STRING(SIZE(1)), nz BIT STRING(SIZE(1)), exp BIT STRING(SIZE(5)), mantissa BIT STRING(SIZE(9)) } $End_ASN1_TypeDefinition $Comment /* See section 5.10.3.2 for interpretation of these fields. */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId RMBody $ASN1_TypeDefinition SEQUENCE { ID BIT STRING(SIZE(8)), -- octet 6 DIR BIT STRING(SIZE(1)), -- octet 7 BN BIT STRING(SIZE(1)), -- octet 7 CI BIT STRING(SIZE(1)), -- octet 7 NI BIT STRING(SIZE(1)), -- octet 7 RA BIT STRING(SIZE(1)), -- octet 7 Res1 BIT STRING(SIZE(1)), -- octet 7 ER Rate_ie, -- octets 8&9 CCR Rate_ie, -- octets 10&11 MCR Rate_ie, -- octets 12&13 QL OCTET STRING(SIZE(4)), -- octets 14-17 SN OCTET STRING(SIZE(4)), -- octets 18-21 Res2 OCTET STRING(SIZE(30)), -- octets 22-51 Res3 BIT STRING(SIZE(3)) -- octet 52 } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId OCTETSTR1 $ASN1_TypeDefinition OCTET STRING(SIZE(1)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId OCTETSTRLen $ASN1_TypeDefinition OCTET STRING(SIZE(Len)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId BITSTR16 $ASN1_TypeDefinition BIT STRING(SIZE(16)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId BITSTR8 $ASN1_TypeDefinition BIT STRING(SIZE(8)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId BITSTR1 $ASN1_TypeDefinition BIT STRING(SIZE(1)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId OCTETSTR48 $ASN1_TypeDefinition OCTET STRING(SIZE(48)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $Begin_ASN1_TypeDef $ASN1_TypeId OCTETSTR_UT_Datalen $ASN1_TypeDefinition OCTET STRING(SIZE(UT_Datalen)) $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_TypeDef $End_ASN1_TypeDefs $End_TS_TypeDefs $TS_ProcDefs $Begin_TS_ProcDef $TS_ProcId Additive_inc(CCR:INTEGER) $TS_ProcResult INTEGER $Comment /* */ $TS_ProcDescription Compute the expected new value of CCR using this formula: CCR + (PCR_val*RIF) where RIF=(1/2**RIF_power) and CCR is the current rate $End_TS_ProcDescription $Comment /* This formula is used for additive increase of ACR. */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Cutoff_dec(CCR:INTEGER) $TS_ProcResult INTEGER $Comment /* */ $TS_ProcDescription Compute the expected value of CCR using this formula: CCR * (1-CDF) where CDF = 1/(2**CDF_power) and CCR is the current rate $End_TS_ProcDescription $Comment /* This formula is used for cutoff decrease of ACR when BRM is missing. */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Eval_exp1 $TS_ProcResult INTEGER $Comment /* */ $TS_ProcDescription Evaluate the following expression with sufficient precision, e.g., using floating point computation, and returning an integer result: ceil (MCR_val*RDF) / (RIF*PCR_val*(1-RDF)))+1 where RDF - (1/2**RDF_power), RIF = (1/2**RIF_power), and ceil =(x)= the smallest integer greater than or equal to x $End_TS_ProcDescription $Comment /* Used in test case T10 to bring up the ACR from MCR */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Eval_exp2 $TS_ProcResult INTEGER $Comment /* The result is a timer value in milliseconds. */ $TS_ProcDescription Evaluate the following expression in floating point computation: min(Trm_val, ((Nrm-1) / MCR_val * 1000) + 1000/MCR_val $End_TS_ProcDescription $Comment /* Used in test case T11 */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Eval_exp3 $TS_ProcResult INTEGER $Comment /* Compute the number of data cells needed to fill IUT's buffer */ $TS_ProcDescription Evaluate the following expression: max (0, max(min(Trm_val*PCR_val, Nrm-2), Mrm) - 7 ) $End_TS_ProcDescription $Comment /* Used in test case T11 */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId exp_to_int(RATE:Rate_ie) $TS_ProcResult INTEGER $Comment /* Convert from floating point format into integer. */ $TS_ProcDescription Convert the rate information, RATE, in floating point form (per section 5.10.3.2 of the TM Specification) for RM cells, into an integer using truncation. $End_TS_ProcDescription $Comment /* */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Gen_CRC(RM_body:RMBody) $TS_ProcResult BITSTR8 $Comment /* */ $TS_ProcDescription Gen_CRC computes the CRC value of an RM cell, provided in RM_Body, per section 5.10.3.1. of TM specification. $End_TS_ProcDescription $Comment /* */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Gen_HEC(GFC,VPI,VCI,PTI,CLP:BITSTRING) $TS_ProcResult OCTETSTR1 $Comment /* */ $TS_ProcDescription Gen_HEC computes the ATM cell header check byte of an ATM cell. The fileds of the header are passed as parameters. $End_TS_ProcDescription $Comment /* */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Init $TS_ProcResult BOOLEAN $Comment /* To establish a control communication path and ABR connection between LT and UT */ $TS_ProcDescription (1) activate the communication path for the control channel between the LT and UT, and provide all parameters for the UT, (2) establish an ABR connection from the UT to the LT using the VPI and VCI number and other ABR parameters supplied in the test suite parameter, and (3) return a Boolean value "TRUE" when the operation is successful $End_TS_ProcDescription $Comment /* */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId int_to_exp(nn:INTEGER) $TS_ProcResult Rate_ie $Comment /* Convert from integer to RM cell floating point format */ $TS_ProcDescription Convert an integer, n, into the exponential (floating point) form for RM cells, per section 5.10.3.2 of TM specification. The exponential form is divided into three fields: Rate_ie.nz, Rate_ie.exp, and Rate_ie.mantissa. The reserved field Rate_ie.res must be set to 0. $End_TS_ProcDescription $Comment /* */ $End_TS_ProcDef $Begin_TS_ProcDef $TS_ProcId Rep(In:HEXSTR1) $TS_ProcResult OCTETSTRLen $Comment /* */ $TS_ProcDescription Rep takes the one-byte hexstring in In and repeats it Len times to create an octetstring of length Len. $End_TS_ProcDescription $Comment /* */ $End_TS_ProcDef $End_TS_ProcDefs $Begin_TS_ParDcls $TS_ParDcl $TS_ParId ADTF_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT TM.2 */ $Comment /* IUT's ADTF timer; unit is seconds */ $End_TS_ParDcl $TS_ParDcl $TS_ParId CDF_power $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.8 */ $Comment /* IUT's negative power of 2 for CDF */ $End_TS_ParDcl $TS_ParDcl $TS_ParId CRM_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.5 */ $Comment /* IUT's CRM value */ $End_TS_ParDcl $TS_ParDcl $TS_ParId ICR_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.3 */ $Comment /* IUT's ICR value */ $End_TS_ParDcl $TS_ParDcl $TS_ParId Internal_Congest $TS_ParType BOOLEAN $PICS_PIXITref /* PIXIT I.1 */ $Comment /* True if the IUT can be forced into an internal congestion condition. */ $End_TS_ParDcl $TS_ParDcl $TS_ParId MCR_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.2 */ $Comment /* IUT's MCR value */ $End_TS_ParDcl $TS_ParDcl $TS_ParId Nrm $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.4 */ $End_TS_ParDcl $TS_ParDcl $TS_ParId PCR_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.1 */ $Comment /* IUT's PCR value */ $End_TS_ParDcl $TS_ParDcl $TS_ParId RDF_power $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.7 */ $Comment /* IUT's negative power of 2 for RDF */ $End_TS_ParDcl $TS_ParDcl $TS_ParId RIF_power $TS_ParType INTEGER $PICS_PIXITref /* PIXIT P.6 */ $Comment /* IUT's negative power of 2 for RIF */ $End_TS_ParDcl $TS_ParDcl $TS_ParId Tw_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT TM.1 */ $Comment /* Amount of time to wait for a response from IUT;unit is milliseconds */ $End_TS_ParDcl $TS_ParDcl $TS_ParId Trm_val $TS_ParType INTEGER $PICS_PIXITref /* PIXIT TM.3 */ $Comment /* IUT's Trm timer; unit is milliseconds */ $End_TS_ParDcl $TS_ParDcl $TS_ParId VCI_val $TS_ParType BITSTR16 $PICS_PIXITref /* PIXIT I.3 */ $Comment /* IUT's VCI value for testing */ $End_TS_ParDcl $TS_ParDcl $TS_ParId VPI_val $TS_ParType BITSTR8 $PICS_PIXITref /* PIXIT I.2 */ $Comment /* IUT's VPI value for testing */ $End_TS_ParDcl $Comment /* */ $End_TS_ParDcls $Begin_SelectExprDefs $SelectExprDef $SelectExprId Internal_Congestion $SelectExpr Internal_Congest $Comment /* Selects test cases if IUT can be forced into an internal congestion condition. */ $End_SelectExprDef $Comment /* */ $End_SelectExprDefs $Begin_TS_ConstDcls $TS_ConstDcl $TS_ConstId Mrm $TS_ConstType INTEGER $TS_ConstValue 2 $End_TS_ConstDcl $TS_ConstDcl $TS_ConstId UT_Datalen $TS_ConstType INTEGER $TS_ConstValue 48 $Comment /* Size of data from UT. If the data unit is ATM PDU, the size is 48; if it is AAL5 PDU, then it is 40. */ $End_TS_ConstDcl $Comment /* */ $End_TS_ConstDcls $Begin_TS_VarDcls $TS_VarDcl $TS_VarId BN_var $TS_VarType BITSTR1 $TS_VarValue '0'B $Comment /* variable for FRM received */ $End_TS_VarDcl $TS_VarDcl $TS_VarId CCR_exp $TS_VarType Rate_ie $TS_VarValue $Comment /* CCR in exponent format (nz, exp, mantissa) */ $End_TS_VarDcl $TS_VarDcl $TS_VarId CCR_var $TS_VarType INTEGER $TS_VarValue 0 $Comment /* CCR in integer format, must be able to hold the maximum value of CCR */ $End_TS_VarDcl $TS_VarDcl $TS_VarId CI_var $TS_VarType BITSTR1 $TS_VarValue '0'B $Comment /* variables for FRM received */ $End_TS_VarDcl $TS_VarDcl $TS_VarId ER_exp $TS_VarType Rate_ie $TS_VarValue $Comment /* ER in exponential format (nz, exp, mantissa) */ $End_TS_VarDcl $TS_VarDcl $TS_VarId ER_var $TS_VarType INTEGER $TS_VarValue 0 $Comment /* ER in integer format, must be able to hold the maximum value of ER */ $End_TS_VarDcl $TS_VarDcl $TS_VarId MCR_exp $TS_VarType Rate_ie $TS_VarValue $Comment /* MCR in exponential format (nz, exp, mantissa) */ $End_TS_VarDcl $TS_VarDcl $TS_VarId MCR_var $TS_VarType INTEGER $TS_VarValue 0 $Comment /* MCR in integer format, must be able to hold the maximum value of MCR */ $End_TS_VarDcl $TS_VarDcl $TS_VarId Mid_point $TS_VarType INTEGER $TS_VarValue 0 $Comment /* midpoint between the highest CCR reached in IUT and ICR */ $End_TS_VarDcl $TS_VarDcl $TS_VarId NI_var $TS_VarType BITSTR1 $TS_VarValue '0'B $Comment /* variables for FRM received */ $End_TS_VarDcl $TS_VarDcl $TS_VarId ICR_var $TS_VarType INTEGER $TS_VarValue 0 $End_TS_VarDcl $TS_VarDcl $TS_VarId PCR_exp $TS_VarType Rate_ie $TS_VarValue $End_TS_VarDcl $TS_VarDcl $TS_VarId ICR_exp $TS_VarType Rate_ie $TS_VarValue $End_TS_VarDcl $Comment /* */ $End_TS_VarDcls $Begin_TC_VarDcls $TC_VarDcl $TC_VarId Delta $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId FLAG $TC_VarType BOOLEAN $TC_VarValue FALSE $End_TC_VarDcl $TC_VarDcl $TC_VarId m $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId n $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId n_cells_sent $TC_VarType INTEGER $TC_VarValue 0 $Comment /* count # of cells from IUT */ $End_TC_VarDcl $TC_VarDcl $TC_VarId n_receive $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId n_send $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId new_CCR $TC_VarType INTEGER $TC_VarValue 0 $Comment /* expected new CCR from FRM */ $End_TC_VarDcl $TC_VarDcl $TC_VarId new_ER $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId prev_CCR $TC_VarType INTEGER $TC_VarValue 0 $Comment /* save the value of CCR in the previous FRM from IUT */ $End_TC_VarDcl $TC_VarDcl $TC_VarId um $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId un $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $TC_VarDcl $TC_VarId Len $TC_VarType INTEGER $TC_VarValue $End_TC_VarDcl $TC_VarDcl $TC_VarId nt $TC_VarType INTEGER $TC_VarValue 0 $End_TC_VarDcl $Comment /* */ $End_TC_VarDcls $Begin_PCO_Dcls $PCO_Dcl $PCO_Id LT_PCO $PCO_TypeId PHY_SAP $PCO_Role LT $Comment /* above PHY layer */ $End_PCO_Dcl $PCO_Dcl $PCO_Id UT_PCO $PCO_TypeId ATM_SAP $PCO_Role UT $Comment /* above ATM layer */ $End_PCO_Dcl $Comment /* */ $End_PCO_Dcls $Begin_CP_Dcls $CP_Dcl $CP_Id CON $Comment /* Coordination point between the Lower Tester and Upper Tester */ $End_CP_Dcl $Comment /* */ $End_CP_Dcls $Begin_TimerDcls $TimerDcl $TimerId ADTF $Duration ADTF_val $Unit ms $End_TimerDcl $TimerDcl $TimerId Trm $Duration Trm_val $Unit ms $End_TimerDcl $TimerDcl $TimerId Tw $Duration Tw_val $Unit s $Comment /* Timer to wait for a response */ $End_TimerDcl $TimerDcl $TimerId T10s $Duration 10 $Unit s $End_TimerDcl $Comment /* */ $End_TimerDcls $Begin_TCompDcls $TCompDcl $TCompId LowerT $TCompRole MTC $NumOf_PCOs 1 $NumOf_CPs 1 $Comment /* Lower Tester */ $End_TCompDcl $TCompDcl $TCompId UpperT $TCompRole PTC $NumOf_PCOs 1 $NumOf_CPs 1 $Comment /* Upper Tester */ $End_TCompDcl $Comment /* */ $End_TCompDcls $TCompConfigDcls $Begin_TCompConfigDcl $TCompConfigId Config1 $Comment /* Lower Tester (LT) as Main Test Component */ $TCompConfigInfos $TCompConfigInfo $TCompUsed LowerT $PCOs_Used LT_PCO $CPs_Used CON $Comment /* Coordination Control point */ $End_TCompConfigInfo $TCompConfigInfo $TCompUsed UpperT $PCOs_Used UT_PCO $CPs_Used CON $End_TCompConfigInfo $End_TCompConfigInfos $Comment /* */ $End_TCompConfigDcl $Begin_TCompConfigDcl $TCompConfigId Config2 $Comment /* Upper Tester (UT) as Parallel Tet Component */ $TCompConfigInfos $TCompConfigInfo $TCompUsed UpperT $PCOs_Used UT_PCO $CPs_Used CON $End_TCompConfigInfo $TCompConfigInfo $TCompUsed LowerT $PCOs_Used LT_PCO $CPs_Used CON $End_TCompConfigInfo $End_TCompConfigInfos $Comment /* */ $End_TCompConfigDcl $End_TCompConfigDcls $PDU_TypeDefs $ASN1_PDU_TypeDefs $Begin_ASN1_PDU_TypeDef $PDU_Id ATM $PCO_Type PHY_SAP $ASN1_TypeDefinition SEQUENCE { Header Header_ie, Text OCTETSTR48 } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_PDU_TypeDef $Begin_ASN1_PDU_TypeDef $PDU_Id DATA $PCO_Type ATM_SAP $ASN1_TypeDefinition SEQUENCE { Text OCTETSTR_UT_Datalen } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_PDU_TypeDef $Begin_ASN1_PDU_TypeDef $PDU_Id RM $PCO_Type PHY_SAP $Comment /* RM cell */ $ASN1_TypeDefinition SEQUENCE { Header Header_ie, Body RMBody, CRC_10 BIT STRING(SIZE(8)) -- octets 52&53 } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_PDU_TypeDef $End_ASN1_PDU_TypeDefs $End_PDU_TypeDefs $CM_TypeDefs $ASN1_CM_TypeDefs $Begin_ASN1_CM_TypeDef $CM_Id CON1 $Comment /* Control Message for "send" commands */ $ASN1_TypeDefinition SEQUENCE { CON_TYPE OCTETSTR1, CONTROL_LEN INTEGER_LEN } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_CM_TypeDef $Begin_ASN1_CM_TypeDef $CM_Id CON2 $Comment /* Control Message for "send and receive" commands */ $ASN1_TypeDefinition SEQUENCE { CON_TYPE OCTETSTR1, Send INTEGER, Receive INTEGER } $End_ASN1_TypeDefinition $Comment /* */ $End_ASN1_CM_TypeDef $End_ASN1_CM_TypeDefs $End_CM_TypeDefs $End_DeclarationsPart $ConstraintsPart $TS_TypeConstraints $ASN1_TypeConstraints $Begin_ASN1_TypeConstraint $ConsId RM_Header $ASN1_TypeId Header_ie $DerivPath $Comment /* RM Cell Header */ $ASN1_ConsValue { GFC '0000'B, VPI VPI_val, VCI VCI_val, PTI '110'B, --RM cell CLP '0'B, HEC Gen_HEC(0,VPI_val,VCI_val,'110'B, '0'B) } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_TypeConstraint $Begin_ASN1_TypeConstraint $ConsId ATM_Header $ASN1_TypeId Header_ie $DerivPath $Comment /* ATM cell header */ $ASN1_ConsValue { GFC '0000'B, VPI VPI_val, VCI VCI_val, PTI '000'B, -- Source resets PTI to 0 CLP '0'B, HEC Gen_HEC(0,VPI_val,VCI_val,'110'B, '0'B) } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_TypeConstraint $End_ASN1_TypeConstraints $End_TS_TypeConstraints $PDU_Constraints $ASN1_PDU_Constraints $Begin_ASN1_PDU_Constraint $ConsId ATM_EFCI_set $PDU_Id ATM $DerivPath ATM_S. $ASN1_ConsValue { Header { GFC '0000'B, VPI VPI_val, VCI VCI_val, PTI '010'B, -- Source resets PTI to 0 CLP '0'B, HEC Gen_HEC(0,VPI_val,VCI_val,'110'B, '0'B) }, Text Rep(INT_TO_HEX(n,2), 48) } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId ATM_R $PDU_Id ATM $DerivPath $ASN1_ConsValue { Header ATM_Header, Text ? } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId ATM_S $PDU_Id ATM $DerivPath $ASN1_ConsValue { Header ATM_Header, Text Rep(INT_TO_HEX(n,2), 48) } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId CELL(nn:INTEGER) $PDU_Id DATA $DerivPath $Comment /* PDU from the UT through UT_PCO */ $ASN1_ConsValue { Text Rep(INT_TO_HEX(nn,2), UT_Datalen) } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId CELL_LT $PDU_Id DATA $DerivPath $Comment /* PDU from the LT as seen at the UT_PCO */ $ASN1_ConsValue { Text ? } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId FRM $PDU_Id RM $DerivPath $Comment /* FRM cell */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '0'B, -- octet 7 BN '0'B, -- octet 7 CI '0'B, -- octet 7 NI '0'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER PCR_exp, -- octets 8&9 CCR ICR_exp, -- octets 10&11 MCR MCR_exp, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId FRM1 $PDU_Id RM $DerivPath $Comment /* RM cell from IUT */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '0'B, -- octet 7 BN '0'B, -- octet 7 CI '0'B, -- octet 7 NI '0'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER PCR_exp, -- octets 8&9 CCR ?, -- octets 10&11 MCR MCR_exp, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 ? , -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId FRM2(CCR_new:Rate_ie) $PDU_Id RM $DerivPath $Comment /* FRM from the LT */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '0'B, -- octet 7 BN '0'B, -- octet 7 CI '0'B, -- octet 7 NI '0'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER PCR_exp, -- octets 8&9 CCR CCR_new, -- octets 10&11 MCR MCR_exp, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId RM_UNEXPECT $PDU_Id RM $DerivPath $Comment /* an out-of-rate RM (CLP=1) cell for UNEXPECTED Test Step */ $ASN1_ConsValue { Header { GFC '0000'B, VPI VPI_val, VCI VCI_val, PTI '110'B, --RM cell CLP '1'B, HEC Gen_HEC(0,VPI_val,VCI_val,'110'B, '0'B) }, Body { ID ?, -- octet 6 DIR ?, -- octet 7 BN ?, -- octet 7 CI ? , -- octet 7 NI ? , -- octet 7 RA ? , -- octet 7 Res1 ? , -- octet 7 ER ? , -- octets 8&9 CCR ? , -- octets 10&11 MCR ? , -- octets 12&13 QL ? , -- octets 14-17 SN ? , -- octets 18-21 Res2 ? , -- octets 22-51 Res3 ? -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId BRM1 $PDU_Id RM $DerivPath FRM. $Comment /* IUT turns around LT's FRM */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '1'B, -- octet 7 BN '0'B, -- octet 7 CI '0'B, -- octet 7 NI '0'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER PCR_exp, -- octets 8&9 CCR ICR_exp, -- octets 10&11 MCR ? , -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId BRM2 $PDU_Id RM $DerivPath FRM. $Comment /* IUT turns around LT's FRM, with CI=1 */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '1'B, -- octet 7 BN '0'B, -- octet 7 CI '1'B, -- octet 7 NI '0'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER PCR_exp, -- octets 8&9 CCR ICR_exp, -- octets 10&11 MCR ?, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId BRM3(CCR_ret:Rate_ie) $PDU_Id RM $DerivPath $Comment /* LT turns around an RM from the IUT, CCR_ret is the CCR in the original FRM */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '1'B, -- octet 7 BN '0'B, -- octet 7 CI '0'B, -- octet 7 NI '0'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER PCR_exp, -- octets 8&9 CCR CCR_ret, -- octets 10&11 MCR MCR_exp, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId BRM4 $PDU_Id RM $DerivPath FRM. $Comment /* IUT turns around LT's FRM */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '1'B, -- octet 7 BN ?, -- octet 7 CI ?, -- octet 7 NI ?, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER ?, -- octets 8&9 CCR ?, -- octets 10&11 MCR ?, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId BRM5(CCR_ret: Rate_ie; ER_val:INTEGER) $PDU_Id RM $DerivPath $Comment /* LT turns around an RM cell with NI=1 and a new ER value */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '0'B, -- octet 7 BN '0'B, -- octet 7 CI '0'B, -- octet 7 NI '1'B, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER int_to_exp(ER_val), -- octets 8&9 CCR CCR_ret, -- octets 10&11 MCR MCR_exp, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $Begin_ASN1_PDU_Constraint $ConsId BRM6(BNin, CIin, NIin:BITSTR1; ERin:INTEGER) $PDU_Id RM $DerivPath $Comment /* LT turns around an FRM cell from the IUT */ $ASN1_ConsValue { Header RM_Header, -- octets 1-5 Body { ID '00000001'B, -- octet 6 DIR '1'B, -- octet 7 BN BNin, -- octet 7 CI CIin, -- octet 7 NI NIin, -- octet 7 RA '0'B, -- octet 7 Res1 '000'B, -- octet 7 ER int_to_exp(ERin), -- octets 8&9 CCR CCR_exp, -- octets 10&11 MCR MCR_exp, -- octets 12&13 QL '0000'O, -- octets 14-17 SN '0000'O, -- octets 18-21 Res2 Rep('6A'H,30), -- octets 22-51 Res3 '000'B -- octet 52 }, CRC_10 ? -- octets 52&53 } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_PDU_Constraint $End_ASN1_PDU_Constraints $End_PDU_Constraints $CM_Constraints $ASN1_CM_Constraints $Begin_ASN1_CM_Constraint $ConsId send(nn:INTEGER) $CM_Id CON1 $DerivPath $Comment /* For LT to send a "send" command */ $ASN1_ConsValue { CON_TYPE '01'O, --send CONTROL_LEN nn --number of cells to send } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_CM_Constraint $Begin_ASN1_CM_Constraint $ConsId SR_Cmd(ss,rr:INTEGER) $CM_Id CON2 $DerivPath $Comment /* For LT to send a "send and receive" control command */ $ASN1_ConsValue { CON_TYPE '02'O, --send & receive Send ss, Receive rr } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_CM_Constraint $Begin_ASN1_CM_Constraint $ConsId UT_send $CM_Id CON1 $DerivPath $Comment /* For UT to receive a "send" command */ $ASN1_ConsValue { CON_TYPE '01'O, --send CONTROL_LEN ? --number of cells to send } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_CM_Constraint $Begin_ASN1_CM_Constraint $ConsId UT_SR_Cmd $CM_Id CON2 $DerivPath $Comment /* For UT to receive a "send and receive" control command */ $ASN1_ConsValue { CON_TYPE '02'O, --send & receive Send ?, Receive ? } $End_ASN1_ConsValue $Comment /* */ $End_ASN1_CM_Constraint $End_ASN1_CM_Constraints $End_CM_Constraints $End_ConstraintsPart $DynamicPart $TestCases $Begin_TestCase $TestCaseId T1 $TestGroupRef ABR/ $TestPurpose /* Verify that after connection setup, when the IUT has data to send, then it sends an FRM cell first. */ $Configuration Config1 $DefaultsRef $Comment /* Ref: S.1 and S.2 */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] +T1_preamble $Cref $VerdictId $Comment /* setup ABR connection */ $End_BehaviourLine $BehaviourLine $LabelId $Line [1] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] CREATE(UpperT:UT_Send) $Cref $VerdictId $Comment /* start the UT */ $End_BehaviourLine $BehaviourLine $LabelId $Line [3] CON!CON1 $Cref send(1) $VerdictId $Comment /* ask UT to send 1 cell */ $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO?RM(CCR_exp:=RM.Body.CCR,CCR_var:=exp_to_int(CCR_exp)) $Cref FRM1 $VerdictId (P) $Comment /* get fields from FRM to turn around in BRM */ $End_BehaviourLine $BehaviourLine $LabelId $Line [5] [CCR_var<=ICR_var] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] +Absorb_Data $Cref $VerdictId $Comment /* absorb data cell */ $End_BehaviourLine $BehaviourLine $LabelId $Line [6] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] [CCR_var>ICR_var] $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* Do not allow for out-of-rate FRM (UNEXPECTED) in this test case. */ $End_TestCase $Begin_TestCase $TestCaseId T2 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT turns around an FRM from the LT with contents unchanged except the DIR (=1) bit. */ $DefaultsRef $Comment /* Ref: D.2 and S.3.b.ii */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body)) $Cref FRM $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [2] LT_PCO?RM CANCEL Tw $Cref BRM1 $VerdictId P $End_BehaviourLine $BehaviourLine $LabelId $Line [2] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId I $End_BehaviourLine $BehaviourLine $LabelId $Line [2] ?TIMEOUT Tw $Cref $VerdictId I $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate (CLP=1). */ $End_TestCase $Begin_TestCase $TestCaseId T3 $TestGroupRef ABR/ $TestPurpose /* Verify that a) after the IUT receives a BRM with BN=0, it will set its ACR=ACR+RIF*PCR (S.8), and b) after sending Nrm-1 cells, it will send an FRM with CCR<=ACR. */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: S.8, S.3.a, and S.5 */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [1] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body), n:=Nrm-3, new_CCR:=Additive_inc(CCR_var)) $Cref BRM3(CCR_exp) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] CON!CON1(n_cells_sent:=0,prev_CCR:=CCR_var) $Cref send(n+1) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L3 $Line [4] REPEAT Receive_Data UNTIL [n_cells_sent=n] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [5] LT_PCO?RM(CCR_exp:=RM.Body.CCR,CCR_var:=exp_to_int(CCR_exp)) CANCEL Tw $Cref FRM1 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [(prev_CCR=(PCR_val-Delta)] $Cref $VerdictId (P) $Comment /* CCR close to PCR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [8] (Mid_point:=(CCR_var+ICR_val)/2) $Cref $VerdictId $Comment /* Save Mid_point for next test case */ $End_BehaviourLine $BehaviourLine $LabelId $Line [9] +Absorb_Data $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [(prev_CCR>=CCR_var) OR (CCR_var>new_CCR)] $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] GOTO L3 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) */ $End_TestCase $Begin_TestCase $TestCaseId T5 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT, when receiving a BRM with lower rate in the ER field, will reduce its ACR to the value of ER. */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: S.8 and S9. */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body), n:=Nrm-2) $Cref BRM5(CCR_exp,Mid_point) $VerdictId $Comment /* CI=0,NI=1, ER=(PCR+ICR)/2 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [2] CON!CON1(n_cells_sent:=0) $Cref send(n+1) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [4] REPEAT Receive_Data UNTIL [n_cells_sent=n] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [5] LT_PCO?RM(CCR_exp:=RM.Body.CCR,CCR_var:=exp_to_int(CCR_exp)) CANCEL Tw $Cref FRM1 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [CCR_var=Mid_point] $Cref $VerdictId (P) $Comment /* Mid_point from T4 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [7] +Absorb_Data $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [CCR_var>Mid_point] $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) */ $End_TestCase $Begin_TestCase $TestCaseId T6 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT will maintain its current ACR when receiving a BRM with NI=1. */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: S.8 */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body), n:=Nrm-2) $Cref BRM5(CCR_exp,PCR_val) $VerdictId $Comment /* BN,CI=0, NI=1, ER=PCR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [2] CON!CON1(n_cells_sent:=0) $Cref send(n+1) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [4] REPEAT Receive_Data UNTIL [n_cells_sent=n] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [5] LT_PCO?RM(CCR_exp:=RM.Body.CCR,CCR_var:=exp_to_int(CCR_exp)) CANCEL Tw $Cref FRM1 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [CCR_var=Mid_point] $Cref $VerdictId (P) $Comment /* Mid_point from T4 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [7] +Absorb_Data $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [CCR_var>Mid_point] $Cref $VerdictId F $Comment /* Mid_point from T4 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [5] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) */ $End_TestCase $Begin_TestCase $TestCaseId T7 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT will reduce ACR=ICR and send an FRM with CCR=ICR when it does not receive a BRM within time interval ADTF and Trm respectively, and when ACR>ICR and number of outstanding FRMICR_val] $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [6] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [6] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) */ $End_TestCase $Begin_TestCase $TestCaseId T8 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT will keep ACR at ICR if no more than CRM-1 FRM cells are sent by the IUT since the last BRM was received. */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: S.3.a.i, S.6 and S7. */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $Comment /* IUT should have started its Trm after sending FRM in T7 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [1] START Trm $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body), n:=0,prev_CCR:=ICR_val) $Cref BRM5(CCR_exp,PCR_val) $VerdictId $Comment /* NI=1,ER=PCR,Reset CRM */ $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [2] CON!CON1(n_cells_sent:=0) $Cref send(Mrm) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [3] LT_PCO?ATM(n_cells_sent:=n_cells_sent+1) $Cref ATM_R $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [n_cells_sentICR_val] CANCEL Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [7] [n>=(CRM_val-1)] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [8] CANCEL Trm $Cref $VerdictId P $End_BehaviourLine $BehaviourLine $LabelId $Line [7] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ?TIMEOUT Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [3] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] LT_PCO?OTHERWISE CANCEL Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [3] ?TIMEOUT Trm $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) */ $End_TestCase $Begin_TestCase $TestCaseId T9 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT will reduce its ACR by ACR*CDF, but not lower than MCR when number of outstanding FRM cells>CRM. */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: S.3.a, S.6 and S7. */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] (m:=0, CCR_var:=ICR_val) START Trm $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [2] CON!CON1(n_cells_sent:=0, prev_CCR:=CCR_var) $Cref send(Mrm) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [3] LT_PCO?ATM(n_cells_sent:=n_cells_sent+1) $Cref ATM_R $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [n_cells_sentCCR_var) OR (CCR_var > Cutoff_dec(prev_CCR))] CANCEL Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [CCR_var=MCR_val] (m:=m+1) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] [m=2] CANCEL Trm $Cref $VerdictId P $End_BehaviourLine $BehaviourLine $LabelId $Line [7] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ?TIMEOUT Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [3] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] LT_PCO?OTHERWISE CANCEL Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [3] ?TIMEOUT Trm $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) or a destination generated BRM (BRM with BN=1 (and CI or NI=1) */ $End_TestCase $Begin_TestCase $TestCaseId T10 $TestGroupRef ABR/ $TestPurpose /* Verify that the IUT will reduce the ACR when receiving a BRM with CI=1. */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: S.8 */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] (m:=Eval_exp1(), CCR_exp:=int_to_exp(MCR_var)) $Cref $VerdictId $Comment /* CCR in the last FRM should be MCR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [2] REPEAT Receive_Data_FRM('0'B,'0'B,'0'B,PCR_val) UNTIL [m=0] $Cref $VerdictId $Comment /* Raise ACR from MCR with BRMs, BN,CI,NI=0 */ $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [3] +Receive_Data_FRM('0'B,'1'B,'0'B,PCR_val) $Cref $VerdictId $Comment /* Lower ACR back down to MCR with BRM, CI=1 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [(MCR_var>CCR_var) OR (CCR_var>(prev_CCR * (100-RDF_power)/100))] $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [CCR_var>MCR_val] $Cref $VerdictId $Comment /* Continue until ACR=MCR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [5] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] +Receive_Data_FRM('0'B,'1'B,'0'B,PCR_val) $Cref $VerdictId $Comment /* One more time to ensure ACR=MCR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [5] [CCR_var=MCR_val] $Cref $VerdictId P $End_BehaviourLine $BehaviourLine $LabelId $Line [5] [CCR_var<>MCR_val] $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestCase $Begin_TestCase $TestCaseId T11 $TestGroupRef ABR/ $TestPurpose /* Verify that (1) when receiving a sequence of data with EFCI=1, the IUT will turn around an FRM cell with CI=1 (D.1 and D.2.a); and (2) when there are multiple BRM cells to be sent, either all but one are to be dropped or all of their contents be updated. (D.3 and D.4). */ $Configuration Config1 $DefaultsRef $Comment /* Ref.: D.1, D.2.a, D.3, and D.4. */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $Comment /* IUT should have started its Trm after sending FRM in T7 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [1] CON!CON2 (n:=Eval_exp3()) $Cref SR_Cmd(n,3) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] LT_PCO!ATM(CCR_exp:=exp_to_int(Additive_inc(ICR_val))) $Cref ATM_EFCI_set $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body)) $Cref FRM2(CCR_exp) $VerdictId $Comment /* CCR>ICR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [4] START Tw (Eval_exp2()) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [5] LT_PCO?RM $Cref BRM2 $VerdictId $Comment /* CI=1 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [6] LT_PCO!ATM $Cref ATM_EFCI_set $VerdictId $Comment /* EFCI=1 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [7] LT_PCO!RM $Cref FRM2(CCR_exp) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [8] LT_PCO!ATM $Cref ATM_S $VerdictId $Comment /* EFCI=0 */ $End_BehaviourLine $BehaviourLine $LabelId $Line [9] LT_PCO!RM $Cref FRM2(CCR_exp) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] CON!CON1 $Cref send(Nrm-1-n) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [10] LT_PCO?ATM $Cref ATM_R $VerdictId $Comment /* Absorb all ATM cells */ $End_BehaviourLine $BehaviourLine $LabelId $Line [10] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] LT_PCO?RM $Cref FRM1 $VerdictId $Comment /* Absrorb all FRM cells */ $End_BehaviourLine $BehaviourLine $LabelId $Line [10] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] LT_PCO?RM(ER_exp:=RM.Body.ER) $Cref BRM1 $VerdictId (P) $Comment /* CI=0 */ $End_BehaviourLine $BehaviourLine $LabelId L3 $Line [10] LT_PCO?RM(ER_exp:=RM.Body.ER) CANCEL Tw $Cref BRM1 $VerdictId P $Comment /* Second BRM1 is optional */ $End_BehaviourLine $BehaviourLine $LabelId $Line [10] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] ?TIMEOUT Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] GOTO L2 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [10] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [10] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [6] LT_PCO?ATM $Cref ATM_R $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [6] ?TIMEOUT Tw $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* UNEXPECTED allows for an out-of-rate FRM (CLP=1) */ $End_TestCase $Begin_TestCase $TestCaseId T12 $TestGroupRef ABR/ $TestPurpose /* Verify that when the IUT is in internal congestion condition, it turns around a BRM cell with BN=0. In addition, it may generate a BRM with BN=1. In both cases, contents of the fields of both BRMs will be set by CI=1 and/or ER is reduced. */ $DefaultsRef $Comment /* Ref: D.2.b */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] START Tw $Cref $VerdictId $Comment /* Save ER in previous BRM */ $End_BehaviourLine $BehaviourLine $LabelId $Line [1] (n:=0,ER_var:=exp_to_int(ER_exp)) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [1] LT_PCO!ATM(n:=n+1) $Cref ATM_EFCI_set $VerdictId $Comment /* These ATM cells must be sent at the link rate */ $End_BehaviourLine $BehaviourLine $LabelId $Line [2] [n<1023] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body)) $Cref FRM2(CCR_exp) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [5] LT_PCO?RM(new_ER:=exp_to_int(RM.Body.ER),CI_var:=RM.Body.CI) $Cref BRM4 $VerdictId $Comment /* BN=? */ $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [(CI_var='1'B) OR (new_ER=1023] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L2 $Line [3] LT_PCO?RM(new_ER:=exp_to_int(RM.Body.ER),BN_var:=RM.Body.BN,CI_var:=RM.Body.CI,NI_var:=RM.Body.NI) CANCEL Tw $Cref BRM4 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [((BN_var='1'B) AND (CI_var='1'B)) OR ((BN_var='1'B) AND (CI_var='0'B) AND (NI_var='1'B)) OR (new_ER Mrm] $Cref $VerdictId $Comment /* More than 2 in-rate RM cells received */ $End_BehaviourLine $BehaviourLine $LabelId $Line [7] ? TIMEOUT Trm $Cref $VerdictId $Comment /* Trm time has elapsed */ $End_BehaviourLine $BehaviourLine $LabelId $Line [8] LT_PCO ? RM $Cref FRM1 $VerdictId PASS $Comment /* Source has sent an in-rate RM */ $End_BehaviourLine $BehaviourLine $LabelId $Line [4] +UNEXPECTED $Cref $VerdictId $Comment /* Out-of-rate RM cell was sent before the condition for in-rate RM cells was satisfied. */ $End_BehaviourLine $BehaviourLine $LabelId $Line [5] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] ? TIMEOUT Trm $Cref $VerdictId FAIL $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO ? OTHERWISE CANCEL Trm $Cref $VerdictId FAIL $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestCase $Begin_TestCase $TestCaseId T19 $TestGroupRef ABR/ $TestPurpose /* Verify that the first in-rate backward RM-cell since the last in-rate forward RM-cell is sent ahead of any data cells waiting for transmission (S.3b). */ $Configuration Config1 $DefaultsRef $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body), RM.Body.NI:='1'B) $Cref BRM1 $VerdictId $Comment /* Keep ACR at MCR */ $End_BehaviourLine $BehaviourLine $LabelId $Line [3] CON!CON1(n_cells_sent := 0, n := Nrm) $Cref send(n) $VerdictId $Comment /* Send Nrm cells */ $End_BehaviourLine $BehaviourLine $LabelId $Line [4] START Trm $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [5] LT_PCO?RM $Cref FRM $VerdictId $Comment /* Lower Tester picks up the first in-rate FRM cell */ $End_BehaviourLine $BehaviourLine $LabelId $Line [6] CON!CON1(n_cells_sent := 0, n := Nrm) $Cref send(n) $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] REPEAT Receive_Data UNTIL [n_cells_sent = n] $Cref $VerdictId $Comment /* More cells are being received */ $End_BehaviourLine $BehaviourLine $LabelId $Line [7] [n_cells_sent > Mrm] $Cref $VerdictId $Comment /* at least Mrm cells have been received */ $End_BehaviourLine $BehaviourLine $LabelId $Line [8] ? TIMEOUT Trm $Cref $VerdictId $Comment /* AND Trm time has elapsed */ $End_BehaviourLine $BehaviourLine $LabelId $Line [9] LT_PCO?RM $Cref BRM1 $VerdictId $Comment /* BRM cell is sent although there are data cells to send */ $End_BehaviourLine $BehaviourLine $LabelId $Line [10] LT_PCO?ATM $Cref ATM_R $VerdictId PASS $Comment /* Data cell was waiting for trasmission */ $End_BehaviourLine $BehaviourLine $LabelId $Line [5] +UNEXPECTED $Cref $VerdictId $Comment /* Out-of-rate RM cells are ignored */ $End_BehaviourLine $BehaviourLine $LabelId $Line [6] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] LT_PCO?OTHERWISE CANCEL Tw $Cref $VerdictId FAIL $End_BehaviourLine $BehaviourLine $LabelId $Line [5] ? TIMEOUT Tw $Cref $VerdictId FAIL $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestCase $Begin_TestCase $TestCaseId T20 $TestGroupRef ABR/ $TestPurpose /* Verify RM cell format (S.10). */ $Configuration Config1 $DefaultsRef $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $Comment /* Start the UpperT */ $End_BehaviourLine $BehaviourLine $LabelId $Line [1] LT_PCO!RM(RM.CRC_10:=Gen_CRC(RM.Body), RM.Body.NI:='1'B) $Cref BRM1 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [2] LT_PCO ? RM $Cref FRM1 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] [(RM.Header.GFC = '????'B) AND (RM.Header.VPI = '????????'B) AND (RM.Header.VCI = '????????????????'B) AND (RM.Header.PTI = '110'B) AND (RM.Header.CLP = '?'B) AND (RM.Header.HEC = '??'H)] $Cref $VerdictId (PASS) $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [(RM.Body. ID = '????????'B) AND (RM.Body. DIR = '?'B) AND (RM.Body. BN = '?'B) AND (RM.Body.CI = '?'B) AND (RM.Body.NI = '?'B) AND (RM.Body.RA = '?'B) AND (RM.Body.Res1 = '???'B) ] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] [ (RM.Body.ER.res = '?'B) AND (RM.Body.ER.nz = '?'B) AND (RM.Body.ER.exp = '?????'B) AND (RM.Body.ER.mantissa = '?????????'B)] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [6] [(RM.Body.CCR.res = '?'B) AND (RM.Body.CCR.nz = '?'B) AND (RM.Body.CCR.exp = '?????'B) AND (RM.Body.CCR.mantissa = '?????????'B)] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [7] [(RM.Body.MCR.res = '?'B) AND (RM.Body.MCR.nz = '?'B) AND (RM.Body.MCR.exp = '?????'B) AND (RM.Body.MCR.mantissa = '?????????'B)] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [8] [(RM.Body.QL = '????'B) AND (RM.Body.SN = '????'O) AND (RM.Body.Res2 = '??????????????????????????????'O ) AND (RM.Body.Res3 = '???'B) AND (RM.CRC_10 = '????????'B)] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] GOTO L1 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [5] +Absorb_Data $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] LT_PCO ? OTHERWISE CANCEL Tw $Cref $VerdictId FAIL $End_BehaviourLine $BehaviourLine $LabelId $Line [2] ? TIMEOUT Tw $Cref $VerdictId FAIL $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestCase $Begin_TestCase $TestCaseId T21 $TestGroupRef ABR/ $TestPurpose /* Verify that when a destination receives a data cell, the EFCI of the data cell is saved as the EFCI state of the connection (D.1). */ $Configuration Config1 $DefaultsRef $BehaviourDescription $BehaviourLine $LabelId $Line [0] CREATE(UpperT:UT_Send) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] START Tw $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] LT_PCO ! ATM $Cref ATM_EFCI_set $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L1 $Line [3] LT_PCO?RM(new_ER:=exp_to_int(RM.Body.ER),BN_var:=RM.Body.BN,CI_var:=RM.Body.CI,NI_var:=RM.Body.NI) CANCEL Tw $Cref BRM4 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] [((BN_var='1'B) AND (CI_var='1'B)) OR ((BN_var='1'B) AND (CI_var='0'B) AND (NI_var='1'B)) OR (new_ER0] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] GOTO L10 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] LT_PCO?RM(CCR_exp:=RM.Body.CCR,CCR_var:=exp_to_int(CCR_exp)) $Cref FRM1 $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [4] LT_PCO?OTHERWISE $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [4] ?TIMEOUT Trm $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [2] +UNEXPECTED $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [3] GOTO L10 $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [2] LT_PCO?OTHERWISE $Cref $VerdictId F $End_BehaviourLine $BehaviourLine $LabelId $Line [2] ?TIMEOUT Trm $Cref $VerdictId F $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestStep $Begin_TestStep $TestStepId T1_preamble $TestStepRef ABR/ $Objective /* */ $DefaultsRef $Comment /* Establish a control path and ABR connection */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] (FLAG:=Init()) $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] [FLAG=TRUE] $Cref $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] [FLAG=FALSE] $Cref $VerdictId I $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestStep $Begin_TestStep $TestStepId UNEXPECTED $TestStepRef ABR/ $Objective /* To allow for an out-of-rate RM (CLP=1) during testing (except test case T1). */ $DefaultsRef $BehaviourDescription $BehaviourLine $LabelId $Line [0] LT_PCO?RM $Cref RM_UNEXPECT $VerdictId $Comment /* Out-of-rate RM (CLP=1) */ $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestStep $Begin_TestStep $TestStepId UT_Send $TestStepRef ABR/ $Objective /* The UT sends n data cells upon receipt of a send CM from the LT, where n is in the text of the CON1 control message */ $DefaultsRef $BehaviourDescription $BehaviourLine $LabelId $Line [0] CON?CON1(un:=CON1.CONTROL_LEN) $Cref UT_send $VerdictId $End_BehaviourLine $BehaviourLine $LabelId $Line [1] REPEAT Send_cells UNTIL [un=0] $Cref $VerdictId $End_BehaviourLine $Header Send_cells $BehaviourLine $LabelId $Line [0] UT_PCO!DATA(un:=un-1) $Cref CELL(un) $VerdictId $End_BehaviourLine $End_BehaviourDescription $Comment /* */ $End_TestStep $Begin_TestStep $TestStepId UT_Send_Receive $TestStepRef ABR/ $Objective /* */ $DefaultsRef $Comment /* UT receives and sends cells as commended by the LT. */ $BehaviourDescription $BehaviourLine $LabelId $Line [0] CON?CON2(um:=0,n_send:=CON2.Send,n_receive:=CON2.Receive) $Cref UT_SR_Cmd $VerdictId $End_BehaviourLine $BehaviourLine $LabelId L10 $Line [1] UT_PCO?DATA(um:=um+1) $Cref CELL_LT $VerdictId $Comment /* receive first */ $End_BehaviourLine $BehaviourLine $LabelId $Line [2] [um