localisation/apparchitecture/tef/T_AppListFileBootStep.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localisation/apparchitecture/tef/T_AppListFileBootStep.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,285 @@
+// Copyright (c) 2006-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:
+// Note: With PREQ1228, we introduced "REQ5896:Load application information from a single file".
+// This PREQ is tested with the following two test steps:
+// T_AppListBootStep (only run for emulator, as it requires epoc restart)
+// |___ (APPFWK-APPARC-0033) Tests that the application information file (AppsList.bin) is created 
+// |		if it does not exists, and we reboot the phone.
+// |___ (APPFWK-APPARC-0034) Tests that the Short Caption associated with an app is restored to
+// its original value when the phone is restarted.
+// T_AppListUpdateStep
+// |___ (APPFWK-APPARC-0035) Tests that the application information file (AppsList.bin) is created 
+// |		if it does not exists, and we force a registration.
+// |___ (APPFWK-APPARC-0032) Tests that the application information file (AppsList.bin) is updated 
+// whenever a new application is installed.
+// 
+//
+
+
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+
+#include <apgcli.h>
+#include "T_AppListFileBootStep.h"
+
+
+_LIT(KAppListFileName,"c:\\private\\10003a3f\\AppsListCache\\AppsList.bin");
+_LIT(KShortCaption1, "SC1");
+_LIT(KOriginalShortCaption, "TC UK");
+
+const TUid KUidTestApp={10};
+const TInt KMaxTimeCount = 18;						// 18 * 10 sec == 180 seconds
+
+
+/**
+Call base class method to set up the human readable name for logging TestStepName
+iBootType value set as per aBootType
+*/
+CT_AppListFileBootStep::CT_AppListFileBootStep(TInt aBootType)
+	{
+	iBootType = aBootType;
+	if(iBootType == 1)
+		{
+		SetTestStepName(KT_AppListFile_Boot1);
+		}
+	else if(iBootType == 2)
+		{
+		SetTestStepName(KT_AppListFile_Boot2);
+		}
+	else
+		{
+		SetTestStepName(KT_AppListFile_Boot3);
+		}
+	}
+
+
+CT_AppListFileBootStep::~CT_AppListFileBootStep()
+	{
+	}
+
+
+TVerdict CT_AppListFileBootStep::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test step started...."));
+
+#ifdef __WINS__
+ 	__UHEAP_MARK;
+	TRAPD(ret, DoTestL());
+	TEST(ret == KErrNone);
+ 	INFO_PRINTF2(_L("DoTestL() finished with return code '%d'"), ret);
+  	__UHEAP_MARKEND;
+#else
+ 	INFO_PRINTF1(_L("TEST NOT RUN! - T_AppListFile_BootX tests are meant only to run on Emulator"));
+ 	TEST(EFalse);
+#endif
+
+	INFO_PRINTF1(_L("....test step finished!"));
+	return TestStepResult();	
+	}
+
+
+/**
+   @SYMTestCaseID 	APPFWK-APPARC-0033, APPFWK-APPARC-0034
+  
+   @SYMPREQ 		PREQ1228 (CR0831)
+   
+   @SYMREQ			REQ5896
+   
+   @SYMTestPriority High 
+   
+   @SYMTestType		CIT
+  
+   @SYMTestCaseDesc Tests that the application information file (AppsList.bin) is created if it does 
+   					not exists, and we reboot the phone.
+   					Tests that the Short Caption associated with an app is restored to its original 
+   					value when the phone is restarted.
+     
+   @SYMTestStatus 	Implemented
+   
+   @SYMTestActions This tests the update of the applist file in \\private\\10003a3f\\import\\\apps\\.
+   			The sequence is as follows:
+   			(BOOT - 1)
+   				1.- Check the applist file exists. It must exists.
+   				2.- Delete the applist file.
+   			(BOOT - 2)
+   				3.- Check the applist file does not exist.
+   				4.- Check the applist is created after a short period of time.
+   				5.- Set short caption of a test app to a custom value.
+   			(BOOT - 3)
+   				6.- Check short caption of the test app is restored to its original value.
+   
+   @SYMTestExpectedResults	For Boot1 AppList File must exist when the test starts, but not when it finishes.
+   							For Boot2 AppList File must not exist when the test starts, but is created later on.
+   							For Boot3 ShortCaption for tstapp.exe must return to original short caption
+ */
+ 
+ void CT_AppListFileBootStep::DoTestL()
+ 	{
+ 	TInt ret = iUtils.Connect();
+	TEST(ret==KErrNone);
+	
+	TBool present = EFalse;
+	ret = iUtils.IsFilePresent(KAppListFileName, present);
+	TEST(ret == KErrNone);
+	
+	switch(iBootType)
+		{
+		case 1:
+			{
+			INFO_PRINTF1(_L("Starting test case: APPFWK-APPARC-0033"));
+			// Check the file is present, or wait until it is. When/If present, delete it.
+ 			INFO_PRINTF1(_L("The should file exists (as no other test have removed it), so then this test should delete it:"));			
+			present = CheckForFilePresent();			
+			TEST(present);
+			if (present)
+				{
+				DeleteAppListFileL(KAppListFileName);
+				}
+ 			INFO_PRINTF1(_L("APPFWK-APPARC-0033 Test Continues... with Boot2 script"));			
+			}
+			break;
+			
+		case 2:
+			{
+ 			INFO_PRINTF1(_L("APPFWK-APPARC-0033 Test Continues... from Boot1 script"));			
+			// Check the file not present, and then wait until it is.
+ 			INFO_PRINTF1(_L("The file should not exist as it has been deleted by Boot1, otherwise the test fails:"));			
+			TEST(!present);
+			present = CheckForFilePresent();			
+			TEST(present);
+	 		INFO_PRINTF1(_L("APPFWK-APPARC-0033 Test Finished!"));
+
+			INFO_PRINTF1(_L("Starting test case: APPFWK-APPARC-0034"));
+			SetShortCaptionSettings();
+ 			INFO_PRINTF1(_L("APPFWK-APPARC-0034 Test Continues... with Boot3 script"));			
+			}
+			break;
+		
+		case 3:
+			{
+ 			INFO_PRINTF1(_L("APPFWK-APPARC-0034 Test Continues... from Boot2 script"));
+	 		TestShortCaptionSettings();
+	 		INFO_PRINTF1(_L("APPFWK-APPARC-0034 Test Finished!"));
+	 		}
+			break;
+		}
+ 	iUtils.Close();
+ 	}
+
+
+/*
+It will delete the applistfile created by apparc component to test the change in the bootup time.
+*/
+void CT_AppListFileBootStep::DeleteAppListFileL(const TDesC& aFileName)
+	{
+	INFO_PRINTF2(_L("Delete AppList file '%S'..."), &aFileName);
+
+	TInt ret = iUtils.SetReadOnly(aFileName, 0);
+	TEST(ret == KErrNone);
+	
+	ret = iUtils.DeleteFileL(aFileName);
+	TEST(ret == KErrNone);
+	}
+
+
+/*
+Checks whether the "AppList.Bin" exists, if not waits for a maximum time of (KMaxTimeCount * 10) seconds for the file to create. 
+Else the test fails.
+*/
+TBool CT_AppListFileBootStep::CheckForFilePresent()
+	{
+	INFO_PRINTF2(_L("Wait for a maximum time of '%d' secs for the file to be created"), KMaxTimeCount * 10);
+
+	TBool present = EFalse;
+	for (TInt index = 0; present == EFalse && index < KMaxTimeCount; index++)
+		{
+		TEST(iUtils.IsFilePresent(KAppListFileName, present) == KErrNone);
+		if (present)
+			{
+			INFO_PRINTF2(_L("AppList file is successfully created after '%d' seconds!"), index * 10);
+			break;
+			}
+		// wait 10 secs before trying again in the next loop
+		User::After(10 * 1000000);	
+		}
+
+	if (!present)
+		{
+		INFO_PRINTF2(_L("AppList file was NOT created after '%d' seconds"), KMaxTimeCount * 10);
+		}
+
+	return present;
+	}
+
+
+/*
+Testing whether short caption for test app is set as the original short caption
+*/
+void CT_AppListFileBootStep::TestShortCaptionSettings()
+	{
+	INFO_PRINTF1(_L("Testing whether short caption for test app is set as the original short caption"));
+
+	TInt err = iSession.Connect();
+	TEST(err == KErrNone);
+
+	TApaAppInfo info1;
+	err = iSession.GetAppInfo(info1, KUidTestApp);
+	TEST(err == KErrNone);
+	
+	TBuf<10> expected;
+	expected.Format(KOriginalShortCaption);
+	TBuf<10> actual;
+	actual.Format(info1.iShortCaption);
+	INFO_PRINTF3(_L("Short Caption Settings: Expected '%S', Actual '%S'"), &expected, &actual);
+	TEST(info1.iShortCaption==KOriginalShortCaption);
+
+	// close session and finish
+	iSession.Close();
+	}
+	
+
+/*
+Sets the short caption for tstapp.exe to KShortCaption1
+*/
+void CT_AppListFileBootStep::SetShortCaptionSettings()
+	{
+	INFO_PRINTF2(_L("Setting short caption settings to '%S'..."), &KShortCaption1);
+
+	TInt err = iSession.Connect();
+	TEST(err == KErrNone);
+	err = iSession.SetAppShortCaption(KShortCaption1, ELangEnglish, KUidTestApp);
+	TEST(err == KErrNone);
+	
+	// wait 2.5 secs for the caption to be updated
+	User::After(2500000);
+
+	TApaAppInfo info1;
+	err = iSession.GetAppInfo(info1, KUidTestApp);
+	TEST(err == KErrNone);
+	
+	TBuf<10> expected;
+	expected.Format(KShortCaption1);
+	TBuf<10> actual;
+	actual.Format(info1.iShortCaption);
+	INFO_PRINTF3(_L("Short Caption Settings: Expected '%S', Actual '%S'"), &expected, &actual);
+	TEST(info1.iShortCaption==KShortCaption1);
+
+	// close session and finish
+	iSession.Close();
+	}