libtelepathy/tsrc/src/telepathygabbletestblocks.cpp
changeset 0 d0f3a028347a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtelepathy/tsrc/src/telepathygabbletestblocks.cpp	Tue Feb 02 01:10:06 2010 +0200
@@ -0,0 +1,4599 @@
+/*
+* Copyright (c) 2008 - 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:    Stif Test Cases Test blocks file.
+*		 RunMethodL mentions all the test cases that will be run.
+*
+*/
+
+
+
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include "telepathygabbletest.h"
+#include "telepathygabbletestdata.h"
+//glib related include files
+#include <glib.h>
+#include <glib/gprintf.h>           // for g_stpcpy
+#include <string.h>
+#include <stdlib.h>
+
+#include <glowmem.h>
+
+//Login related file
+#include "telepathygabblelogintest.h"
+//Send Message related file
+#include "telepathygabblesendmessage.h"
+//AddDeleteContact related file
+#include "telepathygabbleadddeletecontact.h"
+//FetchContacts related files
+#include "telepathygabblefetchcontacts.h"
+//Search related files
+#include "telepathygabblesearch.h"
+
+
+const TInt KRepeatedMessageCount=4;
+
+
+
+typedef enum
+{
+	RC_OK,
+	RC_ERROR
+} RC_Code_t;
+
+typedef struct
+{
+	gchar *recipient;
+	gchar *message;
+} MessageData;
+
+typedef struct
+{
+	gchar      *proxy_server;
+	gchar      *proxy_port;	
+}ProxyData;
+
+typedef struct
+{
+	gchar      *key;
+	gchar      *value;	
+}SearchData;
+typedef struct
+{
+	gchar       *server;
+	gchar       *username;
+	gchar       *password;		
+	gchar       *resource;
+	MessageData *msg_data;	
+#ifdef __WINSCW__
+    ProxyData   *proxy_data;
+#endif
+    gchar       *port;
+    gchar       *ssl_flag; //needed for gizmo and gtalk.
+    SearchData  *search_data;
+
+} ConnectData;
+
+typedef struct
+{
+	ConnectData *connect_data;
+	GMainLoop   *main_loop;
+	RC_Code_t   rCode;	
+} AuthData;
+
+typedef struct
+{
+    GMainLoop *main_loop;
+    RC_Code_t Test_Success;	
+} HandleData;
+
+// Function to read data from the cfg file
+static RC_Code_t read_data ( ConnectData*& connect_data, 
+                             CStifItemParser& aItem, CStifLogger* aLog );
+                             
+// Function to free the allocated resources
+static void free_data ( ConnectData*& connect_data, CStifLogger* aLog);
+                             
+
+                             
+// ============================= LOCAL FUNCTIONS ===============================
+
+//-----------------------------------------------------------------------------
+// function_name	: read_data
+// description     	: Reads data from the CFG file
+// Returns          : None
+//-----------------------------------------------------------------------------
+//
+static RC_Code_t
+read_data ( ConnectData*& connect_data, CStifItemParser& aItem, CStifLogger* aLog )
+    {
+	TPtrC               string;
+	TBuf8<KMaxFileName> temp;
+	
+	//TBuf8<KMaxChar>		temp;
+	MessageData         *msg_data   = NULL;
+	
+	SearchData         *search_data   = NULL;
+#ifdef __WINSCW__
+	ProxyData           *proxy_data = NULL;
+#endif
+	
+	connect_data = g_new0 ( ConnectData, 1 );
+	if ( !connect_data )
+	    {
+		return RC_ERROR;
+	    }
+	    
+	msg_data = g_new0 ( MessageData, 1 );
+	if ( !msg_data )
+	    {
+		free_data (connect_data, aLog );
+		return RC_ERROR;
+	    }
+	
+	connect_data->msg_data = msg_data;
+	
+	search_data = g_new0 ( SearchData, 1 );
+	if ( !search_data )
+	    {
+		free_data (connect_data, aLog );
+		return RC_ERROR;
+	    }
+	connect_data->search_data = search_data;	    
+	
+#ifdef __WINSCW__
+    proxy_data = g_new0 ( ProxyData, 1 );
+    if ( !proxy_data ) 
+    	{
+    	free_data (connect_data, aLog );
+    	return RC_ERROR;
+    	}
+	connect_data->proxy_data = proxy_data;
+#endif
+
+	// Read server name
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+		temp.Copy ( string );
+		temp.Append ( '\0' );
+		connect_data->server = g_new0 ( gchar, temp.Length() );
+		if ( !connect_data->server )
+		    {			
+			free_data (connect_data, aLog );
+			return RC_ERROR;
+		    }
+		g_stpcpy ( connect_data->server, ( gchar * ) temp.Ptr() ); 
+	    }
+	    
+	// Read Username
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );
+	    connect_data->username = g_new0 ( gchar, temp.Length() );
+	    if ( !connect_data->username )
+	        {	    	
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( connect_data->username, ( gchar * ) temp.Ptr() );		    
+	    }
+	
+	// Read Password corresponding to Username
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );
+	    connect_data->password = g_new0 ( gchar, temp.Length () );		    
+	    if ( !connect_data->password )
+	        {	    	
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( connect_data->password, ( gchar *) temp.Ptr() );
+	    }
+	
+	// Read recipient
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );
+	    msg_data->recipient = g_new0 ( gchar, temp.Length() );
+	    if ( !msg_data->recipient )
+	        {
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( msg_data->recipient, ( gchar * ) temp.Ptr() );
+	    }
+	
+	// Read Message
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );	    
+	    msg_data->message = g_new0 ( gchar, temp.Length() );
+	    if ( !msg_data->message )
+	        {
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( msg_data->message, ( gchar * ) temp.Ptr() );
+	    }
+	
+	// Read resource identifier
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );
+	    connect_data->resource = g_new0 ( gchar, temp.Length() );
+	    if ( !connect_data->resource )
+	        {
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( connect_data->resource, ( gchar * ) temp.Ptr() );		    
+	    }
+	 
+
+	// Read proxy server and proxy port
+    if ( aItem.GetNextString ( string ) == KErrNone )
+    	{
+    	temp.Copy ( string );
+    	temp.Append ( '\0' );
+    	#ifdef __WINSCW__
+    	proxy_data->proxy_server = g_new0 ( gchar, temp.Length() );
+    	if ( !proxy_data->proxy_server )
+    		{
+    		free_data (connect_data, aLog );
+    		return RC_ERROR;
+    		}
+    	g_stpcpy ( proxy_data->proxy_server, ( gchar * ) temp.Ptr() );
+    	#endif 
+    	}
+    	
+    if ( aItem.GetNextString ( string ) == KErrNone )
+    	{
+    	temp.Copy ( string );
+    	temp.Append ( '\0' );
+    	#ifdef __WINSCW__
+    	proxy_data->proxy_port = g_new0 ( gchar, temp.Length() );
+    	if ( !proxy_data->proxy_port )
+    		{
+    		free_data (connect_data, aLog );
+    		return RC_ERROR;
+    		}
+    	g_stpcpy ( proxy_data->proxy_port, ( gchar * ) temp.Ptr() );
+    	#endif
+    	}	
+    	
+    	/* if ( aItem.GetNextInt ( proxy_port ) == KErrNone )
+    		{
+    		proxy_data->proxy_port = proxy_port;
+    		}    	 */
+    		
+    		
+
+	//Read the port
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	{
+	temp.Copy ( string );
+	temp.Append ( '\0' );
+	connect_data->port = g_new0 ( gchar, temp.Length() );
+	if ( !connect_data->port )
+		{
+		free_data (connect_data, aLog );
+		return RC_ERROR;
+		}
+	g_stpcpy ( connect_data->port, ( gchar * ) temp.Ptr() ); 
+	}
+
+	//Read the ssl_flag value
+  	if ( aItem.GetNextString ( string ) == KErrNone )
+    {
+	temp.Copy ( string );
+	temp.Append ( '\0' );
+	connect_data->ssl_flag = g_new0 ( gchar, temp.Length() );
+	if ( !connect_data->ssl_flag )
+	    {			
+		free_data (connect_data, aLog );
+		return RC_ERROR;
+	    }
+	g_stpcpy ( connect_data->ssl_flag, ( gchar * ) temp.Ptr() ); 
+    }
+    
+    // Read key
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );
+	    search_data->key = g_new0 ( gchar, temp.Length() );
+	    if ( !search_data->key )
+	        {
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( search_data->key, ( gchar * ) temp.Ptr() );
+	    }
+	
+	// Read value
+	if ( aItem.GetNextString ( string ) == KErrNone )
+	    {
+	    temp.Copy ( string );
+	    temp.Append ( '\0' );	    
+	    search_data->value = g_new0 ( gchar, temp.Length() );
+	    if ( !search_data->value )
+	        {
+	    	free_data (connect_data, aLog );
+	    	return RC_ERROR;
+	        }
+	    g_stpcpy ( search_data->value, ( gchar * ) temp.Ptr() );
+	    }
+	
+	return RC_OK;
+    }
+    
+
+
+//-----------------------------------------------------------------------------
+// function_name	: free_data
+// description     	: Deallocates all the data
+// Returns          : None
+//-----------------------------------------------------------------------------
+//
+static void
+free_data ( ConnectData*& connect_data, CStifLogger* aLog )
+    {
+    //iLog->Log( _L("free_data\n") );
+	if ( connect_data )
+	    {
+		if ( connect_data->server )
+		    {
+		    //iLog->Log( _L("free server\n") );
+			g_free ( connect_data->server );
+			connect_data->server = NULL;
+		    }
+		
+		if ( connect_data->username )
+		    {
+		    aLog->Log( _L(" free username\n") );
+			g_free ( connect_data->username );
+			connect_data->username = NULL;
+		    }
+		
+		if ( connect_data->password )
+		    {
+		    aLog->Log( _L(" free password\n") );
+			g_free ( connect_data->password );
+			connect_data->password = NULL;
+		    }
+		
+		if ( connect_data->msg_data )
+		    {
+			if ( connect_data->msg_data->recipient )
+			    {
+			    aLog->Log( _L(" free recipient\n") );
+				g_free ( connect_data->msg_data->recipient );
+				connect_data->msg_data->recipient = NULL;
+			    }
+			if ( connect_data->msg_data->message )
+			    {
+			    aLog->Log( _L(" free message\n") );
+				g_free ( connect_data->msg_data->message );
+				connect_data->msg_data->message = NULL;
+			    }
+			g_free ( connect_data->msg_data );
+			connect_data->msg_data = NULL;
+		    }		
+		
+		if ( connect_data->resource )
+		    {
+		    aLog->Log( _L(" free resource\n") );
+			g_free ( connect_data->resource );
+			connect_data->resource = NULL;
+		    }
+		    
+	#ifdef __WINSCW__
+	    if ( connect_data->proxy_data )
+	    	{
+	    	if ( connect_data->proxy_data->proxy_server )
+	    		{
+	    		aLog->Log( _L(" free proxy_server\n") );
+	    		g_free ( connect_data->proxy_data->proxy_server );
+	    		connect_data->proxy_data->proxy_server = NULL;
+	    		}
+    		if ( connect_data->proxy_data->proxy_port )
+	    		{
+	    		aLog->Log( _L(" free proxy_port\n") );
+	    		g_free ( connect_data->proxy_data->proxy_port );
+	    		connect_data->proxy_data->proxy_port = NULL;
+	    		}
+	    	g_free ( connect_data->proxy_data );
+	    	connect_data->proxy_data = NULL;	
+	    	}
+	#endif	 
+	
+	    //port free
+	    if ( connect_data->port )
+		    {
+		    aLog->Log( _L(" free port\n") );
+			g_free ( connect_data->port );
+			connect_data->port = NULL;
+		    }
+		    
+		//ssl_flag free
+		if ( connect_data->ssl_flag )
+		    {
+		        aLog->Log( _L(" free ssl_flag\n") );
+				g_free ( connect_data->ssl_flag );
+				connect_data->ssl_flag = NULL;
+		    }
+		    
+		if ( connect_data->search_data )
+		    {
+			if ( connect_data->search_data->key )
+			    {
+			    aLog->Log( _L(" free key\n") );
+				g_free ( connect_data->search_data->key );
+				connect_data->search_data->key = NULL;
+			    }
+			if ( connect_data->search_data->value )
+			    {
+			    aLog->Log( _L(" free value\n") );
+				g_free ( connect_data->search_data->value );
+				connect_data->search_data->value = NULL;
+			    }
+			g_free ( connect_data->search_data );
+			connect_data->search_data = NULL;
+		    }
+		aLog->Log( _L(" free connect_data\n") );		    		    
+		g_free ( connect_data );
+		connect_data = NULL;    
+	    }
+	    aLog->Log( _L(" free connect_data out\n") );
+    }
+    
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CTelepathyGabbleTest::Delete() 
+    {
+    	 iLog->Log( _L("CTelepathyGabbleTest::Delete in\n") );
+	     if (iLoginObj)
+	     {
+	       	iLog->Log( _L("In Delete iLoginObj \n") );
+	     	delete iLoginObj;
+	     	iLoginObj = NULL;
+	     }
+
+		 if (iSendMsgObj)
+		 {
+		 	delete iSendMsgObj;
+		 	iSendMsgObj = NULL;
+		 }
+		 
+		 if (iAddDelContactObj)
+		 {
+		 	delete iAddDelContactObj;
+		 	iAddDelContactObj = NULL;
+		 }
+		 
+		 if (iFetchContactObj)
+		 {
+		 	delete iFetchContactObj;
+		 	iFetchContactObj = NULL;
+		 }
+		 
+		 if (iSearchObj)
+		 {
+		 	delete iSearchObj;
+		 	iSearchObj = NULL;
+		 }
+		 
+		 if (iTestData)
+		 {
+		    iLog->Log( _L("In Delete iTestData \n") );
+		 	delete iTestData;
+		 	iTestData = NULL;
+		 	
+		 }
+		 iLog->Log( _L("CTelepathyGabbleTest::Delete out\n") );
+    }
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CTelepathyGabbleTest::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+    
+    iLog->Log( _L("CTelepathyGabbleTest::RunMethodL in") );
+   
+ 
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        //ENTRY( "Example", CTelepathyGabbleTest::ExampleL ),
+        //ADD NEW ENTRY HERE
+        // [test cases entries] - Do not remove
+        
+        //Login - Logout related test cases
+        ENTRY("LoginTest", CTelepathyGabbleTest::LoginTestL ),
+        ENTRY("LogoutTest", CTelepathyGabbleTest::LogoutTestL ),
+        ENTRY("LoginInvalidUseridTest", CTelepathyGabbleTest::LoginInvalidUseridTestL ),
+        ENTRY("LoginInvalidPasswdTest", CTelepathyGabbleTest::LoginInvalidPasswdTestL ),
+        ENTRY("LoginInvalidUseridPasswdTest", CTelepathyGabbleTest::LoginInvalidUseridPasswdTestL ),
+        ENTRY("LoginblankUseridTest", CTelepathyGabbleTest::LoginblankUseridTestL ),
+        ENTRY("LoginblankPasswdTest", CTelepathyGabbleTest::LoginblankPasswdTestL ),
+        ENTRY("LoginblankUseridblankPasswdTest", CTelepathyGabbleTest::LoginblankUseridblankPasswdTestL ),
+        ENTRY("LoginWithMaxLengthUserIDTest", CTelepathyGabbleTest::LoginTestL ),
+        ENTRY("LoginWithMinLengthUserIDTest", CTelepathyGabbleTest::LoginTestL ),
+        ENTRY("LoginUseridWithSplChrsTest", CTelepathyGabbleTest::LoginInvalidUseridTestL ),
+        ENTRY("LoginCancelTest", CTelepathyGabbleTest::LoginCancelTestL ),
+        
+        
+        //Send Message related Test Cases
+        ENTRY("SendMessageTest", CTelepathyGabbleTest::SendMessageTestL ),
+        ENTRY("SendMesasgeToMaxLengthUserIDTest", CTelepathyGabbleTest::SendMessageTestL ),        
+		ENTRY("SendMesasgetoofflinecontactTest", CTelepathyGabbleTest::SendMessagetoinvalidUseridTestL ),
+        ENTRY("SendMessageWith400Test", CTelepathyGabbleTest::SendMessageWith400TestL ),
+        ENTRY("SendMesasgeBlankTest", CTelepathyGabbleTest::SendMesasgeBlankTestL ),
+        ENTRY("SendMesasgeToBlankUserIdTest", CTelepathyGabbleTest::SendMesasgeToBlankUserIdTestL ),
+        ENTRY("SendMesasgeSplCharsTest", CTelepathyGabbleTest::SendMessageTestL ),
+        ENTRY("SendMesasgeEmoticonsTest", CTelepathyGabbleTest::SendMessageTestL ),        
+        ENTRY("SendMessageRepeatedTest",CTelepathyGabbleTest:: SendMessageRepeatedTestL),        
+        ENTRY("SendMessagetoUserNotInContactListTest",CTelepathyGabbleTest:: SendMessageTestL),
+        ENTRY("SendMessagetoinvalidUseridTest",CTelepathyGabbleTest:: SendMessagetoinvalidUseridTestL),
+        
+        //Receive Message related Test Cases
+        ENTRY("ReceiveMessageTest", CTelepathyGabbleTest::ReceiveMessageTestL ),
+        ENTRY("ReceiveMessageMaxLengthTest", CTelepathyGabbleTest::ReceiveMessageMaxLengthTestL ),
+        ENTRY("ReceiveMessageWithSplChrsTest", CTelepathyGabbleTest::ReceiveMessageTestL ),  
+        ENTRY("ReceiveMessageWithEmoticonsTest", CTelepathyGabbleTest::ReceiveMessageTestL ),                
+        ENTRY("ReceiveMessageBlankTest", CTelepathyGabbleTest::ReceiveMessageBlankTestL ),
+        ENTRY("ReceiveRepeatedMessageTest", CTelepathyGabbleTest::ReceiveRepeatedMessageTestL ),
+        
+        //Add Contact related test cases
+        ENTRY("AddContactTest", CTelepathyGabbleTest::AddContactTestL ),
+        ENTRY("AddContactWithMaxLengthUserIdTest", CTelepathyGabbleTest::AddContactTestL ),
+        ENTRY("AddContactWithBlankUserIdTest", CTelepathyGabbleTest::AddContactWithBlankUserIdTestL ),       
+        ENTRY("AddContactinvalidTest", CTelepathyGabbleTest::AddContactTestL ),
+        ENTRY("AddContactinvalidWithSplCharsTest", CTelepathyGabbleTest::AddContactTestL ),
+        ENTRY("AddContactAlreadyInRosterTest", CTelepathyGabbleTest::AddContactAlreadyInRosterTestL ),
+        
+        
+        //Remove Contact related test cases
+        ENTRY("RemoveContactTest", CTelepathyGabbleTest::RemoveContactTestL ),
+        ENTRY("RemoveInvalidContactTest", CTelepathyGabbleTest::RemoveInvalidContactTestL),
+        ENTRY("RemoveContactAlreadyRemovedTest", CTelepathyGabbleTest::RemoveInvalidContactTestL ),
+        ENTRY("RemoveContactWithMaxLengthUserIDTest", CTelepathyGabbleTest::RemoveContactTestL ),
+        ENTRY("RemoveContactWithBlankUserIdTest", CTelepathyGabbleTest::RemoveContactWithBlankUserIdTestL ),       
+        
+        //Fetch Contact related test cases
+        ENTRY("FetchContactsTest", CTelepathyGabbleTest::FetchContactsTestL ),
+        ENTRY("FetchZeroContactTest", CTelepathyGabbleTest::FetchContactsTestL ),
+       
+        //Search related test cases
+        ENTRY("SearchTest", CTelepathyGabbleTest::SearchTestL ),
+        ENTRY("GetSearchKeysTest", CTelepathyGabbleTest::GetSearchKeysTestL ),
+        ENTRY("SearchInvalidKeyTest", CTelepathyGabbleTest::SearchInvalidKeyTestL ),
+        ENTRY("SearchNoKeyValueTest", CTelepathyGabbleTest::SearchNoKeyValueTestL ),
+        ENTRY("SearchTwoInvalidKeysTest", CTelepathyGabbleTest::SearchTwoInvalidKeysTestL ),        
+        ENTRY("SearchWithAllKeysTest", CTelepathyGabbleTest::SearchWithAllKeysTestL ),
+        ENTRY("SearchBlankStringTest", CTelepathyGabbleTest::SearchBlankStringTestL ),
+        ENTRY("SearchTwiceTest", CTelepathyGabbleTest::SearchTwiceTestL ),
+        ENTRY("SearchTwiceWithDiffStringsTest", CTelepathyGabbleTest::SearchTwiceWithDiffStringsTestL ),
+        ENTRY("SearchFiveTimesTest", CTelepathyGabbleTest::SearchFiveTimesTestL ),        
+        ENTRY("SearchAfterGetSearchKeys", CTelepathyGabbleTest::SearchAfterGetSearchKeysL ),
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+//
+
+TInt CTelepathyGabbleTest::LoginTestL( 
+    CStifItemParser& aItem  )
+	{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		iLog->Log( _L("LoginTestL starting") );
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog) != RC_OK )
+		{
+			//iLog->Log( _L("read_data failed") );
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  	proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iLog->Log( _L("iTestData created") );
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		iLog->Log( _L("iLoginObj created") );
+			
+		iTestData->SetTestType(CTestData::ELogin) ;
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, resource_login,ssl_flag,
+																port,proxy_server, proxy_port, iTestData);
+			
+		
+		iLog->Log( _L("after action_login") );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//Do the logout so that all the resources are deallocated properly
+			login_status = iLoginObj->action_logout(iTestData);
+			
+			iLog->Log( _L("after action_logout") );
+			
+			free_data (connect_data, iLog);
+			
+			iLog->Log( _L("after free_data") );
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+			iLog->Log( _L("logout failed") );
+			return KErrGeneral; 	//logout didnot happen successfully.
+			}
+			
+			//we completed login and logout successfully.
+			iLog->Log( _L("login-logout test case passed\n") );
+			
+			if (iTestData)
+			 { 	iLog->Log( _L("delete iTestData \n") );
+			 	delete iTestData;
+			 	iTestData = NULL;
+			 	
+			 }
+			 if (iLoginObj)
+		     {
+		       	iLog->Log( _L("delete iLoginObj \n") );
+		     	delete iLoginObj;
+		     	iLoginObj = NULL;
+		     }
+			return KErrNone;
+		}
+		else
+		{
+			//Login didnot happen successfully.
+			//return from here itself, no need for a logout
+			free_data (connect_data, iLog );
+			iLog->Log( _L("login test case failed") );
+			return KErrGeneral;
+		
+		}
+	
+	}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginblankUseridblankPasswdTestL
+// -----------------------------------------------------------------------------		
+TInt CTelepathyGabbleTest::LoginblankUseridblankPasswdTestL( 
+    CStifItemParser& aItem  )
+	{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data,iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	""; //make the username as blank
+		passwd   =  ""; //make the username as blank
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  	proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		iTestData->SetTestType(CTestData::ELogin) ;
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, resource_login, ssl_flag,
+															port,proxy_server, proxy_port,iTestData);
+		
+		free_data (connect_data, iLog );
+		
+		if (login_status == CTestData::EDISCONNECTED)
+		{
+			//login_status is disconnected(default state) 
+			//which is correct since the username was blank.
+			
+			return KErrNone;
+		}
+		else
+		{
+			//There was some error
+			return KErrGeneral;
+		}
+			
+	}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginblankUseridTestL
+// -----------------------------------------------------------------------------		
+TInt CTelepathyGabbleTest::LoginblankUseridTestL( 
+    CStifItemParser& aItem  )
+	{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data,iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	""; //make the username as blank
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  	proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		iTestData->SetTestType(CTestData::ELogin) ;
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, resource_login, ssl_flag,
+															port,proxy_server, proxy_port,iTestData);
+		
+		free_data (connect_data, iLog );
+		
+		if (login_status == CTestData::EDISCONNECTED)
+		{
+			//login_status is disconnected(default state) 
+			//which is correct since the username was blank.
+			
+			return KErrNone;
+		}
+		else
+		{
+			//There was some error
+			return KErrGeneral;
+		}
+			
+	}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginblankPasswdTestL
+// -----------------------------------------------------------------------------	
+TInt CTelepathyGabbleTest::LoginblankPasswdTestL( 
+CStifItemParser& aItem  )
+{
+	//Pass the parameters to action_login() from the 
+	//data mentioned in the cfg file.
+	
+	ConnectData  *connect_data = NULL;
+	
+	if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+	{
+		free_data ( connect_data, iLog );
+		return KErrGeneral;
+	}
+
+	char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+	char *proxy_server = NULL;
+	char *proxy_port = NULL;
+		
+	
+	username = 	connect_data->username;
+	passwd   =  ""; //make the passwd as blank.
+	servername = 	connect_data->server;
+	resource_login = connect_data->resource;
+	ssl_flag = connect_data->ssl_flag;
+	port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+	
+	iTestData = CTestData::NewL(iLog);
+
+	iLoginObj = CTelepathyGabbleLoginTest::NewL();
+	
+	iTestData->SetTestType(CTestData::ELogin) ;
+		
+	//action_login will have parameters 
+	//passed from cfg file
+	TInt login_status = 
+		iLoginObj->action_login(username,passwd,servername, resource_login,ssl_flag,
+														port,proxy_server, proxy_port,iTestData);
+	
+	free_data (connect_data, iLog );
+	
+	if (login_status == CTestData::EDISCONNECTED)
+	{
+		//the status is disconnected which is correct since the 
+		//login didnot happen with blank passwd.
+		return KErrNone;
+	}
+	else
+	{
+		return KErrGeneral;
+	
+	}			
+}
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LogoutTestL
+// Test for logout
+// -----------------------------------------------------------------------------
+TInt CTelepathyGabbleTest::LogoutTestL( 
+CStifItemParser& aItem  )
+{
+	//Pass the parameters to action_login() from the 
+	//data mentioned in the cfg file.
+	
+	ConnectData  *connect_data = NULL;
+	
+	if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+	{
+		free_data ( connect_data, iLog );
+		return KErrGeneral;
+	}
+	
+
+	char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+	char *proxy_server = NULL;
+	char *proxy_port = NULL;
+		
+	
+	username = 	connect_data->username;
+	passwd   =  connect_data->password;
+	servername = 	connect_data->server;
+	resource_login = connect_data->resource;
+	ssl_flag = connect_data->ssl_flag;
+	port = connect_data->port;
+	#ifdef __WINSCW__
+  		proxy_server = connect_data->proxy_data->proxy_server;
+		proxy_port = connect_data->proxy_data->proxy_port;
+	#endif
+		
+	
+	iTestData = CTestData::NewL(iLog);
+	
+	iLoginObj = CTelepathyGabbleLoginTest::NewL();
+	
+	iTestData->SetTestType(CTestData::ELogin);
+	
+	//action_login will have parameters 
+	//passed from cfg file
+	
+	TInt login_status = iLoginObj->action_login(username,passwd,servername, resource_login,ssl_flag,
+																							port,proxy_server, proxy_port,iTestData);
+	
+	
+	if (login_status == CTestData::ECONNECTED)
+	{
+		//If the login variable is ECONNECTED
+		//Do the Logout
+		login_status = iLoginObj->action_logout(iTestData);
+		
+	
+		if (login_status == CTestData::EDISCONNECTED)
+		{
+	
+			//the logout happened succesfully
+			free_data ( connect_data, iLog );
+			return KErrNone;
+		}
+		else 
+		{
+			//login_status is still connected, there was a problem 
+			//in logging out.
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+	}
+	else
+	{
+		//Login itself didnot happen.
+		free_data ( connect_data, iLog );
+		return KErrGeneral;
+	}
+		
+}
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchAfterGetSearchKeysL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchAfterGetSearchKeysL( CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *value, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		value = connect_data->msg_data->message;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		
+		iTestData->SetTestType(CTestData::EGetSearchKeys);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();
+				
+			TInt search_state = iSearchObj->GetSearchKeysL( iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+					return_value = KErrGeneral; //Error in finding search keys
+				}
+			else if( search_state == CTestData::ESearchKeysFound) 
+				{
+					return_value = KErrNone; 
+					
+					GHashTable *data_to_search = NULL;				
+					data_to_search = g_hash_table_new(g_str_hash,g_str_equal);
+					gchar **keys = iTestData->GetSearchKeys();
+				
+					iTestData->SetTestType(CTestData::ESearch);
+					for(TInt i=0; i<8 ; i++ )
+						{
+							GValue *gvalue = NULL;
+							gvalue = g_new0(GValue, 1);	
+						
+							g_value_init(gvalue, G_TYPE_STRING);
+							g_value_set_string (gvalue, g_strdup(value) );
+							g_hash_table_insert( data_to_search,keys[i], gvalue);	
+							
+						}
+					
+					search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+					if( search_state == CTestData::ESearchError )
+						{
+							return_value = KErrGeneral; //Error in Searching
+						}
+					else if( search_state == CTestData::ESearchCompleted) 
+						{
+							return_value = KErrNone; 
+						}
+					//Free the hash table itself
+					g_hash_table_destroy ( data_to_search );
+					
+
+				}
+			iSearchObj->CloseChannel(iTestData);
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchWithAllKeysTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchWithAllKeysTestL( CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *value, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		value = connect_data->msg_data->message;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::EGetSearchKeys);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();
+				
+			TInt search_state = iSearchObj->GetSearchKeysL( iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+					return_value = KErrGeneral; //Error in finding search keys
+				}
+			else if( search_state == CTestData::ESearchKeysFound) 
+				{
+					return_value = KErrNone; 
+					
+					iTestData->SetTestType(CTestData::ESearch);
+					GHashTable *data_to_search = NULL;				
+					TInt i = 0;			
+					data_to_search = g_hash_table_new(g_str_hash,g_str_equal);
+					gchar **keys = iTestData->GetSearchKeys();
+					
+					for( i=0; i<7 ; i++ )
+						{
+							GValue *gvalue = NULL;
+							gvalue = g_new0(GValue, 1);	
+						
+							g_value_init(gvalue, G_TYPE_STRING);
+							g_value_set_string (gvalue, g_strdup(value) );
+							g_hash_table_insert( data_to_search, keys[i], gvalue);	
+							
+						}
+						
+					GValue *gvalue1 = NULL;
+					gvalue1 = g_new0(GValue, 1);	
+				
+					g_value_init(gvalue1, G_TYPE_STRING);
+					g_value_set_string (gvalue1, g_strdup("5") );
+					g_hash_table_insert( data_to_search,keys[i], gvalue1);						
+					
+					search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+					if( search_state == CTestData::ESearchError )
+						{
+							return_value = KErrGeneral; //Error in Searching
+						}
+					else if( search_state == CTestData::ESearchCompleted) 
+						{
+							return_value = KErrNone; 
+						}
+					//Free the hash table itself
+					g_hash_table_destroy ( data_to_search );
+					g_free(keys);
+
+				}
+			iSearchObj->CloseChannel(iTestData);
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchBlankStringTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchBlankStringTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		iTestData->SetTestType(CTestData::ESearch);
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			GValue *gvalue = NULL;
+		
+			char *key, *value;
+			
+			key = connect_data->msg_data->recipient;
+			//value = connect_data->msg_data->message;
+			//search for blank string
+			value = "";
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			gvalue = g_new0(GValue, 1);	
+		
+					 
+			g_value_init(gvalue, G_TYPE_STRING);
+			g_value_set_string (gvalue, value );
+			g_hash_table_insert( data_to_search, key, gvalue);			      
+			
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+					return_value = KErrGeneral; //Error in Searching
+				}
+			else if( search_state == CTestData::ESearchCompleted) 
+				{
+					return_value = KErrNone; 
+				}
+			iSearchObj->CloseChannel(iTestData);
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			GValue *gvalue = NULL;
+		
+			char *key, *value;
+			
+			key = connect_data->msg_data->recipient;
+			value = connect_data->msg_data->message;
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			gvalue = g_new0(GValue, 1);	
+		
+					 
+			g_value_init(gvalue, G_TYPE_STRING);
+			g_value_set_string (gvalue, value );
+			g_hash_table_insert( data_to_search, GetSearchLabelL(servername,key), gvalue);			      
+			
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+					return_value = KErrGeneral; //Error in Searching
+				}
+			else if( search_state == CTestData::ESearchCompleted) 
+				{
+					return_value = KErrNone; 
+				}
+			
+			iSearchObj->CloseChannel(iTestData);
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchTwoInvalidKeysTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchTwoInvalidKeysTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			GValue *gvalue1, *gvalue2 ;
+		
+			char *key1,*key2, *value1, *value2;
+			
+			key1 = connect_data->msg_data->recipient;
+			value1 = connect_data->msg_data->message;
+			
+			key2 = connect_data->search_data->key;
+			value2 = connect_data->search_data->value;
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			gvalue1 = g_new0(GValue, 1);	
+			
+					 
+			g_value_init(gvalue1, G_TYPE_STRING);
+			g_value_set_string (gvalue1, value1 );
+			g_hash_table_insert( data_to_search, GetSearchLabelL(servername,key1), gvalue1);
+			
+			gvalue2 = g_new0(GValue, 1);	
+			
+					 
+			g_value_init(gvalue2, G_TYPE_STRING);
+			g_value_set_string (gvalue2, value2 );
+			g_hash_table_insert( data_to_search, GetSearchLabelL(servername,key2), gvalue2);		
+			
+			
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+				    //Error in Searching,
+				    //as one of the search key passed is wrong
+					return_value = KErrNone; 
+				}
+			else
+				{
+					return_value = KErrGeneral; 	
+				}
+			
+			iSearchObj->CloseChannel(iTestData);		
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchTwiceWithDiffStringsTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchTwiceWithDiffStringsTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search_first = NULL;
+			GHashTable *data_to_search_second = NULL;	
+			
+			GValue *gvalue1, *gvalue2 ;
+		
+			char *key1,*value1, *key2, *value2;
+		
+			key1 = connect_data->msg_data->recipient;
+			value1 = connect_data->msg_data->message;
+			
+			key2 = connect_data->search_data->key;
+			value2 = connect_data->search_data->value;
+			
+			data_to_search_first = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			data_to_search_second = g_hash_table_new(g_str_hash,g_str_equal);
+			
+			gvalue1 = g_new0(GValue, 1);	
+			g_value_init(gvalue1, G_TYPE_STRING);
+			g_value_set_string (gvalue1, value1 );
+			g_hash_table_insert( data_to_search_first, GetSearchLabelL(servername,key1), gvalue1);
+			
+			gvalue2 = g_new0(GValue, 1);
+			g_value_init(gvalue2, G_TYPE_STRING);
+			g_value_set_string (gvalue2, value2 );
+			g_hash_table_insert( data_to_search_second, GetSearchLabelL(servername,key2), gvalue2);		
+			
+			
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search_first, iTestData);
+			
+			if( search_state == CTestData::ESearchError)
+				{
+				   return_value = KErrGeneral; 
+				}
+			else
+				{
+					search_state = iSearchObj->SearchL(data_to_search_second, iTestData);
+					if( search_state == CTestData::ESearchError )
+						{
+						return_value = KErrGeneral; //Error in Searching	
+						}
+					
+				}
+			
+			iSearchObj->CloseChannel(iTestData);		
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search_first );
+			g_hash_table_destroy ( data_to_search_second );	
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchNoKeyValueTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchNoKeyValueTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+		
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+				    //Error in Searching,
+				    //as one of the search key passed is wrong
+					return_value = KErrNone; 
+				}
+			else
+				{
+					return_value = KErrGeneral; 	
+				}
+			iSearchObj->CloseChannel(iTestData);		
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchInvalidKeyTest
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchInvalidKeyTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			GValue *gvalue = NULL;
+		
+			char *key, *value;
+			
+			key = connect_data->msg_data->recipient;
+			value = connect_data->msg_data->message;
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			gvalue = g_new0(GValue, 1);	
+		
+					 
+			g_value_init(gvalue, G_TYPE_STRING);
+			g_value_set_string (gvalue, value );
+			//ivalid search key..label has to be passed so no need to pass label 
+			g_hash_table_insert( data_to_search, key, gvalue);	
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+				    //Error in Searching,
+				    //as one of the search key passed is wrong
+					return_value = KErrNone; 
+				}
+			else
+				{
+					return_value = KErrGeneral; 	
+				}
+			iSearchObj->CloseChannel(iTestData);		
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+	
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::GetSearchKeysTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::GetSearchKeysTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+			{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+			}
+		iTestData->SetTestType(CTestData::EGetSearchKeys);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			TInt search_state = iSearchObj->GetSearchKeysL( iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+					return_value = KErrGeneral; //Error in Searching
+				}
+			else if( search_state == CTestData::ESearchKeysFound) 
+				{
+					return_value = KErrNone; 
+				}
+			iSearchObj->CloseChannel(iTestData);	
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+		
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SendMessageTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SendMessageTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		
+		iTestData->SetTestType(CTestData::ESend);
+		
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Send a message
+			
+			//for sending a message
+			char *recipient_id, *msg;
+			
+			
+			
+			recipient_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+
+			//Create the Object of Send Message class
+			iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+			
+		
+			
+			//call the SendMessage test case	
+			TInt sendmsg_state = iSendMsgObj->SendMessage(recipient_id,msg,iTestData);
+			
+			if( sendmsg_state == CTestData::EMessageNotSent )
+				{
+				return_value = KErrGeneral; //Error in Sending message
+				}
+			else if( sendmsg_state == CTestData::EMessageSendErr ) 
+				{
+				    // error was not expected
+					return_value = KErrGeneral; 
+				}
+		    else if( sendmsg_state == CTestData::EMessageSent ) 
+				{
+					//If message sent to invalid userid or blank userid, state should EMessageSendErr
+					// This is used in case of SendMessagetoinvalidUseridTestL
+					return_value = KErrNone; 
+				}
+			
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SendMessageRepeatedTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SendMessageRepeatedTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		
+		iTestData->SetTestType(CTestData::ESend);
+		
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Send a message
+			
+			//for sending a message
+			char *recipient_id, *msg;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+
+			//Create the Object of Send Message class
+			iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+			
+			//call the SendMessage test case	
+			TInt sendmsg_state = CTestData::EMessageNotSent;
+		
+			for( TInt cnt =0 ; cnt < KRepeatedMessageCount ; cnt++ )
+			{
+				sendmsg_state = iSendMsgObj->SendMessage(recipient_id,msg,iTestData);	
+				
+				if( sendmsg_state != CTestData::EMessageSent )
+					{
+					return_value = KErrGeneral; //Error in Sending message	
+					break;
+					}
+			}
+		
+				
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::ReceiveRepeatedMessageTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::ReceiveRepeatedMessageTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+	
+		iTestData = CTestData::NewL(iLog);
+		
+		iTestData->SetTestType(CTestData::EReceive);
+	
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,
+									servername, resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData);
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//Get the contact_id and the message.
+			char *recipient_id, *msg;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+		
+		
+		  //Do the receive message test case
+		  //Create the Object of Send Message class
+		  iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+		  
+		  TInt recvmsg_state = CTestData::EMessageNotSent;
+		
+			for( TInt cnt =0 ; cnt < KRepeatedMessageCount ; cnt++ )
+			{
+				iTestData->SetSendRecvMsgState(CTestData::EMessageNotSent);
+				recvmsg_state = iSendMsgObj->ReceiveMessage(recipient_id,msg,iTestData);	
+				
+				if( recvmsg_state != CTestData::EMessageRecvd )
+					{
+					return_value = KErrGeneral;	
+					break;
+					}
+			}
+		  		  
+		  //do the logout and the cleanup
+			login_status = iLoginObj->action_logout(iTestData);
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+		  
+		}
+		else
+		{
+			//login didnot happen successfully
+			return_value = KErrGeneral;
+		}
+		free_data (connect_data, iLog );
+		return return_value;
+	}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::ReceiveMessageTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::ReceiveMessageTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+	
+		iTestData = CTestData::NewL(iLog);
+		
+		iTestData->SetTestType(CTestData::EReceive);
+	
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,
+									servername, resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData);
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//Get the contact_id and the message.
+			char *recipient_id, *msg;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+		
+		    iLog->Log( _L("ReceiveMessageTestL:: Logged In \n") );
+		    
+		  //Do the receive message test case
+		  //Create the Object of Send Message class
+		  iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+		  TInt recvmsg_state = iSendMsgObj->ReceiveMessage(recipient_id,msg,iTestData);	
+		  
+		  if( recvmsg_state != CTestData::EMessageRecvd )
+				{
+				iLog->Log( _L("ReceiveMessageTestL:: receive Error \n") );
+				return_value = KErrGeneral;	
+				}
+		  //do the logout and the cleanup
+		  login_status = iLoginObj->action_logout(iTestData);
+		  if (login_status != CTestData::EDISCONNECTED)
+				{
+					iLog->Log( _L("ReceiveMessageTestL:: Logout Error \n") );
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+		  
+		}
+		else
+		{
+			//login didnot happen successfully
+			return_value = KErrGeneral;
+		}
+		free_data (connect_data, iLog );
+		return return_value;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::ReceiveMessageBlankTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::ReceiveMessageBlankTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+	
+		iTestData = CTestData::NewL(iLog);
+	
+		iTestData->SetTestType(CTestData::ERecvBlank);
+		
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,
+									servername, resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData);
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			iLog->Log( _L("ReceiveMessageBlankTestL:: Logged In \n") );
+			//Get the contact_id and the message.
+			char *recipient_id, *msg;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+			
+			//Set the message to blamk string
+			msg = "";
+			
+		  //Do the receive message test case
+		  //Create the Object of Send Message class
+		  iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+		  TInt recvmsg_state = iSendMsgObj->ReceiveMessage(recipient_id,msg,iTestData);	
+		  
+		  if( recvmsg_state == CTestData::EMessageNotSent  )
+				{
+				iLog->Log( _L("ReceiveMessageBlankTestL:: EMESSAGE_NOT_SENT \n") );
+				return_value = KErrNone; //Error in Sending message
+				}
+				  
+		    iLog->Log( _L("ReceiveMessageBlankTestL:: b4 action_logout \n") );
+		   //do the logout and the cleanup
+			login_status = iLoginObj->action_logout(iTestData);
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				iLog->Log( _L("ReceiveMessageBlankTestL:: logout error \n") );
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+		  
+		}
+		else
+		{
+			//login didnot happen successfully
+			return_value = KErrGeneral;
+		}
+		free_data (connect_data, iLog );
+		return return_value;
+		  
+		}
+		
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::ReceiveMessageMaxLengthTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::ReceiveMessageMaxLengthTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+	
+		iTestData = CTestData::NewL(iLog);
+		
+		iTestData->SetTestType(CTestData::EReceive);
+	
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,
+									servername, resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData);
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//Get the contact_id and the message.
+			char *recipient_id;
+			//char *msg;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			// msg = connect_data->msg_data->message; //not required
+		
+		 //Set the message to maxlength string( with 400 chars)
+			char *max_len_msg = {"abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghij"};
+									
+		  //Do the receive message test case
+		  //Create the Object of Send Message class
+		  iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+		  
+		  TInt recvmsg_state = iSendMsgObj->ReceiveMessage(recipient_id,max_len_msg,iTestData);	
+		  
+		  if( recvmsg_state != CTestData::EMessageRecvd )
+					{
+					return_value = KErrGeneral;	
+					}
+		   //do the logout and the cleanup
+			login_status = iLoginObj->action_logout(iTestData);
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+		  
+		}
+		else
+		{
+			//login didnot happen successfully
+			return_value = KErrGeneral;
+		}
+		free_data (connect_data, iLog );
+		return return_value;
+		  
+		}
+		
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginCancelTestL
+// Test for Cancelling the login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::LoginCancelTestL( 
+    CStifItemParser& aItem  )
+	{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+					iLoginObj->action_cancel(username,passwd,
+											servername, resource_login,ssl_flag,
+											port,proxy_server, proxy_port,
+											iTestData );
+		
+		free_data (connect_data, iLog );
+		
+		if (login_status == CTestData::EDISCONNECTED )
+		{
+			//i.e the login didnot happen successfully
+			//which is correct, since this is a cancel test case.
+			return KErrNone;	
+		}
+		return KErrGeneral;	 //login status must be disconnceted else an error
+	}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginInvalidUseridTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::LoginInvalidUseridTestL( CStifItemParser& aItem  )
+{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+					iLoginObj->action_login(username,passwd,
+											servername, resource_login,ssl_flag,
+											port,proxy_server, proxy_port,
+											iTestData );
+		
+		free_data (connect_data, iLog );
+		
+		if (login_status == CTestData::EDISCONNECTED)
+		{
+			//i.e. login didnot happen with invalid user-id and passwd
+			return KErrNone;
+		}
+		
+		return KErrGeneral;	 //login status must be disconnceted else an error
+}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginInvalidPasswdTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::LoginInvalidPasswdTestL( CStifItemParser& aItem  )
+{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+					iLoginObj->action_login(username,passwd,
+											servername, resource_login,ssl_flag,
+											port,proxy_server, proxy_port,
+											iTestData );
+		
+		free_data (connect_data, iLog );
+		
+		if (login_status == CTestData::EDISCONNECTED)
+		{
+			//i.e. login didnot happen with invalid user-id and passwd
+			return (KErrNone);
+		}
+		
+		return KErrGeneral;	 //login status must be disconnceted else an error
+}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::LoginInvalidUseridPasswdTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::LoginInvalidUseridPasswdTestL( 
+    CStifItemParser& aItem  )
+{
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+					iLoginObj->action_login(username,passwd,
+											servername, resource_login,ssl_flag,
+											port,proxy_server, proxy_port,
+											iTestData );
+		
+		free_data (connect_data, iLog );
+		
+		if (login_status == CTestData::EDISCONNECTED)
+		{
+			//i.e. login didnot happen with invalid user-id and passwd
+			return KErrNone;
+		}
+		
+		return KErrGeneral;	 //login status must be disconnceted else an error
+}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SendMessageWith400TestL
+// Test for login.
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SendMessageWith400TestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+	    ssl_flag = connect_data->ssl_flag;
+	    port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+	    
+	    iTestData = CTestData::NewL(iLog);
+	    
+	    iTestData->SetTestType(CTestData::ESend);
+	     
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login( username,passwd,
+									servername, resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Send a message
+			
+			//for sending a message
+			char *recipient_id;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			//msg = connect_data->msg_data->message;
+			//hardcode the message of 400 characters.
+			//Set the message to maxlength string( with 400 chars)
+			char *msg = {"abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghijklmnopqrstuvwxyzabcd  \
+							abcdefghij"};
+
+			//Create the Object of Send Message class
+			iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+			
+			//call the SendMessage test case	
+			TInt sendmsg_state = iSendMsgObj->SendMessage(recipient_id,msg,iTestData );
+			
+			if( sendmsg_state == CTestData::EMessageNotSent || 
+				sendmsg_state == CTestData::EMessageSendErr  )
+				{
+				return_value = KErrGeneral; //Error in Sending message
+				}
+			else if( sendmsg_state == CTestData::EMessageSent ) 
+				{
+				    // EMessageSent was expected
+					return_value = KErrNone; 
+				}
+		   	
+		
+			//Do the logout.
+			login_status = iLoginObj->action_logout( iTestData );
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}					
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}
+		
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SendMesasgeToBlankUserIdTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+TInt CTelepathyGabbleTest::SendMesasgeToBlankUserIdTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iTestData->SetTestType(CTestData::ESendErr);
+		
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = iLoginObj->action_login(username,passwd,
+								servername, resource_login,ssl_flag,
+								port,proxy_server, proxy_port,
+								iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Send a message
+			
+			//for sending a message
+			char *recipient_id, *msg;
+			
+			recipient_id = "";//hardcode the recipient for blank.
+		
+			msg = connect_data->msg_data->message;
+
+			//Create the Object of Send Message class
+			iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+			
+			
+			//call the SendMessage test case	
+			TInt sendmsg_state = iSendMsgObj->SendMessage(recipient_id,msg,iTestData);
+			
+			if( sendmsg_state == CTestData::EMessageNotSent 
+				|| sendmsg_state == CTestData::EMessageSent )
+				{
+				return_value = KErrGeneral; //Error in Sending message
+				}
+		    else if( sendmsg_state == CTestData::EMessageSendErr ) 
+				{
+					//If message sent to invalid userid or blank userid, state should EMessageSendErr
+					// This is used in case of SendMessagetoinvalidUseridTestL
+					return_value = KErrNone; 
+				}
+				
+			//Do the logout.
+			login_status = iLoginObj->action_logout(iTestData);
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+				
+			
+					
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SendMesasgeBlankTestL
+// Test for login.
+// -----------------------------------------------------------------------------
+TInt CTelepathyGabbleTest::SendMesasgeBlankTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		
+		iTestData = CTestData::NewL(iLog);
+		
+		iTestData->SetTestType(CTestData::ESend);
+		
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = iLoginObj->action_login(username,passwd,
+								servername, resource_login,ssl_flag,
+								port,proxy_server, proxy_port,
+								iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Send a message
+			
+			//for sending a message
+			char *recipient_id, *msg;
+			
+			recipient_id = connect_data->msg_data->recipient;
+			//msg = connect_data->msg_data->message;
+			//hardcode the message for blank.
+			msg = "";
+
+			//Create the Object of Send Message class
+			iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+			
+			//call the SendMessage test case	
+			TInt sendmsg_state = iSendMsgObj->SendMessage(recipient_id,msg,iTestData);
+			if( sendmsg_state != CTestData::EMessageSent )
+			{
+			//There was some error while sending the message.
+			return_value = KErrGeneral;
+			}
+			
+				
+			//Do the logout.
+			login_status = iLoginObj->action_logout(iTestData);
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+			
+			
+					
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SendMessagetoinvalidUseridTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SendMessagetoinvalidUseridTestL( 
+    CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		
+		iTestData->SetTestType(CTestData::ESendErr);
+		
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			//Send a message
+			
+			//for sending a message
+			char *recipient_id, *msg;
+			
+			TInt testType = iTestData->GetTestType();
+			
+			recipient_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+
+			//Create the Object of Send Message class
+			iSendMsgObj = CTelepathyGabbleSendRecvMessage::NewL();
+			
+		
+			
+			//call the SendMessage test case	
+			TInt sendmsg_state = iSendMsgObj->SendMessage(recipient_id,msg,iTestData);
+			
+			if( sendmsg_state == CTestData::EMessageNotSent ||
+					sendmsg_state == CTestData::EMessageSent )
+				{
+				// EMessageSendErr was expected
+				return_value = KErrGeneral; //Error in Sending message
+				}
+		
+		    else if( sendmsg_state == CTestData::EMessageSendErr ) 
+				{
+					//If message sent to invalid userid or blank userid, state should EMessageSendErr
+					// This is used in case of SendMessagetoinvalidUseridTestL
+					return_value = KErrNone; 
+				}
+			
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				//logout didnot happen successfully
+				return_value = KErrGeneral;
+			}
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data (connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::RemoveContactWithBlankUserIdTestL
+// Test for removing blank userid
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::RemoveContactWithBlankUserIdTestL( 
+    CStifItemParser& aItem  )
+{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = iLoginObj->action_login(username,passwd,
+														servername, resource_login,ssl_flag,
+														port,proxy_server, proxy_port,
+														iTestData);
+		
+		
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login happened successfully.
+			//Create the AddDelete Contact class object.
+			
+			//iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			
+			
+			//Get the contact_id and the message.
+			char *contact_id, *msg;
+			
+			contact_id = ""; //make the contactid as blank
+			msg = connect_data->msg_data->message;
+			
+			TInt contact_status = iAddDelContactObj->remove_contact( contact_id, msg, iTestData );
+			
+			if( contact_status == CTestData::EDELETE_FAIL )
+			{
+				return_value = KErrNone;
+			}
+			
+			//Do the logout and then return KErrNone;
+			login_status =	iLoginObj->action_logout(iTestData);
+			
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				return_value = KErrGeneral; //logout was not successful
+			}
+			
+			free_data (connect_data, iLog );
+			return return_value;
+		}
+		
+		else
+		  {
+		  	free_data (connect_data, iLog );
+		  	return KErrGeneral;//login was not successful
+		  }
+}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::AddContactWithBlankUserIdTestL
+// Test for Adding blank userid
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::AddContactWithBlankUserIdTestL( 
+    CStifItemParser& aItem  )
+{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = iLoginObj->action_login(username,passwd,
+														servername, resource_login,ssl_flag,
+														port,proxy_server, proxy_port,
+														iTestData);
+		
+		
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login happened successfully.
+			//Create the AddDelete Contact class object.
+			
+			//iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			
+			
+			//Get the contact_id and the message.
+			char *addcontact_id, *msg;
+			
+			addcontact_id = ""; //make the contactid as blank
+			msg = connect_data->msg_data->message;
+			
+			TInt addcontact_status = iAddDelContactObj->add_contact(addcontact_id,msg, iTestData );
+			
+			if( addcontact_status == CTestData::EADD_FAIL )
+			{
+				return_value = KErrNone;
+			}
+			
+			//Do the logout and then return KErrNone;
+			login_status =	iLoginObj->action_logout(iTestData);
+			
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				return_value = KErrGeneral; //logout was not successful
+			}
+			
+			free_data (connect_data, iLog );
+			return return_value;
+		}
+		
+		else
+		  {
+		  	free_data (connect_data, iLog );
+		  	return KErrGeneral;//login was not successful
+		  }
+}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::AddContactTestL
+// Test for Adding Contact
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::AddContactTestL( 
+    CStifItemParser& aItem  )
+{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = iLoginObj->action_login(username,passwd,
+														servername, resource_login,ssl_flag,
+														port,proxy_server, proxy_port,
+														iTestData);
+		
+		
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login happened successfully.
+			//Create the AddDelete Contact class object.
+			
+			//iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			
+			
+			//Get the contact_id and the message.
+			char *addcontact_id, *msg;
+			
+			addcontact_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+			
+			TInt addcontact_status = iAddDelContactObj->add_contact(addcontact_id,msg, iTestData );
+			
+			if( addcontact_status != CTestData::EADD_SUCCESS )
+			{
+				return_value = KErrGeneral;
+			}
+			
+			//Do the logout and then return KErrNone;
+			login_status =	iLoginObj->action_logout(iTestData);
+			
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				return_value = KErrGeneral; //logout was not successful
+			}
+			
+			free_data (connect_data, iLog );
+			return return_value;
+		}
+		
+		else
+		  {
+		  	free_data (connect_data, iLog );
+		  	return KErrGeneral;//login was not successful
+		  }
+}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::AddContactAlreadyInRosterTestL
+// Test for Adding Contact which is already added
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::AddContactAlreadyInRosterTestL( 
+    CStifItemParser& aItem  )
+{
+		TInt return_value = KErrNone;
+		
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = iLoginObj->action_login(username,passwd,
+														servername, resource_login,ssl_flag,
+														port,proxy_server, proxy_port,
+														iTestData);
+		
+		
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login happened successfully.
+			//Create the AddDelete Contact class object.
+						
+			iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+						
+			//Get the contact_id and the message.
+			char *addcontact_id, *msg;
+			
+			addcontact_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+			
+			TInt addcontact_status = iAddDelContactObj->add_contact(addcontact_id,msg, iTestData );
+			
+			if( addcontact_status != CTestData::EADD_SUCCESS )
+			{
+				return_value = KErrGeneral;
+				login_status = iLoginObj->action_logout(iTestData);
+				if (login_status != CTestData::EDISCONNECTED)
+					{
+					return_value = KErrGeneral;
+			  	}
+				
+			}
+			else
+			{
+				//The function add_contact resets iAddDeleteContactStatus (in CTestData) to EADD_FAIL
+				//to check again that adding a contact already added was successful(EADD_SUCCESS)
+				//so no need to set here explicitly
+
+				
+				addcontact_status = iAddDelContactObj->add_contact(addcontact_id,msg, iTestData );
+				if( addcontact_status != CTestData::EADD_SUCCESS )
+					{
+					return_value = KErrGeneral;
+				  	}
+				login_status = iLoginObj->action_logout(iTestData);
+				if (login_status != CTestData::EDISCONNECTED)
+					{
+					return_value = KErrGeneral;
+			   		}
+			}
+			
+		free_data (connect_data, iLog );
+		return return_value;	
+	 }		
+	else
+		{ 
+			free_data (connect_data, iLog ); 
+		  return KErrGeneral;	 //login was not successful
+		}
+	
+}
+
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::RemoveContactAlreadyRemovedTestL
+// Test for removing Contact which is already removed
+// -----------------------------------------------------------------------------
+	
+TInt CTelepathyGabbleTest::RemoveContactAlreadyRemovedTestL( 
+    CStifItemParser& aItem  )
+{
+		TInt return_value = KErrNone; 
+		
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = iLoginObj->action_login(username,passwd,
+														servername, resource_login,ssl_flag,
+														port,proxy_server, proxy_port,
+														iTestData);
+		
+		
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login happened successfully.
+			//Create the AddDelete Contact class object.
+						
+			iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+						
+			//Get the contact_id and the message.
+			char *contact_id, *msg;
+			
+			contact_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+			
+			TInt contact_status = iAddDelContactObj->add_contact( contact_id, msg, iTestData );
+			
+			if( contact_status != CTestData::EADD_SUCCESS )
+			{
+				iLog->Log( _L("CTelepathyGabbleTest:: contact not added successfully \n") );
+				return_value = KErrGeneral;
+				login_status = iLoginObj->action_logout(iTestData);
+				if (login_status != CTestData::EDISCONNECTED)
+					{
+					return_value = KErrGeneral;
+			  	}
+			  free_data (connect_data, iLog ); 
+		    return return_value;	
+			}
+			
+			contact_status = iAddDelContactObj->remove_contact( contact_id, msg, iTestData );
+			
+			if( contact_status != CTestData::EDELETE_SUCCESS )
+			{
+				//contact removed first time, so should be removed successfully, otherwise error
+				iLog->Log( _L("CTelepathyGabbleTest::First Time  contact not deleted successfully \n") );
+				return_value = KErrGeneral;
+				login_status = iLoginObj->action_logout(iTestData);
+				if (login_status != CTestData::EDISCONNECTED)
+					{
+					return_value = KErrGeneral;
+			  	}
+			 }
+			else
+			{
+				//The function remove_contact resets iAddDeleteContactStatus (in CTestData) to EDELETE_FAIL
+				//to check again that removing a contact already removed was not successful,
+				// so no need to set  here explicitly
+				iLog->Log( _L("CTelepathyGabbleTest::First Time  contact deleted successfully \n") );				
+				contact_status = iAddDelContactObj->remove_contact(contact_id,msg, iTestData );
+				
+			
+				// because contact to be removed was already deleted, so status should be EDELETE_FAIL
+				if( contact_status != CTestData::EDELETE_FAIL )
+					{
+					iLog->Log( _L("CTelepathyGabbleTest::Second Time deleted successfully, it should give some error \n") );
+					return_value = KErrGeneral; 
+				  	}
+				login_status = iLoginObj->action_logout(iTestData);
+				if (login_status != CTestData::EDISCONNECTED)
+					{
+						iLog->Log( _L("CTelepathyGabbleTest::Error in logout \n") );
+					return_value = KErrGeneral;
+			  		}
+			}
+			
+		free_data (connect_data, iLog );
+		return return_value;	
+	 }		
+	else
+		{ 
+			free_data (connect_data, iLog ); 
+		  return KErrGeneral;	 //login was not successful
+		}
+	
+}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::RemoveContactTestL
+// Test for removing a contact
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::RemoveContactTestL( 
+    CStifItemParser& aItem  )
+{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = iLoginObj->action_login(username,passwd,
+											servername, resource_login,ssl_flag,
+											port,proxy_server, proxy_port,
+											iTestData );
+		
+		
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login happened successfully.
+			//Create the AddDelete Contact class object.
+			
+			
+			iAddDelContactObj = CTelepathyGabbleAddDeleteContact::NewL();
+			
+			
+			//Get the contact_id and the message.
+			char *contact_id, *msg;
+			
+			contact_id = connect_data->msg_data->recipient;
+			msg = connect_data->msg_data->message;
+			
+			TInt removecontact_status = iAddDelContactObj->remove_contact( contact_id, msg,	iTestData);
+			
+			if( removecontact_status != CTestData::EDELETE_SUCCESS )
+			{
+				return_value = KErrGeneral;
+			}
+			
+			//Do the logout and then return KErrNone;
+			login_status =	iLoginObj->action_logout(iTestData);
+			
+			if (login_status != CTestData::EDISCONNECTED)
+			{
+				return_value = KErrGeneral; //logout was not successful
+			}
+			
+			free_data (connect_data, iLog );
+			return return_value;
+		}
+		
+		else
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::RemoveInvalidContactTestL
+// Test for removing invalid userid
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::RemoveInvalidContactTestL( 
+    CStifItemParser& aItem  )
+    
+{	
+	TInt err = RemoveContactTestL(aItem);
+	if ( err == KErrGeneral
+	 				&&	 iTestData->GetAddDeleteContactStatus() == CTestData::EDELETE_FAIL )
+	{
+		// This is correct, since the contact_id was invalid
+		return KErrNone;
+	}
+	
+	return KErrGeneral;
+	
+}
+  
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::FetchContactsTestL
+// Test for fetching contacts
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::FetchContactsTestL( 
+    CStifItemParser& aItem  )
+{
+	  TInt return_value = KErrNone;
+	  //Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data (connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		char *username, *passwd , *servername , *resource_login,*ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+		
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+		
+		iTestData = CTestData::NewL(iLog);
+	
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+			
+		//action_login will have parameters 
+		//passed from cfg file
+		TInt login_status = 
+					iLoginObj->action_login(username,passwd,
+											servername, resource_login,ssl_flag,
+											port,proxy_server, proxy_port,
+											iTestData);
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+		
+		  	//if successfully logged in
+		  	//fetch the contacts
+		  
+		  	iFetchContactObj = CTelepathyGabbleFetchContacts::NewL();
+		  						
+			return_value = iFetchContactObj->test_request_roster( iTestData );
+			
+			//Do the logout and the cleanup.
+			login_status = iLoginObj->action_logout(iTestData);
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+				 	return_value = KErrGeneral; //there was error in logout
+				}
+		 
+		}
+		else
+		{
+			return_value = KErrGeneral; //login didn't happen successfully
+		}
+		
+		free_data (connect_data, iLog );
+		return return_value;
+			
+}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchTwiceTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchTwiceTestL( CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			GValue *gvalue = NULL;
+		
+			char *key, *value;
+			
+			key = connect_data->msg_data->recipient;
+			value = connect_data->msg_data->message;
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			gvalue = g_new0(GValue, 1);	
+		
+					 
+			g_value_init(gvalue, G_TYPE_STRING);
+			g_value_set_string (gvalue, value );
+			g_hash_table_insert( data_to_search, GetSearchLabelL(servername,key), gvalue);			      
+			
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+					
+			//call the SendMessage test case	
+			TInt search_state = iSearchObj->SearchL(data_to_search, iTestData);
+			
+			if( search_state == CTestData::ESearchError )
+				{
+					return_value = KErrGeneral; //Error in Searching
+				}
+			else if( search_state == CTestData::ESearchCompleted) 
+				{
+					search_state = iSearchObj->SearchL(data_to_search, iTestData);
+					if( search_state == CTestData::ESearchError )
+						{
+						return_value = KErrGeneral; //Error in Searching	
+						}
+					//return_value = KErrNone; 
+				}
+			
+			iSearchObj->CloseChannel(iTestData);
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::SearchFiveTimesTestL
+// -----------------------------------------------------------------------------
+
+TInt CTelepathyGabbleTest::SearchFiveTimesTestL( CStifItemParser& aItem  )
+	{
+		TInt return_value = KErrNone;
+		//Pass the parameters to action_login() from the 
+		//data mentioned in the cfg file.
+		
+		//step 1: Do the login.
+		ConnectData  *connect_data = NULL;
+		
+		if ( read_data ( connect_data, aItem, iLog ) != RC_OK )
+		{
+			free_data ( connect_data, iLog );
+			return KErrGeneral;
+		}
+		
+
+		//for login
+		char *username, *passwd , *servername , *resource_login, *ssl_flag, *port;
+		char *proxy_server = NULL;
+		char *proxy_port = NULL;
+		
+	
+		username = 	connect_data->username;
+		passwd   =  connect_data->password;
+		servername = 	connect_data->server;
+		resource_login = connect_data->resource;
+		ssl_flag = connect_data->ssl_flag;
+		port = connect_data->port;
+		#ifdef __WINSCW__
+	  		proxy_server = connect_data->proxy_data->proxy_server;
+			proxy_port = connect_data->proxy_data->proxy_port;
+		#endif
+		
+
+		if (iTestData == NULL)
+		{
+			//Create the iTestData if it is not existing.
+			
+			iTestData = CTestData::NewL(iLog);
+		}
+		iTestData->SetTestType(CTestData::ESearch);
+		//Create the login object
+		iLoginObj = CTelepathyGabbleLoginTest::NewL();
+		
+		//action_login will have parameters 
+		//passed from cfg file
+		
+		TInt login_status = 
+			iLoginObj->action_login(username,passwd,servername, 
+									resource_login,ssl_flag,
+									port,proxy_server, proxy_port,
+									iTestData );
+		
+		if (login_status == CTestData::ECONNECTED)
+		{
+			//login was successful
+			
+			GHashTable *data_to_search = NULL;
+			
+			GValue *gvalue = NULL;
+		
+			char *key, *value;
+			
+			key = connect_data->msg_data->recipient;
+			value = connect_data->msg_data->message;
+			
+			data_to_search = g_hash_table_new(g_str_hash,g_str_equal);	
+			
+			gvalue = g_new0(GValue, 1);	
+		
+					 
+			g_value_init(gvalue, G_TYPE_STRING);
+			g_value_set_string (gvalue, value );
+			g_hash_table_insert( data_to_search, GetSearchLabelL(servername,key), gvalue);			      
+			
+		
+
+			//Create the Object of Send Message class
+			iSearchObj = CTelepathyGabbleSearch::NewL();	
+			
+			TInt search_state;	
+				
+			for(TInt i = 0; i<5 ;i++ )
+				{
+					search_state = iSearchObj->SearchL(data_to_search, iTestData);
+					if( search_state == CTestData::ESearchError )
+						{
+						return_value = KErrGeneral; //Error in Searching
+						break;	
+						}
+				}
+			iSearchObj->CloseChannel(iTestData);
+			//Do the logout
+			login_status = iLoginObj->action_logout(iTestData);
+
+			if (login_status != CTestData::EDISCONNECTED)
+				{
+					//logout didnot happen successfully
+					return_value = KErrGeneral;
+				}
+			
+			//do this later	
+		   	/*g_hash_table_foreach_remove ( data_to_search, 
+					search_hash_remove, NULL );*/
+		
+			//Free the hash table itself
+			g_hash_table_destroy ( data_to_search );
+		
+		}
+		else
+		{
+			//Login itself didnot happen.
+			return_value =  KErrGeneral;
+		}		
+		
+		free_data ( connect_data, iLog );	
+		return return_value;
+	}
+	
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::GetSearchLabelForYukonL
+// -----------------------------------------------------------------------------
+gchar* CTelepathyGabbleTest::GetSearchLabelForYukonL(gchar *search_key)
+{
+if(strcmp(search_key,"user") == 0)
+	{
+	gchar* label= "User";
+	return label;	
+	}
+else if(strcmp(search_key,"fn") == 0)
+	{
+	gchar* label= "Full Name";
+	return label;	
+	}	
+else if(strcmp(search_key,"first") == 0)
+	{
+	gchar* label= "Name";
+	return label;	
+	}	
+else if(strcmp(search_key,"middle") == 0)
+	{
+	gchar* label= "Middle Name";
+	return label;	
+	}		
+else if(strcmp(search_key,"last") == 0)
+	{
+	gchar* label= "Family Name";
+	return label;	
+	}
+else if(strcmp(search_key,"nick") == 0)
+	{
+	gchar* label= "Nickname";
+	return label;	
+	}
+else if(strcmp(search_key,"email") == 0)
+	{
+	gchar* label= "Email";
+	return label;	
+	}	
+else if(strcmp(search_key,"bday") == 0)
+	{
+	gchar* label= "Birthday";
+	return label;	
+	}	
+else if(strcmp(search_key,"ctry") == 0)
+	{
+	gchar* label= "Country";
+	return label;	
+	}		
+else if(strcmp(search_key,"orgname") == 0)
+	{
+	gchar* label= "Organization Name";
+	return label;	
+	}
+else if(strcmp(search_key,"locality") == 0)
+	{
+	gchar* label= "City";
+	return label;	
+	}
+else if(strcmp(search_key,"orgunit") == 0)
+	{
+	gchar* label= "Organization Unit";
+	return label;	
+	}			
+}
+
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::GetSearchLabelForGizmoL
+// -----------------------------------------------------------------------------
+gchar* CTelepathyGabbleTest::GetSearchLabelForGizmoL(gchar *search_key)
+{
+if(strcmp(search_key,"xmpp_user") == 0)
+	{
+	gchar* label= "Account Name";
+	return label;	
+	}
+else if(strcmp(search_key,"email_address") == 0)
+	{
+	gchar* label= "Email Address";
+	return label;	
+	}	
+else if(strcmp(search_key,"first_name") == 0)
+	{
+	gchar* label= "First Name";
+	return label;	
+	}	
+else if(strcmp(search_key,"last_name") == 0)
+	{
+	gchar* label= "Family Name";
+	return label;	
+	}
+else if(strcmp(search_key,"country") == 0)
+	{
+	gchar* label= "Country";
+	return label;	
+	}		
+else if(strcmp(search_key,"state") == 0)
+	{
+	gchar* label= "State/Province";
+	return label;	
+	}
+else if(strcmp(search_key,"city") == 0)
+	{
+	gchar* label= "City";
+	return label;	
+	}
+else if(strcmp(search_key,"max_results") == 0)
+	{
+	gchar* label= "Maximum # of Results";
+	return label;	
+	}			
+}
+
+// -----------------------------------------------------------------------------
+// CTelepathyGabbleTest::GetSearchLabelL
+// -----------------------------------------------------------------------------
+gchar* CTelepathyGabbleTest::GetSearchLabelL(gchar* aService,gchar* aSearchKey)
+{
+if(strcmp(aService,"chat.gizmoproject.com") == 0)
+	{
+	GetSearchLabelForGizmoL(aSearchKey);	
+	}
+else if(strcmp(aService,"chat.ovi.com") == 0 )
+	{
+	GetSearchLabelForYukonL(aSearchKey);	
+	}
+}
+	
+  	
+
+/** 
+* Free function for the  hash key/value pairs
+*/
+/*gboolean search_hash_remove( gpointer key, gpointer value,
+                      gpointer user_data ) 
+	{
+
+	//Free function for the  hash values
+	if ( key ) 
+		{
+		free( key );
+		}
+	if ( value ) 
+		{
+		free ( value );
+		}
+	
+	return TRUE;
+	}
+*/
+//End of File
\ No newline at end of file