|
1 // Copyright (c) 2010 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 // Contains the implementation of all the commands, which is used by the script file. |
|
15 // |
|
16 |
|
17 /** |
|
18 @file |
|
19 @internalTechnology |
|
20 */ |
|
21 |
|
22 #include "te_dnssuffixtestwrapper.h" |
|
23 #include "DNSSuffixHostResolver.h" |
|
24 |
|
25 |
|
26 #include <e32base.h> |
|
27 #include <in_sock.h> |
|
28 #include <es_sock.h> |
|
29 #include <commdbconnpref.h> |
|
30 #include <commdb.h> |
|
31 |
|
32 /* |
|
33 * TODO: 1. Try to test with end to end real scenario. Means resolving over real tunnel. |
|
34 * |
|
35 * |
|
36 */ |
|
37 #define KIPAddrLen 39 |
|
38 |
|
39 #define DISABLE_TUNDRIVER |
|
40 |
|
41 // Used for handle the multiple hosts in same test cases. @See TC006 |
|
42 #define KMaxHosts 8 |
|
43 |
|
44 // Commands |
|
45 _LIT(KInitDNSSuffixTesting, "InitDNSSuffixTesting"); |
|
46 _LIT(KEnumerateInterface, "EnumerateInterface"); |
|
47 _LIT(KSetAndGetSuffixList, "SetAndGetSuffixList"); |
|
48 _LIT(KDoResolve, "DoResolve"); |
|
49 _LIT(KDoResolveHostWithoutDomainWithSuffix, "DoResolveHostWithoutDomainWithSuffix"); |
|
50 _LIT(KDoResolveHostWithoutDomainWithoutSuffix, "DoResolveHostWithoutDomainWithoutSuffix"); |
|
51 |
|
52 _LIT(KDNSSuffixSupportTC005, "DNSSuffixSupportTC005"); |
|
53 _LIT(KDNSSuffixSupportTC006, "DNSSuffixSupportTC006"); |
|
54 _LIT(KDNSSuffixSupportTC007, "DNSSuffixSupportTC007"); |
|
55 _LIT(KDNSSuffixSupportTC008, "DNSSuffixSupportTC008"); |
|
56 _LIT(KDNSSuffixSupportTC009, "DNSSuffixSupportTC009"); |
|
57 _LIT(KDNSSuffixSupportTC010, "DNSSuffixSupportTC010"); |
|
58 _LIT(KDNSSuffixSupportTC011, "DNSSuffixSupportTC011"); |
|
59 |
|
60 |
|
61 //Test code |
|
62 _LIT(KCommand, "aCommand = %S"); |
|
63 _LIT(KSection, "aSection = %S"); |
|
64 _LIT(KAsyncErrorIndex, "aAsyncErrorIndex = %D"); |
|
65 |
|
66 _LIT(KKeyDNSSuffixTestSuffixList, "suffixlist"); |
|
67 _LIT(KKeyDNSSuffixTestSuffixList1, "suffixlist1"); |
|
68 _LIT(KKeyDNSSuffixTestSuffixList2, "suffixlist2"); |
|
69 _LIT(KKeyDNSSuffixTestSuffixList3, "suffixlist3"); |
|
70 |
|
71 _LIT(KKeyDNSSuffixTestHostname, "hostname"); |
|
72 |
|
73 _LIT(KSectionDNSSuffixTest001, "dnssuffix_test001"); |
|
74 _LIT(KSectionDNSSuffixTest002, "dnssuffix_test002"); |
|
75 _LIT(KSectionDNSSuffixTest003, "dnssuffix_test003"); |
|
76 _LIT(KSectionDNSSuffixTest004, "dnssuffix_test004"); |
|
77 _LIT(KSectionDNSSuffixTest005, "dnssuffix_test005"); |
|
78 |
|
79 _LIT(KSectionDNSSuffixTest006, "dnssuffix_test006"); |
|
80 _LIT(KKeyDNSSuffixTest006NoOfHostname, "noofhosts"); |
|
81 _LIT(KKeyDNSSuffixTest006Hostname, "hostname%D"); |
|
82 |
|
83 _LIT(KSectionDNSSuffixTest007, "dnssuffix_test007"); |
|
84 _LIT(KKeyDNSSuffixTest007ValidHostname, "validhostname"); |
|
85 _LIT(KKeyDNSSuffixTest007InValidHostname, "invalidhostname"); |
|
86 |
|
87 _LIT(KSectionDNSSuffixTest008, "dnssuffix_test008"); |
|
88 _LIT(KKeyDNSSuffixTestHostname1, "hostname1"); |
|
89 _LIT(KKeyDNSSuffixTestHostname2, "hostname2"); |
|
90 |
|
91 _LIT(KSectionDNSSuffixTest009, "dnssuffix_test009"); |
|
92 |
|
93 _LIT(KSectionDNSSuffixTest010, "dnssuffix_test010"); |
|
94 |
|
95 _LIT(KSectionDNSSuffixTest011, "dnssuffix_test011"); |
|
96 |
|
97 _LIT(KSectionDNSSuffixFirstInterface, "dnssuffix_first_interface"); |
|
98 _LIT(KSectionDNSSuffixSecondInterface, "dnssuffix_second_interface"); |
|
99 _LIT(KKeyDNSSuffixIAPId,"iapid"); |
|
100 _LIT(KKeyInterfaceName, "interfacename"); |
|
101 |
|
102 /* |
|
103 * @author: Santosh K Patil |
|
104 * TODO: Needs to verify the interfaces used to resolve the hosts in each test case. |
|
105 * It is required to verify wheather test executed as desired or not. |
|
106 * In other words to confirm the new solution is working as expected we need to get |
|
107 * and verify the inteface name used to resolve the host. |
|
108 * @See Test spec for more details. |
|
109 * |
|
110 * TODO: Check all config sections |
|
111 */ |
|
112 |
|
113 |
|
114 /** |
|
115 Constructor. |
|
116 |
|
117 @internalTechnology |
|
118 */ |
|
119 CDNSSuffixTestWrapper::CDNSSuffixTestWrapper() |
|
120 { |
|
121 } |
|
122 |
|
123 /** |
|
124 Destructor. |
|
125 |
|
126 @internalTechnology |
|
127 */ |
|
128 CDNSSuffixTestWrapper::~CDNSSuffixTestWrapper() |
|
129 { |
|
130 |
|
131 } |
|
132 |
|
133 /** |
|
134 Function to instantiate TestWrapper. |
|
135 @return Returns constructed TestWrapper instance pointer |
|
136 @internalTechnology |
|
137 */ |
|
138 CDNSSuffixTestWrapper* CDNSSuffixTestWrapper::NewL() |
|
139 { |
|
140 CDNSSuffixTestWrapper* ret = new (ELeave) CDNSSuffixTestWrapper(); |
|
141 CleanupStack::PushL(ret); |
|
142 ret->ConstructL(); |
|
143 CleanupStack::Pop(ret); |
|
144 return ret; |
|
145 } |
|
146 |
|
147 /** |
|
148 Second level constructor, constructs TestWrapper instance. |
|
149 @internalTechnology |
|
150 */ |
|
151 void CDNSSuffixTestWrapper::ConstructL() |
|
152 { |
|
153 } |
|
154 |
|
155 |
|
156 /* |
|
157 * @HandleCallBackL Called by the CDNSSuffixHostResolver::RunL |
|
158 * |
|
159 */ |
|
160 void CDNSSuffixTestWrapper::HandleCallBackL(TInt aError) |
|
161 { |
|
162 INFO_PRINTF1(_L("HandleCallBackL - Entry")); |
|
163 INFO_PRINTF2(_L("Error code: %D"),aError); |
|
164 |
|
165 if (KErrNone != aError) |
|
166 SetError(KErrNone); |
|
167 else |
|
168 SetError(KErrGeneral); |
|
169 |
|
170 if (iWait.IsStarted()) |
|
171 { |
|
172 INFO_PRINTF1(_L("Stoping waiter")); |
|
173 iWait.AsyncStop(); |
|
174 } |
|
175 INFO_PRINTF1(_L("HandleCallBackL - Exit")); |
|
176 } |
|
177 |
|
178 /** |
|
179 Function to map the input command to respective function. |
|
180 |
|
181 @return - True Upon successfull command to Function name mapping otherwise False |
|
182 @param aCommand Function name has to be called |
|
183 @param aSection INI file paramenter section name |
|
184 @param aAsyncErrorIndex Error index |
|
185 @see Refer the script file COMMAND section. |
|
186 |
|
187 @internalTechnology |
|
188 */ |
|
189 TBool CDNSSuffixTestWrapper::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex) |
|
190 { |
|
191 TBool ret = ETrue; |
|
192 |
|
193 // Print out the parameters for debugging |
|
194 INFO_PRINTF2( KCommand, &aCommand ); |
|
195 INFO_PRINTF2( KSection, &aSection ); |
|
196 INFO_PRINTF2( KAsyncErrorIndex, aAsyncErrorIndex ); |
|
197 |
|
198 if(KInitDNSSuffixTesting() == aCommand) |
|
199 { |
|
200 DoInitTestingL(); |
|
201 } |
|
202 else if(KEnumerateInterface() == aCommand) |
|
203 { |
|
204 DoEnumerateInterfacesL(); |
|
205 } |
|
206 else if (KSetAndGetSuffixList() == aCommand) |
|
207 { |
|
208 DoSetAndGetSuffixListL(); |
|
209 } |
|
210 else if( KDoResolve() == aCommand) |
|
211 { |
|
212 DoResolveL(); |
|
213 } |
|
214 else if( KDoResolveHostWithoutDomainWithSuffix() == aCommand) |
|
215 { |
|
216 DoResolveHostWithoutDomainWithSuffixListSetL(); |
|
217 } |
|
218 else if( KDoResolveHostWithoutDomainWithoutSuffix() == aCommand) |
|
219 { |
|
220 DoResolveHostWithoutDomainWithoutSuffixListL(); |
|
221 } |
|
222 else if( KDNSSuffixSupportTC005() == aCommand) |
|
223 { |
|
224 DNSSuffixSupportTC005L(); |
|
225 } |
|
226 else if( KDNSSuffixSupportTC006() == aCommand) |
|
227 { |
|
228 DNSSuffixSupportTC006L(); |
|
229 } |
|
230 else if( KDNSSuffixSupportTC007() == aCommand) |
|
231 { |
|
232 DNSSuffixSupportTC007L(); |
|
233 } |
|
234 else if( KDNSSuffixSupportTC008() == aCommand) |
|
235 { |
|
236 DNSSuffixSupportTC008L(); |
|
237 } |
|
238 else if( KDNSSuffixSupportTC009() == aCommand) |
|
239 { |
|
240 DNSSuffixSupportTC009L(); |
|
241 } |
|
242 else if( KDNSSuffixSupportTC010() == aCommand) |
|
243 { |
|
244 DNSSuffixSupportTC010L(); |
|
245 } |
|
246 else if( KDNSSuffixSupportTC011() == aCommand) |
|
247 { |
|
248 DNSSuffixSupportTC011L(); |
|
249 } |
|
250 else |
|
251 { |
|
252 ret = EFalse; |
|
253 User::LeaveIfError(KErrNone); // just to suppress LeaveScan warning |
|
254 } |
|
255 |
|
256 return ret; |
|
257 } |
|
258 |
|
259 |
|
260 TInt CDNSSuffixTestWrapper::StartConnections(RSocketServ& aSockServ, RConnection& aConn1, RConnection& aConn2) |
|
261 { |
|
262 INFO_PRINTF1(_L("StartConnections - Entry")); |
|
263 |
|
264 TUint iapId = GetFirstIapId(); |
|
265 |
|
266 if ((TInt)iapId == KErrNotFound) |
|
267 return KErrNotFound; |
|
268 |
|
269 TInt err = StartConnection(aSockServ,aConn1,iapId); |
|
270 |
|
271 if (err != KErrNone) |
|
272 { |
|
273 ERR_PRINTF1(_L("Failed to start first connection")); |
|
274 SetError(err); |
|
275 return err; |
|
276 } |
|
277 |
|
278 INFO_PRINTF2(_L("First connection started successfully - IAP: %D"),iapId); |
|
279 |
|
280 #ifndef DISABLE_TUNDRIVER |
|
281 iapId = GetSecondIapId(); |
|
282 |
|
283 if ((TInt)iapId == KErrNotFound) |
|
284 { |
|
285 aConn1.Close(); |
|
286 return KErrNotFound; |
|
287 } |
|
288 |
|
289 err = StartConnection(iSocketServ,aConn2,iapId); |
|
290 |
|
291 if (err != KErrNone) |
|
292 { |
|
293 ERR_PRINTF1(_L("Failed to start second connection")); |
|
294 aConn1.Close(); |
|
295 return err; |
|
296 } |
|
297 |
|
298 INFO_PRINTF2(_L("Second connection started successfully - IAP: %D"),iapId); |
|
299 #endif |
|
300 |
|
301 INFO_PRINTF1(_L("StartConnections - Exit")); |
|
302 return KErrNone; |
|
303 } |
|
304 |
|
305 |
|
306 |
|
307 TInt CDNSSuffixTestWrapper::StartConnection(RSocketServ& aSockServ, RConnection& aConn, TUint aIapId) |
|
308 { |
|
309 INFO_PRINTF1(_L("StartConnection - Entry")); |
|
310 |
|
311 TInt err(KErrNone); |
|
312 |
|
313 TCommDbConnPref connPref; |
|
314 INFO_PRINTF1(_L("Getting conn preference")); |
|
315 |
|
316 TRAP(err, GetConnPrefL(aIapId,connPref)); |
|
317 |
|
318 if (KErrNone != err) |
|
319 { |
|
320 ERR_PRINTF1(_L("Failed to read conn preference")); |
|
321 return err; |
|
322 } |
|
323 |
|
324 INFO_PRINTF1(_L("Got conn preference")); |
|
325 |
|
326 if((err = aConn.Open(aSockServ, KAfInet)) != KErrNone ) |
|
327 { |
|
328 ERR_PRINTF2(_L("Failed to open Connection: %D"),err); |
|
329 return err; |
|
330 } |
|
331 |
|
332 INFO_PRINTF1(_L("Connection opened")); |
|
333 |
|
334 INFO_PRINTF1(_L("Starting Connection")); |
|
335 err = aConn.Start(connPref); |
|
336 |
|
337 if (KErrNone != err) |
|
338 { |
|
339 ERR_PRINTF2(_L("Failed starting Connection: %D"),err); |
|
340 aConn.Close(); |
|
341 return err; |
|
342 } |
|
343 |
|
344 INFO_PRINTF1(_L("Connection Started")); |
|
345 |
|
346 INFO_PRINTF1(_L("StartConnection - Exit")); |
|
347 |
|
348 return KErrNone; |
|
349 } |
|
350 |
|
351 |
|
352 |
|
353 void CDNSSuffixTestWrapper::GetConnPrefL(TUint aIapId,TCommDbConnPref& aPref) |
|
354 { |
|
355 INFO_PRINTF1(_L("GetConnPrefL - Entry")); |
|
356 |
|
357 INFO_PRINTF1(_L("Instantiating CCommsDatabase")); |
|
358 CCommsDatabase* commsDb = CCommsDatabase::NewL(); |
|
359 CleanupStack::PushL(commsDb); |
|
360 |
|
361 INFO_PRINTF1(_L("Calling OpenConnectionPrefTableLC")); |
|
362 CCommsDbConnectionPrefTableView* commsDbView = commsDb->OpenConnectionPrefTableLC(); |
|
363 |
|
364 INFO_PRINTF1(_L("Going to first record")); |
|
365 User::LeaveIfError(commsDbView->GotoFirstRecord()); |
|
366 |
|
367 TInt isFound(KErrNotFound); |
|
368 do |
|
369 { |
|
370 CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref pref; |
|
371 INFO_PRINTF1(_L("Reading conn preferecne.")); |
|
372 commsDbView->ReadConnectionPreferenceL(pref); |
|
373 |
|
374 if (pref.iBearer.iIapId == aIapId) |
|
375 { |
|
376 INFO_PRINTF1(_L("Match found")); |
|
377 aPref.SetIapId(aIapId); |
|
378 aPref.SetBearerSet(pref.iBearer.iBearerSet); |
|
379 aPref.SetDirection(pref.iDirection); |
|
380 aPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); |
|
381 isFound = KErrNone; |
|
382 break; |
|
383 } |
|
384 } while(!commsDbView->GotoNextRecord()); |
|
385 |
|
386 INFO_PRINTF1(_L("Cleanup resources")); |
|
387 CleanupStack::PopAndDestroy(2, commsDb); // commsDbView, commsDb |
|
388 |
|
389 User::LeaveIfError(isFound); |
|
390 |
|
391 INFO_PRINTF1(_L("GetConnPrefL - Exit")); |
|
392 } |
|
393 |
|
394 |
|
395 |
|
396 TInt32 CDNSSuffixTestWrapper::GetFirstIapId() |
|
397 { |
|
398 INFO_PRINTF1(_L("GetFirstIapId - Entry")); |
|
399 |
|
400 TInt iapId(KErrNotFound); |
|
401 |
|
402 if (!GetIntFromConfig(KSectionDNSSuffixFirstInterface,KKeyDNSSuffixIAPId,iapId)) |
|
403 { |
|
404 ERR_PRINTF1(_L("Failed to read the First IAP id")); |
|
405 } |
|
406 else |
|
407 { |
|
408 INFO_PRINTF2(_L("Got the IAP: %D"),iapId); |
|
409 } |
|
410 |
|
411 INFO_PRINTF1(_L("GetFirstIapId - Exit")); |
|
412 return iapId; |
|
413 } |
|
414 |
|
415 |
|
416 TInt32 CDNSSuffixTestWrapper::GetSecondIapId() |
|
417 { |
|
418 INFO_PRINTF1(_L("GetSecondIapId - Entry")); |
|
419 |
|
420 TInt iapId(KErrNotFound); |
|
421 |
|
422 if (!GetIntFromConfig(KSectionDNSSuffixSecondInterface,KKeyDNSSuffixIAPId,iapId)) |
|
423 { |
|
424 ERR_PRINTF1(_L("Failed to read second IAP id")); |
|
425 } |
|
426 else |
|
427 { |
|
428 INFO_PRINTF2(_L("Got the IAP: %D"),iapId); |
|
429 } |
|
430 |
|
431 INFO_PRINTF1(_L("GetSecondIapId - Exit")); |
|
432 return iapId; |
|
433 } |
|
434 |
|
435 |
|
436 TInt CDNSSuffixTestWrapper::GetFirstInterfaceNameL(TDes& aIfaceName) |
|
437 { |
|
438 INFO_PRINTF1(_L("GetFirstInterfaceNameL - Entry")); |
|
439 TInt err(KErrNone); |
|
440 |
|
441 TPtrC interfaceName; |
|
442 if (!GetStringFromConfig(KSectionDNSSuffixFirstInterface,KKeyInterfaceName,interfaceName)) |
|
443 { |
|
444 ERR_PRINTF1(_L("Failed to read the interface name from config")); |
|
445 err = KErrNotFound; |
|
446 SetError(err); |
|
447 return err; |
|
448 } |
|
449 |
|
450 err = GetInterfaceNameL(interfaceName,aIfaceName); |
|
451 |
|
452 INFO_PRINTF1(_L("GetFirstInterfaceNameL - Exit")); |
|
453 return err; |
|
454 } |
|
455 |
|
456 |
|
457 TInt CDNSSuffixTestWrapper::GetSecondInterfaceNameL(TDes& aIfaceName) |
|
458 { |
|
459 INFO_PRINTF1(_L("GetSecondInterfaceNameL - Entry")); |
|
460 TInt err(KErrNone); |
|
461 |
|
462 TPtrC interfaceName; |
|
463 if (!GetStringFromConfig(KSectionDNSSuffixSecondInterface,KKeyInterfaceName,interfaceName)) |
|
464 { |
|
465 ERR_PRINTF1(_L("Failed to read the interface name from config")); |
|
466 err = KErrNotFound; |
|
467 SetError(err); |
|
468 return err; |
|
469 } |
|
470 |
|
471 err = GetInterfaceNameL(interfaceName,aIfaceName); |
|
472 |
|
473 INFO_PRINTF1(_L("GetSecondInterfaceNameL - Exit")); |
|
474 return err; |
|
475 } |
|
476 |
|
477 |
|
478 TInt CDNSSuffixTestWrapper::GetInterfaceNameL(const TDesC& aCriteria,TDes& aIfaceName) |
|
479 { |
|
480 INFO_PRINTF1(_L("GetInterfaceNameL - Entry")); |
|
481 |
|
482 TInt err = KErrNone; |
|
483 CDesCArray* interfaceNameArray = new(ELeave) CDesCArrayFlat(4); |
|
484 CleanupStack::PushL(interfaceNameArray); |
|
485 TRAP(err,GetAvaiableInterfacesL(interfaceNameArray)); |
|
486 |
|
487 if (KErrNone != err) |
|
488 { |
|
489 ERR_PRINTF2(_L("Failed to enumeate the interfaces with error: %D"),err); |
|
490 return err; |
|
491 } |
|
492 |
|
493 INFO_PRINTF2(_L("No of interfaces: %D"),interfaceNameArray->Count()); |
|
494 |
|
495 if (interfaceNameArray->Count() <= 0) |
|
496 { |
|
497 INFO_PRINTF1(_L("No interfaces available:")); |
|
498 CleanupStack::PopAndDestroy(interfaceNameArray); |
|
499 err = KErrNotFound; |
|
500 SetError(err); |
|
501 return err; |
|
502 } |
|
503 |
|
504 TBool isInterfaceFound(EFalse); |
|
505 TInt index = -1; |
|
506 |
|
507 for (TInt a=0; a<interfaceNameArray->Count();a++) |
|
508 { |
|
509 HBufC* interfaceNameBuf = (*interfaceNameArray)[a].AllocL(); |
|
510 |
|
511 TInt pos = interfaceNameBuf->FindF(aCriteria); |
|
512 |
|
513 delete interfaceNameBuf; |
|
514 |
|
515 if ( KErrNotFound != pos) |
|
516 { |
|
517 isInterfaceFound = ETrue; |
|
518 index = a; |
|
519 break; |
|
520 } |
|
521 } |
|
522 |
|
523 if (!isInterfaceFound) |
|
524 { |
|
525 ERR_PRINTF1(_L("Interface not found")); |
|
526 CleanupStack::PopAndDestroy(interfaceNameArray); |
|
527 err = KErrNotFound; |
|
528 SetError(err); |
|
529 return err; |
|
530 } |
|
531 |
|
532 aIfaceName.Copy((*interfaceNameArray)[index]); |
|
533 |
|
534 CleanupStack::PopAndDestroy(interfaceNameArray); |
|
535 |
|
536 TPtr tempName((TUint16*)aIfaceName.Ptr(),aIfaceName.Length(),aIfaceName.Length()); |
|
537 INFO_PRINTF2(_L("Found Interface and name is: %S"),&tempName); |
|
538 |
|
539 INFO_PRINTF1(_L("GetInterfaceNameL - Exit")); |
|
540 return KErrNone; |
|
541 } |
|
542 |
|
543 /** |
|
544 * DoInitTestingL. Configures the initial connections. |
|
545 * Function to start the connection to configure the named server on one interface. |
|
546 */ |
|
547 void CDNSSuffixTestWrapper::DoInitTestingL() |
|
548 { |
|
549 INFO_PRINTF1(_L("********************************************")); |
|
550 INFO_PRINTF1(_L("DoInitTestingL")); |
|
551 INFO_PRINTF1(_L("********************************************")); |
|
552 |
|
553 /*@Note, We need to configure the named servers on vTunnel and ethernet interfaces. |
|
554 * So, Configuring them by starting connections on both interfaces. |
|
555 * |
|
556 */ |
|
557 TInt err = KErrNone; |
|
558 |
|
559 if((err = iSocketServ.Connect()) == KErrNone ) |
|
560 INFO_PRINTF1(_L("Socket Server Opened.")); |
|
561 else |
|
562 { |
|
563 ERR_PRINTF2(_L("Error Opening Socket Server: %d"), err); |
|
564 SetError(err); |
|
565 return; |
|
566 } |
|
567 |
|
568 ERR_PRINTF2(_L("Error Opening Socket Server: %d"), err); |
|
569 |
|
570 RConnection firstConn; |
|
571 RConnection vTunConn; // Usef for virtual Tunnel interface |
|
572 |
|
573 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
574 |
|
575 if (KErrNone != err) |
|
576 { |
|
577 ERR_PRINTF2(_L("Failed to start the Connections: %D"),err); |
|
578 CloseSocketSrv(); |
|
579 SetError(err); |
|
580 return; |
|
581 } |
|
582 INFO_PRINTF1(_L("Started the connections successfully")); |
|
583 |
|
584 INFO_PRINTF1(_L("Close the connections")); |
|
585 |
|
586 #ifndef DISABLE_TUNDRIVER |
|
587 if (vTunConn.SubSessionHandle()) |
|
588 vTunConn.Close(); |
|
589 #endif |
|
590 |
|
591 if (firstConn.SubSessionHandle()) |
|
592 firstConn.Close(); |
|
593 |
|
594 SetError(err); |
|
595 CloseSocketSrv(); |
|
596 } |
|
597 |
|
598 /** |
|
599 * @DoEnumerateInterfacesL. Enumerates the all available interfaces. |
|
600 */ |
|
601 void CDNSSuffixTestWrapper::DoEnumerateInterfacesL() |
|
602 { |
|
603 INFO_PRINTF1(_L("********************************************")); |
|
604 INFO_PRINTF1(_L("DoEnumerateInterfacesL")); |
|
605 INFO_PRINTF1(_L("********************************************")); |
|
606 |
|
607 CDesCArray* interfaceNameArray = new(ELeave) CDesCArrayFlat(4); |
|
608 CleanupStack::PushL(interfaceNameArray); |
|
609 TRAPD(err,GetAvaiableInterfacesL(interfaceNameArray)); |
|
610 |
|
611 if (KErrNone == err) |
|
612 { |
|
613 // Print the interface names |
|
614 INFO_PRINTF2(_L("Found %D interfaces"),interfaceNameArray->Count()); |
|
615 |
|
616 for(TInt a=0;a<interfaceNameArray->Count();a++) |
|
617 { |
|
618 TPtrC interfaceName = (*interfaceNameArray)[a]; |
|
619 INFO_PRINTF2(_L("Interface: %S"),&interfaceName); |
|
620 } |
|
621 } |
|
622 else |
|
623 { |
|
624 ERR_PRINTF2(_L("Failed to enumeate the interfaces with error: %D"),err); |
|
625 } |
|
626 |
|
627 CleanupStack::PopAndDestroy(interfaceNameArray); |
|
628 |
|
629 SetError(err); |
|
630 } |
|
631 |
|
632 /* |
|
633 * GetAvaiableInterfacesL. Function to get the names of all available names of all interfaces. |
|
634 * @arg aInterfaceNamesArray (out param), Array of interface names owned by caller. |
|
635 */ |
|
636 void CDNSSuffixTestWrapper::GetAvaiableInterfacesL(MDesCArray* aInterfaceNamesArray) |
|
637 { |
|
638 INFO_PRINTF1(_L("GetAvaiableInterfacesL - Entry")); |
|
639 |
|
640 CDesCArray* interfacesArray = static_cast<CDesCArray*>(aInterfaceNamesArray); |
|
641 interfacesArray->Reset(); |
|
642 |
|
643 TInt err = KErrNone; |
|
644 RSocketServ socketSrv; |
|
645 |
|
646 if ( (err = socketSrv.Connect()) != KErrNone) |
|
647 { |
|
648 ERR_PRINTF2(_L("Failed Connecting to Socet server error: %D"),err); |
|
649 SetError(err); |
|
650 return; |
|
651 } |
|
652 INFO_PRINTF1( _L("Connected to Socket server")); |
|
653 |
|
654 INFO_PRINTF1(_L("Opening socket...")); |
|
655 |
|
656 RSocket socket; |
|
657 err = socket.Open(socketSrv,KAfInet, KSockDatagram, KProtocolInetUdp); |
|
658 |
|
659 if (KErrNone != err) |
|
660 { |
|
661 INFO_PRINTF2(_L("Failed Opening socket with error: %D"),err); |
|
662 SetError(err); |
|
663 socketSrv.Close(); |
|
664 return; |
|
665 } |
|
666 |
|
667 INFO_PRINTF1(_L("Socket opened")); |
|
668 |
|
669 err = socket.SetOpt(KSoInetEnumInterfaces,KSolInetIfCtrl); |
|
670 |
|
671 if (KErrNone != err) |
|
672 { |
|
673 INFO_PRINTF2(_L("Failed enumerating interfaces with error: %D"),err); |
|
674 SetError(err); |
|
675 socket.Close(); |
|
676 socketSrv.Close(); |
|
677 return; |
|
678 } |
|
679 |
|
680 TSoInetInterfaceInfo info; |
|
681 TPckg<TSoInetInterfaceInfo> opt(info); |
|
682 |
|
683 while(socket.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, opt) == KErrNone) |
|
684 { |
|
685 // INFO_PRINTF2(_L("Interface Name %S"),&opt().iName); |
|
686 interfacesArray->AppendL(opt().iName); |
|
687 } |
|
688 |
|
689 INFO_PRINTF1(_L("Finished")); |
|
690 |
|
691 INFO_PRINTF1(_L("Closing connections")); |
|
692 socket.Close(); |
|
693 socketSrv.Close(); |
|
694 SetError(KErrNone); |
|
695 INFO_PRINTF1(_L("GetAvaiableInterfacesL - Exit")); |
|
696 } |
|
697 |
|
698 |
|
699 /** |
|
700 Function test the setting of suffix list and getting suffix list on interface. |
|
701 */ |
|
702 void CDNSSuffixTestWrapper::DoSetAndGetSuffixListL() |
|
703 { |
|
704 INFO_PRINTF1(_L("************************************************************")); |
|
705 INFO_PRINTF1(_L("DoSetAndGetSuffixListL - DNS_Suffix_Support_TC001")); |
|
706 INFO_PRINTF1(_L("************************************************************")); |
|
707 |
|
708 TInt err(KErrNone); |
|
709 |
|
710 TName interfaceName; |
|
711 |
|
712 TRAP(err, err = GetFirstInterfaceNameL(interfaceName)); |
|
713 |
|
714 if (err != KErrNone ) |
|
715 { |
|
716 ERR_PRINTF2(_L("Failed to get the interface error: %D"),err); |
|
717 SetError(err); |
|
718 return; |
|
719 } |
|
720 |
|
721 TPtrC suffixList; |
|
722 iSuffixList.Reset(); |
|
723 |
|
724 if (!GetStringFromConfig(KSectionDNSSuffixTest001,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
725 { |
|
726 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
727 SetError(KErrNotFound); |
|
728 return; |
|
729 } |
|
730 else |
|
731 { |
|
732 INFO_PRINTF2(_L("Suffix list: %S"),&suffixList); |
|
733 FillSuffixList(iSuffixList,suffixList); |
|
734 } |
|
735 |
|
736 err = iSocketServ.Connect(); |
|
737 |
|
738 if(KErrNone != err) |
|
739 { |
|
740 ERR_PRINTF1(_L("Failed to connect socket Server")); |
|
741 SetError(err); |
|
742 return; |
|
743 } |
|
744 |
|
745 INFO_PRINTF1(_L("Connected to socket Server")); |
|
746 |
|
747 TUint iapId = GetFirstIapId(); |
|
748 |
|
749 if (KErrNotFound == (TInt)iapId) |
|
750 { |
|
751 ERR_PRINTF2(_L("Failed to get the iap id: %D"),err); |
|
752 SetError(err); |
|
753 CloseSocketSrv(); |
|
754 return; |
|
755 } |
|
756 |
|
757 RConnection firstConn; |
|
758 err = StartConnection(iSocketServ,firstConn,iapId); |
|
759 |
|
760 if (KErrNone != err) |
|
761 { |
|
762 ERR_PRINTF2(_L("Failed to start the Connections: %D"),err); |
|
763 CloseSocketSrv(); |
|
764 SetError(err); |
|
765 return; |
|
766 } |
|
767 |
|
768 INFO_PRINTF1(_L("Started the connections successfully")); |
|
769 |
|
770 |
|
771 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,interfaceName,iSuffixList); |
|
772 |
|
773 if (KErrNone != err) |
|
774 { |
|
775 ERR_PRINTF2(_L("Failed Setting the suffix list with errror : %D"),err); |
|
776 SetError(err); |
|
777 firstConn.Close(); |
|
778 CloseSocketSrv(); |
|
779 return; |
|
780 } |
|
781 |
|
782 INFO_PRINTF1(_L("Getting the suffix list on interface:")); |
|
783 |
|
784 iSuffixList2.Reset(); |
|
785 |
|
786 err = GetDNSSuffixList(iSocketServ,interfaceName,iSuffixList2); |
|
787 |
|
788 if (KErrNone != err) |
|
789 { |
|
790 ERR_PRINTF2(_L("Failed to get the suffix list with errror : %D"),err); |
|
791 } |
|
792 |
|
793 |
|
794 if (err == KErrNone) |
|
795 { |
|
796 if ( (err = IsSuffixListEqual(iSuffixList,iSuffixList2)) == KErrNone) |
|
797 { |
|
798 INFO_PRINTF1(_L("Suffix list are same and Test is successfull")); |
|
799 } |
|
800 else |
|
801 { |
|
802 ERR_PRINTF1(_L("Suffix list are not same and Test failed")); |
|
803 } |
|
804 } |
|
805 |
|
806 SetError(err); |
|
807 |
|
808 firstConn.Close(); |
|
809 CloseSocketSrv(); |
|
810 |
|
811 INFO_PRINTF1(_L("Set and Get Suffix list Test - Finished")); |
|
812 } |
|
813 |
|
814 |
|
815 |
|
816 TInt CDNSSuffixTestWrapper::SetDNSSuffixListOnInterface(RSocketServ& aServ,RConnection& /*aConn*/,const TDesC& aInterfaceName,RInetSuffixList& aData) |
|
817 { |
|
818 INFO_PRINTF1(_L("SetDNSSuffixListOnInterfaceL - Entry")); |
|
819 |
|
820 INFO_PRINTF1(_L("Opening socket...")); |
|
821 |
|
822 RSocket socket; |
|
823 TInt err = socket.Open(aServ,KAfInet, KSockDatagram, KProtocolInetUdp); |
|
824 |
|
825 if (KErrNone != err) |
|
826 { |
|
827 INFO_PRINTF2(_L("Failed Opening socket with error: %D"),err); |
|
828 SetError(err); |
|
829 return err; |
|
830 } |
|
831 |
|
832 INFO_PRINTF1(_L("Socket opened")); |
|
833 |
|
834 err = socket.SetOpt(KSoInetEnumInterfaces,KSolInetIfCtrl); |
|
835 |
|
836 if (KErrNone != err) |
|
837 { |
|
838 INFO_PRINTF2(_L("Failed enumerating interfaces with error: %D"),err); |
|
839 SetError(err); |
|
840 socket.Close(); |
|
841 return err; |
|
842 } |
|
843 |
|
844 TSoInetInterfaceInfo getOpt; |
|
845 TPckg<TSoInetInterfaceInfo> opt_out(getOpt); |
|
846 |
|
847 TBool isSuffixListSet(EFalse); |
|
848 |
|
849 while(socket.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, opt_out)== KErrNone) |
|
850 { |
|
851 |
|
852 INFO_PRINTF2(_L("Interface Name: %S"),&opt_out().iName); |
|
853 INFO_PRINTF2(_L("Name Server: %D"),!opt_out().iNameSer1.IsUnspecified()); |
|
854 |
|
855 TBuf<KIPAddrLen> ipBuf; |
|
856 opt_out().iAddress.Output(ipBuf); |
|
857 INFO_PRINTF2(_L("IP Address: %S"),&ipBuf); |
|
858 |
|
859 TBuf<KIPAddrLen> nameserBuf; |
|
860 opt_out().iNameSer1.Output(nameserBuf); |
|
861 INFO_PRINTF2(_L("Name Server IP: %S"),&nameserBuf); |
|
862 |
|
863 if( (opt_out().iName.Length()>0) /*&& !(opt_out().iNameSer1.IsUnspecified())*/ && (aInterfaceName.CompareF(opt_out().iName)==0) ) |
|
864 { |
|
865 INFO_PRINTF2(_L("Setting suffix list on Interface: %S"),&opt_out().iName); |
|
866 INFO_PRINTF2(_L("MTU on the interface is : %d"), opt_out().iMtu); |
|
867 |
|
868 TSoInetInterfaceInfoExtnDnsSuffix setOpt; |
|
869 (TSoInetInterfaceInfo &)setOpt = opt_out(); |
|
870 TPckg<TSoInetInterfaceInfoExtnDnsSuffix> opt_in(setOpt); |
|
871 /*opt_in().iName = opt_out().iName; |
|
872 opt_in().iAddress = opt_out().iAddress; |
|
873 opt_in().iNetMask = opt_out().iNetMask;*/ |
|
874 opt_in().iDoId = ETrue; |
|
875 opt_in().iDelete = EFalse; |
|
876 opt_in().iDomainSuffix.DeleteAll(); |
|
877 |
|
878 err = socket.SetOpt(KSoInetConfigInterface,KSolInetIfCtrl,opt_in); |
|
879 |
|
880 if (err != KErrNone) |
|
881 { |
|
882 ERR_PRINTF2(_L("Failed to reset suffix list on the interface: %D"),err); |
|
883 break; |
|
884 } |
|
885 else |
|
886 INFO_PRINTF1(_L("Interface domain suffix list reset successful")); |
|
887 |
|
888 if (aData.Count() == 0) // We plan to set empty record, so only reset is sufficient |
|
889 isSuffixListSet = ETrue; |
|
890 |
|
891 for(TInt a=0;a<aData.Count();a++) |
|
892 { |
|
893 opt_in().iDomainSuffix.Copy(aData[a]); |
|
894 err = socket.SetOpt(KSoInetConfigInterface,KSolInetIfCtrl,opt_in); |
|
895 if (err != KErrNone) |
|
896 { |
|
897 ERR_PRINTF2(_L("Failed to set suffix list: %D"),err); |
|
898 break; |
|
899 } |
|
900 else |
|
901 { |
|
902 INFO_PRINTF1(_L("Suffix list added successfully")); |
|
903 isSuffixListSet = ETrue; |
|
904 } |
|
905 } |
|
906 break; |
|
907 } |
|
908 } |
|
909 |
|
910 if (!isSuffixListSet) |
|
911 { |
|
912 err = KErrNotFound; |
|
913 ERR_PRINTF2(_L("Failed to set suffix list with error: %D"),err); |
|
914 } |
|
915 |
|
916 SetError(err); |
|
917 |
|
918 INFO_PRINTF1(_L("Closing socket")); |
|
919 |
|
920 socket.Close(); |
|
921 INFO_PRINTF1(_L("SetDNSSuffixListOnInterfaceL - Exit")); |
|
922 return err; |
|
923 } |
|
924 |
|
925 |
|
926 |
|
927 /** |
|
928 * GetDNSSuffixList. Gets the suffix list set on an interface. |
|
929 * |
|
930 * @arg aServ, session handle to a socket server. |
|
931 * @arg aData (in/out param) Data having the suffix list. Packed buffer of type TInetSuffixList |
|
932 * |
|
933 */ |
|
934 TInt CDNSSuffixTestWrapper::GetDNSSuffixList(RSocketServ& aServ,const TDesC& aInterfaceName,RInetSuffixList& aData) |
|
935 { |
|
936 INFO_PRINTF1(_L("GetDNSSuffixList - Entry")); |
|
937 |
|
938 INFO_PRINTF1(_L("Opening socket...")); |
|
939 RSocket socket; |
|
940 TInt err = socket.Open(aServ,KAfInet, KSockDatagram, KProtocolInetUdp); |
|
941 |
|
942 if (KErrNone != err) |
|
943 { |
|
944 INFO_PRINTF2(_L("Failed Opening socket with error: %D"),err); |
|
945 SetError(err); |
|
946 return err; |
|
947 } |
|
948 |
|
949 INFO_PRINTF1(_L("Socket opened")); |
|
950 |
|
951 err = socket.SetOpt(KSoInetEnumInterfaces,KSolInetIfCtrl); |
|
952 |
|
953 if (KErrNone != err) |
|
954 { |
|
955 INFO_PRINTF2(_L("Failed enumerating interfaces with error: %D"),err); |
|
956 SetError(err); |
|
957 socket.Close(); |
|
958 return err; |
|
959 } |
|
960 |
|
961 TSoInetInterfaceInfo getOpt; |
|
962 TPckg<TSoInetInterfaceInfo> opt(getOpt); |
|
963 |
|
964 while(socket.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, opt) == KErrNone) |
|
965 { |
|
966 if (aInterfaceName.CompareF(opt().iName) == KErrNone) |
|
967 { |
|
968 INFO_PRINTF2(_L("Reading suffix list from interface: %S"),&opt().iName); |
|
969 |
|
970 TBuf<KIPAddrLen> tempIp; |
|
971 opt().iAddress.Output(tempIp); |
|
972 INFO_PRINTF2(_L("IP: %S"),&tempIp); |
|
973 |
|
974 TInetSuffix domainSuffix; |
|
975 TPckg<TInetSuffix> dom_opt(domainSuffix); |
|
976 if (err = socket.SetOpt(KSoInetEnumDomainSuffix, KSolInetIfCtrl) != KErrNone) |
|
977 return err; |
|
978 while( socket.GetOpt(KSoInetNextDomainSuffix, KSolInetIfCtrl, dom_opt) == KErrNone) |
|
979 { |
|
980 aData.AppendL(dom_opt().iSuffixName); |
|
981 } |
|
982 break; |
|
983 } |
|
984 } |
|
985 |
|
986 INFO_PRINTF1(_L("Closing socket")); |
|
987 socket.Close(); |
|
988 |
|
989 INFO_PRINTF1(_L("GetDNSSuffixList - Exit")); |
|
990 return KErrNone; |
|
991 } |
|
992 |
|
993 |
|
994 |
|
995 /** |
|
996 * FillSuffixListL, Function to fill the suffix names in the TInetSuffixList object. |
|
997 * @arg aSuffixList, out param, on return has the suffix list set in it. |
|
998 * @arg aData, has the list of domain suffix names in the form of abc.xyz.com;efg.xyz.com |
|
999 */ |
|
1000 TInt CDNSSuffixTestWrapper::FillSuffixList(RInetSuffixList& aSuffixList,TDesC& aData) |
|
1001 { |
|
1002 INFO_PRINTF1(_L("FillSuffixList - Entry")); |
|
1003 |
|
1004 INFO_PRINTF2(_L("Processing Suffix list: %S"),&aData); |
|
1005 |
|
1006 TPtr data((TUint16*)aData.Ptr(),aData.Length(),aData.Length()); |
|
1007 data.TrimAll(); |
|
1008 |
|
1009 TInt pos = KErrNone; |
|
1010 while( (pos = data.Find(_L(";"))) != KErrNotFound) |
|
1011 { |
|
1012 TPtr suffixItem((TUint16*)data.Left(pos).Ptr(),pos,pos); |
|
1013 INFO_PRINTF3(_L("Processing %D suffix name: %S"),/*sListBuf()*/iSuffixList.Count()+1,&suffixItem); |
|
1014 |
|
1015 TSuffixName tmpBuf; |
|
1016 tmpBuf.Copy(suffixItem); |
|
1017 aSuffixList.AppendL(tmpBuf); |
|
1018 data.Copy(data.Mid(pos+1)); |
|
1019 } |
|
1020 data.TrimAll(); |
|
1021 INFO_PRINTF3(_L("Processing %D suffix name: %S"),/*sListBuf()*/iSuffixList.Count()+1,&data); |
|
1022 INFO_PRINTF2(_L("Data Len: %D"),data.Length()); |
|
1023 |
|
1024 TSuffixName tmpBuf; |
|
1025 tmpBuf.Copy(data); |
|
1026 aSuffixList.AppendL(tmpBuf); |
|
1027 |
|
1028 INFO_PRINTF1(_L("FillSuffixList - Exit")); |
|
1029 |
|
1030 return aSuffixList.Count() == 0 ? KErrNotFound : KErrNone; |
|
1031 } |
|
1032 |
|
1033 |
|
1034 void CDNSSuffixTestWrapper::CloseSocketSrv() |
|
1035 { |
|
1036 INFO_PRINTF1(_L("Closing socket server")); |
|
1037 |
|
1038 if (iSocketServ.Handle()) |
|
1039 { |
|
1040 iSocketServ.Close(); |
|
1041 INFO_PRINTF1(_L("Closed Sock Srv successfully")); |
|
1042 } |
|
1043 else |
|
1044 { |
|
1045 INFO_PRINTF1(_L("Inavild Sock Srv handle")); |
|
1046 } |
|
1047 } |
|
1048 |
|
1049 /* |
|
1050 * IsSuffixListEqual, Utility function, compares the two suffix list structures. |
|
1051 * @arg aSuffixList1 First structure holding the suffix list |
|
1052 * @arg aSuffixList2 second structure holding the suffix list |
|
1053 * |
|
1054 * @return KErrNone if both suffix list strucures same otherwise KErrArgument. |
|
1055 * |
|
1056 */ |
|
1057 TInt CDNSSuffixTestWrapper::IsSuffixListEqual(const RInetSuffixList& aSuffixList1, const RInetSuffixList& aSuffixList2) |
|
1058 { |
|
1059 INFO_PRINTF1(_L("IsSuffixListEqual - Entry")); |
|
1060 |
|
1061 if (aSuffixList1.Count() != aSuffixList2.Count()) |
|
1062 { |
|
1063 return KErrArgument; |
|
1064 } |
|
1065 |
|
1066 for (TInt a=0; a<aSuffixList1.Count();a++) |
|
1067 { |
|
1068 if (aSuffixList1[a].CompareF(aSuffixList2[a]) != KErrNone) |
|
1069 { |
|
1070 return KErrArgument; |
|
1071 } |
|
1072 } |
|
1073 INFO_PRINTF1(_L("IsSuffixListEqual - Exit")); |
|
1074 return KErrNone; |
|
1075 } |
|
1076 |
|
1077 |
|
1078 /* |
|
1079 * Prerequisite: Two interfaces required to be up and running (virtual Tunnel and ethernet). |
|
1080 * |
|
1081 * DoResolveL. Resolves the domain name |
|
1082 * |
|
1083 * |
|
1084 */ |
|
1085 void CDNSSuffixTestWrapper::DoResolveL() |
|
1086 { |
|
1087 INFO_PRINTF1(_L("********************************************")); |
|
1088 INFO_PRINTF1(_L("DoResolveL - DNS_Suffix_Support_TC002")); |
|
1089 INFO_PRINTF1(_L("********************************************")); |
|
1090 |
|
1091 TPtrC hostname; |
|
1092 |
|
1093 if (!GetStringFromConfig(KSectionDNSSuffixTest002,KKeyDNSSuffixTestHostname,hostname)) |
|
1094 { |
|
1095 ERR_PRINTF1(_L("Failed to read the host name value")); |
|
1096 SetError(KErrNotFound); |
|
1097 return; |
|
1098 } |
|
1099 else |
|
1100 { |
|
1101 INFO_PRINTF2(_L("Host name: %S"),&hostname); |
|
1102 } |
|
1103 |
|
1104 TInt err = KErrNone; |
|
1105 TName interfaceName; |
|
1106 |
|
1107 TRAP(err, err = GetFirstInterfaceNameL(interfaceName)); |
|
1108 |
|
1109 if (err != KErrNone ) |
|
1110 { |
|
1111 ERR_PRINTF2(_L("Failed to get the interface error: %D"),err); |
|
1112 SetError(err); |
|
1113 return; |
|
1114 } |
|
1115 |
|
1116 TPtrC suffixList; |
|
1117 iSuffixList.Reset(); |
|
1118 |
|
1119 if (!GetStringFromConfig(KSectionDNSSuffixTest002,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
1120 { |
|
1121 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
1122 SetError(KErrNotFound); |
|
1123 return; |
|
1124 } |
|
1125 else |
|
1126 { |
|
1127 INFO_PRINTF2(_L("Suffix list: %S"),&suffixList); |
|
1128 FillSuffixList(iSuffixList,suffixList); |
|
1129 } |
|
1130 |
|
1131 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1132 { |
|
1133 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1134 SetError(err); |
|
1135 return; |
|
1136 } |
|
1137 |
|
1138 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1139 |
|
1140 /* |
|
1141 * @Note: Start more than one interface. |
|
1142 * Here starting vitual tunnel nif interface as a default. @see ethernet ced.xml file in which I have made |
|
1143 * vTun as default in pref table. |
|
1144 */ |
|
1145 RConnection vTunConn; // used for vTunnel |
|
1146 RConnection firstConn; |
|
1147 |
|
1148 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1149 |
|
1150 if (err != KErrNone) |
|
1151 { |
|
1152 ERR_PRINTF1(_L("Failed to start connections")); |
|
1153 CloseSocketSrv(); |
|
1154 SetError(err); |
|
1155 return; |
|
1156 } |
|
1157 |
|
1158 INFO_PRINTF1(_L("Connections started successfully")); |
|
1159 |
|
1160 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,interfaceName,iSuffixList); |
|
1161 |
|
1162 if (KErrNone != err) |
|
1163 { |
|
1164 ERR_PRINTF2(_L("Failed Setting the suffix list with errror : %D"),err); |
|
1165 SetError(err); |
|
1166 firstConn.Close(); |
|
1167 CloseSocketSrv(); |
|
1168 return; |
|
1169 } |
|
1170 |
|
1171 // Open implicit resolver. |
|
1172 RHostResolver resolver; |
|
1173 |
|
1174 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp)) != KErrNone) |
|
1175 { |
|
1176 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
1177 firstConn.Close(); |
|
1178 vTunConn.Close(); |
|
1179 CloseSocketSrv(); |
|
1180 SetError(err); |
|
1181 return; |
|
1182 } |
|
1183 |
|
1184 INFO_PRINTF1(_L("Connected to Host resolver successfully")); |
|
1185 |
|
1186 TNameEntry nameEntry; |
|
1187 |
|
1188 INFO_PRINTF2(_L("Requesting to resolve hostname: %S"),&hostname); |
|
1189 |
|
1190 if ( (err = resolver.GetByName(hostname,nameEntry)) != KErrNone) |
|
1191 { |
|
1192 ERR_PRINTF3(_L("Failed host resolution for %S with error: %D"),&hostname,err); |
|
1193 } |
|
1194 else |
|
1195 { |
|
1196 TInetAddr& netAddress = TInetAddr::Cast(nameEntry().iAddr); |
|
1197 |
|
1198 if (netAddress.IsUnspecified()) |
|
1199 { |
|
1200 ERR_PRINTF1(_L("Invalid host address")); |
|
1201 err = KErrArgument; |
|
1202 } |
|
1203 else |
|
1204 { |
|
1205 TBuf<KIPAddrLen> address; |
|
1206 netAddress.Output(address); |
|
1207 INFO_PRINTF1(_L("Got valid IP address:")); |
|
1208 INFO_PRINTF2(_L("Host name: %S"),&nameEntry().iName); |
|
1209 INFO_PRINTF2(_L("Host address: %S"),&address); |
|
1210 } |
|
1211 } |
|
1212 |
|
1213 INFO_PRINTF1(_L("Closing host resolver")); |
|
1214 resolver.Close(); |
|
1215 |
|
1216 SetError(err); |
|
1217 |
|
1218 INFO_PRINTF1(_L("Closing connections and socket serv session")); |
|
1219 firstConn.Close(); |
|
1220 vTunConn.Close(); |
|
1221 CloseSocketSrv(); |
|
1222 } |
|
1223 |
|
1224 |
|
1225 |
|
1226 void CDNSSuffixTestWrapper::DoResolveHostWithoutDomainWithSuffixListSetL() |
|
1227 { |
|
1228 INFO_PRINTF1(_L("******************************************************")); |
|
1229 INFO_PRINTF1(_L("DoResolveHostWithoutDomainL with Domain suffix Set")); |
|
1230 INFO_PRINTF1(_L(" - DNS_Suffix_Support_TC003")); |
|
1231 INFO_PRINTF1(_L("******************************************************")); |
|
1232 |
|
1233 TPtrC hostname; |
|
1234 |
|
1235 if (!GetStringFromConfig(KSectionDNSSuffixTest003,KKeyDNSSuffixTestHostname,hostname)) |
|
1236 { |
|
1237 ERR_PRINTF1(_L("Failed to read the host name value")); |
|
1238 SetError(KErrNotFound); |
|
1239 return; |
|
1240 } |
|
1241 else |
|
1242 { |
|
1243 INFO_PRINTF2(_L("Host name: %S"),&hostname); |
|
1244 } |
|
1245 |
|
1246 TInt err = KErrNone; |
|
1247 |
|
1248 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1249 { |
|
1250 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1251 SetError(err); |
|
1252 return; |
|
1253 } |
|
1254 |
|
1255 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1256 |
|
1257 RConnection vTunConn; // used for vTunnel |
|
1258 RConnection firstConn; |
|
1259 |
|
1260 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1261 |
|
1262 if (err != KErrNone) |
|
1263 { |
|
1264 ERR_PRINTF1(_L("Failed to start connections")); |
|
1265 CloseSocketSrv(); |
|
1266 SetError(err); |
|
1267 return; |
|
1268 } |
|
1269 |
|
1270 INFO_PRINTF1(_L("Connections started successfully")); |
|
1271 |
|
1272 // Open explicit resolver with ethernet |
|
1273 RHostResolver resolver; |
|
1274 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp,firstConn)) != KErrNone) |
|
1275 { |
|
1276 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
1277 firstConn.Close(); |
|
1278 vTunConn.Close(); |
|
1279 CloseSocketSrv(); |
|
1280 SetError(err); |
|
1281 return; |
|
1282 } |
|
1283 |
|
1284 INFO_PRINTF1(_L("Connected to Host resolver successfully")); |
|
1285 |
|
1286 TNameEntry nameEntry; |
|
1287 |
|
1288 if ( (err = resolver.GetByName(hostname,nameEntry)) != KErrNone) |
|
1289 { |
|
1290 ERR_PRINTF3(_L("Failed host resolution for %S with error: %D"),&hostname,err); |
|
1291 INFO_PRINTF1(_L("Test success")); |
|
1292 SetError(err); |
|
1293 } |
|
1294 else |
|
1295 { |
|
1296 TInetAddr address = nameEntry().iAddr; |
|
1297 |
|
1298 if (address.IsUnspecified()) |
|
1299 { |
|
1300 ERR_PRINTF1(_L("Invalid host address")); |
|
1301 err = KErrArgument; |
|
1302 } |
|
1303 else |
|
1304 { |
|
1305 TBuf<KIPAddrLen> ipAddr; |
|
1306 address.Output(ipAddr); |
|
1307 INFO_PRINTF1(_L("Got valid IP address:")); |
|
1308 INFO_PRINTF2(_L("Host name: %S"),&nameEntry().iName); |
|
1309 INFO_PRINTF2(_L("Host address: %S"),&ipAddr); |
|
1310 } |
|
1311 SetError(err); |
|
1312 } |
|
1313 |
|
1314 INFO_PRINTF1(_L("Closing host resolver")); |
|
1315 resolver.Close(); |
|
1316 firstConn.Close(); |
|
1317 vTunConn.Close(); |
|
1318 CloseSocketSrv(); |
|
1319 } |
|
1320 |
|
1321 |
|
1322 void CDNSSuffixTestWrapper::DoResolveHostWithoutDomainWithoutSuffixListL() |
|
1323 { |
|
1324 INFO_PRINTF1(_L("******************************************************")); |
|
1325 INFO_PRINTF1(_L("DoResolveHostWithoutDomainL With no Suffix list")); |
|
1326 INFO_PRINTF1(_L("DNS_Suffix_Support_TC004")); |
|
1327 INFO_PRINTF1(_L("******************************************************")); |
|
1328 |
|
1329 TPtrC hostname; |
|
1330 |
|
1331 if (!GetStringFromConfig(KSectionDNSSuffixTest004,KKeyDNSSuffixTestHostname,hostname)) |
|
1332 { |
|
1333 ERR_PRINTF1(_L("Failed to read the host name value")); |
|
1334 SetError(KErrNotFound); |
|
1335 return; |
|
1336 } |
|
1337 else |
|
1338 { |
|
1339 INFO_PRINTF2(_L("Host name: %S"),&hostname); |
|
1340 } |
|
1341 |
|
1342 TInt err(KErrNone); |
|
1343 // Note: Remove the suffix list set on Ethernet interface. |
|
1344 |
|
1345 TName interfaceName; |
|
1346 err = GetFirstInterfaceNameL(interfaceName); |
|
1347 |
|
1348 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1349 { |
|
1350 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1351 SetError(err); |
|
1352 return; |
|
1353 } |
|
1354 |
|
1355 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1356 |
|
1357 RConnection vTunConn; // used for vTunnel |
|
1358 RConnection firstConn; |
|
1359 |
|
1360 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1361 |
|
1362 if (err != KErrNone) |
|
1363 { |
|
1364 ERR_PRINTF1(_L("Failed to start connections")); |
|
1365 CloseSocketSrv(); |
|
1366 SetError(err); |
|
1367 return; |
|
1368 } |
|
1369 |
|
1370 /* |
|
1371 * @Note: Remove the suffix list (which we set in TC001) set on the interface by just setting empty list on it. |
|
1372 */ |
|
1373 INFO_PRINTF1(_L("Setting empty suffix list on interface:")); |
|
1374 iSuffixList.Reset(); |
|
1375 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,interfaceName,iSuffixList); |
|
1376 |
|
1377 if (err != KErrNone) |
|
1378 { |
|
1379 ERR_PRINTF2(_L("Failed to remove the suffix list set on interface with error: %D"),err); |
|
1380 SetError(err); |
|
1381 firstConn.Close(); |
|
1382 vTunConn.Close(); |
|
1383 CloseSocketSrv(); |
|
1384 return; |
|
1385 } |
|
1386 |
|
1387 INFO_PRINTF1(_L("Removed suffix list from interface:")); |
|
1388 |
|
1389 // Open explicit resolver with ethernet |
|
1390 RHostResolver resolver; |
|
1391 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp,firstConn)) != KErrNone) |
|
1392 { |
|
1393 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
1394 firstConn.Close(); |
|
1395 vTunConn.Close(); |
|
1396 CloseSocketSrv(); |
|
1397 SetError(err); |
|
1398 return; |
|
1399 } |
|
1400 |
|
1401 INFO_PRINTF1(_L("Connected to Host resolver successfully")); |
|
1402 |
|
1403 TNameEntry nameEntry; |
|
1404 |
|
1405 if ( (err = resolver.GetByName(hostname,nameEntry)) != KErrNone) |
|
1406 { |
|
1407 ERR_PRINTF3(_L("Failed host resolution for %S with error: %D"),&hostname,err); |
|
1408 INFO_PRINTF1(_L("Test success")); |
|
1409 SetError(EPass); |
|
1410 } |
|
1411 else |
|
1412 { |
|
1413 TInetAddr address = nameEntry().iAddr; |
|
1414 |
|
1415 if (address.IsUnspecified()) |
|
1416 { |
|
1417 ERR_PRINTF1(_L("Invalid host address")); |
|
1418 err = KErrArgument; |
|
1419 } |
|
1420 else |
|
1421 { |
|
1422 TBuf<KIPAddrLen> ipAddr; |
|
1423 address.Output(ipAddr); |
|
1424 INFO_PRINTF1(_L("Got valid IP address:")); |
|
1425 INFO_PRINTF2(_L("Host name: %S"),&nameEntry().iName); |
|
1426 INFO_PRINTF2(_L("Host address: %S"),&ipAddr); |
|
1427 } |
|
1428 SetError(EFail); |
|
1429 } |
|
1430 |
|
1431 INFO_PRINTF1(_L("Closing host resolver")); |
|
1432 resolver.Close(); |
|
1433 firstConn.Close(); |
|
1434 vTunConn.Close(); |
|
1435 CloseSocketSrv(); |
|
1436 INFO_PRINTF1(_L("DoResolveHostWithoutDomainWithoutSuffixListL - Exit")); |
|
1437 } |
|
1438 |
|
1439 |
|
1440 |
|
1441 void CDNSSuffixTestWrapper::DNSSuffixSupportTC005L() |
|
1442 { |
|
1443 INFO_PRINTF1(_L("****************************************************")); |
|
1444 INFO_PRINTF1(_L("DNSSuffixSupportTC005L - DNS_Suffix_Support_TC005")); |
|
1445 INFO_PRINTF1(_L("****************************************************")); |
|
1446 |
|
1447 TPtrC hostname; |
|
1448 |
|
1449 if (!GetStringFromConfig(KSectionDNSSuffixTest005,KKeyDNSSuffixTestHostname,hostname)) |
|
1450 { |
|
1451 ERR_PRINTF1(_L("Failed to read the host name value")); |
|
1452 SetError(KErrNotFound); |
|
1453 return; |
|
1454 } |
|
1455 else |
|
1456 { |
|
1457 INFO_PRINTF2(_L("Host name: %S"),&hostname); |
|
1458 } |
|
1459 |
|
1460 TInt err(KErrNone); |
|
1461 |
|
1462 TFileName interfaceName; |
|
1463 |
|
1464 TRAP(err, err = GetFirstInterfaceNameL(interfaceName)); |
|
1465 |
|
1466 if (err != KErrNone ) |
|
1467 { |
|
1468 ERR_PRINTF2(_L("Failed to get the interface error: %D"),err); |
|
1469 SetError(err); |
|
1470 return; |
|
1471 } |
|
1472 |
|
1473 TPtrC suffixList; |
|
1474 iSuffixList.Reset(); |
|
1475 |
|
1476 if (!GetStringFromConfig(KSectionDNSSuffixTest005,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
1477 { |
|
1478 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
1479 SetError(KErrNotFound); |
|
1480 return; |
|
1481 } |
|
1482 else |
|
1483 { |
|
1484 INFO_PRINTF2(_L("Suffix list: %S"),&suffixList); |
|
1485 FillSuffixList(iSuffixList,suffixList); |
|
1486 } |
|
1487 |
|
1488 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1489 { |
|
1490 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1491 SetError(err); |
|
1492 return; |
|
1493 } |
|
1494 |
|
1495 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1496 |
|
1497 RConnection vTunConn; // used for vTunnel |
|
1498 RConnection firstConn; |
|
1499 |
|
1500 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1501 |
|
1502 if (err != KErrNone) |
|
1503 { |
|
1504 ERR_PRINTF1(_L("Failed to start connections")); |
|
1505 CloseSocketSrv(); |
|
1506 SetError(err); |
|
1507 return; |
|
1508 } |
|
1509 |
|
1510 INFO_PRINTF1(_L("Connections started successfully")); |
|
1511 |
|
1512 INFO_PRINTF2(_L("Setting suffix list on : %S"),&interfaceName); |
|
1513 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,interfaceName,iSuffixList); |
|
1514 |
|
1515 if (KErrNone != err) |
|
1516 { |
|
1517 ERR_PRINTF2(_L("Failed Setting the suffix list with errror : %D"),err); |
|
1518 SetError(err); |
|
1519 firstConn.Close(); |
|
1520 vTunConn.Close(); |
|
1521 CloseSocketSrv(); |
|
1522 return; |
|
1523 } |
|
1524 |
|
1525 INFO_PRINTF1(_L("Suffix list set successfully")); |
|
1526 |
|
1527 INFO_PRINTF1(_L("Creating explicit host resolver")); |
|
1528 |
|
1529 // Open explicit resolver |
|
1530 RHostResolver resolver; |
|
1531 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp,firstConn)) != KErrNone) |
|
1532 { |
|
1533 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
1534 firstConn.Close(); |
|
1535 vTunConn.Close(); |
|
1536 CloseSocketSrv(); |
|
1537 SetError(err); |
|
1538 return; |
|
1539 } |
|
1540 |
|
1541 INFO_PRINTF1(_L("Connected to Host resolver successfully")); |
|
1542 |
|
1543 TNameEntry nameEntry; |
|
1544 |
|
1545 if ( (err = resolver.GetByName(hostname,nameEntry)) != KErrNone) |
|
1546 { |
|
1547 INFO_PRINTF3(_L("Host resolution for %S with error: %D"),&hostname,err); |
|
1548 INFO_PRINTF1(_L("Test success")); |
|
1549 err = KErrNone; |
|
1550 } |
|
1551 else |
|
1552 { |
|
1553 err = KErrArgument; |
|
1554 ERR_PRINTF1(_L("Test failed: Expected no resolution, but resolved")); |
|
1555 } |
|
1556 |
|
1557 SetError(err); |
|
1558 INFO_PRINTF1(_L("Closing host resolver, connections and Sock Srv session")); |
|
1559 resolver.Close(); |
|
1560 firstConn.Close(); |
|
1561 vTunConn.Close(); |
|
1562 CloseSocketSrv(); |
|
1563 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC005L - Exit")); |
|
1564 } |
|
1565 |
|
1566 |
|
1567 void CDNSSuffixTestWrapper::DNSSuffixSupportTC006L() |
|
1568 { |
|
1569 INFO_PRINTF1(_L("****************************************************")); |
|
1570 INFO_PRINTF1(_L("DNSSuffixSupportTC006L - DNS_Suffix_Support_TC006")); |
|
1571 INFO_PRINTF1(_L("****************************************************")); |
|
1572 |
|
1573 TInt numberOfHosts(0); |
|
1574 |
|
1575 if (!GetIntFromConfig(KSectionDNSSuffixTest006,KKeyDNSSuffixTest006NoOfHostname,numberOfHosts)) |
|
1576 { |
|
1577 ERR_PRINTF1(_L("Failed to read the no of hosts from config")); |
|
1578 SetError(KErrNotFound); |
|
1579 return; |
|
1580 } |
|
1581 else |
|
1582 { |
|
1583 INFO_PRINTF2(_L("No of hosts: %D"),numberOfHosts); |
|
1584 } |
|
1585 |
|
1586 TPtrC hostnames[KMaxHosts]; |
|
1587 |
|
1588 for (TInt b=0;b<numberOfHosts;b++) |
|
1589 { |
|
1590 TFileName keyName; |
|
1591 keyName.Format(KKeyDNSSuffixTest006Hostname,b+1); |
|
1592 |
|
1593 if (!GetStringFromConfig(KSectionDNSSuffixTest006,keyName,hostnames[b])) |
|
1594 { |
|
1595 ERR_PRINTF1(_L("Failed to read the 1st host name value")); |
|
1596 SetError(KErrNotFound); |
|
1597 return; |
|
1598 } |
|
1599 else |
|
1600 { |
|
1601 INFO_PRINTF3(_L("Host name%D: %S"),b,&hostnames[b]); |
|
1602 } |
|
1603 } |
|
1604 |
|
1605 TInt err(KErrNone); |
|
1606 |
|
1607 TName interfaceName; |
|
1608 |
|
1609 TRAP(err, err = GetFirstInterfaceNameL(interfaceName)); |
|
1610 |
|
1611 if (err != KErrNone ) |
|
1612 { |
|
1613 ERR_PRINTF2(_L("Failed to get the interface error: %D"),err); |
|
1614 SetError(err); |
|
1615 return; |
|
1616 } |
|
1617 |
|
1618 TPtrC suffixList; |
|
1619 iSuffixList.Reset(); |
|
1620 |
|
1621 if (!GetStringFromConfig(KSectionDNSSuffixTest006,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
1622 { |
|
1623 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
1624 SetError(KErrNotFound); |
|
1625 return; |
|
1626 } |
|
1627 else |
|
1628 { |
|
1629 INFO_PRINTF2(_L("Suffix list: %S"),&suffixList); |
|
1630 FillSuffixList(iSuffixList,suffixList); |
|
1631 } |
|
1632 |
|
1633 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1634 { |
|
1635 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1636 SetError(err); |
|
1637 return; |
|
1638 } |
|
1639 |
|
1640 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1641 |
|
1642 RConnection vTunConn; // used for vTunnel |
|
1643 RConnection firstConn; |
|
1644 |
|
1645 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1646 |
|
1647 if (err != KErrNone) |
|
1648 { |
|
1649 ERR_PRINTF1(_L("Failed to start connections")); |
|
1650 CloseSocketSrv(); |
|
1651 SetError(err); |
|
1652 return; |
|
1653 } |
|
1654 |
|
1655 INFO_PRINTF1(_L("Connections started successfully")); |
|
1656 |
|
1657 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,interfaceName,iSuffixList); |
|
1658 |
|
1659 if (KErrNone != err) |
|
1660 { |
|
1661 ERR_PRINTF2(_L("Failed Setting the suffix list with errror : %D"),err); |
|
1662 SetError(err); |
|
1663 firstConn.Close(); |
|
1664 vTunConn.Close(); |
|
1665 CloseSocketSrv(); |
|
1666 return; |
|
1667 } |
|
1668 |
|
1669 INFO_PRINTF1(_L("Set suffix list on interface successfully")); |
|
1670 |
|
1671 RHostResolver resolver; |
|
1672 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp,firstConn)) != KErrNone) |
|
1673 { |
|
1674 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
1675 firstConn.Close(); |
|
1676 vTunConn.Close(); |
|
1677 CloseSocketSrv(); |
|
1678 SetError(err); |
|
1679 return; |
|
1680 } |
|
1681 |
|
1682 INFO_PRINTF1(_L("Connected to Host resolver successfully")); |
|
1683 |
|
1684 TNameEntry nameEntry[KMaxHosts]; |
|
1685 |
|
1686 // Resolve all three hosts |
|
1687 for (TInt a=0;a<numberOfHosts;a++) |
|
1688 { |
|
1689 INFO_PRINTF2(_L("Resolving host: %S"),&hostnames[a]); |
|
1690 |
|
1691 if ( (err = resolver.GetByName(hostnames[a],nameEntry[a])) != KErrNone) |
|
1692 { |
|
1693 INFO_PRINTF3(_L("Host resolution for %S failed with error: %D"),&hostnames[a],err); |
|
1694 INFO_PRINTF1(_L("Test Failed")); |
|
1695 SetError(err); |
|
1696 break; |
|
1697 } |
|
1698 } |
|
1699 |
|
1700 if (err == KErrNone) |
|
1701 { |
|
1702 for (TInt a=0;a<numberOfHosts;a++) |
|
1703 { |
|
1704 TInetAddr address = nameEntry[a]().iAddr; |
|
1705 |
|
1706 if (address.IsUnspecified()) |
|
1707 { |
|
1708 ERR_PRINTF1(_L("Invalid host address")); |
|
1709 err = KErrArgument; |
|
1710 } |
|
1711 else |
|
1712 { |
|
1713 TBuf<KIPAddrLen> ipAddr; |
|
1714 address.Output(ipAddr); |
|
1715 INFO_PRINTF1(_L("Got valid IP address:")); |
|
1716 INFO_PRINTF2(_L("Host name: %S"),&nameEntry[a]().iName); |
|
1717 INFO_PRINTF2(_L("Host address: %S"),&ipAddr); |
|
1718 } |
|
1719 } |
|
1720 } |
|
1721 |
|
1722 SetError(err); |
|
1723 INFO_PRINTF1(_L("Closing host resolver, connections and Sock Srv session")); |
|
1724 resolver.Close(); |
|
1725 firstConn.Close(); |
|
1726 vTunConn.Close(); |
|
1727 CloseSocketSrv(); |
|
1728 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC006L - Exit")); |
|
1729 } |
|
1730 |
|
1731 |
|
1732 /* |
|
1733 * TODO: Needs to find the way to change the ranking IAP's programatically. |
|
1734 * Note: Before running this test case make ethernet iap as default |
|
1735 * by changing its ranking to one(1). |
|
1736 * @ See te_dnssuffixcedv2.xml |
|
1737 * @See te_dnssuffixsuite.script for below line |
|
1738 * ced -i z:\testdata\configs\te_dnssuffixcedv2.xml |
|
1739 * |
|
1740 */ |
|
1741 void CDNSSuffixTestWrapper::DNSSuffixSupportTC007L() |
|
1742 { |
|
1743 INFO_PRINTF1(_L("**********************************************************************")); |
|
1744 INFO_PRINTF1(_L("DNS_Suffix_Test007L - DNS_Suffix_Support_007")); |
|
1745 INFO_PRINTF1(_L("**********************************************************************")); |
|
1746 |
|
1747 TPtrC validHostname; |
|
1748 TPtrC inValidHostname; |
|
1749 |
|
1750 if (!GetStringFromConfig(KSectionDNSSuffixTest007,KKeyDNSSuffixTest007ValidHostname,validHostname)) |
|
1751 { |
|
1752 ERR_PRINTF1(_L("Failed to read the valid host name from config")); |
|
1753 SetError(KErrNotFound); |
|
1754 return; |
|
1755 } |
|
1756 else |
|
1757 { |
|
1758 INFO_PRINTF2(_L("Valid Host name: %S"),&validHostname); |
|
1759 } |
|
1760 |
|
1761 if (!GetStringFromConfig(KSectionDNSSuffixTest007,KKeyDNSSuffixTest007InValidHostname,inValidHostname)) |
|
1762 { |
|
1763 ERR_PRINTF1(_L("Failed to read the invalid host name from config")); |
|
1764 SetError(KErrNotFound); |
|
1765 return; |
|
1766 } |
|
1767 else |
|
1768 { |
|
1769 INFO_PRINTF2(_L("Invalid Host name: %S"),&inValidHostname); |
|
1770 } |
|
1771 |
|
1772 // @Santosh K Patil |
|
1773 // Note: Remove the suffix lists from the interfaces set by previous test cases, if any. |
|
1774 // Note: start multiple interfaces |
|
1775 |
|
1776 TFileName interfaceName; |
|
1777 TInt err = KErrNone; |
|
1778 err = GetFirstInterfaceNameL(interfaceName); |
|
1779 |
|
1780 /* |
|
1781 * @Note: Remove the suffix list set on the interface (which we set in earlier test cases) |
|
1782 * by just setting empty list on it. |
|
1783 */ |
|
1784 INFO_PRINTF1(_L("Setting empty suffix list on interface:")); |
|
1785 iSuffixList.Reset(); |
|
1786 |
|
1787 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1788 { |
|
1789 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1790 SetError(err); |
|
1791 return; |
|
1792 } |
|
1793 |
|
1794 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1795 |
|
1796 RConnection vTunConn; // used for vTunnel |
|
1797 RConnection firstConn; |
|
1798 |
|
1799 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1800 |
|
1801 if (err != KErrNone) |
|
1802 { |
|
1803 ERR_PRINTF1(_L("Failed to start connections")); |
|
1804 CloseSocketSrv(); |
|
1805 SetError(err); |
|
1806 return; |
|
1807 } |
|
1808 |
|
1809 INFO_PRINTF1(_L("Connections started successfully")); |
|
1810 |
|
1811 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,interfaceName,iSuffixList); |
|
1812 |
|
1813 if (KErrNone != err) |
|
1814 { |
|
1815 ERR_PRINTF2(_L("Failed Setting the suffix list with errror : %D"),err); |
|
1816 SetError(err); |
|
1817 firstConn.Close(); |
|
1818 vTunConn.Close(); |
|
1819 CloseSocketSrv(); |
|
1820 return; |
|
1821 } |
|
1822 |
|
1823 INFO_PRINTF1(_L("Removed suffix list from interface:")); |
|
1824 |
|
1825 INFO_PRINTF1(_L("Opening implicit resolver")); |
|
1826 // Open implicit resolver. |
|
1827 RHostResolver resolver; |
|
1828 |
|
1829 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp)) != KErrNone) |
|
1830 { |
|
1831 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
1832 firstConn.Close(); |
|
1833 vTunConn.Close(); |
|
1834 CloseSocketSrv(); |
|
1835 SetError(err); |
|
1836 return; |
|
1837 } |
|
1838 |
|
1839 INFO_PRINTF1(_L("Connected to Host resolver successfully")); |
|
1840 |
|
1841 TNameEntry nameEntry; |
|
1842 |
|
1843 INFO_PRINTF2(_L("Requesting to resolve valid hostname: %S"),&validHostname); |
|
1844 |
|
1845 if ( (err = resolver.GetByName(validHostname,nameEntry)) != KErrNone) |
|
1846 { |
|
1847 ERR_PRINTF3(_L("Host resolution failed for %S with error: %D"),&validHostname,err); |
|
1848 } |
|
1849 else |
|
1850 { |
|
1851 TInetAddr& netAddress = TInetAddr::Cast(nameEntry().iAddr); |
|
1852 |
|
1853 if (netAddress.IsUnspecified()) |
|
1854 { |
|
1855 ERR_PRINTF1(_L("Invalid host address")); |
|
1856 err = KErrArgument; |
|
1857 } |
|
1858 else |
|
1859 { |
|
1860 TBuf<KIPAddrLen> address; |
|
1861 netAddress.Output(address); |
|
1862 INFO_PRINTF1(_L("Got valid IP address:")); |
|
1863 INFO_PRINTF2(_L("Host name: %S"),&nameEntry().iName); |
|
1864 INFO_PRINTF2(_L("Host address: %S"),&address); |
|
1865 } |
|
1866 } |
|
1867 |
|
1868 if (err == KErrNone) |
|
1869 { |
|
1870 TNameEntry nameEntry2; |
|
1871 |
|
1872 INFO_PRINTF2(_L("Requesting to resolve invalid hostname: %S"),&inValidHostname); |
|
1873 |
|
1874 if ( (err = resolver.GetByName(inValidHostname,nameEntry2)) != KErrNone) |
|
1875 { |
|
1876 INFO_PRINTF3(_L("Host resolution failed for %S with error: %D"),&inValidHostname,err); |
|
1877 INFO_PRINTF1(_L("Test scenario passed")); |
|
1878 err = KErrNone; |
|
1879 } |
|
1880 else |
|
1881 { |
|
1882 err = KErrArgument; |
|
1883 INFO_PRINTF1(_L("Error: Seems host is resolvable")); |
|
1884 } |
|
1885 } |
|
1886 |
|
1887 SetError(err); |
|
1888 |
|
1889 INFO_PRINTF1(_L("Closing host resolver")); |
|
1890 resolver.Close(); |
|
1891 |
|
1892 INFO_PRINTF1(_L("Closing connections and socket serv session")); |
|
1893 firstConn.Close(); |
|
1894 vTunConn.Close(); |
|
1895 CloseSocketSrv(); |
|
1896 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC007L - Exit")); |
|
1897 } |
|
1898 |
|
1899 |
|
1900 void CDNSSuffixTestWrapper::DNSSuffixSupportTC008L() |
|
1901 { |
|
1902 INFO_PRINTF1(_L("**********************************************************************")); |
|
1903 INFO_PRINTF1(_L("DNS_Suffix_Test008L - DNS_Suffix_Support_008")); |
|
1904 INFO_PRINTF1(_L("**********************************************************************")); |
|
1905 |
|
1906 TPtrC hostname1; |
|
1907 TPtrC hostname2; |
|
1908 |
|
1909 if (!GetStringFromConfig(KSectionDNSSuffixTest008,KKeyDNSSuffixTestHostname1,hostname1)) |
|
1910 { |
|
1911 ERR_PRINTF1(_L("Failed to read the 1 host name from config")); |
|
1912 SetError(KErrNotFound); |
|
1913 return; |
|
1914 } |
|
1915 else |
|
1916 { |
|
1917 INFO_PRINTF2(_L("Host name1: %S"),&hostname1); |
|
1918 } |
|
1919 |
|
1920 if (!GetStringFromConfig(KSectionDNSSuffixTest008,KKeyDNSSuffixTestHostname2,hostname2)) |
|
1921 { |
|
1922 ERR_PRINTF1(_L("Failed to read the 2 host name from config")); |
|
1923 SetError(KErrNotFound); |
|
1924 return; |
|
1925 } |
|
1926 else |
|
1927 { |
|
1928 INFO_PRINTF2(_L("Host name2: %S"),&hostname2); |
|
1929 } |
|
1930 |
|
1931 // @Santosh K Patil |
|
1932 // @note: Set suffix lists on both interfaces (eth and vtun) |
|
1933 // @note: start multiple interfaces |
|
1934 |
|
1935 TName ethernetInterface; |
|
1936 TName vTunInterface; |
|
1937 TInt err = KErrNone; |
|
1938 err = GetFirstInterfaceNameL(ethernetInterface); |
|
1939 |
|
1940 if (KErrNone != err) |
|
1941 { |
|
1942 ERR_PRINTF1(_L("Failed get the name of the interface (ethernet)")); |
|
1943 SetError(KErrNotFound); |
|
1944 return; |
|
1945 } |
|
1946 |
|
1947 #ifndef DISABLE_TUNDRIVER |
|
1948 err = GetSecondInterfaceNameL(vTunInterface); |
|
1949 |
|
1950 if (KErrNone != err) |
|
1951 { |
|
1952 ERR_PRINTF1(_L("Failed get the name of the interface (vTun)")); |
|
1953 SetError(KErrNotFound); |
|
1954 return; |
|
1955 } |
|
1956 #endif |
|
1957 |
|
1958 INFO_PRINTF1(_L("Setting suffix list on interface:")); |
|
1959 |
|
1960 iSuffixList2.Reset(); |
|
1961 |
|
1962 TPtrC suffixList; |
|
1963 if (!GetStringFromConfig(KSectionDNSSuffixTest008,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
1964 { |
|
1965 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
1966 SetError(KErrNotFound); |
|
1967 return; |
|
1968 } |
|
1969 else |
|
1970 { |
|
1971 INFO_PRINTF2(_L("Suffix list: %S"),&suffixList); |
|
1972 FillSuffixList(iSuffixList2,suffixList); |
|
1973 } |
|
1974 |
|
1975 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
1976 { |
|
1977 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
1978 SetError(err); |
|
1979 return; |
|
1980 } |
|
1981 |
|
1982 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
1983 |
|
1984 RConnection vTunConn; // used for vTunnel |
|
1985 RConnection firstConn; |
|
1986 |
|
1987 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
1988 |
|
1989 if (err != KErrNone) |
|
1990 { |
|
1991 ERR_PRINTF1(_L("Failed to start connections")); |
|
1992 CloseSocketSrv(); |
|
1993 SetError(err); |
|
1994 return; |
|
1995 } |
|
1996 |
|
1997 INFO_PRINTF1(_L("Connections started successfully")); |
|
1998 |
|
1999 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,ethernetInterface,iSuffixList2); |
|
2000 |
|
2001 if (KErrNone != err) |
|
2002 { |
|
2003 ERR_PRINTF3(_L("Failed Setting the suffix list on %S with errror : %D"),ðernetInterface,err); |
|
2004 SetError(err); |
|
2005 firstConn.Close(); |
|
2006 vTunConn.Close(); |
|
2007 CloseSocketSrv(); |
|
2008 return; |
|
2009 } |
|
2010 |
|
2011 INFO_PRINTF2(_L("Set suffix list on %S successfully"),ðernetInterface); |
|
2012 |
|
2013 #ifndef DISABLE_TUNDRIVER |
|
2014 err = SetDNSSuffixListOnInterface(iSocketServ,vTunConn,vTunInterface,iSuffixList2); |
|
2015 |
|
2016 if (KErrNone != err) |
|
2017 { |
|
2018 ERR_PRINTF3(_L("Failed Setting the suffix list on %S with errror : %D"),&vTunInterface,err); |
|
2019 SetError(err); |
|
2020 firstConn.Close(); |
|
2021 vTunConn.Close(); |
|
2022 CloseSocketSrv(); |
|
2023 return; |
|
2024 } |
|
2025 |
|
2026 INFO_PRINTF2(_L("Set suffix list on %S successfully"),&vTunInterface); |
|
2027 #endif |
|
2028 |
|
2029 INFO_PRINTF1(_L("Opening implicit resolver")); |
|
2030 // Open implicit resolver. |
|
2031 RHostResolver resolver; |
|
2032 INFO_PRINTF1(_L("Creating implicit resolver")); |
|
2033 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp)) != KErrNone) |
|
2034 { |
|
2035 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
2036 firstConn.Close(); |
|
2037 vTunConn.Close(); |
|
2038 CloseSocketSrv(); |
|
2039 SetError(err); |
|
2040 return; |
|
2041 } |
|
2042 |
|
2043 INFO_PRINTF1(_L("Connected to implicit Host resolver successfully")); |
|
2044 |
|
2045 TNameEntry nameEntry; |
|
2046 |
|
2047 INFO_PRINTF2(_L("Requesting to resolve hostname: %S"),&hostname1); |
|
2048 |
|
2049 if ( (err = resolver.GetByName(hostname1,nameEntry)) != KErrNone) |
|
2050 { |
|
2051 ERR_PRINTF3(_L("Failed to resolve the host %S with error: %D"),&hostname1,err); |
|
2052 } |
|
2053 else |
|
2054 { |
|
2055 TInetAddr& netAddress = TInetAddr::Cast(nameEntry().iAddr); |
|
2056 |
|
2057 if (netAddress.IsUnspecified()) |
|
2058 { |
|
2059 ERR_PRINTF1(_L("Invalid host address")); |
|
2060 err = KErrArgument; |
|
2061 } |
|
2062 else |
|
2063 { |
|
2064 TBuf<KIPAddrLen> address; |
|
2065 netAddress.Output(address); |
|
2066 INFO_PRINTF1(_L("Got valid IP address:")); |
|
2067 INFO_PRINTF2(_L("Host name: %S"),&nameEntry().iName); |
|
2068 INFO_PRINTF2(_L("Host address: %S"),&address); |
|
2069 } |
|
2070 } |
|
2071 |
|
2072 INFO_PRINTF1(_L("Closing implicit host resolver")); |
|
2073 resolver.Close(); |
|
2074 |
|
2075 #ifndef DISABLE_TUNDRIVER |
|
2076 if (err == KErrNone) |
|
2077 { |
|
2078 // Open explicit resolver. |
|
2079 RHostResolver resolver2; |
|
2080 INFO_PRINTF1(_L("Creating explicit resolver")); |
|
2081 if ( (err = resolver2.Open(iSocketServ,KAfInet,KProtocolInetUdp,vTunConn)) != KErrNone) |
|
2082 { |
|
2083 ERR_PRINTF2(_L("Failed Connecting to explicit Host resolver with error: %D"),err); |
|
2084 firstConn.Close(); |
|
2085 vTunConn.Close(); |
|
2086 CloseSocketSrv(); |
|
2087 SetError(err); |
|
2088 return; |
|
2089 } |
|
2090 |
|
2091 INFO_PRINTF1(_L("Connected to explicit Host resolver successfully")); |
|
2092 |
|
2093 |
|
2094 TNameEntry nameEntry2; |
|
2095 INFO_PRINTF2(_L("Requesting to resolve hostname: %S"),&hostname2); |
|
2096 |
|
2097 if ( (err = resolver2.GetByName(hostname2,nameEntry2)) != KErrNone) |
|
2098 { |
|
2099 INFO_PRINTF3(_L("Host resolution failed for %S with error: %D"),&hostname2,err); |
|
2100 INFO_PRINTF1(_L("Test scenario passed")); |
|
2101 err = KErrNone; |
|
2102 } |
|
2103 else |
|
2104 { |
|
2105 err = KErrArgument; |
|
2106 INFO_PRINTF1(_L("Error: Seems host is resolvable")); |
|
2107 } |
|
2108 |
|
2109 INFO_PRINTF1(_L("Closing explicit host resolver")); |
|
2110 resolver2.Close(); |
|
2111 } |
|
2112 #endif |
|
2113 |
|
2114 SetError(err); |
|
2115 |
|
2116 INFO_PRINTF1(_L("Closing connections and socket serv session")); |
|
2117 firstConn.Close(); |
|
2118 vTunConn.Close(); |
|
2119 CloseSocketSrv(); |
|
2120 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC008L - Exit")); |
|
2121 } |
|
2122 |
|
2123 |
|
2124 // TODO: Cross check the correct ness of the implementation. |
|
2125 void CDNSSuffixTestWrapper::DNSSuffixSupportTC009L() |
|
2126 { |
|
2127 INFO_PRINTF1(_L("**********************************************************************")); |
|
2128 INFO_PRINTF1(_L("DNSSuffixSupportTC009L - DNS_Suffix_Support_009")); |
|
2129 INFO_PRINTF1(_L("**********************************************************************")); |
|
2130 |
|
2131 TPtrC hostname1; |
|
2132 TPtrC hostname2; |
|
2133 |
|
2134 if (!GetStringFromConfig(KSectionDNSSuffixTest009,KKeyDNSSuffixTestHostname1,hostname1)) |
|
2135 { |
|
2136 ERR_PRINTF1(_L("Failed to read the 1 host name from config")); |
|
2137 SetError(KErrNotFound); |
|
2138 return; |
|
2139 } |
|
2140 else |
|
2141 { |
|
2142 INFO_PRINTF2(_L("Host name1: %S"),&hostname1); |
|
2143 } |
|
2144 |
|
2145 if (!GetStringFromConfig(KSectionDNSSuffixTest009,KKeyDNSSuffixTestHostname2,hostname2)) |
|
2146 { |
|
2147 ERR_PRINTF1(_L("Failed to read the 2 host name from config")); |
|
2148 SetError(KErrNotFound); |
|
2149 return; |
|
2150 } |
|
2151 else |
|
2152 { |
|
2153 INFO_PRINTF2(_L("Host name2: %S"),&hostname2); |
|
2154 } |
|
2155 |
|
2156 /* |
|
2157 * @Santosh K Patil |
|
2158 * @note: start multiple interfaces |
|
2159 * Set suffix lists on vTunnel interface |
|
2160 * Open explicit connection on other interface |
|
2161 */ |
|
2162 TInt err = KErrNone; |
|
2163 #ifndef DISABLE_TUNDRIVER |
|
2164 TFileName vTunInterface; |
|
2165 err = GetSecondInterfaceNameL(vTunInterface); |
|
2166 |
|
2167 if (KErrNone != err) |
|
2168 { |
|
2169 ERR_PRINTF1(_L("Failed get the name of the interface (vTun)")); |
|
2170 SetError(KErrNotFound); |
|
2171 return; |
|
2172 } |
|
2173 |
|
2174 INFO_PRINTF1(_L("Setting suffix list on vTun interface:")); |
|
2175 |
|
2176 iSuffixList.Reset(); |
|
2177 |
|
2178 TPtrC suffixList; |
|
2179 if (!GetStringFromConfig(KSectionDNSSuffixTest009,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
2180 { |
|
2181 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
2182 SetError(KErrNotFound); |
|
2183 return; |
|
2184 } |
|
2185 else |
|
2186 { |
|
2187 INFO_PRINTF2(_L("Suffix list: %S"),&suffixList); |
|
2188 FillSuffixList(iSuffixList,suffixList); |
|
2189 } |
|
2190 #endif |
|
2191 |
|
2192 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
2193 { |
|
2194 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
2195 SetError(err); |
|
2196 return; |
|
2197 } |
|
2198 |
|
2199 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
2200 |
|
2201 RConnection vTunConn; // used for vTunnel |
|
2202 RConnection firstConn; |
|
2203 |
|
2204 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
2205 |
|
2206 if (err != KErrNone) |
|
2207 { |
|
2208 ERR_PRINTF1(_L("Failed to start connections")); |
|
2209 CloseSocketSrv(); |
|
2210 SetError(err); |
|
2211 return; |
|
2212 } |
|
2213 |
|
2214 INFO_PRINTF1(_L("Connections started successfully")); |
|
2215 |
|
2216 #ifndef DISABLE_TUNDRIVER |
|
2217 err = SetDNSSuffixListOnInterface(iSocketServ,vTunConn,vTunInterface,iSuffixList); |
|
2218 |
|
2219 if (KErrNone != err) |
|
2220 { |
|
2221 ERR_PRINTF3(_L("Failed Setting the suffix list on %S with errror : %D"),&vTunInterface,err); |
|
2222 SetError(err); |
|
2223 firstConn.Close(); |
|
2224 vTunConn.Close(); |
|
2225 CloseSocketSrv(); |
|
2226 return; |
|
2227 } |
|
2228 |
|
2229 INFO_PRINTF2(_L("Set suffix list on %S successfully"),&vTunInterface); |
|
2230 #endif |
|
2231 |
|
2232 INFO_PRINTF1(_L("Opening explicit resolver")); |
|
2233 // Open implicit resolver. |
|
2234 RHostResolver resolver; |
|
2235 INFO_PRINTF1(_L("Creating explicit resolver")); |
|
2236 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp,firstConn)) != KErrNone) |
|
2237 { |
|
2238 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
2239 firstConn.Close(); |
|
2240 vTunConn.Close(); |
|
2241 CloseSocketSrv(); |
|
2242 SetError(err); |
|
2243 return; |
|
2244 } |
|
2245 |
|
2246 INFO_PRINTF1(_L("Connected to explicit Host resolver successfully")); |
|
2247 |
|
2248 TNameEntry nameEntry; |
|
2249 |
|
2250 INFO_PRINTF2(_L("Requesting to resolve hostname: %S"),&hostname1); |
|
2251 |
|
2252 if ( (err = resolver.GetByName(hostname1,nameEntry)) != KErrNone) |
|
2253 { |
|
2254 ERR_PRINTF3(_L("Failed to resolve the host %S with error: %D"),&hostname1,err); |
|
2255 } |
|
2256 else |
|
2257 { |
|
2258 TInetAddr& netAddress = TInetAddr::Cast(nameEntry().iAddr); |
|
2259 |
|
2260 if (netAddress.IsUnspecified()) |
|
2261 { |
|
2262 ERR_PRINTF1(_L("Invalid host address")); |
|
2263 err = KErrArgument; |
|
2264 } |
|
2265 else |
|
2266 { |
|
2267 TBuf<KIPAddrLen> address; |
|
2268 netAddress.Output(address); |
|
2269 INFO_PRINTF1(_L("Got valid IP address:")); |
|
2270 INFO_PRINTF2(_L("Host name: %S"),&nameEntry().iName); |
|
2271 INFO_PRINTF2(_L("Host address: %S"),&address); |
|
2272 } |
|
2273 } |
|
2274 |
|
2275 if (err == KErrNone) |
|
2276 { |
|
2277 TNameEntry nameEntry2; |
|
2278 INFO_PRINTF2(_L("Requesting to resolve hostname: %S"),&hostname2); |
|
2279 |
|
2280 if ( (err = resolver.GetByName(hostname2,nameEntry2)) != KErrNone) |
|
2281 { |
|
2282 INFO_PRINTF3(_L("Host resolution failed for %S with error: %D"),&hostname2,err); |
|
2283 INFO_PRINTF1(_L("Test scenario passed")); |
|
2284 err = KErrNone; |
|
2285 } |
|
2286 else |
|
2287 { |
|
2288 // TODO: We have to change this once we come up with end to end setup for VTun err = KErrArgument; |
|
2289 INFO_PRINTF1(_L("We assumed that host is resolved through explicit connection and hence test is pass.")); |
|
2290 INFO_PRINTF1(_L("We have to change this once we come up with end to end setup for VTun.")); |
|
2291 err = KErrNone; |
|
2292 // INFO_PRINTF1(_L("Error: Seems host is resolvable")); |
|
2293 } |
|
2294 } |
|
2295 |
|
2296 SetError(err); |
|
2297 |
|
2298 INFO_PRINTF1(_L("Closing host resolver")); |
|
2299 resolver.Close(); |
|
2300 |
|
2301 INFO_PRINTF1(_L("Closing connections and socket serv session")); |
|
2302 firstConn.Close(); |
|
2303 vTunConn.Close(); |
|
2304 CloseSocketSrv(); |
|
2305 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC009L - Exit")); |
|
2306 } |
|
2307 |
|
2308 |
|
2309 // TODO: If I set suffix list name of length with max size then client panic's. |
|
2310 void CDNSSuffixTestWrapper::DNSSuffixSupportTC010L() |
|
2311 { |
|
2312 INFO_PRINTF1(_L("**********************************************************************")); |
|
2313 INFO_PRINTF1(_L("DNSSuffixSupportTC010L - DNS_Suffix_Support_010")); |
|
2314 INFO_PRINTF1(_L("**********************************************************************")); |
|
2315 |
|
2316 TPtrC hostname; |
|
2317 |
|
2318 if (!GetStringFromConfig(KSectionDNSSuffixTest010,KKeyDNSSuffixTestHostname,hostname)) |
|
2319 { |
|
2320 ERR_PRINTF1(_L("Failed to read the host name from config")); |
|
2321 SetError(KErrNotFound); |
|
2322 return; |
|
2323 } |
|
2324 else |
|
2325 { |
|
2326 INFO_PRINTF2(_L("Host name1: %S"),&hostname); |
|
2327 } |
|
2328 |
|
2329 // @Santosh K Patil |
|
2330 // @note: start multiple interfaces |
|
2331 // @note: Set long suffix lists on both interface |
|
2332 // @note: Create explicit resolver and set the suffixlist with max size. |
|
2333 |
|
2334 TFileName ethernetInterface; |
|
2335 TInt err = KErrNone; |
|
2336 err = GetFirstInterfaceNameL(ethernetInterface); |
|
2337 |
|
2338 if (KErrNone != err) |
|
2339 { |
|
2340 ERR_PRINTF1(_L("Failed get the name of the interface (ethernet)")); |
|
2341 SetError(KErrNotFound); |
|
2342 return; |
|
2343 } |
|
2344 |
|
2345 INFO_PRINTF1(_L("Setting suffix list on interface:")); |
|
2346 iSuffixList.Reset(); |
|
2347 |
|
2348 |
|
2349 // @Ganesh - Constructing suffix list for FillSuffixList with 3 separate suffix name entries in ini |
|
2350 // @Ganesh - as the names are too long for the parser to parse and add it in one GetStringFromConfig call |
|
2351 TPtrC suffixName; |
|
2352 TBuf<1024> suffixList; |
|
2353 if (!GetStringFromConfig(KSectionDNSSuffixTest010,KKeyDNSSuffixTestSuffixList1,suffixName)) |
|
2354 { |
|
2355 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
2356 SetError(KErrNotFound); |
|
2357 return; |
|
2358 } |
|
2359 else |
|
2360 { |
|
2361 INFO_PRINTF1(_L("Suffix name:")); |
|
2362 INFO_PRINTF2(_L("%S"),&suffixName); |
|
2363 suffixList.Append(suffixName); |
|
2364 suffixList.Append(_L(";")); |
|
2365 } |
|
2366 |
|
2367 if (!GetStringFromConfig(KSectionDNSSuffixTest010,KKeyDNSSuffixTestSuffixList2,suffixName)) |
|
2368 { |
|
2369 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
2370 SetError(KErrNotFound); |
|
2371 return; |
|
2372 } |
|
2373 else |
|
2374 { |
|
2375 INFO_PRINTF1(_L("Suffix name:")); |
|
2376 INFO_PRINTF2(_L("%S"),&suffixName); |
|
2377 suffixList.Append(suffixName); |
|
2378 suffixList.Append(_L(";")); |
|
2379 } |
|
2380 |
|
2381 if (!GetStringFromConfig(KSectionDNSSuffixTest010,KKeyDNSSuffixTestSuffixList3,suffixName)) |
|
2382 { |
|
2383 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
2384 SetError(KErrNotFound); |
|
2385 return; |
|
2386 } |
|
2387 else |
|
2388 { |
|
2389 INFO_PRINTF1(_L("Suffix name:")); |
|
2390 INFO_PRINTF2(_L("%S"),&suffixName); |
|
2391 suffixList.Append(suffixName); |
|
2392 } |
|
2393 FillSuffixList(iSuffixList,suffixList); |
|
2394 |
|
2395 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
2396 { |
|
2397 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
2398 SetError(err); |
|
2399 return; |
|
2400 } |
|
2401 |
|
2402 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
2403 |
|
2404 RConnection vTunConn; // used for vTunnel |
|
2405 RConnection firstConn; |
|
2406 |
|
2407 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
2408 |
|
2409 if (err != KErrNone) |
|
2410 { |
|
2411 ERR_PRINTF1(_L("Failed to start connections")); |
|
2412 CloseSocketSrv(); |
|
2413 SetError(err); |
|
2414 return; |
|
2415 } |
|
2416 |
|
2417 INFO_PRINTF1(_L("Connections started successfully")); |
|
2418 |
|
2419 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,ethernetInterface,iSuffixList); |
|
2420 |
|
2421 if (KErrNone != err) |
|
2422 { |
|
2423 ERR_PRINTF3(_L("Failed Setting the suffix list on %S with errror : %D"),ðernetInterface,err); |
|
2424 SetError(err); |
|
2425 firstConn.Close(); |
|
2426 vTunConn.Close(); |
|
2427 CloseSocketSrv(); |
|
2428 return; |
|
2429 } |
|
2430 |
|
2431 INFO_PRINTF2(_L("Set suffix list on %S successfully"),ðernetInterface); |
|
2432 |
|
2433 INFO_PRINTF1(_L("Opening explicit resolver")); |
|
2434 |
|
2435 RHostResolver resolver; |
|
2436 INFO_PRINTF1(_L("Creating explicit resolver")); |
|
2437 if ( (err = resolver.Open(iSocketServ,KAfInet,KProtocolInetUdp,firstConn)) != KErrNone) |
|
2438 { |
|
2439 ERR_PRINTF2(_L("Failed Connecting to Host resolver with error: %D"),err); |
|
2440 firstConn.Close(); |
|
2441 vTunConn.Close(); |
|
2442 CloseSocketSrv(); |
|
2443 SetError(err); |
|
2444 return; |
|
2445 } |
|
2446 |
|
2447 INFO_PRINTF1(_L("Connected to explicit Host resolver successfully")); |
|
2448 |
|
2449 TNameEntry nameEntry; |
|
2450 |
|
2451 INFO_PRINTF2(_L("Requesting to resolve hostname: %S"),&hostname); |
|
2452 |
|
2453 if ( (err = resolver.GetByName(hostname,nameEntry)) != KErrNone) |
|
2454 { |
|
2455 INFO_PRINTF3(_L("Failed to resolve the host %S with error: %D"),&hostname,err); |
|
2456 INFO_PRINTF1(_L("Test Pass")); |
|
2457 err = KErrNone; |
|
2458 } |
|
2459 else |
|
2460 { |
|
2461 err = KErrArgument; |
|
2462 INFO_PRINTF1(_L("Host seems to be resolvable")); |
|
2463 } |
|
2464 |
|
2465 SetError(err); |
|
2466 |
|
2467 INFO_PRINTF1(_L("Closing host resolver")); |
|
2468 resolver.Close(); |
|
2469 |
|
2470 INFO_PRINTF1(_L("Closing connections and socket serv session")); |
|
2471 firstConn.Close(); |
|
2472 vTunConn.Close(); |
|
2473 CloseSocketSrv(); |
|
2474 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC010L - Exit")); |
|
2475 } |
|
2476 |
|
2477 |
|
2478 /* |
|
2479 * @Test: Connection dissconnection test |
|
2480 * |
|
2481 * Make vTun as default interface |
|
2482 * Set suffix on ethernet |
|
2483 * Open implicit resolver (assumed that it is opened on vTun) |
|
2484 * Request for name resolution (Async one) |
|
2485 * Stop the connection and observe the behaviour.(Expected, resolution should fail gracefully) |
|
2486 * With appropriate error code. |
|
2487 * |
|
2488 */ |
|
2489 void CDNSSuffixTestWrapper::DNSSuffixSupportTC011L() |
|
2490 { |
|
2491 INFO_PRINTF1(_L("**********************************************************************")); |
|
2492 INFO_PRINTF1(_L("DNSSuffixSupportTC011L - DNS_Suffix_Support_011")); |
|
2493 INFO_PRINTF1(_L("**********************************************************************")); |
|
2494 |
|
2495 TPtrC hostname; |
|
2496 |
|
2497 if (!GetStringFromConfig(KSectionDNSSuffixTest011,KKeyDNSSuffixTestHostname,hostname)) |
|
2498 { |
|
2499 ERR_PRINTF1(_L("Failed to read the host name from config")); |
|
2500 SetError(KErrNotFound); |
|
2501 return; |
|
2502 } |
|
2503 else |
|
2504 { |
|
2505 INFO_PRINTF2(_L("Host name1: %S"),&hostname); |
|
2506 } |
|
2507 |
|
2508 TFileName ethernetInterface; |
|
2509 TInt err = KErrNone; |
|
2510 err = GetFirstInterfaceNameL(ethernetInterface); |
|
2511 |
|
2512 if (KErrNone != err) |
|
2513 { |
|
2514 ERR_PRINTF1(_L("Failed get the name of the interface (ethernet)")); |
|
2515 SetError(KErrNotFound); |
|
2516 return; |
|
2517 } |
|
2518 |
|
2519 INFO_PRINTF1(_L("Setting suffix list on interface:")); |
|
2520 iSuffixList.Reset(); |
|
2521 |
|
2522 |
|
2523 TPtrC suffixList; |
|
2524 if (!GetStringFromConfig(KSectionDNSSuffixTest011,KKeyDNSSuffixTestSuffixList,suffixList)) |
|
2525 { |
|
2526 ERR_PRINTF1(_L("Failed to read suffix lists from config")); |
|
2527 SetError(KErrNotFound); |
|
2528 return; |
|
2529 } |
|
2530 else |
|
2531 { |
|
2532 INFO_PRINTF1(_L("Suffix list:")); |
|
2533 INFO_PRINTF2(_L("%S"),&suffixList); |
|
2534 FillSuffixList(iSuffixList,suffixList); |
|
2535 } |
|
2536 |
|
2537 if ( (err = iSocketServ.Connect()) != KErrNone) |
|
2538 { |
|
2539 ERR_PRINTF1(_L("Failed Connecting to socket server")); |
|
2540 SetError(err); |
|
2541 return; |
|
2542 } |
|
2543 |
|
2544 INFO_PRINTF1(_L("Connected to socket server successfully")); |
|
2545 |
|
2546 RConnection vTunConn; // used for vTunnel |
|
2547 RConnection firstConn; |
|
2548 |
|
2549 err = StartConnections(iSocketServ,firstConn, vTunConn); |
|
2550 |
|
2551 if (err != KErrNone) |
|
2552 { |
|
2553 ERR_PRINTF1(_L("Failed to start connections")); |
|
2554 CloseSocketSrv(); |
|
2555 SetError(err); |
|
2556 return; |
|
2557 } |
|
2558 |
|
2559 INFO_PRINTF1(_L("Connections started successfully")); |
|
2560 |
|
2561 err = SetDNSSuffixListOnInterface(iSocketServ,firstConn,ethernetInterface,iSuffixList); |
|
2562 |
|
2563 if (KErrNone != err) |
|
2564 { |
|
2565 ERR_PRINTF3(_L("Failed Setting the suffix list on %S with errror : %D"),ðernetInterface,err); |
|
2566 SetError(err); |
|
2567 firstConn.Close(); |
|
2568 vTunConn.Close(); |
|
2569 CloseSocketSrv(); |
|
2570 return; |
|
2571 } |
|
2572 |
|
2573 INFO_PRINTF2(_L("Set suffix list on %S successfully"),ðernetInterface); |
|
2574 |
|
2575 |
|
2576 // Open explcit resolver. using CDNSSuffixHostResolver |
|
2577 CDNSSuffixHostResolver* resolver = CDNSSuffixHostResolver::NewLC(*this,iSocketServ,firstConn); |
|
2578 |
|
2579 INFO_PRINTF2(_L("Request to resolve host(async): %S"),&hostname); |
|
2580 err = resolver->ResolveL(hostname); |
|
2581 |
|
2582 INFO_PRINTF1(_L("Stoping the connection")); |
|
2583 |
|
2584 err = firstConn.Stop(); |
|
2585 |
|
2586 // Note: we have to stop the wait loop in HandleCallBackL |
|
2587 iWait.Start(); |
|
2588 |
|
2589 CleanupStack::PopAndDestroy(); |
|
2590 |
|
2591 INFO_PRINTF1(_L("Closing connections and socket serv session")); |
|
2592 firstConn.Close(); |
|
2593 vTunConn.Close(); |
|
2594 CloseSocketSrv(); |
|
2595 INFO_PRINTF1(_L("CDNSSuffixTestWrapper::DNSSuffixSupportTC011L - Exit")); |
|
2596 } |
|
2597 |
|
2598 |
|
2599 // End of file |