featuremgmt/featureregistry/test/compositeromtesting/src/featregSetupTest.cpp
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/featuremgmt/featureregistry/test/compositeromtesting/src/featregSetupTest.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,320 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32test.h>
+#include <f32file.h>
+#include "featregcmn.h"
+#include <featreg.h>
+
+LOCAL_D RFs	TheFs;
+
+LOCAL_D RTest TheTest(_L("featregsetup OOM Test"));
+
+//Test macros and functions
+
+LOCAL_C void Check(TInt aValue, TInt aLine)
+	{
+	if(!aValue)
+		{
+		TheTest(EFalse, aLine);
+		}
+	}
+
+LOCAL_C void Check(TInt aValue, TInt aExpected, TInt aLine)
+	{
+	if(aValue != aExpected)
+		{
+		RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue);
+		TheTest(EFalse, aLine);
+		}
+	}
+
+#define TEST(arg) ::Check((arg), __LINE__)
+#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
+
+/**
+@SYMTestCaseID			SYSLIB-FEATREG-CT-3373
+@SYMTestCaseDesc		OOM Test for the function ReadMultipleFeatureFileToBuf
+@SYMTestPriority		High
+@SYMTestActions			OOM Testing the function ReadMultipleFeatureFileToBuf
+						when processing multiple featreg files from different rom section
+						Test relies on the additional ROFS2 and ROFS3 section
+						during buildrom time
+@SYMTestExpectedResults	The test must not fail.
+@SYMDEF				 	DEF101195
+*/	
+static void CompositeOOMTesting()
+	{
+		TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-FEATREG-CT-3373 Composite OOM Testing "));
+	TInt failAt=0;
+	TInt err=KErrNone;
+	do 
+		{
+		__UHEAP_MARK;
+  
+		// find out the number of open handles
+		TInt pHCountStart;
+		TInt tHCountStart;
+		RThread().HandleCount(pHCountStart,tHCountStart);
+
+		RBuf8 buffer;
+
+		__UHEAP_SETFAIL(RHeap::EDeterministic, failAt++);
+
+		err=ReadMultipleFeatureFileToBuf(TheFs,KFeatregRomPrivatePath,buffer);
+
+		__UHEAP_SETFAIL(RHeap::ENone, 0);
+
+		buffer.Close();
+
+		// check that no handles have leaked
+		TInt pHCountEnd;
+		TInt tHCountEnd;
+		RThread().HandleCount(pHCountEnd,tHCountEnd);
+
+		TEST2(pHCountStart,pHCountEnd);
+		TEST2(tHCountStart,tHCountEnd);
+		__UHEAP_MARKEND;
+		} 
+	while (err == KErrNoMemory);
+	RDebug::Print(_L("Allocation successful at count=%d"),failAt);
+ 	TEST2(err,KErrNone);	
+	}
+
+/**
+@SYMTestCaseID		SYSLIB-FEATREG-CT-3374
+@SYMTestCaseDesc		Tests the correct list of features are published by featregsetup
+					in a composite rom with multiple featreg files
+@SYMTestPriority		High
+@SYMTestActions		This will be completely testing the functionality from the client side point of view
+					whether the correct feature content is published.by featregsetup when
+					reading and processing multiple files.
+@SYMTestExpectedResults	The test must not fail.
+@SYMDEF				 	DEF101195
+                        PDEF113655
+*/	
+static void CompositeROMTestingL()
+	{
+	/**	
+	------------------------------------------------------------------
+	COMPOSITE ROM CONFIGURATION
+	MOUNTING CORE-ROFS1-ROFS2-ROFS3
+	F=FEATURE; XF=EXCLUDE_FEATURE DSR=DEFAULT SUPPORTED RANGE
+	------------------------------------------------------------------
+	CORE	 F: Fax(0x10279806) Usb(0x1027980B)(already included in DSR),OmaDsHostServers(0x10282663)
+			XF: -
+		   DSR: 0x10279806 - 0x10281805 (Default techview)
+	------------------------------------------------------------------	   							
+	ROFS2	 F: TestAA  
+			XF: TestBB, Fax, TestCC
+		   DSR: 0x10279806 - 0x10281805 (Default techview)
+		   		0x10288888 - 0x10299999
+		   		0x102AAAAA - 0x102BBBBB
+	------------------------------------------------------------------
+	ROFS3	 F: TestBB, Usb, TestCC (TestCC is in DSR range)
+			XF: TestAA, Usb    
+		   DSR: 0x10279806 - 0x10281805 (Default techview)
+		   		0x102CCCCC - 0x102DDDDD
+		   		0x1CCCCCCA - 0x1CCCCCCF
+	------------------------------------------------------------------	
+	*/
+		TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-FEATREG-CT-3374 Composite ROM Testing "));		
+	__UHEAP_MARK;
+	RFeatureRegistry featreg;
+	User::LeaveIfError(featreg.Open());
+	CleanupClosePushL(featreg);
+
+	//SINGLE ENTRY TEST	
+	//first test that the overriding feature are behaving as expected
+	TUid TestAA={0x1AAAAAAA};
+	TUid TestBB={0x1BBBBBBB};
+	TUid Usb={0x1027980B};
+	TUid Fax={0x10279806};
+	TUid OmaDHS={0x10282663};
+	TUid TestCC={0x1CCCCCCC};
+	
+	//as a result of the overriding ROFS3 will disable ROFS2 TestAA
+	//and ROFS3 will enable ROFS2 TestBB
+	//and ROFS2 will disable Fax from CORE
+	//
+	//PDEF113655: TestCC is in DSR. It is explicitly excluded in ROFS2 and is explicitly
+	//included in ROFS3. This tests that TestCC has not been optimised out of the config 
+	//because it is in the DSR  
+	
+	TUint32 info=0;
+	TEST2(featreg.QuerySupport(TestAA),0);
+	TEST2(featreg.QuerySupport(TestAA,info),0);	
+	TEST2(info,0);
+	TEST(featreg.QuerySupport(TestBB)>0);
+	TEST(featreg.QuerySupport(TestBB,info)>0);	
+	TEST2(info,1);
+	TEST2(featreg.QuerySupport(Fax),0);
+	TEST2(featreg.QuerySupport(Fax,info),0);
+	TEST2(info,0);
+	TEST(featreg.QuerySupport(Usb)>0);
+	TEST(featreg.QuerySupport(Usb,info)>0);	
+	TEST2(info,1);
+	TEST(featreg.QuerySupport(OmaDHS)>0);
+	TEST(featreg.QuerySupport(OmaDHS,info)>0);	
+	TEST2(info,1);
+	TEST(featreg.QuerySupport(TestCC)>0);
+	TEST(featreg.QuerySupport(TestCC,info)>0);	
+	TEST2(info,1);
+
+	//DEFAULT SUPPORTED RANGE TEST	
+	//now check the default CORE range(Exclude the fax as this is disabled)
+	for (TInt i=0x10279807;i<=0x10281805;i++)
+		{
+		TUid featUid={i};
+		TEST(featreg.QuerySupport(featUid)>0);
+		TEST(featreg.QuerySupport(featUid,info)>0);		
+		TEST2(info,1);		
+		}
+	//now check the range in ROFS2 and ROFS3
+	for (TInt j=0x10288888;j<=0x10299999;j++)
+		{
+		TUid featUid={j};
+		TEST(featreg.QuerySupport(featUid)>0);
+		TEST(featreg.QuerySupport(featUid,info)>0);					
+		TEST2(info,1);
+		}
+	for (TInt k=0x102AAAAA;k<=0x102BBBBB;k++)
+		{
+		TUid featUid={k};
+		TEST(featreg.QuerySupport(featUid)>0);
+		TEST(featreg.QuerySupport(featUid,info)>0);					
+		TEST2(info,1);		
+		}
+	for (TInt l=0x102CCCCC;l<=0x102DDDDD;l++)
+		{
+		TUid featUid={l};
+		TEST(featreg.QuerySupport(featUid)>0);
+		TEST(featreg.QuerySupport(featUid,info)>0);
+		TEST2(info,1);							
+		}
+	for (TInt m=0x1CCCCCCA;m<=0x1CCCCCCF;m++)
+		{
+		TUid featUid={m};
+		TEST(featreg.QuerySupport(featUid)>0);
+		TEST(featreg.QuerySupport(featUid,info)>0);
+		TEST2(info,1);							
+		}				
+	CleanupStack::PopAndDestroy();
+	__UHEAP_MARKEND;
+	}
+	
+/**
+@SYMTestCaseID		SYSLIB-FEATREG-CT-3375
+@SYMTestCaseDesc		Tests Corrupt file handling of ReadMultipleFeatureFileToBuf
+@SYMTestPriority		High
+@SYMTestActions		This test will test that if one of the configuration files is corrupt, the
+					ReadMultipleFeatureFileToBuf function will always return KErrCorrupt, also
+					ensure there is no memory leak when it returned KErrCorrupt.
+@SYMTestExpectedResults	The test must not fail.
+@SYMDEF				 DEF101195
+*/
+static void CompositeCorruptFileTesting()	
+	{
+		TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-FEATREG-CT-3375 Composite Corrupt Testing "));
+	__UHEAP_MARK;
+	
+	//both test files will be stored in z:\featregcomposite
+	//the featreg.cfg is ok but featreg.cfg[1-0] is a corrupt file
+	_LIT(KTestDirectory,"z:\\featregcomposite\\");
+	RBuf8 buffer;
+	TInt err=ReadMultipleFeatureFileToBuf(TheFs,KTestDirectory,buffer);	
+	TEST2(err,KErrCorrupt);
+	
+	__UHEAP_MARKEND;
+	}
+
+
+/**
+@SYMTestCaseID		SYSLIB-FEATREG-CT-3471
+@SYMTestCaseDesc		List Config Files Names Under Featreg Data cage
+@SYMTestPriority		High
+@SYMTestActions		This test returns in a list format the names of all the featreg config files in its data cage.
+					In order to validate EC114 Changes for FeatReg
+@SYMTestExpectedResults	Names of featreg config files is returned.
+@SYMDEF				 DEF104374
+*/
+static void OutputFileNameL()
+	{
+	TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-FEATREG-CT-3471 "));
+	_LIT(KFeatRegDir,"z:\\private\\102744CA\\*");
+	
+	CDir* dirList;
+	
+	User::LeaveIfError(TheFs.GetDir(KFeatRegDir, KEntryAttMaskSupported,ESortByName,dirList));
+	
+	RDebug::Print(_L("These are the files under z:\\private\\102744CA\\ "));
+	
+	for (TInt i=0;i<dirList->Count();i++)
+		{
+		RDebug::Print(_L(" %S "), &(*dirList)[i].iName);
+		}
+	    
+	delete dirList;	
+	}
+
+
+//Note that tests can be run in both emulator(automatic) and hardware(manual) however with some difference:
+//Emulator: Test relies on pre-generated cfg files which is copied and removed using a batch file
+//Hardware: Test will rely on the buildrom to generate the cfg files for each rom section, as this involes
+//			flashing additional rom sections to Techviwe NAND2 rom, this test is manual
+LOCAL_C void RunTestL()
+	{
+	User::LeaveIfError(TheFs.Connect());
+	
+	CompositeCorruptFileTesting();
+	CompositeOOMTesting();	
+	CompositeROMTestingL();
+	
+	OutputFileNameL();
+	
+	TheFs.Close();
+	}
+
+LOCAL_C TInt MainL()
+{
+	CActiveScheduler* scheduler = new(ELeave)CActiveScheduler;
+	CActiveScheduler::Install(scheduler);
+
+	TRAPD(err,RunTestL());
+    TEST2(err, KErrNone);
+    
+	delete scheduler;
+}
+
+GLDEF_C TInt E32Main()
+	{
+	__UHEAP_MARK;
+
+	TheTest.Title();
+	TheTest.Start(_L("Featregsetup Composite Testing"));
+
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+
+    TRAPD(err,MainL());
+	TEST2(err, KErrNone);
+
+	delete cleanup;
+	
+	TheTest.End();
+	TheTest.Close();
+	
+	__UHEAP_MARKEND;
+	return(0);
+	}