1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // Declaration of test classes for SPUD TEL and SPUD FSM unit tests |
|
15 // |
|
16 // |
|
17 |
|
18 /** |
|
19 @file |
|
20 @internalComponent |
|
21 */ |
|
22 |
|
23 #ifndef SPUD_UNIT_TEST_STEP_H |
|
24 #define SPUD_UNIT_TEST_STEP_H |
|
25 |
|
26 #include <c32comm.h> |
|
27 #include <networking/umtsnifcontrolif.h> |
|
28 #include <testexecutestepbase.h> |
|
29 |
|
30 #include "CompareContextParameters.h" |
|
31 #include "meteldriverstrategy.h" |
|
32 #include "eteldrivernmspace.h" |
|
33 #include "pdpfsmnmspace.h" |
|
34 #include "InputRequestListener.h" |
|
35 |
|
36 #define TEST_SETRESULT(cond,result) if (!(cond)) SetTestStepResult((result)) |
|
37 |
|
38 /** Identifiers for each of the simtsy parameters that can be changed using publish and subscribe */ |
|
39 enum TEtelRequestType |
|
40 { |
|
41 /** Change QoS parameters */ |
|
42 ENetworkQoSChange, |
|
43 /** Change network status */ |
|
44 ENetworkChangeRegStatus, |
|
45 /** Change context status */ |
|
46 EContextStatusChange, |
|
47 /** Change context config parameters */ |
|
48 EContextConfigChange |
|
49 }; |
|
50 |
|
51 /** Contains methods common to both SPUD FSM and SPUD TEL tests */ |
|
52 class CSpudUnitTestStepBase : public CTestStep |
|
53 { |
|
54 public: |
|
55 CSpudUnitTestStepBase(TInt aTestNumber, TBool aUseTestPdpFsmInterface); |
|
56 TVerdict doTestStepPreambleL(); |
|
57 TVerdict doTestStepPostambleL(); |
|
58 static void SetSimTsyTestNumberL(TInt aTestNumber); |
|
59 |
|
60 protected: |
|
61 void InitPhoneAndPacketServiceL(); |
|
62 void DestroyPhoneAndPacketService(); |
|
63 void EtelRequest(TEtelRequestType aCommand, TInt aNewValue); |
|
64 TInt iTestNumber; |
|
65 |
|
66 /** Used as the interface between the thread running the active objects and the test execute thread. |
|
67 Contains the data passed to/from Input requests */ |
|
68 CInputRequestListener *iListener; |
|
69 /** Set to true when testing Etel driver, and as such the test FSM interface it used to interact with Etel driver |
|
70 and set to false when the real FSM is used */ |
|
71 TBool iUseTestPdpFsmInterface; |
|
72 /** The thread used to run the SPUD FSM and SPUD TEL active objects */ |
|
73 RThread iActiveSchedulerThread; |
|
74 |
|
75 /** Etel parameters that can be used in test steps */ |
|
76 RTelServer iTelServer; |
|
77 RPhone iPhone; |
|
78 RPacketService iPacketService; |
|
79 RPacketContext iPrimaryPacketContext, iSecondaryPacketContext; |
|
80 }; |
|
81 |
|
82 /** Contains methods for SPUD TEL tests */ |
|
83 class CSpudTelUnitTestStepBase : public CSpudUnitTestStepBase |
|
84 { |
|
85 public: |
|
86 CSpudTelUnitTestStepBase(TInt aTestNumber); |
|
87 |
|
88 protected: |
|
89 void EtelDriverInputRequest(TContextId aPdpId, EtelDriver::TEtelInput aOperation); |
|
90 void CancelPdpRequest(TContextId aPdpId); |
|
91 void WaitForEtelDriverInputResponse(TContextId aPdpId, PdpFsm::TEtelSignal aSignal, TInt aError=KErrNone); |
|
92 |
|
93 void WaitForNextContextConfigNotification(TContextId aPdpId, const RPacketContext::TContextConfigGPRS& aContextConfigGPRS); |
|
94 void WaitForGivenEtelContextStatusNotification(TContextId aPdpId, RPacketContext::TContextStatus aContextStatus); |
|
95 |
|
96 void WaitForNextQosNotification(TContextId aPdpId, const RPacketQoS::TQoSR99_R4Negotiated& aQoSR99_R4Negotiated); |
|
97 |
|
98 void WaitForNextServiceNotificationStatus(RPacketService::TStatus aServiceStatus); |
|
99 void WaitForEtelDriverSetDataChannel(TContextId aPdpId, RPacketContext::TDataChannelV2 aDataChannelV2); |
|
100 }; |
|
101 |
|
102 /** Contains methods for SPUD FSM tests */ |
|
103 class CSpudFsmUnitTestStepBase : public CSpudUnitTestStepBase |
|
104 { |
|
105 public: |
|
106 CSpudFsmUnitTestStepBase(TInt aTestNumber); |
|
107 |
|
108 protected: |
|
109 void FsmInputRequest(TContextId aPdpId, TInt aOperation, TInt aParam); |
|
110 void WaitForFsmInputResponse(TInt aPdpId, TInt aEvent, TInt aParam); |
|
111 |
|
112 void FsmObjectCreate(TContextId aPdpId); |
|
113 void WaitForFsmObjectCreateResponse(TInt aPdpId); |
|
114 |
|
115 void WaitForFsmSuspendedNotification(TContextId aPdpId); |
|
116 void WaitForFsmResumedNotification(TContextId aPdpId); |
|
117 void WaitForFsmServiceNotificationStatus(); |
|
118 void WaitForFsmContextConfigNotification(TContextId aPdpId, const RPacketContext::TContextConfigGPRS& aContextConfig); |
|
119 |
|
120 void WaitForFsmQosChangeNotification(TContextId aPdpId, const RPacketQoS::TQoSR99_R4Negotiated& aQosParams); |
|
121 |
|
122 void WaitForGivenContextStatus(RPacketContext& aPacketContext, RPacketContext::TContextStatus aStatus); |
|
123 }; |
|
124 |
|
125 /* |
|
126 Declarations for SPUD TEL unit tests - they all implement constructors, destructors and override doTestStep() |
|
127 */ |
|
128 |
|
129 #define DEFINE_SPUD_TEL_UNIT_TEST_CLASS(state) class CSpudTelUnit##state : public CSpudTelUnitTestStepBase \ |
|
130 { \ |
|
131 public: \ |
|
132 CSpudTelUnit##state(); \ |
|
133 ~CSpudTelUnit##state(); \ |
|
134 virtual TVerdict doTestStepL(); \ |
|
135 }; |
|
136 |
|
137 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(NormalOperation) |
|
138 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(Notifications) |
|
139 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(CreatePrimaryError) |
|
140 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(SetQosError) |
|
141 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(SetTftError) |
|
142 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(ActivateError1) |
|
143 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(ActivateError2) |
|
144 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(DeleteError1) |
|
145 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(DeleteError2) |
|
146 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(MultipleContexts) |
|
147 DEFINE_SPUD_TEL_UNIT_TEST_CLASS(Cancel) |
|
148 |
|
149 /* |
|
150 Declarations for SPUD FSM unit tests - they all implement constructors, destructors and override doTestStep() |
|
151 */ |
|
152 |
|
153 #define DEFINE_SPUD_FSM_UNIT_TEST_CLASS(state) class CSpudFsmUnit##state : public CSpudFsmUnitTestStepBase \ |
|
154 { \ |
|
155 public: \ |
|
156 CSpudFsmUnit##state(); \ |
|
157 ~CSpudFsmUnit##state(); \ |
|
158 virtual TVerdict doTestStepL(); \ |
|
159 }; |
|
160 |
|
161 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(NormalOperation) |
|
162 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(CreatePrimaryError1) |
|
163 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(CreatePrimaryError2) |
|
164 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(CreatePrimaryError3) |
|
165 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(SetQosAndTftError) |
|
166 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(ChangeQosAndTftError) |
|
167 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(Notifications) |
|
168 DEFINE_SPUD_FSM_UNIT_TEST_CLASS(NetworkDelete) |
|
169 |
|
170 /* |
|
171 Declarations for test names used by test execute script |
|
172 */ |
|
173 _LIT(KSpudTelUnitNormalOperation,"SpudTelUnitNormalOperation"); |
|
174 _LIT(KSpudTelUnitNotifications,"SpudTelUnitNotifications"); |
|
175 _LIT(KSpudTelUnitCreatePrimaryError,"SpudTelUnitCreatePrimaryError"); |
|
176 _LIT(KSpudTelUnitSetQosError,"SpudTelUnitSetQosError"); |
|
177 _LIT(KSpudTelUnitSetTftError,"SpudTelUnitSetTftError"); |
|
178 _LIT(KSpudTelUnitActivateError1,"SpudTelUnitActivateError1"); |
|
179 _LIT(KSpudTelUnitActivateError2,"SpudTelUnitActivateError2"); |
|
180 _LIT(KSpudTelUnitDeleteError1,"SpudTelUnitDeleteError1"); |
|
181 _LIT(KSpudTelUnitDeleteError2,"SpudTelUnitDeleteError2"); |
|
182 _LIT(KSpudTelUnitMultipleContexts,"SpudTelUnitMultipleContexts"); |
|
183 _LIT(KSpudTelUnitCancel,"SpudTelUnitCancel"); |
|
184 _LIT(KSpudFsmUnitNormalOperation,"SpudFsmUnitNormalOperation"); |
|
185 _LIT(KSpudFsmCreatePrimaryError1,"SpudFsmCreatePrimaryError1"); |
|
186 _LIT(KSpudFsmCreatePrimaryError2,"SpudFsmCreatePrimaryError2"); |
|
187 _LIT(KSpudFsmCreatePrimaryError3,"SpudFsmCreatePrimaryError3"); |
|
188 _LIT(KSpudFsmSetQosAndTftError,"SpudFsmSetQosAndTftError"); |
|
189 _LIT(KSpudFsmChangeQosAndTftError,"SpudFsmChangeQosAndTftError"); |
|
190 _LIT(KSpudFsmTestNotifications,"SpudFsmTestNotifications"); |
|
191 _LIT(KSpudFsmNetworkDelete,"SpudFsmNetworkDelete"); |
|
192 |
|
193 /* |
|
194 Declarations for names generated by SIMTSY for different contexts |
|
195 */ |
|
196 _LIT(KFirstPrimaryContextName, "PRIMARY1"); |
|
197 _LIT(KSecondPrimaryContextName, "PRIMARY2"); |
|
198 _LIT(KThirdPrimaryContextName, "PRIMARY3"); |
|
199 _LIT(KFirstSecondaryContextName, "SECONDARY1"); |
|
200 _LIT(KSecondSecondaryContextName, "SECONDARY2"); |
|
201 _LIT(KFirstQosName, "PACKET_QOS1"); |
|
202 |
|
203 const TInt KContextId0 = 0; |
|
204 const TInt KContextId1 = 1; |
|
205 const TInt KContextId2 = 2; |
|
206 const TInt KContextId3 = 3; |
|
207 |
|
208 #endif // SPUD_UNIT_TEST_STEP_H |
|