in AmbrosiaTest/AmbrosiaTest/Utilities.cs [630:838]
public void VerifyAmbrosiaLogFile(string testName, long numBytes, bool checkCmpFile, bool startWithFirstFile, string CurrentVersion, string optionalNumberOfClient = "", bool asyncTest = false, bool checkForDoneString = true, string ambrosiaLogDir = "")
{
string currentDir = Directory.GetCurrentDirectory();
// Doing this for multi client situations
string optionalMultiClientStartingPoint = "";
if (optionalNumberOfClient == "")
{
optionalNumberOfClient = "1";
}
else
{
optionalMultiClientStartingPoint = "0";
}
string clientJobName = testName + "clientjob" + optionalMultiClientStartingPoint;
string serverName = testName + "server";
string ambrosiaLogDirFromPTI;
string ambServiceLogPath;
// allows for using different ambrosia log directory
if (ambrosiaLogDir == "")
{
ambrosiaLogDir = baseAmbrosiaPath + ConfigurationManager.AppSettings["AmbrosiaLogDirectory"]; // don't put + "\\" on end as mess up location .. need append in Ambrosia call though
ambrosiaLogDirFromPTI = baseAmbrosiaPath + ConfigurationManager.AppSettings["AmbrosiaLogDirectory"] + "\\";
ambServiceLogPath = ambrosiaLogDir + "\\";
}
else
{
ambServiceLogPath = "..\\"+ambrosiaLogDir + "\\";
ambrosiaLogDirFromPTI = "..\\..\\"+ambrosiaLogDir +"\\";
}
// if not in standard log place, then must be in InProc log location which is relative to PTI - safe assumption
/* *#*#* DELETE *#*#*#
if (Directory.Exists(ambrosiaLogDir) ==false)
{
ambrosiaLogDir = baseAmbrosiaPath + ConfigurationManager.AppSettings["AmbrosiaLogDirectory"];
ambrosiaLogDirFromPTI = "..\\..\\" + ambrosiaLogDir+"\\"; // feels like there has to be better way of determining this - used for TTD
ambServiceLogPath = "..\\..\\"+ambrosiaLogDir + "\\";
}
*/
// used to get log file
string ambrosiaClientLogDir = ambrosiaLogDir + "\\" + testName + "clientjob" + optionalMultiClientStartingPoint + "_0"; // client is always 0 so don't use + CurrentVersion;
string ambrosiaServerLogDir = ambrosiaLogDir + "\\" + testName + "server_" + CurrentVersion;
string startingClientChkPtVersionNumber = "1";
string clientFirstFile = "";
// Get most recent version of CLIENT log file and check point
string clientLogFile = "";
if (Directory.Exists(ambrosiaClientLogDir))
{
DirectoryInfo d = new DirectoryInfo(ambrosiaClientLogDir);
FileInfo[] files = d.GetFiles().OrderBy(p => p.CreationTime).ToArray();
foreach (FileInfo file in files)
{
// Sets the first (oldest) file
if (clientFirstFile == "")
{
clientFirstFile = file.Name;
}
// This will be most recent file
clientLogFile = file.Name;
}
}
else
{
Assert.Fail("<VerifyAmbrosiaLogFile> Unable to find Client Log directory: " + ambrosiaClientLogDir);
}
// can get first file or most recent
if (startWithFirstFile)
{
clientLogFile = clientFirstFile;
}
// determine if log or chkpt file
if (clientLogFile.Contains("chkpt"))
{
int chkPtPos = clientLogFile.IndexOf("chkpt");
startingClientChkPtVersionNumber = clientLogFile.Substring(chkPtPos + 5);
}
else
{
int LogPos = clientLogFile.IndexOf("log");
startingClientChkPtVersionNumber = clientLogFile.Substring(LogPos + 3);
}
// Get most recent version of SERVER log file and check point
string startingServerChkPtVersionNumber = "1";
string serverFirstFile = "";
string serverLogFile = "";
if (Directory.Exists(ambrosiaServerLogDir))
{
DirectoryInfo d = new DirectoryInfo(ambrosiaServerLogDir);
FileInfo[] files = d.GetFiles().OrderBy(p => p.CreationTime).ToArray();
foreach (FileInfo file in files)
{
// Sets the first (oldest) file
if (serverFirstFile == "")
{
serverFirstFile = file.Name;
}
// This will be most recent file
serverLogFile = file.Name;
}
}
else
{
Assert.Fail("<VerifyAmbrosiaLogFile> Unable to find Server Log directory: " + ambrosiaClientLogDir);
}
// can get first file or most recent
if (startWithFirstFile)
{
serverLogFile = serverFirstFile;
}
// determine if log or chkpt file
if (serverLogFile.Contains("chkpt"))
{
int chkPtPos = serverLogFile.IndexOf("chkpt");
startingServerChkPtVersionNumber = serverLogFile.Substring(chkPtPos + 5);
}
else
{
int LogPos = serverLogFile.IndexOf("log");
startingServerChkPtVersionNumber = serverLogFile.Substring(LogPos + 3);
}
// AMB Call for Job
string logOutputFileName_AMB1 = testName + "_AMB1_Verify.log";
AMB_Settings AMB1 = new AMB_Settings
{
AMB_ServiceName = clientJobName,
AMB_ServiceLogPath = ambServiceLogPath,
AMB_StartingCheckPointNum = startingClientChkPtVersionNumber,
AMB_Version = "0", // always 0 CurrentVersion.ToString(),
AMB_TestingUpgrade = "N",
AMB_PortAppReceives = "1000",
AMB_PortAMBSends = "1001"
};
CallAMB(AMB1, logOutputFileName_AMB1, AMB_ModeConsts.DebugInstance);
// AMB for Server
string logOutputFileName_AMB2 = testName + "_AMB2_Verify.log";
AMB_Settings AMB2 = new AMB_Settings
{
AMB_ServiceName = serverName,
AMB_ServiceLogPath = ambServiceLogPath,
AMB_StartingCheckPointNum = startingServerChkPtVersionNumber,
AMB_Version = CurrentVersion.ToString(),
AMB_TestingUpgrade = "N",
AMB_PortAppReceives = "2000",
AMB_PortAMBSends = "2001"
};
CallAMB(AMB2, logOutputFileName_AMB2, AMB_ModeConsts.DebugInstance);
string logOutputFileName_ClientJob_Verify;
string logOutputFileName_Server_Verify;
// if async, use the async job and server
if (asyncTest)
{
// Job call
logOutputFileName_ClientJob_Verify = testName + "_ClientJob_Verify.log";
int clientJobProcessID = StartAsyncPerfClientJob("1001", "1000", clientJobName, serverName, "1", logOutputFileName_ClientJob_Verify);
//Server Call
logOutputFileName_Server_Verify = testName + "_Server_Verify.log";
int serverProcessID = StartAsyncPerfServer("2001", "2000", serverName, logOutputFileName_Server_Verify);
}
else
{
// Job call
logOutputFileName_ClientJob_Verify = testName + "_ClientJob_Verify.log";
int clientJobProcessID = StartPerfClientJob("1001", "1000", clientJobName, serverName, "65536", "13", logOutputFileName_ClientJob_Verify);
//Server Call
logOutputFileName_Server_Verify = testName + "_Server_Verify.log";
int serverProcessID = StartPerfServer("2001", "2000", clientJobName, serverName, logOutputFileName_Server_Verify, Convert.ToInt32(optionalNumberOfClient), false);
}
// wait until done running
bool pass = WaitForProcessToFinish(logOutputFileName_ClientJob_Verify, numBytes.ToString(), 15, false, testName, true, checkForDoneString);
pass = WaitForProcessToFinish(logOutputFileName_Server_Verify, numBytes.ToString(), 15, false, testName, true, checkForDoneString);
// MTFs don't check cmp files because they change from run to run
if (checkCmpFile)
{
// verify new log files to cmp files
VerifyTestOutputFileToCmpFile(logOutputFileName_Server_Verify);
VerifyTestOutputFileToCmpFile(logOutputFileName_ClientJob_Verify);
}
// Test Time Travel Debugging on the Log Files from PTI job and PTI server - don't do for MTF as not needed for TTD handled by other tests also cmp files change too much
VerifyTimeTravelDebugging(testName, numBytes, clientJobName, serverName, ambrosiaLogDirFromPTI, startingClientChkPtVersionNumber, startingServerChkPtVersionNumber, optionalNumberOfClient, CurrentVersion, checkCmpFile, checkForDoneString);
}