telephonyserver/etelserverandcore/TETEL/TE_ETEL/te_etelsetpriorityclient.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserver/etelserverandcore/TETEL/TE_ETEL/te_etelsetpriorityclient.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,436 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "TE_EtelBase.h"
+#include "te_etelsetpriorityclient.h"
+
+CTestSetPrClientCapNsidPosCheck::CTestSetPrClientCapNsidPosCheck()
+/** Each test step initialises it's own name
+*/
+	{
+	SetTestStepName(_L("TestSetPrClientCapNsidPosCheck"));
+	}
+
+enum TVerdict CTestSetPrClientCapNsidPosCheck::doTestStepL()
+//
+// Test connecting Positive check of Capability and SID check for SetPriorityClient API
+//
+	{
+	INFO_PRINTF1(_L("Test connecting Capability and SID check for SetPriorityClient API"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF1(_L("Capability and SID check of setpriorityclient API"));
+	ret=first.SetPriorityClient();
+	TESTCHECK(ret,KErrNone);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClient %d."),ret);
+	return TestStepResult();
+	}
+	
+CTestSetPrClientCapNsidNegCheck::CTestSetPrClientCapNsidNegCheck()
+/** Each test step initialises it's own name
+*/
+	{
+	SetTestStepName(_L("TestSetPrClientCapNsidNegCheck"));
+	}
+
+enum TVerdict CTestSetPrClientCapNsidNegCheck::doTestStepL()
+//
+// Test connecting Negative check of Capability and SID check for SetPriorityClient API
+//
+	{
+	INFO_PRINTF1(_L("Test connecting Capability and SID check for SetPriorityClient API"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF1(_L("Capability and SID check of setpriorityclient API"));
+	ret=first.SetPriorityClient();
+	TESTCHECK(ret,KErrPermissionDenied);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClient %d."),ret);
+	return TestStepResult();
+	}	
+
+CTestSetPrClientMulCallFrSameSes::CTestSetPrClientMulCallFrSameSes()
+/** Each test step initialises it's own name
+*/
+	{
+	SetTestStepName(_L("TestSetPrClientMulCallFrSameSes"));
+	}
+
+enum TVerdict CTestSetPrClientMulCallFrSameSes::doTestStepL()
+//
+// Test connecting Multiple call of setpriorityclient API from the same session
+//
+	{
+	INFO_PRINTF1(_L("Test connecting ultiple call of setpriorityclient API from the same session"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF1(_L("Multiple call of setpriorityclient API on the same session"));
+	ret=first.SetPriorityClient();
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClient in same session  %d."),ret);
+	ret=first.SetPriorityClient();
+	TESTCHECK(ret, KErrAlreadyExists);
+	INFO_PRINTF2(_L("Second call of RTelServer::SetPriorityClient in same session %d."),ret);
+	first.Close();
+	
+	return TestStepResult();
+	}
+//
+CTestSetPrClientMulCallFrDiffSubSes::CTestSetPrClientMulCallFrDiffSubSes()
+/** Each test step initialises it's own name
+*/
+	{
+	SetTestStepName(_L("TestSetPrClientMulCallFrDiffSubSes"));
+	}
+
+enum TVerdict CTestSetPrClientMulCallFrDiffSubSes::doTestStepL()
+//
+// Test connecting Multiple call of setpriorityclient API from the different sub session
+//
+	{
+	INFO_PRINTF1(_L("Test connecting Multiple call of setpriorityclient API on the different sub session"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	RTelServer second;
+	ret=second.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect (second) returned %d."),ret);
+	INFO_PRINTF1(_L("Multiple call of setpriorityclient API on the different session"));
+	ret=first.SetPriorityClient();
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClient in different session %d."),ret);
+	ret=second.SetPriorityClient();
+	TESTCHECK(ret, KErrAlreadyExists);
+	INFO_PRINTF2(_L("second call of RTelServer::SetPriorityClient in different session %d."),ret);
+	second.Close();
+	first.Close();
+	
+	return TestStepResult();
+	}
+//
+CTestSetPrClientMulCallFrDiffClt::CTestSetPrClientMulCallFrDiffClt()
+/** Each test step initialises it's own name
+*/
+	{
+	SetTestStepName(_L("TestSetPrClientMulCallFrDiffClt"));
+	}
+	
+TInt CTestSetPrClientMulCallFrDiffClt ::FirstThreadFunctiona(TAny*  aThreadData1)
+	{
+	RTelServer server;
+	CTestStep* testStep = static_cast<CTestStep*>(aThreadData1);
+	CTrapCleanup* cleanup;
+	if ((cleanup=CTrapCleanup::New())==NULL)
+		{
+		return KErrGeneral;
+		}
+	TInt ret = server.Connect();
+	testStep->TEST1(ret==KErrNone,ETrue);
+	testStep->INFO_PRINTF2(_L("Thread1 RTelServer::Connect returned %d."),ret);
+	ret=server.SetPriorityClient();
+	testStep->TEST1((ret == KErrNone) || (ret == KErrAlreadyExists), ETrue);
+	testStep->INFO_PRINTF2(_L("Thread1 RTelServer::SetPriorityClient returned %d."),ret);
+	User::After(KETelThreadShutdownGuardPeriod);
+	server.Close();	
+	delete cleanup;
+	return ret;
+	}
+
+TInt CTestSetPrClientMulCallFrDiffClt ::SecondThreadFunctiona(TAny*  aThreadData2)
+	{
+	RTelServer server;
+	CTestStep* testStep = static_cast<CTestStep*>(aThreadData2);
+	CTrapCleanup* cleanup;
+	if ((cleanup=CTrapCleanup::New())==NULL)
+		{
+		return KErrGeneral;	
+		}
+	TInt ret = server.Connect();
+	testStep->TEST1(ret==KErrNone,ETrue);
+	testStep->INFO_PRINTF2(_L("Thread2 RTelServer::Connect returned %d."),ret);
+	ret=server.SetPriorityClient();
+	testStep->TEST1((ret == KErrNone) || (ret == KErrAlreadyExists),ETrue);
+	testStep->INFO_PRINTF2(_L("Thread2 RTelServer::SetPriorityClient returned %d."),ret);
+	server.Close();
+	delete cleanup;
+	return ret;
+	}
+		
+enum TVerdict CTestSetPrClientMulCallFrDiffClt::doTestStepL()
+//
+// Test connecting Multiple call of setpriorityclient API from the different threads
+//
+	{
+	RThread thread1;
+	RThread thread2;
+	TRequestStatus reqStatus1;
+	TRequestStatus reqStatus2;
+	Logger().ShareAuto();
+	INFO_PRINTF1(_L("Test connecting Multiple call of setpriorityclient API from the different threads"));
+	const TInt KStackSize=0x8000;
+	const TInt KHeapSize=0x8000;
+	const TInt KMaxHeapSize=0x80000;
+	_LIT(KFirstThreadName,"FirstThread");
+	_LIT(KSecondThreadName,"SecondThread");
+	TInt res1=thread1.Create(KFirstThreadName, FirstThreadFunctiona,KStackSize,KHeapSize,KMaxHeapSize,(void*)this, EOwnerThread);
+	TESTCHECK(res1, KErrNone);
+	if(res1!=KErrNone)
+		{
+		ERR_PRINTF1(_L("CTestSetPrClientMulCallFrDiffClt:thread1.Create Failed to create a thread1"));
+		SetTestStepResult(EFail);
+		}
+	thread1.Logon(reqStatus1);	//Request 1
+	TInt resu1=(reqStatus1.Int(), KRequestPending);
+	TInt res2=thread2.Create(KSecondThreadName,SecondThreadFunctiona,KStackSize,KHeapSize,KMaxHeapSize,(void*)this, EOwnerThread);
+	TESTCHECK(res2, KErrNone);
+	if(res2!=KErrNone)
+		{
+		ERR_PRINTF1(_L("CTestSetPrClientMulCallFrDiffClt:thread2.Create Failed to create a thread2"));
+		SetTestStepResult(EFail);
+		}
+	thread2.Logon(reqStatus2);	//Request 2
+	TInt resu2=(reqStatus2.Int(), KRequestPending);
+	thread1.Resume();
+	thread2.Resume();
+	User::WaitForRequest(reqStatus1);
+	User::WaitForRequest(reqStatus2);
+	TEST( ((reqStatus1==KErrNone) && (reqStatus2==KErrAlreadyExists)) ||
+		  ((reqStatus2==KErrNone) && (reqStatus1==KErrAlreadyExists)));
+	if (thread1.ExitType() != EExitKill && thread1.ExitReason() != 0)
+		{
+		User::Leave(thread1.ExitReason());
+		}//end of if (iThread1.ExitType() != EExitKill && iThread1.ExitReason() != 0)
+	thread1.Close();
+	INFO_PRINTF2(_L("First thread opened ETel session and returned %d"), res1);
+	if (thread2.ExitType() != EExitKill && thread2.ExitReason() != 0)
+		{
+		User::Leave(thread2.ExitReason());
+		}//end of if (iThread2.ExitType() != EExitKill && iThread2.ExitReason() != 0)
+	thread2.Close();
+	INFO_PRINTF2(_L("Second thread opened ETel session and returned %d"), res2);
+
+	return TestStepResult();
+	}
+	
+CTestSetPrClientV2CapNsidPosCheck::CTestSetPrClientV2CapNsidPosCheck()
+	{
+	SetTestStepName(_L("TestSetPrClientV2CapNsidPosCheck"));
+	}
+	
+enum TVerdict CTestSetPrClientV2CapNsidPosCheck::doTestStepL()
+//
+// Test connecting  Positive check of Capability and SID check for SetPriorityClientV2 API
+//
+	{
+	INFO_PRINTF1(_L("Test connecting Capability and SID check for SetPriorityClientV2 API"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF1(_L("Capability and SID check of setpriorityclientV2 API"));
+	ret=first.SetPriorityClientV2();
+	TESTCHECK(ret,KErrNone);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClientV2 %d."),ret);
+	return TestStepResult();
+	}
+	
+CTestSetPrClientV2CapNsidNegCheck::CTestSetPrClientV2CapNsidNegCheck()
+	{
+	SetTestStepName(_L("TestSetPrClientV2CapNsidNegCheck"));
+	}
+	
+enum TVerdict CTestSetPrClientV2CapNsidNegCheck::doTestStepL()
+//
+// Test connecting Negative check of Capability and SID check for SetPriorityClientV2 API
+//
+	{
+	INFO_PRINTF1(_L("Test connecting Capability and SID check for SetPriorityClientV2 API"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF1(_L("Capability and SID check of setpriorityclientV2 API"));
+	ret=first.SetPriorityClientV2();
+	TESTCHECK(ret,KErrPermissionDenied);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClientV2 %d."),ret);
+	return TestStepResult();
+	}	
+	
+	
+CTestSetPrClientV2MulCallFrSameSes::CTestSetPrClientV2MulCallFrSameSes()
+	{
+	SetTestStepName(_L("TestSetPrClientV2MulCallFrDiffSubSes"));
+	}
+	
+enum TVerdict CTestSetPrClientV2MulCallFrSameSes::doTestStepL()
+//
+// Test connecting Multiple call of setpriorityclientV2 API from the same session
+//	
+	{
+	INFO_PRINTF1(_L("Test connecting Multiple call of setpriorityclientV2 API from the same session"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF1(_L("Multiple call of setpriorityclientV2 API on the same session"));
+	ret=first.SetPriorityClientV2();
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClientV2 in same session  %d."),ret);
+	ret=first.SetPriorityClientV2();
+	TESTCHECK(ret, KErrAlreadyExists);
+	INFO_PRINTF2(_L("Second call of RTelServer::SetPriorityClientV2 in same session %d."),ret);
+	first.Close();
+	
+	return TestStepResult();
+	}
+	
+CTestSetPrClientV2MulCallFrDiffSubSes::CTestSetPrClientV2MulCallFrDiffSubSes()
+	{
+	SetTestStepName(_L("TestSetPrClientV2MulCallFrDiffSubSes"));
+	}
+	
+enum TVerdict CTestSetPrClientV2MulCallFrDiffSubSes::doTestStepL()
+//
+// Test connecting Multiple call of setpriorityclientV2 API from the different sub session
+//
+	{
+	INFO_PRINTF1(_L("Test connecting Multiple call of setpriorityclientV2 API from the different sub session"));
+	RTelServer first;
+	TInt ret=first.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect returned %d."),ret);
+	TESTCHECK(ret, KErrNone);
+	RTelServer second;
+	ret=second.Connect();
+	INFO_PRINTF2(_L("RTelServer::Connect (second) returned %d."),ret);
+	INFO_PRINTF1(_L("Multiple call of setpriorityclientV2 API on the different session"));
+	ret=first.SetPriorityClientV2();
+	TESTCHECK(ret, KErrNone);
+	INFO_PRINTF2(_L("first call of RTelServer::SetPriorityClientV2 in different session %d."),ret);
+	ret=second.SetPriorityClientV2();
+	TESTCHECK(ret, KErrAlreadyExists);
+	INFO_PRINTF2(_L("second call of RTelServer::SetPriorityClientV2 in different session %d."),ret);
+	second.Close();
+	first.Close();
+	return TestStepResult();
+	}
+	
+CTestSetPrClientV2MulCallFrDiffClt::CTestSetPrClientV2MulCallFrDiffClt()
+	{
+	SetTestStepName(_L("TestSetPrClientV2MulCallFrDiffClt"));
+	}
+	
+TInt CTestSetPrClientV2MulCallFrDiffClt ::FirstThreadFunctiona(TAny*  aThreadData1)
+	{
+	RTelServer server;
+	CTestStep* testStep = static_cast<CTestStep*>(aThreadData1);
+	CTrapCleanup* cleanup;
+	if ((cleanup=CTrapCleanup::New())==NULL)
+		{
+		return KErrGeneral;	
+		}
+	TInt ret = server.Connect();
+	testStep->TEST1(ret==KErrNone,ETrue);
+	testStep->INFO_PRINTF2(_L("Thread1 RTelServer::Connect returned %d."),ret);
+	ret=server.SetPriorityClientV2();
+	testStep->TEST1(( (ret==KErrAlreadyExists) || (ret==KErrNone) ),ETrue);
+	testStep->INFO_PRINTF2(_L("Thread1 RTelServer::SetPriorityClientV2 returned %d."),ret);
+	User::After(KETelThreadShutdownGuardPeriod);
+	server.Close();	
+	delete cleanup;
+	return ret;
+	}
+	
+TInt CTestSetPrClientV2MulCallFrDiffClt ::SecondThreadFunctiona(TAny*  aThreadData2)
+	{
+	RTelServer server;
+	CTestStep* testStep = static_cast<CTestStep*>(aThreadData2);
+	CTrapCleanup* cleanup;
+	if ((cleanup=CTrapCleanup::New())==NULL)
+		{
+		return KErrGeneral;	
+		}
+	TInt ret = server.Connect();
+	testStep->TEST1(ret==KErrNone,ETrue);
+	testStep->INFO_PRINTF2(_L("Thread2 RTelServer::Connect returned %d."),ret);
+	ret=server.SetPriorityClientV2();
+	testStep->TEST1(( (ret==KErrAlreadyExists) || (ret==KErrNone) ),ETrue);
+	testStep->INFO_PRINTF2(_L("Thread2 RTelServer::SetPriorityClientV2 returned %d."),ret);
+	User::After(KETelThreadShutdownGuardPeriod);
+	server.Close();
+	delete cleanup;
+	return ret;
+	}
+	
+enum TVerdict CTestSetPrClientV2MulCallFrDiffClt::doTestStepL()
+//
+// Test connecting Multiple call of setpriorityclientV2 API from the different threads
+//	
+	{
+	RThread thread1;
+	RThread thread2;
+	TRequestStatus reqStatus1;
+	TRequestStatus reqStatus2;
+	Logger().ShareAuto();
+	INFO_PRINTF1(_L("Test connecting Multiple call of setpriorityclientV2 API from the different threads"));
+	const TInt KStackSize=0x8000;
+	const TInt KHeapSize=0x8000;
+	const TInt KMaxHeapSize=0x80000;
+	_LIT(KFirstThreadName,"FirstThread");
+	_LIT(KSecondThreadName,"SecondThread");
+	TInt res1=thread1.Create(KFirstThreadName, FirstThreadFunctiona,KStackSize,KHeapSize,KMaxHeapSize,(void*)this, EOwnerThread);
+	TESTCHECK(res1, KErrNone);
+	if(res1!=KErrNone)
+		{
+		ERR_PRINTF1(_L("CTestSetPriorityClientc:thread1.Create Failed to create a thread1"));
+		SetTestStepResult(EFail);
+		}
+	thread1.Logon(reqStatus1);	//Request 1
+	TInt resu1=(reqStatus1.Int(), KRequestPending);
+	TInt res2=thread2.Create(KSecondThreadName,SecondThreadFunctiona,KStackSize,KHeapSize,KMaxHeapSize,(void*)this, EOwnerThread);
+	TESTCHECK(res2, KErrNone);
+	if(res2!=KErrNone)
+		{
+		ERR_PRINTF1(_L("CTestSetPriorityClientc:thread2.Create Failed to create a thread2"));
+		SetTestStepResult(EFail);
+		}
+	thread2.Logon(reqStatus2);	//Request 2
+	TInt resu2=(reqStatus2.Int(), KRequestPending);
+	thread1.Resume();
+	User::After(1);
+	thread2.Resume();
+	User::WaitForRequest(reqStatus1);
+	User::WaitForRequest(reqStatus2);
+	TEST( ((reqStatus1==KErrNone) && (reqStatus2==KErrAlreadyExists)) ||
+		  ((reqStatus2==KErrNone) && (reqStatus1==KErrAlreadyExists)));
+	if (thread1.ExitType() != EExitKill && thread1.ExitReason() != 0)
+		{
+		User::Leave(thread1.ExitReason());
+		}//end of if (iThread1.ExitType() != EExitKill && iThread1.ExitReason() != 0)
+	thread1.Close();
+	INFO_PRINTF2(_L("First thread opened ETel session and returned %d"), res1);
+	if (thread2.ExitType() != EExitKill && thread2.ExitReason() != 0)
+		{
+		User::Leave(thread2.ExitReason());
+		}//end of if (iThread2.ExitType() != EExitKill && iThread2.ExitReason() != 0)
+	thread2.Close();
+	INFO_PRINTF2(_L("Second thread opened ETel session and returned %d"), res2);
+	return TestStepResult();
+	}