--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtest/integration/sms/src/t_sms.cpp Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,191 @@
+// Copyright (c) 2000-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:
+// GT Messaging Test Harness T_SMS
+// Test Harness: T_SMS
+// Component: SMS
+// Owner: AA
+// Brief Description: GT Messaging SMS Smoke Test
+// Detailed Description: Tests
+// - SMS Client MTM
+// - SMS utility classes (CSmsHeader, CSmsNumber, CSmsSettings, TSmsUtilities)
+// - Reading and writing Service Centres on the SIM
+// - Reading and writing messages to the SIM
+// - Sending and receiving messages
+// Input Files REQUIRED:
+// <DRIVE>:\msgtest\sms\defaults.script
+// <DRIVE>:\msgtest\sms\smoke_recv.script
+// <DRIVE>:\msgtest\sms\smoke_enum.script
+// Intermediate Files Produced: None
+// Output files produced: <DRIVE>:\msglogs\T_Sms.<PLATFORM>.<VARIANT>.log
+// Building Instructions:
+// cd \msg\test\smoke\
+// bldmake bldfiles
+// abld test build
+// Running Instructions:
+// All Platforms:
+// 1. Build T_DB test harness from COMMDB component:
+// cd \commdb\group
+// bldmake bldfiles
+// abld test build t_db
+// 2. Run T_DB and select the your modem (probably GSM Mobile Phone)
+// 3. Build the test utilities:
+// cd \msg\testutils\group\
+// bldmake bldfiles
+// abld test build
+// 4. Edit \epoc32\wins\c\msgtest\sms\defaults.script. Replace the telephone number ("Recipients") with your mobile's number. You may also need to change the service centre ("SC") number (the default is for Vodafone UK).
+// WINS Only:
+// 1. Run T_DB.exe (if it has not already been run) and select your modem (GSM mobile phone).
+// 2. \epoc32\release\wins\<VARIANT>\T_Sms.exe can be used at the command prompt or executable can be run from Windows Explorer.
+// Platform other than WINS:
+// 1. Copy \epoc32\release\<PLATFORM>\<VARIANT>\T_Sms.exe onto the other platform (or onto the CF card)
+// 2. Copy \epoc32\release\<PLATFORM>\<VARIANT>\T_DB.exe onto the other platform (or onto the CF card)
+// 3. Copy \epoc32\release\<PLATFORM>\<VARIANT>\MsvTestUtils.DLL into <DRIVE>:\system\libs on the other platform (or onto the CF card)
+// 4. Copy \epoc32\release\<PLATFORM>\<VARIANT>\SmsTestUtils.DLL into <DRIVE>:\system\libs on the other platform (or onto the CF card)
+// 5. Copy \epoc32\wins\c\msgtest\sms\smoke_recv.script, smoke_enum.script and defaults.script into <DRIVE>:\msgtest\sms on the other platform (or onto the CF card)
+// 6. Run T_DB.exe on the other platform (if it has not already been run) and select your modem (GSM mobile phone).
+// 7. Run T_Sms.exe on the other platform.
+//
+//
+
+#include <e32test.h>
+#include <e32uid.h>
+#include <e32std.h>
+
+#include <barsc.h>
+#include <smsuaddr.h>
+
+// Test code header files
+#include "T_SmsEnum.h"
+#include "T_smcm.h"
+#include "T_SmsSc.h"
+#include "T_SmsSendRecv.h"
+
+RTest test(_L("T_Sms Smokin' Testrig"));
+CTrapCleanup* theCleanup;
+
+_LIT(KSmsEnumTest, "smoke_enum.script");
+_LIT(KSmsRecvTest, "smoke_recv.script");
+_LIT(KBetweenTests, "############################################################\n");
+
+const TInt KWaitForWatchersToStart = 15000000; //10 secs
+
+LOCAL_C void PrintTestStart(CSmsTestBase& aTestBase)
+ {
+ TPtrC name(aTestBase.TestName());
+ aTestBase.SmsTest().Printf(KBetweenTests);
+ aTestBase.SmsTest().Printf(_L("Starting %S Test\n"), &name);
+ aTestBase.SmsTest().Printf(KBetweenTests);
+ }
+
+LOCAL_C void PrintTestFail(CSmsTestBase& aTestBase)
+ {
+ TPtrC name(aTestBase.TestName());
+ aTestBase.SmsTest().Printf(KBetweenTests);
+ aTestBase.SmsTest().Printf(_L("%S Test Failed with %d\n"), &name, aTestBase.Error());
+ aTestBase.SmsTest().Printf(KBetweenTests);
+ }
+
+LOCAL_C void StartAndVerifyTestCompleteL(CSmsTestBase& aTestBase)
+ {
+ PrintTestStart(aTestBase);
+ aTestBase.StartL();
+ if (!aTestBase.Complete())
+ {
+ PrintTestFail(aTestBase);
+ User::Leave(aTestBase.Error());
+ }
+ }
+
+LOCAL_C void doMainL()
+ {
+ // Open the socket server
+
+ RSocketServ serv;
+ RSocket socket;
+
+ User::LeaveIfError(serv.Connect());
+ CleanupClosePushL(serv);
+
+ TProtocolDesc protoinfo;
+ TProtocolName protocolname(KSmsDatagram);
+ User::LeaveIfError(serv.FindProtocol(protocolname,protoinfo));
+ User::LeaveIfError(socket.Open(serv,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol));
+
+ TSmsAddr smsaddr;
+ smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly);
+ User::LeaveIfError(socket.Bind(smsaddr));
+
+ CleanupClosePushL(socket);
+
+ CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install( scheduler );
+
+ CSmsTestUtils* smsTest = CSmsTestUtils::NewLC(test);
+ smsTest->iSmokeTest = ETrue;
+
+ TInt currentTest = 0;
+
+ smsTest->NotifySaPhoneOnL();
+ smsTest->WaitForInitializeL();
+
+ //Start the watchers
+ CMsvOperationWait* wait = CMsvOperationWait::NewLC();
+ smsTest->Printf(_L("Waiting %d secs for watchers to start\n"), KWaitForWatchersToStart / 1000000);
+ CTestUtilsWatcherStarter* watchers = CTestUtilsWatcherStarter::NewL(wait->iStatus, KWaitForWatchersToStart);
+ wait->Start();
+ CActiveScheduler::Start();
+ CleanupStack::PopAndDestroy(wait);
+ CleanupStack::PushL(watchers);
+
+ CSmsTestBase* testBase = CSmsScTest::NewLC(*smsTest, KNullDesC, currentTest);
+ StartAndVerifyTestCompleteL(*testBase);
+ CleanupStack::PopAndDestroy(testBase);
+
+ testBase = CSmsEnumTest::NewLC(*smsTest, KSmsEnumTest, currentTest);
+ StartAndVerifyTestCompleteL(*testBase);
+ CleanupStack::PopAndDestroy(testBase);
+
+ testBase = CSmsSendRecvTest::NewLC(*smsTest, KSmsRecvTest, currentTest);
+ StartAndVerifyTestCompleteL(*testBase);
+ CleanupStack::PopAndDestroy(testBase);
+
+ testBase = CSmcmTest::NewLC(*smsTest, KNullDesC, currentTest);
+ StartAndVerifyTestCompleteL(*testBase);
+ CleanupStack::PopAndDestroy(testBase);
+
+ testBase = CSmutTest::NewLC(*smsTest, KNullDesC, currentTest);
+ StartAndVerifyTestCompleteL(*testBase);
+ CleanupStack::PopAndDestroy(testBase);
+
+ CleanupStack::PopAndDestroy(3); //SmsTest, scheduler, watchers
+
+ CleanupStack::PopAndDestroy(&socket);
+ CleanupStack::PopAndDestroy(&serv);
+ }
+
+GLDEF_C TInt E32Main()
+ {
+ __UHEAP_MARK;
+ test.Start(_L("Setup"));
+ theCleanup = CTrapCleanup::New();
+ TRAPD(ret,doMainL());
+// test(ret==KErrNone);
+ delete theCleanup;
+ test.Console()->SetPos(0, 13);
+ test.End();
+ test.Close();
+ __UHEAP_MARKEND;
+ return(KErrNone);
+ }