common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp22.cpp
changeset 748 e13acd883fbe
child 872 17498133d9ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp22.cpp	Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,494 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+//  INCLUDES
+#include "ctlbsclientpostp22.h"
+#include "ctlbsclientlog.h"
+#include "ctlbsclientperiodictester.h"
+
+// CONSTANTS
+_LIT(KServiceName1, " aaaaaaaaaaa");
+_LIT(KServiceName2, " bbbbbbbbbbb");
+_LIT(KServiceName3, " ccccccccccc");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp22::CT_LbsClientPosTp22(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+	{  
+	_LIT(KTestName, "TP22 - Periodic Location Updates");
+	SetTestStepName(KTestName); 
+	}
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp22::~CT_LbsClientPosTp22()
+	{
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp22::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp22::StartL()
+    {
+    TInt numberOfRuns = 5;
+	TTimeIntervalMicroSeconds interval0 = TTimeIntervalMicroSeconds(0);
+	TTimeIntervalMicroSeconds interval2 = TTimeIntervalMicroSeconds(2000000);
+	TTimeIntervalMicroSeconds interval4 = TTimeIntervalMicroSeconds(4000000);
+	TTimeIntervalMicroSeconds interval5 = TTimeIntervalMicroSeconds(5000000);
+	TTimeIntervalMicroSeconds interval7 = TTimeIntervalMicroSeconds(7000000);
+	TTimeIntervalMicroSeconds interval8 = TTimeIntervalMicroSeconds(8000000);
+    TTimeIntervalMicroSeconds timeoutValue = TTimeIntervalMicroSeconds(10000000);
+    
+    TUid uidWithTimer = iUidTestTimerPsy;
+	TUid uidWithoutTimer = iUidTestPsy1;
+    TInt errorsFound = KErrNone;
+    TBuf<150> buf;
+
+    SetupPsyL(iUidTestTimerPsy);
+
+    // Prepare for test
+    iPeriodicTester1 = CT_LbsClientPeriodicTester::NewL(interval0, KServiceName1, iLog, uidWithTimer, 0);
+    iPeriodicTester1->RequestNotification();
+    CActiveScheduler::Start();
+    iPeriodicTester1->ClosePositioner();
+
+	// 1.
+    _LIT(KPart1, "<<<<<<<<< PART1 >>>>>>>>>>");
+    INFO_PRINTF1(KPart1);
+    iPeriodicTester1->OpenPositionerL(KServiceName1);
+	iPeriodicTester1->ChangeTestParametersL(interval5, numberOfRuns);
+
+    iPeriodicTester1->RequestNotification();
+    CActiveScheduler::Start();
+    // Check that correct fix is returned
+    TPositionInfo posInfo;
+    iPeriodicTester1->GetPosition(posInfo);
+
+    TPosition pos;
+    posInfo.GetPosition(pos);
+    // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+    if (pos.Latitude() != 55.0|| pos.Longitude() != 55.0 || pos.Altitude() != 55.0)
+        {
+        _LIT(KErrorAndLeave, "Wrong position returned from tracking PSY");
+        LogErrorAndLeaveL(KErrorAndLeave);
+        }
+
+	iPeriodicTester1->ClosePositioner();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (1): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+    //Make another ordinary request
+    // Not included in TC
+    iPeriodicTester1->OpenPositionerL(KServiceName1);
+	iPeriodicTester1->ChangeTestParametersL(interval0, 0);
+	iPeriodicTester1->RequestNotification();
+
+	CActiveScheduler::Start();
+    iPeriodicTester1->GetPosition(posInfo);
+    posInfo.GetPosition(pos);
+    // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+    if (pos.Latitude() != 20.0|| pos.Longitude() != 20.0 || pos.Altitude() != 20.0)
+        {
+        _LIT(KErrorAndLeave, "Wrong position returned from PSY");
+        LogErrorAndLeaveL(KErrorAndLeave);
+        }
+
+    iPeriodicTester1->ClosePositioner();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (1_1): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+    ///////////////
+
+    // 2.
+    _LIT(KPart2, "<<<<<<<<< PART2 >>>>>>>>>>");
+    INFO_PRINTF1(KPart2);
+	SetupPsyL(uidWithoutTimer);
+	iPeriodicTester2 = CT_LbsClientPeriodicTester::NewL(interval5, KServiceName2, iLog, uidWithoutTimer, numberOfRuns);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+	iPeriodicTester2->ClosePositioner();
+
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (1): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+	
+    //Make another ordinary request
+    // Not included in TC
+    iPeriodicTester2->OpenPositionerL(KServiceName1);
+	iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    iPeriodicTester2->ClosePositioner();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (1_1): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+    ///////////////
+
+	// 3.
+    _LIT(KPart3, "<<<<<<<<< PART3 >>>>>>>>>>");
+    INFO_PRINTF1(KPart3);
+	SetupPsyL(uidWithTimer);
+	iPeriodicTester1->OpenPositionerL(KServiceName1);
+
+	iPeriodicTester1->ChangeTestParametersL(interval7, 3);
+	iPeriodicTester1->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (2): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+	
+	iPeriodicTester1->ChangeTestParametersL(interval4, 5);
+	iPeriodicTester1->RequestNotification();
+	CActiveScheduler::Start();
+	iPeriodicTester1->ClosePositioner();
+
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (3): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	// 4.
+    _LIT(KPart4, "<<<<<<<<< PART4 >>>>>>>>>>");
+    INFO_PRINTF1(KPart4);
+	SetupPsyL(uidWithoutTimer);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+	iPeriodicTester2->ChangeTestParametersL(interval7, 3);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (2): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+	
+	iPeriodicTester2->ChangeTestParametersL(interval4, 5);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+	iPeriodicTester2->ClosePositioner();
+
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (3): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+	
+	// 5.
+    _LIT(KPart5, "<<<<<<<<< PART5 >>>>>>>>>>");
+    INFO_PRINTF1(KPart5);
+	SetupPsyL(uidWithTimer);
+    iPeriodicTester1->OpenPositionerL(KServiceName1);
+	iPeriodicTester1->ChangeTestParametersL(interval4, 3);
+	iPeriodicTester1->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (4): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+    iPeriodicTester1->ChangeTestParametersL(interval0, 0);
+
+    iPeriodicTester1->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (4_1): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+    
+    TPositionInfo posInfo1;
+    iPeriodicTester1->GetPosition(posInfo1);
+
+    TPosition pos1;
+    posInfo1.GetPosition(pos1);
+    // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+    if (pos1.Latitude() != 20.0 || pos1.Longitude() != 20.0 || pos1.Altitude() != 20.0)
+        {
+        _LIT(KErrorAndLeave, "Wrong position returned from PSY, StopTracking has not been called");
+        LogErrorAndLeaveL(KErrorAndLeave);
+        }
+
+    iPeriodicTester1->ClosePositioner();
+
+	
+	// 6.
+    _LIT(KPart6, "<<<<<<<<< PART6 >>>>>>>>>>");
+    INFO_PRINTF1(KPart6);
+	SetupPsyL(uidWithoutTimer);
+    iPeriodicTester2->OpenPositionerL(KServiceName2);
+    // Make two requests (note that nr of requests made is 1 + 1, since one is
+    // made directly when calling RequestNotification)
+    iPeriodicTester2->ChangeTestParametersL(interval0, 1);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    iPeriodicTester2->ClosePositioner();
+
+
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (4): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+		
+	// 7.
+    _LIT(KPart7, "<<<<<<<<< PART7 >>>>>>>>>>");
+    INFO_PRINTF1(KPart7);
+    SetupPsyL(uidWithoutTimer);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+    iPeriodicTester2->ChangeTestParametersL(interval4, 3);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (5): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+    iPeriodicTester2->ClosePositioner();
+    
+	// 8.
+    _LIT(KPart8, "<<<<<<<<< PART8 >>>>>>>>>>");
+    INFO_PRINTF1(KPart8);
+	SetupPsyL(uidWithTimer);
+    iPeriodicTester1->OpenPositionerL(KServiceName1);
+    // Make two requests (note that nr of requests made is 1 + 1, since one is
+    // made directly when calling RequestNotification)
+    iPeriodicTester1->ChangeTestParametersL(interval0, 1);
+	iPeriodicTester1->RequestNotification();
+	CActiveScheduler::Start();
+
+    // Check that correct fix is returned
+    iPeriodicTester1->GetPosition(posInfo1);
+    posInfo1.GetPosition(pos1);
+    // TestTimerPsy returns 55.0 for Tracking requests and 20.0 for ordinary position requests
+    if (pos1.Latitude() != 20.0 || pos1.Longitude() != 20.0 || pos1.Altitude() != 20.0)
+        {
+        _LIT(KErrorAndLeave, "Wrong position returned from PSY, StopTracking has not been called");
+        LogErrorAndLeaveL(KErrorAndLeave);
+        }
+
+    iPeriodicTester1->ClosePositioner();
+    if (!iPeriodicTester1->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester1 returned error (5): %d");
+        buf.Format(KErr,iPeriodicTester1->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+    
+	// 9.
+    _LIT(KPart9, "<<<<<<<<< PART9 >>>>>>>>>>");
+    INFO_PRINTF1(KPart9);
+	SetupPsyL(uidWithoutTimer);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+    iPeriodicTester2->ChangeTestParametersL(interval4, 3);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (6): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+	
+	iPeriodicTester2->ChangeRequestorInformation(KServiceName3);
+	iPeriodicTester2->ChangeTestParametersL(interval4, 3);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (7): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+    iPeriodicTester2->ClosePositioner();
+    
+	// 10.
+    _LIT(KPart10, "<<<<<<<<< PART10 >>>>>>>>>>");
+    INFO_PRINTF1(KPart10);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+    iPeriodicTester2->ChangeTestParametersL(interval4, 0);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (8): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	iPeriodicTester2->ChangeTestParametersL(interval0, 0);
+    iPeriodicTester2->ClosePositioner();
+
+	// 11.
+    _LIT(KPart11, "<<<<<<<<< PART11 >>>>>>>>>>");
+    INFO_PRINTF1(KPart11);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+    iPeriodicTester2->ChangeTestParametersL(interval4, 0); //only one periodic
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+	iPeriodicTester2->ClosePositioner();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (9): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	// 12.
+    _LIT(KPart12, "<<<<<<<<< PART12 >>>>>>>>>>");
+    INFO_PRINTF1(KPart12);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+	iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (10): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+	
+    // Check that setting MaxAge does not "screw" things up
+    iPeriodicTester2->SetMaxAgeL(interval2);
+
+	iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (11): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	iPeriodicTester2->SetPartialUpdateL(ETrue);
+	iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (12): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	iPeriodicTester2->SetTimeOutL(timeoutValue); //must be greater than the interval
+	iPeriodicTester2->ChangeTestParametersL(interval8, 2);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    iPeriodicTester2->ClosePositioner();
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (13): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+	//13.
+    _LIT(KPart13, "<<<<<<<<< PART13 >>>>>>>>>>");
+    INFO_PRINTF1(KPart13);
+	iPeriodicTester2->OpenPositionerL(KServiceName2);
+    iPeriodicTester2->ChangeTestParametersL(interval4, 4);
+	iPeriodicTester2->SetChangeParametersPrematurely(ETrue);
+	iPeriodicTester2->RequestNotification();
+	CActiveScheduler::Start();
+    iPeriodicTester2->ClosePositioner();
+
+    if (!iPeriodicTester2->IsCompletedOK())
+        {
+        _LIT(KErr, "iPeriodicTester2 returned error (8): %d");
+        buf.Format(KErr,iPeriodicTester2->GetError());
+        INFO_PRINTF1(buf);
+        errorsFound++;
+        }
+
+    if (errorsFound != KErrNone)
+        {
+        _LIT(KErrorAndLeave, "Errors found in TP22");
+        LogErrorAndLeaveL(KErrorAndLeave);
+        }
+	}
+
+void CT_LbsClientPosTp22::CloseTest()
+	{
+	delete iPeriodicTester1;
+	iPeriodicTester1 = NULL;
+	delete iPeriodicTester2;
+	iPeriodicTester2 = NULL;
+	iRequestArray.Reset();
+	iRequestArray.Close();
+	}
+
+// End of file