49 // Failures and causes: |
49 // Failures and causes: |
50 // Base Port information: |
50 // Base Port information: |
51 // |
51 // |
52 // |
52 // |
53 |
53 |
|
54 #define __E32TEST_EXTENSION__ |
54 #include <e32test.h> |
55 #include <e32test.h> |
55 #include <domainmember.h> |
56 #include <e32debug.h> |
56 #include <domainmanager.h> |
57 #include <e32ldr_private.h> |
57 #include <domainobserver.h> |
58 #include <domainobserver.h> |
|
59 |
58 #include "domainpolicytest.h" |
60 #include "domainpolicytest.h" |
59 #include <e32debug.h> |
61 #include "t_domain.h" |
60 #include <f32file.h> |
62 |
61 #include <e32ldr.h> |
63 |
62 #include <e32ldr_private.h> |
64 RTest test(_L(" T_DOMAIN ")); |
63 |
|
64 LOCAL_D RTest test(_L(" T_DOMAIN ")); |
|
65 _LIT(KThreadName, "t_domain_panic_thread"); |
65 _LIT(KThreadName, "t_domain_panic_thread"); |
|
66 |
|
67 TDmHierarchyId GHierarchyIdUnderTest = 0; |
66 |
68 |
67 #ifdef _DEBUG |
69 #ifdef _DEBUG |
68 #define __PRINT(x) {RDebug::Print x;} |
70 #define __PRINT(x) {RDebug::Print x;} |
69 #else |
71 #else |
70 #define __PRINT(x) |
72 #define __PRINT(x) |
71 #endif |
73 #endif |
72 |
|
73 class CDmTestMember; |
|
74 |
|
75 // interface for test domain memebers. |
|
76 // Any test memeber should derive from this interface |
|
77 class MDmDomainMember |
|
78 { |
|
79 public: |
|
80 virtual TDmHierarchyId HierarchyId() = 0; |
|
81 virtual TDmDomainId DomainId() = 0; |
|
82 virtual TDmDomainState State() = 0; |
|
83 virtual TInt Status() = 0; |
|
84 virtual TUint32 Ordinal() = 0; |
|
85 virtual TInt Notifications() = 0; |
|
86 }; |
|
87 |
|
88 class MDmTest |
|
89 { |
|
90 public: |
|
91 virtual void Perform() = 0; |
|
92 virtual void Release() = 0; |
|
93 virtual TInt TransitionNotification(MDmDomainMember& aDomainMember) = 0; |
|
94 virtual void TransitionRequestComplete() = 0; |
|
95 }; |
|
96 |
|
97 // for the test hierarchy, we generate an ordinal for each domain |
|
98 // each byte of which describes the exact location of the domain in the hierarchy |
|
99 #define ORDINAL_FROM_DOMAINID0(id) (id) |
|
100 #define ORDINAL_FROM_DOMAINID1(parent, id) ((parent << 8) | (id)) |
|
101 #define ORDINAL_FROM_DOMAINID2(grandparent, parent, id) ((grandparent << 16) | (parent << 8) | id) |
|
102 #define ORDINAL_FROM_DOMAINID3(greatgrandparent, grandparent, parent, id) ((greatgrandparent << 24) | (grandparent << 16) | (parent << 8) | id) |
|
103 #define PARENT_ORDINAL(id) (id >> 8) |
|
104 |
|
105 #define ORDINAL_LEVEL(ordinal) \ |
|
106 ((ordinal & 0xFF00) == 0) ? 1 : \ |
|
107 ((ordinal & 0xFF0000) == 0) ? 2 : \ |
|
108 ((ordinal & 0xFF000000) == 0) ? 3 : 4; |
|
109 |
|
110 |
|
111 // get the least significant domain id character (for debugging purposes) |
|
112 TBool GetDomainChar(TDmDomainId aDomainId, TChar& aChar) |
|
113 { |
|
114 TBool found = ETrue; |
|
115 switch(aDomainId) |
|
116 { |
|
117 |
|
118 case KDmIdTestA: aChar = 'A'; break; |
|
119 case KDmIdTestB: aChar = 'B'; break; |
|
120 case KDmIdTestC: aChar = 'C'; break; |
|
121 case KDmIdTestAA: aChar = 'A'; break; |
|
122 case KDmIdTestAB: aChar = 'B'; break; |
|
123 case KDmIdTestBA: aChar = 'A'; break; |
|
124 case KDmIdTestCA: aChar = 'A'; break; |
|
125 case KDmIdTestABA: aChar = 'A'; break; |
|
126 case KDmIdTestABB: aChar = 'B'; break; |
|
127 case KDmIdTestCAA: aChar = 'A'; break; |
|
128 // domain char not found |
|
129 case KDmIdNone: |
|
130 case KDmIdRoot: |
|
131 default: |
|
132 found = EFalse; |
|
133 } |
|
134 return found; |
|
135 } |
|
136 |
|
137 // prints the 4-character domain string into the passed descriptor (for debugging purposes) |
|
138 // e.g. "CAA" for KDmIdTestCAA |
|
139 void GetDomainDesc(TUint32 aOrdinal, TDes& aDes) |
|
140 { |
|
141 if (aOrdinal == KDmIdRoot) |
|
142 { |
|
143 aDes.Append(_L("root")); |
|
144 return; |
|
145 } |
|
146 |
|
147 TUint32 val = aOrdinal; |
|
148 |
|
149 for (TInt n=0; n<4; n++) |
|
150 { |
|
151 TDmDomainId domainId = (TDmDomainId) (val >> 24); |
|
152 TChar ch; |
|
153 TBool found = GetDomainChar(domainId, ch); |
|
154 if (found) |
|
155 aDes.Append(ch); |
|
156 val = val << 8; |
|
157 } |
|
158 |
|
159 } |
|
160 |
|
161 |
|
162 class CDmTestMember : public CActive, public MDmDomainMember |
|
163 { |
|
164 public: |
|
165 // from CActive |
|
166 void RunL(); |
|
167 // from MDmDomainMember |
|
168 inline TDmHierarchyId HierarchyId() {return iHierarchy;}; |
|
169 inline TDmDomainId DomainId() {return iId;}; |
|
170 inline TDmDomainState State() {return iState;}; |
|
171 inline TInt Status() {return iStatus.Int();}; |
|
172 inline TUint32 Ordinal() {return iOrdinal;}; |
|
173 inline TInt Notifications() {return iNotifications;}; |
|
174 |
|
175 CDmTestMember(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest*); |
|
176 ~CDmTestMember(); |
|
177 void Acknowledge(); |
|
178 |
|
179 protected: |
|
180 // from CActive |
|
181 virtual void DoCancel(); |
|
182 |
|
183 |
|
184 public: |
|
185 TDmHierarchyId iHierarchy; |
|
186 TDmDomainId iId; |
|
187 TDmDomainState iState; |
|
188 TUint32 iOrdinal; |
|
189 MDmTest* iTest; |
|
190 TInt iNotifications; |
|
191 RDmDomain iDomain; |
|
192 }; |
|
193 |
|
194 |
|
195 |
|
196 CDmTestMember::CDmTestMember(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest* aTest) : CActive(CActive::EPriorityStandard), |
|
197 iHierarchy(aHierarchy), iId(aId), iOrdinal(aOrdinal), iTest(aTest) |
|
198 { |
|
199 TInt r; |
|
200 |
|
201 if (iHierarchy == KDmHierarchyIdPower) |
|
202 r = iDomain.Connect(iId); |
|
203 else |
|
204 r = iDomain.Connect(iHierarchy, iId); |
|
205 |
|
206 test(r == KErrNone); |
|
207 |
|
208 CActiveScheduler::Add(this); |
|
209 |
|
210 iDomain.RequestTransitionNotification(CActive::iStatus); |
|
211 CActive::SetActive(); |
|
212 } |
|
213 |
|
214 CDmTestMember::~CDmTestMember() |
|
215 { |
|
216 CActive::Cancel(); |
|
217 iDomain.Close(); |
|
218 } |
|
219 |
|
220 void CDmTestMember::Acknowledge() |
|
221 { |
|
222 iDomain.AcknowledgeLastState(); |
|
223 } |
|
224 |
|
225 void CDmTestMember::RunL() |
|
226 { |
|
227 |
|
228 iNotifications++; |
|
229 |
|
230 iState = iDomain.GetState(); |
|
231 |
|
232 TInt ackError = iTest->TransitionNotification(*this); |
|
233 if (ackError == KErrNone) |
|
234 iDomain.AcknowledgeLastState(); |
|
235 else if (ackError == KErrAbort) // don't acknowledge |
|
236 ; |
|
237 else |
|
238 iDomain.AcknowledgeLastState(ackError); |
|
239 |
|
240 |
|
241 // request another notification (even if we didn't acknowledge the last one) |
|
242 iDomain.RequestTransitionNotification(CActive::iStatus); |
|
243 CActive::SetActive(); |
|
244 } |
|
245 |
|
246 void CDmTestMember::DoCancel() |
|
247 { |
|
248 iDomain.CancelTransitionNotification(); |
|
249 } |
|
250 |
|
251 |
|
252 // CDomainMemberAo |
|
253 class CDomainMemberAo : public CDmDomain, public MDmDomainMember |
|
254 { |
|
255 public: |
|
256 static CDomainMemberAo* NewL(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest*); |
|
257 ~CDomainMemberAo(); |
|
258 |
|
259 // from CActive |
|
260 void RunL(); |
|
261 |
|
262 // from MDmDomainMember |
|
263 inline TDmHierarchyId HierarchyId() {return iHierarchy;}; |
|
264 inline TDmDomainId DomainId() {return iId;}; |
|
265 inline TDmDomainState State() {return iState;}; |
|
266 inline TInt Status() {return iStatus.Int();}; |
|
267 inline TUint32 Ordinal() {return iOrdinal;}; |
|
268 inline TInt Notifications() {return iNotifications;}; |
|
269 |
|
270 private: |
|
271 CDomainMemberAo(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest*); |
|
272 |
|
273 public: |
|
274 TDmHierarchyId iHierarchy; |
|
275 TDmDomainId iId; |
|
276 TDmDomainState iState; |
|
277 TUint32 iOrdinal; |
|
278 MDmTest* iTest; |
|
279 TInt iNotifications; |
|
280 }; |
|
281 |
|
282 CDomainMemberAo* CDomainMemberAo::NewL(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest* aTest) |
|
283 { |
|
284 CDomainMemberAo* self=new (ELeave) CDomainMemberAo(aHierarchy, aId, aOrdinal, aTest); |
|
285 CleanupStack::PushL(self); |
|
286 self->ConstructL(); |
|
287 |
|
288 self->RequestTransitionNotification(); |
|
289 |
|
290 CleanupStack::Pop(); |
|
291 return self; |
|
292 } |
|
293 |
|
294 CDomainMemberAo::CDomainMemberAo(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest* aTest) : |
|
295 CDmDomain(aHierarchy, aId), |
|
296 iHierarchy(aHierarchy), iId(aId), iOrdinal(aOrdinal), iTest(aTest) |
|
297 { |
|
298 } |
|
299 |
|
300 CDomainMemberAo::~CDomainMemberAo() |
|
301 { |
|
302 Cancel(); |
|
303 } |
|
304 |
|
305 void CDomainMemberAo::RunL() |
|
306 { |
|
307 iNotifications++; |
|
308 |
|
309 iState = GetState(); |
|
310 |
|
311 TInt ackError = iTest->TransitionNotification(*this); |
|
312 if (ackError == KErrNone) |
|
313 AcknowledgeLastState(ackError); |
|
314 else if (ackError == KErrAbort) // don't acknowledge |
|
315 ; |
|
316 else |
|
317 AcknowledgeLastState(ackError); |
|
318 if (ackError != KErrAbort) |
|
319 AcknowledgeLastState(ackError); |
|
320 |
|
321 |
|
322 // request another notification (even if we didn't acknowledge the last one) |
|
323 RequestTransitionNotification(); |
|
324 } |
|
325 |
|
326 |
|
327 // CDomainManagerAo |
|
328 class CDomainManagerAo : public CDmDomainManager |
|
329 { |
|
330 public: |
|
331 ~CDomainManagerAo(); |
|
332 static CDomainManagerAo* NewL(TDmHierarchyId aHierarchy, MDmTest& aTest); |
|
333 |
|
334 // from CActive |
|
335 void RunL(); |
|
336 |
|
337 private: |
|
338 CDomainManagerAo(TDmHierarchyId aHierarchy, MDmTest& aTest); |
|
339 |
|
340 private: |
|
341 MDmTest& iTest; |
|
342 }; |
|
343 |
|
344 |
|
345 CDomainManagerAo* CDomainManagerAo::NewL(TDmHierarchyId aHierarchy, MDmTest& aTest) |
|
346 { |
|
347 CDomainManagerAo* self=new (ELeave) CDomainManagerAo(aHierarchy, aTest); |
|
348 CleanupStack::PushL(self); |
|
349 |
|
350 self->ConstructL(); |
|
351 CleanupStack::Pop(); |
|
352 return self; |
|
353 } |
|
354 |
|
355 CDomainManagerAo::CDomainManagerAo(TDmHierarchyId aHierarchy, MDmTest& aTest) : |
|
356 CDmDomainManager(aHierarchy), iTest(aTest) |
|
357 { |
|
358 } |
|
359 |
|
360 CDomainManagerAo::~CDomainManagerAo() |
|
361 { |
|
362 } |
|
363 |
|
364 void CDomainManagerAo::RunL() |
|
365 { |
|
366 iTest.TransitionRequestComplete(); |
|
367 } |
|
368 |
74 |
369 |
75 |
370 class CDmTest1 : public CActive, public MDmTest |
76 class CDmTest1 : public CActive, public MDmTest |
371 { |
77 { |
372 public: // from CActive |
78 public: // from CActive |
910 test.Printf(_L("Domain id = 0x%x, Target State = 0x%x\n"), iTestDomainId, iTestState); |
616 test.Printf(_L("Domain id = 0x%x, Target State = 0x%x\n"), iTestDomainId, iTestState); |
911 |
617 |
912 TInt testMemberCount = 0; |
618 TInt testMemberCount = 0; |
913 |
619 |
914 // Add some test hierarchy members - these use the RDmDomain API |
620 // Add some test hierarchy members - these use the RDmDomain API |
915 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this); |
621 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this); |
916 test(iTestMembers[testMemberCount++] != NULL); |
622 test(iTestMembers[testMemberCount++] != NULL); |
917 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this); |
623 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this); |
918 test(iTestMembers[testMemberCount++] != NULL); |
624 test(iTestMembers[testMemberCount++] != NULL); |
919 |
625 |
920 // row 1 |
626 // row 1 |
921 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestA, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestA), this); |
627 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestA, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestA), this); |
922 test(iTestMembers[testMemberCount++] != NULL); |
628 test(iTestMembers[testMemberCount++] != NULL); |
923 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestB, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestB), this); |
629 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestB, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestB), this); |
924 test(iTestMembers[testMemberCount++] != NULL); |
630 test(iTestMembers[testMemberCount++] != NULL); |
925 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestC, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestC), this); |
631 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestC, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestC), this); |
926 test(iTestMembers[testMemberCount++] != NULL); |
632 test(iTestMembers[testMemberCount++] != NULL); |
927 |
633 |
928 // row2 |
634 // row2 |
929 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestAA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAA), this); |
635 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestAA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAA), this); |
930 test(iTestMembers[testMemberCount++] != NULL); |
636 test(iTestMembers[testMemberCount++] != NULL); |
931 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this); |
637 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this); |
932 test(iTestMembers[testMemberCount++] != NULL); |
638 test(iTestMembers[testMemberCount++] != NULL); |
933 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestBA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestB, KDmIdTestBA), this); |
639 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestBA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestB, KDmIdTestBA), this); |
934 test(iTestMembers[testMemberCount++] != NULL); |
640 test(iTestMembers[testMemberCount++] != NULL); |
935 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestCA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestC, KDmIdTestCA), this); |
641 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestCA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestC, KDmIdTestCA), this); |
936 test(iTestMembers[testMemberCount++] != NULL); |
642 test(iTestMembers[testMemberCount++] != NULL); |
937 |
643 |
938 // row 3 |
644 // row 3 |
939 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestABA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABA), this); |
645 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestABA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABA), this); |
940 test(iTestMembers[testMemberCount++] != NULL); |
646 test(iTestMembers[testMemberCount++] != NULL); |
941 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestABB, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABB), this); |
647 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestABB, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABB), this); |
942 test(iTestMembers[testMemberCount++] != NULL); |
648 test(iTestMembers[testMemberCount++] != NULL); |
943 iTestMembers[testMemberCount] = new CDmTestMember(KDmHierarchyIdTest, KDmIdTestCAA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestC, KDmIdTestCA, KDmIdTestCAA), this); |
649 iTestMembers[testMemberCount] = new CDmTestMember(GHierarchyIdUnderTest, KDmIdTestCAA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestC, KDmIdTestCA, KDmIdTestCAA), this); |
944 test(iTestMembers[testMemberCount++] != NULL); |
650 test(iTestMembers[testMemberCount++] != NULL); |
945 |
651 |
946 // add some power hierarchy members - these use the CDmDomain AO API |
652 // add some power hierarchy members - these use the CDmDomain AO API |
947 TInt powerMemberCount = 0; |
653 TInt powerMemberCount = 0; |
948 TRAP(r, iPowerMembers[powerMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdPower, KDmIdRoot, KDmIdRoot, this)); |
654 TRAP(r, iPowerMembers[powerMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdPower, KDmIdRoot, KDmIdRoot, this)); |
1043 //************************************************* |
749 //************************************************* |
1044 // Test 5c- verify domains are in correct state |
750 // Test 5c- verify domains are in correct state |
1045 //************************************************* |
751 //************************************************* |
1046 test.Next(_L("Test 5c- verify domains are in correct state")); |
752 test.Next(_L("Test 5c- verify domains are in correct state")); |
1047 RDmDomain domainMember; |
753 RDmDomain domainMember; |
1048 r = domainMember.Connect(KDmHierarchyIdTest, iTestDomainId); |
754 r = domainMember.Connect(GHierarchyIdUnderTest, iTestDomainId); |
1049 test (r == KErrNone); |
755 test (r == KErrNone); |
1050 TDmDomainState state = domainMember.GetState(); |
756 TDmDomainState state = domainMember.GetState(); |
1051 domainMember.Close(); |
757 domainMember.Close(); |
1052 test (state == iTestState); |
758 test (state == iTestState); |
1053 |
759 |
1054 // if the transition request is not on the root, verify that that |
760 // if the transition request is not on the root, verify that that |
1055 // the root domain and the transition domain are in different states |
761 // the root domain and the transition domain are in different states |
1056 if (iTestDomainId != KDmIdRoot && iTestState != EStartupCriticalStatic) |
762 if (iTestDomainId != KDmIdRoot && iTestState != EStartupCriticalStatic) |
1057 { |
763 { |
1058 r = domainMember.Connect(KDmHierarchyIdTest, KDmIdRoot); |
764 r = domainMember.Connect(GHierarchyIdUnderTest, KDmIdRoot); |
1059 test (r == KErrNone); |
765 test (r == KErrNone); |
1060 TDmDomainState state = domainMember.GetState(); |
766 TDmDomainState state = domainMember.GetState(); |
1061 domainMember.Close(); |
767 domainMember.Close(); |
1062 test (state != iTestState); |
768 test (state != iTestState); |
1063 } |
769 } |
1569 __UHEAP_MARK; |
1278 __UHEAP_MARK; |
1570 |
1279 |
1571 CActiveScheduler::Add(this); |
1280 CActiveScheduler::Add(this); |
1572 |
1281 |
1573 CDomainManagerAo* iTestDomainManager = NULL; |
1282 CDomainManagerAo* iTestDomainManager = NULL; |
1574 TRAP_IGNORE(iTestDomainManager = CDomainManagerAo::NewL(KDmHierarchyIdTest, *this)); |
1283 TRAP_IGNORE(iTestDomainManager = CDomainManagerAo::NewL(GHierarchyIdUnderTest, *this)); |
1575 test (iTestDomainManager != NULL); |
1284 test (iTestDomainManager != NULL); |
1576 |
1285 |
1577 TInt r = CDomainManagerAo::AddDomainHierarchy(KDmHierarchyIdTest); |
1286 TInt r = CDomainManagerAo::AddDomainHierarchy(GHierarchyIdUnderTest); |
1578 test(r == KErrNone); |
1287 test(r == KErrNone); |
1579 |
1288 |
1580 //************************************************* |
1289 //************************************************* |
1581 // Test 6a - Connect to the same hierarchy twice |
1290 // Test 6a - Connect to the same hierarchy twice |
1582 //************************************************* |
1291 //************************************************* |
1583 test.Next(_L("Test 6a - Connect to the same hierarchy twice")); |
1292 test.Next(_L("Test 6a - Connect to the same hierarchy twice")); |
1584 |
1293 |
1585 // verify that we can't connect to the same hierarchy more than once |
1294 // verify that we can't connect to the same hierarchy more than once |
1586 CDomainManagerAo* testDomainManager = NULL; |
1295 CDomainManagerAo* testDomainManager = NULL; |
1587 TRAP(r, testDomainManager = CDomainManagerAo::NewL(KDmHierarchyIdTest, *this)); |
1296 TRAP(r, testDomainManager = CDomainManagerAo::NewL(GHierarchyIdUnderTest, *this)); |
1588 test(r == KErrInUse); |
1297 test(r == KErrInUse); |
1589 test (testDomainManager == NULL); |
1298 test (testDomainManager == NULL); |
1590 |
1299 |
1591 |
1300 |
1592 TInt testMemberCount = 0; |
1301 TInt testMemberCount = 0; |
1593 |
1302 |
1594 // Add some test hierarchy members |
1303 // Add some test hierarchy members |
1595 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this)); |
1304 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this)); |
1596 test(iTestMembers[testMemberCount++] != NULL); |
1305 test(iTestMembers[testMemberCount++] != NULL); |
1597 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this)); |
1306 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this)); |
1598 test(iTestMembers[testMemberCount++] != NULL); |
1307 test(iTestMembers[testMemberCount++] != NULL); |
1599 |
1308 |
1600 // row 1 |
1309 // row 1 |
1601 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestA, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestA), this)); |
1310 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestA, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestA), this)); |
1602 test(iTestMembers[testMemberCount++] != NULL); |
1311 test(iTestMembers[testMemberCount++] != NULL); |
1603 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestB, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestB), this)); |
1312 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestB, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestB), this)); |
1604 test(iTestMembers[testMemberCount++] != NULL); |
1313 test(iTestMembers[testMemberCount++] != NULL); |
1605 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestC, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestC), this)); |
1314 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestC, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestC), this)); |
1606 test(iTestMembers[testMemberCount++] != NULL); |
1315 test(iTestMembers[testMemberCount++] != NULL); |
1607 |
1316 |
1608 // row2 |
1317 // row2 |
1609 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestAA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAA), this)); |
1318 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestAA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAA), this)); |
1610 test(iTestMembers[testMemberCount++] != NULL); |
1319 test(iTestMembers[testMemberCount++] != NULL); |
1611 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this)); |
1320 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this)); |
1612 test(iTestMembers[testMemberCount++] != NULL); |
1321 test(iTestMembers[testMemberCount++] != NULL); |
1613 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestBA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestB, KDmIdTestBA), this)); |
1322 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestBA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestB, KDmIdTestBA), this)); |
1614 test(iTestMembers[testMemberCount++] != NULL); |
1323 test(iTestMembers[testMemberCount++] != NULL); |
1615 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestCA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestC, KDmIdTestCA), this)); |
1324 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestCA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestC, KDmIdTestCA), this)); |
1616 test(iTestMembers[testMemberCount++] != NULL); |
1325 test(iTestMembers[testMemberCount++] != NULL); |
1617 |
1326 |
1618 // row 3 |
1327 // row 3 |
1619 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestABA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABA), this)); |
1328 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestABA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABA), this)); |
1620 test(iTestMembers[testMemberCount++] != NULL); |
1329 test(iTestMembers[testMemberCount++] != NULL); |
1621 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestABB, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABB), this)); |
1330 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestABB, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABB), this)); |
1622 test(iTestMembers[testMemberCount++] != NULL); |
1331 test(iTestMembers[testMemberCount++] != NULL); |
1623 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestCAA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestC, KDmIdTestCA, KDmIdTestCAA), this)); |
1332 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestCAA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestC, KDmIdTestCA, KDmIdTestCAA), this)); |
1624 test(iTestMembers[testMemberCount++] != NULL); |
1333 test(iTestMembers[testMemberCount++] != NULL); |
1625 |
1334 |
1626 |
1335 |
1627 //************************************************* |
1336 //************************************************* |
1628 // Test 6b change to current state |
1337 // Test 6b change to current state |
1649 // Test 6c cancel a member notification request |
1358 // Test 6c cancel a member notification request |
1650 //************************************************* |
1359 //************************************************* |
1651 test.Next(_L("Test 6c cancel a member notification request")); |
1360 test.Next(_L("Test 6c cancel a member notification request")); |
1652 RDmDomain domainMember; |
1361 RDmDomain domainMember; |
1653 TRequestStatus status; |
1362 TRequestStatus status; |
1654 domainMember.Connect(KDmHierarchyIdTest, iTestDomainId); |
1363 domainMember.Connect(GHierarchyIdUnderTest, iTestDomainId); |
1655 domainMember.RequestTransitionNotification(status); |
1364 domainMember.RequestTransitionNotification(status); |
1656 domainMember.CancelTransitionNotification(); |
1365 domainMember.CancelTransitionNotification(); |
1657 User::WaitForRequest(status); |
1366 User::WaitForRequest(status); |
1658 domainMember.Close(); |
1367 domainMember.Close(); |
1659 |
1368 |
1660 //************************************************* |
1369 //************************************************* |
1661 // Test 6d cancel a member notification request without having first requested a notification |
1370 // Test 6d cancel a member notification request without having first requested a notification |
1662 //************************************************* |
1371 //************************************************* |
1663 test.Next(_L("Test 6d cancel a member notification request without having first requested a notification")); |
1372 test.Next(_L("Test 6d cancel a member notification request without having first requested a notification")); |
1664 domainMember.Connect(KDmHierarchyIdTest, iTestDomainId); |
1373 domainMember.Connect(GHierarchyIdUnderTest, iTestDomainId); |
1665 domainMember.CancelTransitionNotification(); |
1374 domainMember.CancelTransitionNotification(); |
1666 domainMember.Close(); |
1375 domainMember.Close(); |
1667 |
1376 |
1668 //************************************************* |
1377 //************************************************* |
1669 // Test 6e domain controller adds invalid hierarchy |
1378 // Test 6e domain controller adds invalid hierarchy |
1866 test.Next(_L("Test 7a - Testing observer notifications")); |
1575 test.Next(_L("Test 7a - Testing observer notifications")); |
1867 |
1576 |
1868 TInt testMemberCount = 0; |
1577 TInt testMemberCount = 0; |
1869 |
1578 |
1870 // Add some test hierarchy members |
1579 // Add some test hierarchy members |
1871 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this)); |
1580 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdRoot, ORDINAL_FROM_DOMAINID0(KDmIdRoot), this)); |
1872 test(iTestMembers[testMemberCount++] != NULL); |
1581 test(iTestMembers[testMemberCount++] != NULL); |
1873 |
1582 |
1874 // row 1 |
1583 // row 1 |
1875 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestA, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestA), this)); |
1584 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestA, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestA), this)); |
1876 test(iTestMembers[testMemberCount++] != NULL); |
1585 test(iTestMembers[testMemberCount++] != NULL); |
1877 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestB, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestB), this)); |
1586 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestB, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestB), this)); |
1878 test(iTestMembers[testMemberCount++] != NULL); |
1587 test(iTestMembers[testMemberCount++] != NULL); |
1879 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestC, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestC), this)); |
1588 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestC, ORDINAL_FROM_DOMAINID1(KDmIdRoot, KDmIdTestC), this)); |
1880 test(iTestMembers[testMemberCount++] != NULL); |
1589 test(iTestMembers[testMemberCount++] != NULL); |
1881 |
1590 |
1882 // row2 |
1591 // row2 |
1883 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestAA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAA), this)); |
1592 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestAA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAA), this)); |
1884 test(iTestMembers[testMemberCount++] != NULL); |
1593 test(iTestMembers[testMemberCount++] != NULL); |
1885 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this)); |
1594 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this)); |
1886 test(iTestMembers[testMemberCount++] != NULL); |
1595 test(iTestMembers[testMemberCount++] != NULL); |
1887 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestBA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestB, KDmIdTestBA), this)); |
1596 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestBA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestB, KDmIdTestBA), this)); |
1888 test(iTestMembers[testMemberCount++] != NULL); |
1597 test(iTestMembers[testMemberCount++] != NULL); |
1889 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestCA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestC, KDmIdTestCA), this)); |
1598 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestCA, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestC, KDmIdTestCA), this)); |
1890 test(iTestMembers[testMemberCount++] != NULL); |
1599 test(iTestMembers[testMemberCount++] != NULL); |
1891 |
1600 |
1892 // row 3 |
1601 // row 3 |
1893 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestABA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABA), this)); |
1602 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestABA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABA), this)); |
1894 test(iTestMembers[testMemberCount++] != NULL); |
1603 test(iTestMembers[testMemberCount++] != NULL); |
1895 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestABB, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABB), this)); |
1604 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestABB, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestA, KDmIdTestAB, KDmIdTestABB), this)); |
1896 test(iTestMembers[testMemberCount++] != NULL); |
1605 test(iTestMembers[testMemberCount++] != NULL); |
1897 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(KDmHierarchyIdTest, KDmIdTestCAA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestC, KDmIdTestCA, KDmIdTestCAA), this)); |
1606 TRAP(r, iTestMembers[testMemberCount] = CDomainMemberAo::NewL(GHierarchyIdUnderTest, KDmIdTestCAA, ORDINAL_FROM_DOMAINID3(KDmIdRoot, KDmIdTestC, KDmIdTestCA, KDmIdTestCAA), this)); |
1898 test(iTestMembers[testMemberCount++] != NULL); |
1607 test(iTestMembers[testMemberCount++] != NULL); |
1899 |
1608 |
1900 // create an observer |
1609 // create an observer |
1901 CHierarchyObserver* observer = NULL; |
1610 CHierarchyObserver* observer = NULL; |
1902 TRAP(r, observer = CHierarchyObserver::NewL(*this, KDmHierarchyIdTest)); |
1611 TRAP(r, observer = CHierarchyObserver::NewL(*this, GHierarchyIdUnderTest)); |
1903 test (r == KErrNone); |
1612 test (r == KErrNone); |
1904 test(observer != NULL); |
1613 test(observer != NULL); |
1905 observer->StartObserver(iObservedDomainId, EDmNotifyAll); |
1614 observer->StartObserver(iObservedDomainId, EDmNotifyAll); |
1906 |
1615 |
1907 // request a state change |
1616 // request a state change |
2187 __PRINT((_L("CDmTest7::TransReqEvent(), aDomainId = %d, aState %d, iTransReqEvents %d\n"), |
1896 __PRINT((_L("CDmTest7::TransReqEvent(), aDomainId = %d, aState %d, iTransReqEvents %d\n"), |
2188 aDomainId, aState, iTransReqEvents)); |
1897 aDomainId, aState, iTransReqEvents)); |
2189 TestForCompletion(); |
1898 TestForCompletion(); |
2190 } |
1899 } |
2191 |
1900 |
|
1901 |
|
1902 /** |
|
1903 Increase code coverage, in particular get CPowerUpHandler::DoCancel() |
|
1904 called. |
|
1905 */ |
|
1906 class CDmPowerCoverageTest : public CActive, public MDmTest |
|
1907 { |
|
1908 public: |
|
1909 CDmPowerCoverageTest(); |
|
1910 ~CDmPowerCoverageTest() |
|
1911 { |
|
1912 Cancel(); |
|
1913 iManager.Close(); |
|
1914 delete iMember; |
|
1915 } |
|
1916 // from CActive |
|
1917 void RunL(); |
|
1918 // from MDmTest |
|
1919 void Perform(); |
|
1920 void Release(); |
|
1921 TInt TransitionNotification(MDmDomainMember&); |
|
1922 void TransitionRequestComplete() |
|
1923 {} |
|
1924 private: |
|
1925 // from CActive |
|
1926 virtual void DoCancel() |
|
1927 { |
|
1928 test(0); |
|
1929 } |
|
1930 private: |
|
1931 CDmTestMember* iMember; |
|
1932 RDmDomainManager iManager; |
|
1933 }; |
|
1934 |
|
1935 |
|
1936 CDmPowerCoverageTest::CDmPowerCoverageTest() |
|
1937 : CActive(CActive::EPriorityStandard) |
|
1938 {} |
|
1939 |
|
1940 |
|
1941 void CDmPowerCoverageTest::RunL() |
|
1942 { |
|
1943 RDebug::Printf("CDmPowerCoverageTest::RunL(): %d", iStatus.Int()); |
|
1944 CActiveScheduler::Stop(); |
|
1945 } |
|
1946 |
|
1947 |
|
1948 void CDmPowerCoverageTest::Perform() |
|
1949 { |
|
1950 test.Next(_L("CDmPowerCoverageTest")); |
|
1951 |
|
1952 iMember = new CDmTestMember(KDmHierarchyIdPower, KDmIdApps, 0, this); |
|
1953 test(iMember != NULL); |
|
1954 |
|
1955 TInt r = iManager.Connect(); |
|
1956 test(r == KErrNone); |
|
1957 |
|
1958 CActiveScheduler::Add(this); |
|
1959 iManager.RequestSystemTransition(EPwStandby, iStatus); |
|
1960 iManager.CancelTransition(); |
|
1961 CActive::SetActive(); |
|
1962 |
|
1963 CActiveScheduler::Start(); |
|
1964 } |
|
1965 |
|
1966 |
|
1967 TInt CDmPowerCoverageTest::TransitionNotification(MDmDomainMember&) |
|
1968 { |
|
1969 RDebug::Printf("CDmPowerCoverageTest::TransitionNotification()"); |
|
1970 // Don't acknowledge |
|
1971 return KErrAbort; |
|
1972 } |
|
1973 |
|
1974 |
|
1975 void CDmPowerCoverageTest::Release() |
|
1976 { |
|
1977 delete this; |
|
1978 } |
|
1979 |
|
1980 |
|
1981 /** |
|
1982 Test disconnecting domain controller from server whilst |
|
1983 transition in progress |
|
1984 */ |
|
1985 class CDmTestDisconnect : public CBase, public MDmTest |
|
1986 { |
|
1987 public: |
|
1988 ~CDmTestDisconnect(); |
|
1989 |
|
1990 // from MDmTest |
|
1991 void Perform(); |
|
1992 void Release(); |
|
1993 TInt TransitionNotification(MDmDomainMember& aDomainMember); |
|
1994 void TransitionRequestComplete() {test(EFalse);} |
|
1995 |
|
1996 protected: |
|
1997 CDmTestMember* iMember; |
|
1998 RDmDomainManager iManager; |
|
1999 }; |
|
2000 |
|
2001 CDmTestDisconnect::~CDmTestDisconnect() |
|
2002 { |
|
2003 delete iMember; |
|
2004 iManager.Close(); |
|
2005 } |
|
2006 |
|
2007 void CDmTestDisconnect::Perform() |
|
2008 { |
|
2009 TInt r = RDmDomainManager::AddDomainHierarchy(GHierarchyIdUnderTest); |
|
2010 test_KErrNone(r); |
|
2011 test.Next(_L("Test disconnecting controller during transition")); |
|
2012 iMember = new (ELeave) CDmTestMember(GHierarchyIdUnderTest, KDmIdTestAB, ORDINAL_FROM_DOMAINID2(KDmIdRoot, KDmIdTestA, KDmIdTestAB), this); |
|
2013 r = iManager.Connect(GHierarchyIdUnderTest); |
|
2014 test_KErrNone(r); |
|
2015 |
|
2016 test_Equal(0, RThread().RequestCount()); |
|
2017 TRequestStatus status; |
|
2018 iManager.RequestDomainTransition(KDmIdRoot, EStartupCriticalStatic, ETraverseDefault, status); |
|
2019 CActiveScheduler::Start(); |
|
2020 |
|
2021 // No User::WaitForRequest is used, since it is expected that |
|
2022 // the outstanding request will not be completed |
|
2023 test_Equal(0, RThread().RequestCount()); |
|
2024 } |
|
2025 |
|
2026 TInt CDmTestDisconnect::TransitionNotification(MDmDomainMember&) |
|
2027 { |
|
2028 iManager.Close(); |
|
2029 CActiveScheduler::Stop(); |
|
2030 return KErrNone; |
|
2031 } |
|
2032 |
|
2033 void CDmTestDisconnect::Release() |
|
2034 { |
|
2035 delete this; |
|
2036 } |
|
2037 |
|
2038 void RunTests(TInt aIter) |
|
2039 { |
|
2040 while (aIter--) |
|
2041 { |
|
2042 MDmTest* tests[] = |
|
2043 { |
|
2044 new CDmTestDisconnect(), |
|
2045 new CDmTest1(KDmIdRoot, EPwStandby), |
|
2046 new CDmTest1(KDmIdRoot, EPwOff), |
|
2047 new CDmTest1(KDmIdRoot, EPwActive), |
|
2048 new CDmTest1(KDmIdApps, EPwStandby), |
|
2049 new CDmTest1(KDmIdApps, EPwOff), |
|
2050 new CDmTest1(KDmIdApps, EPwActive), |
|
2051 new CDmTest1(KDmIdUiApps, EPwStandby), |
|
2052 new CDmTest1(KDmIdUiApps, EPwOff), |
|
2053 new CDmTest1(KDmIdUiApps, EPwActive), |
|
2054 new CDmTest2(EPwStandby), |
|
2055 new CDmTest3(), |
|
2056 |
|
2057 // platform security tests |
|
2058 new CDmTest4(), |
|
2059 |
|
2060 // PREQ810 tests : |
|
2061 // note that we use a fictitious power state to prevent any |
|
2062 new CDmTest5(KDmIdRoot, KDmIdRoot, EPwActive+10, EStartupCriticalDynamic), |
|
2063 new CDmTest5(KDmIdUiApps, KDmIdTestAB, EPwActive+10, EStartupCriticalDynamic), |
|
2064 |
|
2065 // negative tests |
|
2066 new CDmTest6(), |
|
2067 |
|
2068 |
|
2069 // observer tests |
|
2070 new CDmTest7(KDmIdTestA), |
|
2071 new CDmTest7(KDmIdRoot), |
|
2072 |
|
2073 // increase code coverage |
|
2074 new CDmPowerCoverageTest(), |
|
2075 }; |
|
2076 |
|
2077 for (unsigned int i = 0; i < sizeof(tests)/sizeof(*tests); ++i) |
|
2078 { |
|
2079 test(tests[i] != NULL); |
|
2080 tests[i]->Perform(); |
|
2081 tests[i]->Release(); |
|
2082 } |
|
2083 } |
|
2084 } |
|
2085 |
|
2086 |
2192 GLDEF_C TInt E32Main() |
2087 GLDEF_C TInt E32Main() |
2193 { |
2088 { |
2194 CTrapCleanup* trapHandler=CTrapCleanup::New(); |
2089 CTrapCleanup* trapHandler=CTrapCleanup::New(); |
2195 test(trapHandler!=NULL); |
2090 test(trapHandler!=NULL); |
2196 |
2091 |
2231 {} |
2125 {} |
2232 delete hb; |
2126 delete hb; |
2233 } |
2127 } |
2234 |
2128 |
2235 test.Title(); |
2129 test.Title(); |
2236 test.Start(_L("Testing")); |
|
2237 |
|
2238 test.Printf(_L("Go for %d iterations\n"), iter); |
2130 test.Printf(_L("Go for %d iterations\n"), iter); |
2239 |
2131 |
2240 // Remember the number of open handles. Just for a sanity check .... |
2132 // Remember the number of open handles. Just for a sanity check .... |
2241 TInt start_thc, start_phc; |
2133 TInt start_thc, start_phc; |
2242 RThread().HandleCount(start_phc, start_thc); |
2134 RThread().HandleCount(start_phc, start_thc); |
2243 |
2135 |
2244 while (iter--) |
2136 |
2245 { |
2137 test.Start(_L("Test run with original test Hierarchy")); |
2246 MDmTest* tests[] = |
2138 GHierarchyIdUnderTest = KDmHierarchyIdTest; |
2247 { |
2139 RunTests(iter); |
2248 new CDmTest1(KDmIdRoot, EPwStandby), |
2140 test.End(); |
2249 new CDmTest1(KDmIdRoot, EPwOff), |
2141 |
2250 new CDmTest1(KDmIdRoot, EPwActive), |
2142 |
2251 new CDmTest1(KDmIdApps, EPwStandby), |
2143 test.Start(_L("Test run with original test Hierarchy as V2 policy")); |
2252 new CDmTest1(KDmIdApps, EPwOff), |
2144 GHierarchyIdUnderTest = KDmHierarchyIdTestV2_97; |
2253 new CDmTest1(KDmIdApps, EPwActive), |
2145 RunTests(iter); |
2254 new CDmTest1(KDmIdUiApps, EPwStandby), |
2146 test.End(); |
2255 new CDmTest1(KDmIdUiApps, EPwOff), |
2147 |
2256 new CDmTest1(KDmIdUiApps, EPwActive), |
2148 test.Start(_L("Test run with original test Hierarchy as V2 policy, but NULL state specification")); |
2257 new CDmTest2(EPwStandby), |
2149 GHierarchyIdUnderTest = KDmHierarchyIdTestV2_96; |
2258 new CDmTest3(), |
2150 RunTests(iter); |
2259 |
|
2260 // platform security tests |
|
2261 new CDmTest4(), |
|
2262 |
|
2263 // PREQ810 tests : |
|
2264 // note that we use a fictitious power state to prevent any |
|
2265 new CDmTest5(KDmIdRoot, KDmIdRoot, EPwActive+10, EStartupCriticalDynamic), |
|
2266 new CDmTest5(KDmIdUiApps, KDmIdTestAB, EPwActive+10, EStartupCriticalDynamic), |
|
2267 |
|
2268 // negative tests |
|
2269 new CDmTest6(), |
|
2270 |
|
2271 |
|
2272 // observer tests |
|
2273 new CDmTest7(KDmIdTestA), |
|
2274 new CDmTest7(KDmIdRoot), |
|
2275 |
|
2276 }; |
|
2277 |
|
2278 for (unsigned int i = 0; i < sizeof(tests)/sizeof(*tests); ++i) |
|
2279 { |
|
2280 test(tests[i] != NULL); |
|
2281 tests[i]->Perform(); |
|
2282 tests[i]->Release(); |
|
2283 } |
|
2284 |
|
2285 } |
|
2286 |
|
2287 test.End(); |
2151 test.End(); |
2288 |
2152 |
2289 // Sanity check for open handles and for pending requests ... |
2153 // Sanity check for open handles and for pending requests ... |
2290 TInt end_thc, end_phc; |
2154 TInt end_thc, end_phc; |
2291 RThread().HandleCount(end_phc, end_thc); |
2155 RThread().HandleCount(end_phc, end_thc); |