--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtest/integration/email/src/t_email.cpp Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,235 @@
+// 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:
+// Name of test harness: T_EMAIL
+// Owner: EH
+// Brief description of test harness:
+// Sends mail via SMTP and retrieves mail via POP3.
+// Detailed description of test harness:
+// As above
+// Input files required to run test harness:
+// None
+// Intermediate files produced while running test harness:
+// None
+// Output files produced by running test harness:
+// <DRIVE>:\msglogs\T_EMAIL.<PLATFORM>.<VARIANT>.LOG.txt
+// Description of how to build test harness:
+// cd \msg\test\smoke\email
+// bldmake bldfiles
+// abld 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
+// WINS running instructions:
+// 1. \epoc32\release\wins\<VARIANT>\T_EMAIL.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_EMAIL.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. Run T_EMAIL.exe on the other platform
+//
+//
+
+
+#include "emailsmoke.h"
+#include "emailsmokeparse.h"
+#include <bacline.h>
+
+
+// For loading the serial comms device drivers
+#if defined (__WINS__)
+ #define PDD_NAME _L("ECDRV")
+ #define LDD_NAME _L("ECOMM")
+#else
+ #define PDD_NAME _L("EUART1")
+ #define LDD_NAME _L("ECOMM")
+#endif
+
+_LIT(KTestParams,"-testparams");
+_LIT(KNewLogFile,"newlog");
+enum TCmdLineArgs
+ {
+ EArgProgramName,
+ EArgTestParams,
+ EArgScriptFile,
+ EArgNewLogFile,
+ EArgEnd
+ };
+
+// this is used if we can't find MsgLogs anywhere
+_LIT(KMsvPathSep,"\\");
+_LIT(KMsvTestFileInputBase,"MsgTest");
+
+TInt ResolveFile(RFs& aFs, const TDesC& aComponent, const TDesC& aFileName, TParse& aParseOut)
+ {
+ TFileName* savedPath = new TFileName;
+ TFileName* fileName = new TFileName;
+ if ((savedPath == NULL) || (fileName == NULL))
+ return KErrNoMemory;
+
+ fileName->Append(KMsvPathSep);
+ fileName->Append(KMsvTestFileInputBase);
+ fileName->Append(KMsvPathSep);
+ fileName->Append(aComponent);
+ fileName->Append(KMsvPathSep);
+ fileName->Append(aFileName);
+
+ // file finder will look in the session drive first, then Y->A,Z
+ // so set session drive to Y (save old and restore it afterwards)
+ aFs.SessionPath(*savedPath);
+ _LIT(KTopDrive,"Y:\\");
+ aFs.SetSessionPath(KTopDrive);
+ TFindFile file_finder(aFs);
+ TInt err = file_finder.FindByDir(*fileName,KNullDesC);
+ if(err==KErrNone)
+ aParseOut.Set(file_finder.File(),NULL,NULL);
+ aFs.SetSessionPath(*savedPath);
+ delete savedPath;
+ delete fileName;
+ return(err);
+ }
+
+//
+//
+// Main Test Harness
+//
+
+LOCAL_D CTrapCleanup* theCleanup;
+
+void doMainL()
+ {
+ RTest test(_L("Email smoke tests"));
+ RFs fs;
+ fs.Connect();
+
+ // Load the serial comms device drivers. If this is not done,
+ // connecting via NT-RAS returns KErrNotFound (-1).
+ TInt driverErr;
+ driverErr=User::LoadPhysicalDevice(PDD_NAME);
+ if (driverErr!=KErrNone && driverErr!=KErrAlreadyExists)
+ User::Leave(driverErr);
+ driverErr=User::LoadLogicalDevice(LDD_NAME);
+ if (driverErr!=KErrNone && driverErr!=KErrAlreadyExists)
+ User::Leave(driverErr);
+
+
+ CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+ CActiveScheduler::Install(scheduler);
+ CleanupStack::PushL(scheduler);
+
+ // Handle command line arguments
+ CCommandLineArguments* cmdLineArg=CCommandLineArguments::NewLC();
+ TInt count = cmdLineArg->Count();
+ TBool isCmdLine=FALSE;
+ TBool keepLogFile=TRUE;
+ if (count>2) // Command line arguments?
+ {
+ if ((!(cmdLineArg->Arg(EArgTestParams).Compare(KTestParams))) && (count==EArgNewLogFile || count==EArgEnd))
+ {
+ isCmdLine=TRUE;
+ if (count==EArgEnd)
+ if (!(cmdLineArg->Arg(EArgNewLogFile).Compare(KNewLogFile)))
+ keepLogFile=FALSE;
+ }
+ }
+ CTestScript* script = CTestScript::NewL(fs);
+ CleanupStack::PushL(script);
+ TParse scriptFileName;
+
+ TInt err;
+ TBuf<100> buf;
+ if (isCmdLine)
+ {
+ TLex lex(cmdLineArg->Arg(EArgScriptFile));
+ buf=lex.NextToken();
+ test.Printf(_L("Script file: %S\n"),&buf);
+ }
+ else
+ buf=_L("script.txt");
+
+ CEmailTestUtils* testUtils = CEmailTestUtils::NewL(test,keepLogFile? ETuKeepLogFile:0);
+ CleanupStack::PushL(testUtils);
+
+ err = ResolveFile(fs, _L("emailsmoke"), buf, scriptFileName);
+ if (err != KErrNone)
+ {
+ if (keepLogFile)
+ testUtils->WriteComment(KTestHeader);
+ testUtils->Printf(_L("Could not find script file:%S"),&buf);
+ }
+ script->LoadFileL(scriptFileName.FullName());
+
+ CMainTestHarness* mainTest = CMainTestHarness::NewL(test);
+ CleanupStack::PushL(mainTest);
+ TTestDebugInfo debugInfo(*script, 0, 0);
+ mainTest->SetDebugInfo(debugInfo);
+
+ CMainSectionParser* mainSectionParser = CMainSectionParser::NewL(*mainTest, *script, keepLogFile);
+ CleanupStack::PushL(mainSectionParser);
+
+ if (err == KErrNone)
+ {
+ TRAP(err, mainSectionParser->ParseL());
+ }
+
+ if (err == KErrNone)
+ {
+ TInt pos=0;
+ CTestActive* waiter = new (ELeave) CTestActive;
+ CleanupStack::PushL(waiter);
+ waiter->StartL();
+ mainTest->StartL(waiter->iStatus);
+ CActiveScheduler::Start();
+ TInt status = waiter->iStatus.Int();
+ CleanupStack::PopAndDestroy(waiter);
+ testUtils->SeekLogFile(ESeekEnd,pos);
+ testUtils->Printf(_L("SCRIPT FILE:%S"),&buf);
+ if (status==KErrNone)
+ testUtils->TestHarnessCompleted();
+ else
+ testUtils->TestHarnessFailed(status);
+ }
+
+ CleanupStack::PopAndDestroy(4,script);
+ CleanupStack::PopAndDestroy(); // cmdLineArg
+ CleanupStack::PopAndDestroy(scheduler);
+
+ fs.Close();
+ test.Close();
+ }
+
+GLDEF_C TInt E32Main()
+ {
+ __UHEAP_MARK;
+ theCleanup=CTrapCleanup::New();
+
+ TRAPD(ret,doMainL());
+
+ delete theCleanup;
+// test.End();
+// test.Close();
+ __UHEAP_MARKEND;
+ User::Heap().Check();
+ return(KErrNone);
+ }
+