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". |
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(); |