sysstatemgmt/systemstateplugins/test/tintgsapolicy/src/tgsastatetran_base.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstateplugins/test/tintgsapolicy/src/tgsastatetran_base.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,155 @@
+// 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 "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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "tgsastatetran_base.h"
+#include "gsatestapps.h"
+
+#include <ssm/ssmstates.hrh>
+#include <ssm/ssmsubstates.hrh>
+#include <ssm/ssmstate.h>
+#include <ssm/ssmstatetransition.h>
+#include <ssm/ssmstatemanager.h>
+#include <ssm/ssmdomaindefs.h>
+
+#include <e32debug.h>
+
+void CTGsaStateTransition::ConstructL(const TDesC& aResultFile)
+	{
+	// Connects to RSsmStateAwareSession in order to enquire about the current system state
+	TInt err = iSsmStateAwareSess.Connect(KSM2UiServicesDomain3);
+	if (err == KErrNone)
+		RDebug::Print(_L("\nStateTran Test: RSsmStateAwareSession sess Connect %d\n"), err);
+	else
+		{
+		RDebug::Print(_L("\nStateTran Test: RSsmStateAwareSession sess Connect Failed\n"));	
+		User::Leave(err);
+		}
+
+	//Connects to file server
+	err = iFs.Connect();
+	if (err == KErrNone)
+		RDebug::Print(_L("\nStateTran Test: RFs sess Connect %d\n"), err);
+	else
+		{
+		RDebug::Print(_L("\nStateTran Test: RFs sess Connect Failed\n"));
+		User::Leave(err);
+		}
+
+	err = iFs.MkDirAll(aResultFile);
+	if (err == KErrNone || err == KErrAlreadyExists)
+		RDebug::Print(_L("\nStateTran Test: RFs sess Connect %d\n"), err);
+	else
+		{
+		RDebug::Print(_L("\nStateTran Test: RFs sess Connect Failed\n"));
+		User::Leave(err);
+		}
+	}
+
+CTGsaStateTransition::~CTGsaStateTransition()
+	{
+	iSsmStateAwareSess.Close();
+	iFileWriteStream.Close();
+	iFs.Close();
+	if (iAsyncCallbackForStartTest)
+		delete iAsyncCallbackForStartTest;
+	if(iAsyncCallbackForStopScheduler)
+		delete iAsyncCallbackForStopScheduler;
+	}
+
+CTGsaStateTransition::CTGsaStateTransition()
+	{
+	}
+
+// Gets the current system state and checks whether it is in Normal state.
+void CTGsaStateTransition::CurrentSystemStateL()
+	{
+	TSsmState currenState;
+	currenState = iSsmStateAwareSess.State();
+
+	// Writes the current system state to the file
+	iFileWriteStream.WriteUint16L(currenState.MainState());
+	if (currenState.MainState() == ESsmStartup || currenState.MainState() == ESsmNormal || currenState.MainState() == ESsmShutdown)
+		RDebug::Print(_L("\nStateTran Test: Current System State is %d\n"), currenState.MainState());
+	else
+		{
+		RDebug::Print(_L("\nStateTran Test: System is not in Startup / Normal / Shutdown State\n"));
+		User::Leave(KTestAppFailure);
+		}
+	}
+
+TBool CTGsaStateTransition::DoStartStateTranTest()
+	{
+	TSsmState currenState;
+	currenState = iSsmStateAwareSess.State();
+
+	// Once the system enters into normal state start the state transition test
+	if (currenState.MainState() == ESsmNormal)
+		{
+		RDebug::Print(_L("\nStateTran Test: System is in Normal state, so start the test\n"));
+		return ETrue;
+		}
+	else
+		{
+		iAsyncCallbackForStartTest->CallBack();
+		return EFalse;
+		}
+	}
+
+void CTGsaStateTransition::CallStopSchedulerL()
+	{
+	TSsmState currenState;
+	currenState = iSsmStateAwareSess.State();
+
+	TUint16 currentMainState = currenState.MainState();
+	// Active scheduler is stopped once the system goes into shudown state, else it issues a request for callback again
+	// Once the system gets into normal state start the state transition test
+	if (currentMainState == ESsmFail || currentMainState == ESsmShutdown)
+		{
+ 		RDebug::Print(_L("\nStateTran Test: Stop Active Scheduler\n"));
+		iFileWriteStream.WriteUint16L(currentMainState);
+		CActiveScheduler::Stop();
+		}
+	else
+		{
+		iAsyncCallbackForStopScheduler->CallBack();
+		}
+	}
+
+void CTGsaStateTransition::CommitTestResultsL(TInt aTestCompletionReason)
+	{
+	// Writes the test completion reason to the file
+	iFileWriteStream.WriteInt32L(aTestCompletionReason);
+	iFileWriteStream.CommitL();
+	}
+
+void CTGsaStateTransition::StateChanged(TSsmState aSsmState)
+	{
+	if (aSsmState.MainState() == ESsmFail || aSsmState.MainState() == ESsmShutdown)
+		RDebug::Print(_L("\nStateTran Test: Current System State after completing the test %d\n"), aSsmState.MainState());
+	else
+		{
+		RDebug::Print(_L("\nStateTran Test: System is not in Fail or Shutdown State\n"));
+		}
+	}
+
+
+
+