persistentstorage/sql/TEST/t_sqlbadclient.cpp
branchRCL_3
changeset 12 6b6fd149daa2
parent 0 08ec8eefde2f
equal deleted inserted replaced
11:211563e4b919 12:6b6fd149daa2
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    16 #include <e32test.h>
    16 #include <e32test.h>
    17 #include <bautils.h>
    17 #include <bautils.h>
    18 #include <e32math.h>
    18 #include <e32math.h>
    19 #include <sqldb.h>
    19 #include <sqldb.h>
    20 #include "SqlUtil.h"
    20 #include "SqlUtil.h"
       
    21 #include "SqlSrvStartup.h" //KSqlMajorVer, KSqlMinorVer, KSqlBuildVer
    21 
    22 
    22 ///////////////////////////////////////////////////////////////////////////////////////
    23 ///////////////////////////////////////////////////////////////////////////////////////
    23 
    24 
    24 static RFs TheFs;
    25 static RFs TheFs;
    25 RTest TheTest(_L("t_sqlbadclient test"));
    26 RTest TheTest(_L("t_sqlbadclient test"));
   170 
   171 
   171 //Test client SQL session class
   172 //Test client SQL session class
   172 class RTestSqlDbSession : public RSessionBase
   173 class RTestSqlDbSession : public RSessionBase
   173 	{
   174 	{
   174 public:	
   175 public:	
   175 	TInt Connect();
   176 	TInt Connect(const TVersion& aVersion);
   176 	void Close();
   177 	void Close();
   177 	TInt SendReceive(TInt aFunction);
   178 	TInt SendReceive(TInt aFunction);
   178 	TInt SendReceive(TInt aFunction, const TIpcArgs& aArgs);
   179 	TInt SendReceive(TInt aFunction, const TIpcArgs& aArgs);
   179 
   180 
   180 private:
   181 private:
   181 	TInt DoCreateSession();
   182 	TInt DoCreateSession(const TVersion& aVersion);
   182 	};
   183 	};
   183 	
   184 	
   184 TInt RTestSqlDbSession::Connect()
   185 TInt RTestSqlDbSession::Connect(const TVersion& aVersion)
   185 	{
   186 	{
   186 	TInt err = DoCreateSession();
   187 	TInt err = DoCreateSession(aVersion);
   187 	if(err == KErrNone)
   188 	if(err == KErrNone)
   188 		{
   189 		{
   189 		TIpcArgs ipcArgs(KTestDbName1().Length(), &KTestDbName1(), 0, 0);
   190 		TIpcArgs ipcArgs(KTestDbName1().Length(), &KTestDbName1(), 0, 0);
   190 		err = SendReceive(ESqlSrvDbOpen, ipcArgs);
   191 		err = SendReceive(ESqlSrvDbOpen, ipcArgs);
   191 		}
   192 		}
   213 TInt RTestSqlDbSession::SendReceive(TInt aFunction, const TIpcArgs& aArgs)
   214 TInt RTestSqlDbSession::SendReceive(TInt aFunction, const TIpcArgs& aArgs)
   214 	{
   215 	{
   215 	return RSessionBase::SendReceive(aFunction, aArgs);	
   216 	return RSessionBase::SendReceive(aFunction, aArgs);	
   216 	}
   217 	}
   217 
   218 
   218 TInt RTestSqlDbSession::DoCreateSession()
   219 TInt RTestSqlDbSession::DoCreateSession(const TVersion& aVersion)
   219 	{
   220 	{
   220 	const TInt KTimesToRetryConnection = 2;
   221 	const TInt KTimesToRetryConnection = 2;
   221 	TInt retry = KTimesToRetryConnection;
   222 	TInt retry = KTimesToRetryConnection;
   222 	_LIT(KSqlSrvName, "!SQL Server");//SqlDb server name
   223 	_LIT(KSqlSrvName, "!SQL Server");//SqlDb server name
   223 	//SQL server: major version number, minor version number, build number constants.
       
   224 	const TInt KSqlMajorVer = 1;
       
   225 	const TInt KSqlMinorVer = 1;
       
   226 	const TInt KSqlBuildVer = 0;
       
   227 	for(;;)
   224 	for(;;)
   228 		{
   225 		{
   229 		TInt err = CreateSession(KSqlSrvName, TVersion(KSqlMajorVer, KSqlMinorVer, KSqlBuildVer));
   226 		TInt err = CreateSession(KSqlSrvName, aVersion);
   230 		if(err != KErrNotFound && err != KErrServerTerminated)
   227 		if(err != KErrNotFound && err != KErrServerTerminated)
   231 			{
   228 			{
   232 			return err;
   229 			return err;
   233 			}
   230 			}
   234 		if(--retry == 0)
   231 		if(--retry == 0)
   284 
   281 
   285 	TThreadData* p = static_cast <TThreadData*> (aData);
   282 	TThreadData* p = static_cast <TThreadData*> (aData);
   286 	TTEST(p != NULL);
   283 	TTEST(p != NULL);
   287 	TThreadData& data = *p;
   284 	TThreadData& data = *p;
   288 
   285 
       
   286 	TVersion sqlSoftwareVersion(KSqlMajorVer, KSqlMinorVer, KSqlBuildVer);
   289 	RTestSqlDbSession sess;
   287 	RTestSqlDbSession sess;
   290 	TInt err = sess.Connect();
   288 	TInt err = sess.Connect(sqlSoftwareVersion);
   291 	TTEST2(err, KErrNone);
   289 	TTEST2(err, KErrNone);
   292 
   290 
   293 	while(++data.iIteration <= KTestIterCount)
   291 	while(++data.iIteration <= KTestIterCount)
   294 		{
   292 		{
   295 		PrintIterationCount(data.iIteration);
   293 		PrintIterationCount(data.iIteration);
   593 	TEST(err != KErrNone);
   591 	TEST(err != KErrNone);
   594 	err = RSqlDatabase::Delete(invalidFileName2);
   592 	err = RSqlDatabase::Delete(invalidFileName2);
   595 	TheTest.Printf(_L("Delete database-2, err=%d\r\n"), err);
   593 	TheTest.Printf(_L("Delete database-2, err=%d\r\n"), err);
   596 	TEST(err != KErrNone);
   594 	TEST(err != KErrNone);
   597 	}
   595 	}
   598 	
   596 
       
   597 /**
       
   598 @SYMTestCaseID          PDS-SQL-CT-4200
       
   599 @SYMTestCaseDesc        Invalid sql software version test.
       
   600 @SYMTestPriority        High
       
   601 @SYMTestActions			The test verifies that the SQL server checks that the software version of SQL sessions
       
   602 						to be created is less or equal to the current version of the server software. 
       
   603 						If that is not true then the SQL server does not create the session annd returns KErrNotSupported.
       
   604 @SYMTestExpectedResults Test must not fail
       
   605 @SYMDEF                 DEF145236
       
   606 */  
       
   607 void InvalidSoftwareVersionTest()
       
   608 	{
       
   609 	(void)RSqlDatabase::Delete(KTestDbName1);
       
   610 	RSqlDatabase db;
       
   611 	TInt err = db.Create(KTestDbName1);
       
   612 	TEST2(err, KErrNone);
       
   613 	db.Close();
       
   614 	
       
   615 	//Smaller version number
       
   616 	TVersion sqlSoftwareVersion1(1, 0, 0);
       
   617 	RTestSqlDbSession sess1;
       
   618 	err = sess1.Connect(sqlSoftwareVersion1);
       
   619 	sess1.Close();
       
   620 	TEST2(err, KErrNone);
       
   621 	
       
   622 	//Bigger version number 1
       
   623 	TVersion sqlSoftwareVersion2(1, 97, 3);
       
   624 	RTestSqlDbSession sess2;
       
   625 	err = sess2.Connect(sqlSoftwareVersion2);
       
   626 	TEST2(err, KErrNotSupported);
       
   627 	
       
   628 	//Bigger version number 2
       
   629 	TVersion sqlSoftwareVersion3(78, 0, 1);
       
   630 	RTestSqlDbSession sess3;
       
   631 	err = sess3.Connect(sqlSoftwareVersion3);
       
   632 	TEST2(err, KErrNotSupported);
       
   633 
       
   634 	//The current version number
       
   635 	TVersion sqlSoftwareVersion4(KSqlMajorVer, KSqlMinorVer, KSqlBuildVer);
       
   636 	RTestSqlDbSession sess4;
       
   637 	err = sess4.Connect(sqlSoftwareVersion4);
       
   638 	sess4.Close();
       
   639 	TEST2(err, KErrNone);
       
   640 	
       
   641 	(void)RSqlDatabase::Delete(KTestDbName1);
       
   642 	}
       
   643 
   599 void DoTests()
   644 void DoTests()
   600 	{
   645 	{
   601 	TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-1769 Bad client test "));
   646 	TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-1769 Bad client test "));
   602 	BadClientTest();
   647 	BadClientTest();
   603 	TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-UT-4048 Bad names test"));
   648 	TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-UT-4048 Bad names test"));
   604 	BadNameTest();
   649 	BadNameTest();
       
   650 	TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-CT-4200 Invalid software version test"));
       
   651 	InvalidSoftwareVersionTest();
   605 	}
   652 	}
   606 
   653 
   607 TInt E32Main()
   654 TInt E32Main()
   608 	{
   655 	{
   609 	TheTest.Title();
   656 	TheTest.Title();