diff -r c1f20ce4abcf -r 3e88ff8f41d5 kerneltest/e32test/resourceman/t_rescontrolclisync.cpp --- a/kerneltest/e32test/resourceman/t_rescontrolclisync.cpp Tue Aug 31 16:34:26 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -// Copyright (c) 2010 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: -// e32test\resourceman\t_rescontrolclisync.cpp -// TestCase Description: -// This test harness is to test the unsafe setup of power request call back object -// inside resourcecontrol.cpp. The memeber variable of TPowerRequestCb should not -// be corrupted when a second ChangeResourceState is execute during the call back -// function is running. -// -// - -#include -#include -#include -#include -#include -#include "d_rescontrolclisync.h" - - - -LOCAL_D RTest test(_L("T_RESCONTROLCLISYNC")); -RTestResMan lddChan; -RTestResMan lddChan2; - -#define TESTANDCLEAN(x) TestAndClean(x,__LINE__) - -void TestAndClean(TBool aTestValid, TInt aLine) - { - if(!aTestValid) - { - lddChan.DeRegisterClient(); - lddChan2.DeRegisterClient(); - lddChan.Close(); - lddChan2.Close(); - User::FreeLogicalDevice(KLddFileName); - User::FreePhysicalDevice(KPddFileName); - RDebug::Printf("Test fail at line %d", aLine); - test.HandleError(EFalse, aLine, (TText *)__FILE__); - } - } - -GLDEF_C TInt E32Main() - { - test.Title(); - test.Start(_L("Testing Resource Manager...\n")); - - test.Next(_L("Load Physical device")); - TInt r = User::LoadPhysicalDevice(KPddFileName); - test(r==KErrNone || r==KErrAlreadyExists); - test.Next(_L("Load Logical Device")); - r=User::LoadLogicalDevice(KLddFileName); - test(r==KErrNone || r==KErrAlreadyExists); - test.Next(_L("Open Logical Channel 1")); - r = lddChan.Open(); - test(r==KErrNone); - test.Next(_L("Open Logical Channel 2")); - r = lddChan2.Open(); - test(r==KErrNone); - - test.Next(_L("Register client 1")); - r = lddChan.RegisterClient(); - RDebug::Printf("Register client 1 return r = %d", r); - TESTANDCLEAN(r==KErrNone); - - test.Next(_L("Register client 2")); - r = lddChan2.RegisterClient(); - RDebug::Printf("Register client 2 return r = %d", r); - TESTANDCLEAN(r==KErrNone); - - test.Next(_L("Print resource info")); - r = lddChan.PrintResourceInfo(); - RDebug::Printf("Print resource info return r = %d", r); - TESTANDCLEAN(r==KErrNone); - - TRequestStatus RequestStatus; - TRequestStatus RequestStatus2; - - test.Next(_L("WaitAndChangeResource")); - lddChan.WaitAndChangeResource(RequestStatus); - - test.Next(_L("ChangeResourceAndSignal")); - lddChan2.ChangeResourceAndSignal(RequestStatus2); - - User::WaitForRequest(RequestStatus); - TESTANDCLEAN(RequestStatus.Int()==KErrNone); - User::WaitForRequest(RequestStatus2); - TESTANDCLEAN(RequestStatus2.Int()==KErrNone); - - test.Next(_L("De-register client 1")); - r = lddChan.DeRegisterClient(); - test(r==KErrNone); - - test.Next(_L("De-register client 2")); - r = lddChan2.DeRegisterClient(); - test(r==KErrNone); - - test.Printf(_L("Closing the channel\n")); - lddChan.Close(); - lddChan2.Close(); - test.Printf(_L("Freeing logical device\n")); - r = User::FreeLogicalDevice(KLddFileName); - test(r==KErrNone); - r = User::FreePhysicalDevice(KPddFileName); - test(r==KErrNone); - test.End(); - test.Close(); - return KErrNone; - } -