--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtest/integration/biomsg/src/t_bio.cpp Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,300 @@
+// Copyright (c) 1998-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:
+// Name of test harness: T_BIO
+// Component: SMOKE
+// Owner: KP
+// Brief description of test harness:
+// Sends, receives and parses Internet Configuration messages. An internet
+// connection is made using the received settings.
+// Detailed description of test harness:
+// As above
+// Input files required to run test harness:
+// \MSG\TEST\SMOKE\BIO\SCRIPT\BIOTEST.SCRIPT <DRIVE>:\msgtest\BIO\biotest.script
+// Intermediate files produced while running test harness:
+// None
+// Output files produced by running test harness:
+// <DRIVE>:\msglogs\T_BIO.<PLATFORM>.<VARIANT>.LOG.txt
+// Description of how to build test harness:
+// cd \msg\test\smoke\
+// bldmake bldfiles
+// abld test build
+// Description of how to run test harness:
+// The following instructions are the same for all platforms:
+// 1. Build T_DB test harness from COMMDB component:
+// cd \commdb\group
+// bldmake bldfiles
+// abld test build t_db
+// 2. Build the test utilities:
+// cd \msg\testutils\group\
+// bldmake bldfiles
+// abld build
+// 3. Build the BIO test utilities:
+// cd \biomsg\bits\
+// bldmake bldfiles
+// abld build
+// WINS running instructions:
+// 1. \epoc32\release\wins\<VARIANT>\T_BIO.exe can be used at the command prompt
+// or executable can be run from Windows Explorer.
+// All other platform running instructions:
+// 1. Copy \epoc32\release\<PLATFORM>\<VARIANT>\T_BIO.exe onto the other platform
+// 2. Copy \epoc32\release\<PLATFORM>\<VARIANT>\MSVTESTUTILS.DLL into
+// <DRIVE>:\system\libs on the other platform
+// 3. Copy \epoc32\release\<PLATFORM>\<VARIANT>\EMAILTESTUTILS.DLL into
+// <DRIVE>:\system\libs on the other platform
+// 4. Copy \epoc32\release\<PLATFORM>\<VARIANT>\SMSTESTUTILS.DLL into
+// <DRIVE>:\system\libs on the other platform
+// 5. Copy \epoc32\release\<PLATFORM>\<VARIANT>\BITS.DLL into
+// <DRIVE>:\system\libs on the other platform
+// 4. Run T_BIO.exe on the other platform
+//
+//
+
+#include <e32uid.h>
+#include <e32test.h>
+#include <watcher.h>
+#include <txtrich.h>
+#include <smuthdr.h>
+#include <commdb.h>
+
+#include "t_bio.h"
+#include "sendrecv.h"
+#include "parsertest.h"
+
+const TTimeIntervalMicroSeconds32 KWaitForWatchersToStart = 40000000;
+const TTimeIntervalMicroSeconds32 KWaitForWatchersToStartDisplayInterval = 5000000;
+const TTimeIntervalMicroSeconds32 KWaitForWatchersToDie = 5000000;
+
+RTest test(_L("T_Bio Biomsg SmokeTestrig"));
+CTrapCleanup* theCleanup;
+
+
+LOCAL_C void doMainL()
+ {
+ CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install( scheduler );
+
+ CBioSmokeTest* bioSmokeTest = CBioSmokeTest::NewL(test);
+ CleanupStack::PushL(bioSmokeTest);
+
+ bioSmokeTest->StartL();
+
+ CleanupStack::PopAndDestroy(2); //SmsTest, scheduler
+ }
+
+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);
+ }
+
+
+// CEntryObserver
+//
+CEntryObserver::CEntryObserver( CSmsTestUtils& aTestUtils, CMsvEntrySelection& aReceived, const TInt& aCurrentMessageNum)
+: CBase(), iTestUtils(aTestUtils), iReceived(aReceived), iCurrentMessageNum(aCurrentMessageNum)
+ {
+ }
+
+
+CEntryObserver::~CEntryObserver()
+ {
+ delete iNew;
+ }
+
+void CEntryObserver::HandleEntryEventL(TMsvEntryEvent aEvent, TAny* aArg1, TAny* /*aArg2*/, TAny* /*aArg3*/)
+ {
+ if (aEvent == EMsvNewChildren && iCurrentMessageNum > -1)
+ {
+ delete iNew;
+ iNew = NULL;
+ iNew = ((CMsvEntrySelection*)aArg1)->CopyL();
+
+ TInt count = iNew->Count();
+
+ CSmsHeader* header = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *iTestUtils.iRichText);
+ CleanupStack::PushL(header);
+
+ TInt msgRecv = 0;
+
+ while (count--)
+ {
+ TMsvId id = iNew->At(count);
+ iTestUtils.SetEntryL(id);
+
+ CMsvStore* store = iTestUtils.ReadStoreL();
+ CleanupStack::PushL(store);
+
+ header->RestoreL(*store);
+
+ if (header->Type() == CSmsPDU::ESmsDeliver)
+ {
+ iReceived.AppendL(id);
+ msgRecv++;
+ }
+
+ CleanupStack::PopAndDestroy(); //store
+ }
+
+ CleanupStack::PopAndDestroy(); //header
+
+ if (msgRecv)
+ iTestUtils.Printf(_L("%d Messages Received in inbox\n"), msgRecv);
+
+ }
+ }
+
+//
+// CBioSmokeTest
+//
+CBioSmokeTest::~CBioSmokeTest()
+ {
+ CancelWatcher();
+ // delete everything
+ delete iTimer;
+
+ delete iSendReceive;
+ delete iParserTest;
+
+ delete iEntryObserver;
+ delete iReceived;
+ delete iEntryForObserver;
+
+ delete iSmsTestUtils;
+
+ delete iWatcher;
+
+ iSocket.Close();
+ iSocketServ.Close();
+ }
+
+CBioSmokeTest::CBioSmokeTest()
+ {
+ }
+
+CBioSmokeTest* CBioSmokeTest::NewL(RTest& aTest)
+ {
+ CBioSmokeTest* self = new (ELeave) CBioSmokeTest();
+ CleanupStack::PushL(self);
+
+ self->ConstructL(aTest);
+
+ CleanupStack::Pop();
+ return self;
+ }
+
+void CBioSmokeTest::StartL()
+ {
+ // fire up the watcher
+ StartWatcherL();
+ // send receive
+
+ iBioSmokeState = EBioSmokeSendRecv;
+
+ // create the send receive
+ iSendReceive = CSendReceive::NewL(*iSmsTestUtils);
+ iSendReceive->StartL(iReceived);
+
+ delete iSendReceive;
+ iSendReceive = NULL;
+
+ // test parser
+ iParserTest = CParserTest::NewL(*iSmsTestUtils);
+ iParserTest->StartL(iReceived);
+ }
+
+void CBioSmokeTest::ConstructL(RTest& aTest)
+ {
+ iSmsTestUtils = CSmsTestUtils::NewL(aTest);
+ iSmsTestUtils->SetLogToFile();
+
+ iSmsTestUtils->NotifySaPhoneOnL();
+
+ User::LeaveIfError(iSocketServ.Connect());
+ TProtocolDesc protoinfo;
+ TProtocolName protocolname(KSmsDatagram);
+ User::LeaveIfError(iSocketServ.FindProtocol(protocolname,protoinfo));
+ User::LeaveIfError(iSocket.Open(iSocketServ,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol));
+
+ TSmsAddr smsaddr;
+ smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly);
+ User::LeaveIfError(iSocket.Bind(smsaddr));
+
+ iSmsTestUtils->WaitForInitializeL();
+ }
+
+void CBioSmokeTest::StartWatcherL()
+ {
+ test.Next(_L("Start the Watcher"));
+
+ delete iReceived;
+ iReceived = new (ELeave) CMsvEntrySelection();
+
+ delete iEntryObserver;
+ iEntryObserver = new (ELeave) CEntryObserver(*iSmsTestUtils, *iReceived, iCurrentMessageNum);
+
+ delete iEntryForObserver;
+ iEntryForObserver = Session().GetEntryL(KMsvGlobalInBoxIndexEntryId);
+ iEntryForObserver->AddObserverL(*iEntryObserver);
+
+ // Create the watcher
+ delete iWatcher;
+ iWatcher = NULL;
+ iWatcher = CTestUtilsWatcherStarter::NewL(CActive::EPriorityStandard);
+
+ TTimeIntervalMicroSeconds32 wait = KWaitForWatchersToStart;
+ CTestTimer* timer = CTestTimer::NewL();
+
+ while (wait.Int() > 0)
+ {
+ iSmsTestUtils->Printf(_L("Waiting %d secs for watchers to start...\n"), wait.Int() / 1000000);
+ timer->After(KWaitForWatchersToStartDisplayInterval);
+ wait = wait.Int() - KWaitForWatchersToStartDisplayInterval.Int();
+ CActiveScheduler::Start();
+ }
+
+ delete timer;
+ }
+
+void CBioSmokeTest::CancelWatcher()
+ {
+ if (iWatcher)
+ {
+ iWatcher->Cancel();
+ CActiveScheduler::Start();
+ delete iWatcher;
+ iWatcher = NULL;
+
+ iSmsTestUtils->Printf(_L("Waiting %d seconds for the watchers to die\n"), KWaitForWatchersToDie.Int() / 1000000);
+
+ CTestTimer* timer = NULL;
+ TRAPD(ret,timer=CTestTimer::NewL());
+ if (ret==KErrNone)
+ {
+ timer->After(KWaitForWatchersToDie);
+ CActiveScheduler::Start();
+ delete timer;
+ }
+ iSmsTestUtils->TestHarnessCompleted();
+ }
+ }