void CCmdTestWaitForApparcInit::doTestNewLWithGoodDataL()
	{
	TCmdErrorSeverity severity = ECmdIgnoreFailure;
	TInt err = KErrNone;
	TInt expectedErr = KErrNone;
	INFO_PRINTF1(_L("Test:doTestNewLWithGoodDataL - Command construction with valid data"));

	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:01 Test: NewL(RReadStream& aReadStream)"));
	TRAP(err, iTestCmd = CreateCmdFromStreamL(severity));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;

	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:02 Test: NewL(TCmdErrorSeverity aSeverity)"));
	severity = ECmdCriticalSeverity;
	TRAP(err, iTestCmd = CCmdWaitForApparcInit::NewL(severity));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;

	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:03 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	severity = ECmdMediumSeverity;	//this severity is same as defined in r_command_valid_data
	// open reader
	RResourceReader& reader = LoadResourcesL(KTestRscFileName, R_COMMAND_VALID_DATA);
	TSsmCommandParameters params(reader, NULL, 0);
	TRAP(err, iTestCmd = CCmdWaitForApparcInit::NewL(params));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;
	FreeResources();
	
#ifdef SYMBIAN_SSM_FLEXIBLE_MERGE
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:04 Test: NewL(TCmdErrorSeverity aSeverity, const TUint16 aPriority)"));
	severity = ECmdCriticalSeverity;
	TRAP(err, iTestCmd = CCmdWaitForApparcInit::NewL(severity, KTestPriority));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity, KTestPriority);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;
	
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:05 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	INFO_PRINTF1(_L("Read priority from rss"));
	severity = ECmdMediumSeverity;	//this severity is same as defined in r_command_valid_data
	// open reader
	RResourceReader& reader1 = LoadResourcesL(KTestRscFileName, R_COMMAND_VALID_DATA1);
	TSsmCommandParameters params1(reader1, NULL, 0);
	TRAP(err, iTestCmd = CCmdWaitForApparcInit::NewL(params1));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity, KTestPriority);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;
	FreeResources();
	
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:06 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	INFO_PRINTF1(_L("Default priority for initial version"));
	severity = ECmdMediumSeverity;	//this severity is same as defined in r_command_valid_data
	// open reader
	RResourceReader& reader2 = LoadResourcesL(KTestRscFileName, R_COMMAND_VALID_DATA2);
	TSsmCommandParameters params2(reader2, NULL, 0);
	TRAP(err, iTestCmd = CCmdWaitForApparcInit::NewL(params2));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity, KDefaultCommandPriority);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;
	FreeResources();
	
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:07 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	INFO_PRINTF1(_L("negative priority will be interpreted as a very high positive value"));
	severity = ECmdMediumSeverity;	//this severity is same as defined in r_command_valid_data
	// open reader
	RResourceReader& reader3 = LoadResourcesL(KTestRscFileName, R_COMMAND_VALID_DATA3);
	TSsmCommandParameters params3(reader3, NULL, 0);
	TRAP(err, iTestCmd = CCmdWaitForApparcInit::NewL(params3));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	CompareCommandsDataL(iTestCmd, severity, KNegPriority);		//validate the values
	delete iTestCmd;
	iTestCmd = NULL;
	FreeResources();
#endif
	
	}
void CCmdTestLoadSup::doTestNewLWithGoodDataL()
	{
	TInt err = KErrNone;
	TInt expectedErr = KErrNone;

	TCmdErrorSeverity severity = ECmdCriticalSeverity;
	TSsmExecutionBehaviour executionBehaviour = ESsmWaitForSignal;
	TUid uid;
	uid.iUid = 9;
	TInt32 ordinal = 1;
	TInt16 retries = 5;

	TSsmSupInfo info;
	info.SetL(KFileName, ordinal, uid);

	INFO_PRINTF1(_L("Test:doTestNewLWithGoodDataL - Command construction with valid data"));

	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:01 Test: NewL(RReadStream& aReadStream)"));
	TRAP(err, CallInternalizeDataTestL(severity, executionBehaviour, retries, info));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);

	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:02 Test: NewL(TCmdErrorSeverity aSeverity, TSsmExecutionBehaviour aExecutionBehaviour, const TSsmSwp& aSwpInfo)"));
	TRAP(err, ConstructAndDeleteL(severity, executionBehaviour, retries, info));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);

	severity = ECmdIgnoreFailure;
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:03 Test: NewL(TCmdErrorSeverity aSeverity, TSsmExecutionBehaviour aExecutionBehaviour, const TSsmSwp& aSwpInfo)"));
	TRAP(err, ConstructAndDeleteL(severity, executionBehaviour, retries, info));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);

	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:04 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	RResourceReader& reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP1);
	TSsmCommandParameters params(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();
	
#ifdef SYMBIAN_SSM_FLEXIBLE_MERGE
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:05 Test: NewL(TCmdErrorSeverity aSeverity, TSsmExecutionBehaviour aExecutionBehaviour, const TSsmSwp& aSwpInfo, const TUint16 aPriority)"));
	INFO_PRINTF1(_L("Test NewL with priority"));
	TRAP(err, ConstructAndDeleteL(severity, executionBehaviour, retries, info, ECmdLoadSupVersionWithPriority, KTestPriority));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:04 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	INFO_PRINTF1(_L("Test NewL with priority"));
	RResourceReader& reader2 = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP15);
	TSsmCommandParameters params2(reader2, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params2));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();
	
	INFO_PRINTF1(_L("doTestNewLWithGoodDataL:04 Test: NewL(TSsmCommandParameters& aCommandParameters)"));
	INFO_PRINTF1(_L("Invalid version returns default priority"));
	RResourceReader& reader3 = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP16);
	TSsmCommandParameters params3(reader3, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params3));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();

	
#endif
	}
void CCmdTestLoadSup::doTestResourceReaderWithBadDataL()
	{
	TInt err = KErrNone;
	TInt expectedErr = KErrNotSupported;
	
	INFO_PRINTF1(_L("Test:doTestResourceReaderWithBadDataL:01"));

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:01: Invalid Type"));
	RResourceReader& reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP2);  
	TSsmCommandParameters params(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:02: Invalid Version"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP3);  
	TSsmCommandParameters params1(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params1));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:03: Invalid executionBehaviour 1"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP4);  
	TSsmCommandParameters params2(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params2));
	expectedErr = KErrArgument;
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:04: Invalid executionBehaviour 2"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP5);  
	TSsmCommandParameters params3(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params3));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);	
	TEST(err == expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:05: Invalid ordinal"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP6);  
	TSsmCommandParameters params4(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params4));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:06: Negative ordinal"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP14);
	TSsmCommandParameters params5(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params5));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err==expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:07: Missing filename"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP7);
	TSsmCommandParameters params6(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params6));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();

	INFO_PRINTF1(_L("doTestResourceReaderWithBadDataL:08: Negative retries"));
	reader = LoadResourcesL(KRscFileBuffer, R_COMMAND_LOAD_SUP12);
	TSsmCommandParameters params7(reader, NULL, 0);
	TRAP(err, ConstructAndDeleteViaReaderL(params7));
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, expectedErr);
	TEST(err == expectedErr);
	FreeResources();
	}
int main(int argc, char **argv)
{

	  //*****************************SET PARAMETERS*************************************************
	  Parameters params(argc, argv, 0);
	  Parameters params2(argc, argv, 1);
	  //********************************************************************************************

	  //**********************READ DATA AND MAKE SOLUTION*******************************************
	  Solution* sol = constructSolution(params);
	  preprocesData(sol);
	  Solution* sol2 = constructSolution(params2);
	  preprocesData(sol2);
	 //*********************************************************************************************


	  //*****************************SET PARAMETERS*************************************************
	  if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() <= 100 * 1000) {
		  params2.delta = params.delta = 40;
		  params2.nmb_iters_bpr = params.nmb_iters_bpr = 300;
		  params2.nmbRanges = params.nmbRanges = 7;
		  params2.rangeLength = params.rangeLength = sol->getNumberOfProcesses() / params.nmbRanges;
	  }
	  else {
		  params2.nmb_iters_bpr = params.nmb_iters_bpr = 100;
		  params2.nmbRanges = params.nmbRanges = 5;
		  params2.rangeLength = params.rangeLength = sol->getNumberOfProcesses() / params.nmbRanges;
		  params2.numberOfBestProcessesToConsiderShiftSwap =
				  params.numberOfBestProcessesToConsiderShiftSwap = 3;
		  params2.nmbLoops = params.nmbLoops = 2;

		  if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() >= 20000 * 2000)
			  params2.nmbLoops = params.nmbLoops = 1;
	  }

	  params2.seedValue = params.seedValue + 1000;
	  //********************************************************************************************


	  if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() <= 100 * 1000)  // A instances
		  solveA(params, sol, params2, sol2);
	  else  																	  // B instances
		  solveB(params, sol, params2, sol2);

	  long timeToSleep = params.time_limit - (time(0) - params.programStartTime) - 3;
	  if (timeToSleep < 0)
		  timeToSleep = 0;

	  sleep(timeToSleep);

	  // Read Solutions From Files And Write a better one

	  sol->setOriginalLoadCostWeights();
	  sol2->setOriginalLoadCostWeights();
	  //cout << " sol->solutionFilename   " << sol->solutionFilename << endl;
	  //cout << " sol2->solutionFilename  " << sol2->solutionFilename << endl;

	  //cout << " sol->getCost()   " << sol->getCost() << endl;
	  //cout << " sol2->getCost()  " << sol2->getCost() << endl;

	  readSolutionFromFile( sol,  sol->solutionFilename);
	  readSolutionFromFile(sol2, sol2->solutionFilename);


	  //cout << " after sol->getCost()   " << sol->getCost() << endl;
	  //cout << " after sol2->getCost()  " << sol2->getCost() << endl;
	  if ((sol->getCost() < sol2->getCost()) && (sol->checkConflict(false)))
	    sol->writeToFile(params.solution_filename);
	  else
		sol2->writeToFile(params.solution_filename);


	  //remove solution files
	  ostringstream oss1(""); oss1 << "rm " << sol->solutionFilename;
	  system(oss1.str().c_str());
	  ostringstream oss2(""); oss2 << "rm " << sol2->solutionFilename;
	  system(oss2.str().c_str());


	  //*****************************************FILES (REMOVE THIS PART)********************************************************

	  /*fstream fileResults("results", ios::out | ios::app);

	  fileResults << setw(5)  << params.seedValue << setw(30) << params.data_filename
			      << setw(20) << sol->getCost()
		          << setw(20) << sol2->getCost()
		          << setw(20) << *(params.best_objective)
			      << setw(15)  << time(0) - params.programStartTime << endl;

	  // running times
	  fstream fileRunnungTimes("runnung_times", ios::out | ios::app);
	  fileRunnungTimes << setw(5)  << setw(30) << params.data_filename << setw(20) << *(params.best_objective)
	  			       << setw(20)  << time(0) - params.programStartTime << endl;

	  // check solution with official checker
	  ostringstream oss("");
	  oss << "./checker " << params.data_filename << " " << params.initial_assignment_filename
		  << " " << params.solution_filename;
	  oss << " >> checkerFile ";
	  system(oss.str().c_str());
	   */
	  //*************************************************************************************************************************

	  return 0;

}