persistentstorage/sqlite3api/TEST/t_sqlitetclstarter.cpp
author hgs
Thu, 12 Aug 2010 11:53:23 +0100
changeset 40 b8bdbc8f59c7
permissions -rw-r--r--
201031_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     2
// All rights reserved.
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     7
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    10
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    11
// Contributors:
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    12
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    13
// Description:
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    14
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    15
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    16
#include <e32test.h>
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    17
#include <e32uid.h>
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    18
#include <f32file.h>
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    19
#include <bautils.h>
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    20
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    21
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    22
///////////////////////////////////////////////////////////////////////////////////////
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    23
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    24
RTest TheTest(_L("t_sqlitetclstarter"));
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    25
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    26
_LIT(KTclExecutableName,"tclsqlite3.exe");
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    27
_LIT(KTclScriptName,"all.test");
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    28
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    29
_LIT(KStdioConfigFilePath,	"C:\\system\\data\\");
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    30
_LIT(KStdioConfigFile,	"C:\\system\\data\\config.ini");
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    31
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    32
_LIT(KLogsFilePath, "C:\\logs\\testexecute\\");
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    33
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    34
RFs theFs;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    35
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    36
///////////////////////////////////////////////////////////////////////////////////////
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    37
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    38
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    39
// Creates the appropriate stdio ini file to redirect stdio output to a file 
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    40
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    41
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    42
void CreateIniFileForStdoutRedirection(void)
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    43
	{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    44
	TInt err(KErrNone);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    45
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    46
	// check path exists otherwise create
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    47
	if (!BaflUtils::FolderExists(theFs, KStdioConfigFilePath))
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    48
		{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    49
		err = theFs.MkDirAll(KStdioConfigFilePath);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    50
		TheTest(err == KErrNone, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    51
		}
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    52
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    53
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    54
	// create file
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    55
	RFile file;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    56
	err = file.Create(theFs, KStdioConfigFile, EFileRead | EFileWrite);	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    57
	TheTest(err == KErrNone, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    58
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    59
	TheTest(KErrNone == file.Write(_L8("[STDIO]\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    60
	TheTest(KErrNone == file.Write(_L8("STDIN = MEDIA1\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    61
	TheTest(KErrNone == file.Write(_L8("STDOUT = MEDIA2\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    62
	TheTest(KErrNone == file.Write(_L8("[MEDIA1]\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    63
	TheTest(KErrNone == file.Write(_L8("type = console\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    64
	TheTest(KErrNone == file.Write(_L8("width = -1\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    65
	TheTest(KErrNone == file.Write(_L8("height = -1\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    66
	TheTest(KErrNone == file.Write(_L8("[MEDIA2]\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    67
	TheTest(KErrNone == file.Write(_L8("type = file\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    68
	TheTest(KErrNone == file.Write(_L8("path = C:\\logs\\testexecute\\t_sqlitetclstarter.htm\r\n")), __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    69
	TheTest(KErrNone == file.Flush(),__LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    70
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    71
	file.Close();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    72
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    73
	}
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    74
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    75
///////////////////////////////////////////////////////////////////////////////////////
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    76
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    77
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    78
// Deletes the stdio ini file
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    79
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    80
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    81
void DeleteIniFileForStdoutRedirection(void)
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    82
	{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    83
	TInt err = theFs.Delete(KStdioConfigFile);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    84
	TheTest(err == KErrNone || err==KErrNotFound || err==KErrPathNotFound, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    85
	}
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    86
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    87
///////////////////////////////////////////////////////////////////////////////////////
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    88
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    89
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    90
// Ensure the directory for the Logs file exists
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    91
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    92
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    93
void EnsureLogsDirectoryExists(void)
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    94
	{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    95
	TInt err(KErrNone);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    96
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    97
	// check path exists otherwise create
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    98
	if (!BaflUtils::FolderExists(theFs, KLogsFilePath))
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
    99
		{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   100
		err = theFs.MkDirAll(KLogsFilePath);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   101
		TheTest(err == KErrNone, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   102
		}
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   103
	}
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   104
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   105
///////////////////////////////////////////////////////////////////////////////////////
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   106
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   107
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   108
// Start the tcl process with a script
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   109
//
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   110
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   111
void StartTclProcess(void)
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   112
	{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   113
	RProcess process;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   114
	TInt err = process.Create(KTclExecutableName,KTclScriptName);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   115
	TheTest(err==KErrNone, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   116
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   117
	TRequestStatus processStatus;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   118
	process.Logon(processStatus);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   119
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   120
	process.Resume();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   121
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   122
	TheTest.Printf(_L("Wait for TCL tests to finish\r\n"));
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   123
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   124
	User::WaitForRequest(processStatus);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   125
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   126
	TheTest.Printf(_L("TCL tests finished %d\r\n"),processStatus.Int());
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   127
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   128
	TheTest(processStatus.Int() == KErrNone, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   129
	}
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   130
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   131
///////////////////////////////////////////////////////////////////////////////////////
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   132
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   133
TInt E32Main()
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   134
	{
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   135
	TheTest.Title();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   136
	TheTest.Start(_L("TCL tests"));
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   137
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   138
	CTrapCleanup* tc = CTrapCleanup::New();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   139
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   140
	__UHEAP_MARK;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   141
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   142
	TInt err = theFs.Connect();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   143
	TheTest(err == KErrNone, __LINE__);
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   144
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   145
	DeleteIniFileForStdoutRedirection();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   146
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   147
	CreateIniFileForStdoutRedirection();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   148
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   149
	EnsureLogsDirectoryExists();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   150
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   151
	StartTclProcess();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   152
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   153
	DeleteIniFileForStdoutRedirection();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   154
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   155
	theFs.Close();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   156
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   157
	__UHEAP_MARKEND;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   158
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   159
	TheTest.End();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   160
	TheTest.Close();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   161
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   162
	delete tc;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   163
	
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   164
	User::Heap().Check();
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   165
	return KErrNone;
b8bdbc8f59c7 201031_02
hgs
parents:
diff changeset
   166
	}