示例#1
0
        public PCRunEventLog GetRunEventLog(int runId)
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            try
            {
                return(_pcRestProxy.GetRunEventLog(runId, ref pcErrorResponse));
            }
            catch (Exception e)
            {
                _fileLog.Write(LogMessageType.Error, string.Format("GetRunEventLog failed. Error: " + e.Message));
                if (pcErrorResponse.ErrorCode > 0)
                {
                    _fileLog.Write(LogMessageType.Error, string.Format("GetRunEventLog failed, ExceptionMessage: {0}, ErrorCode: {1}", pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                }
            }
            return(null);
        }
示例#2
0
        public string GetTestName()
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            try
            {
                PCTest pcTest = _pcRestProxy.GetTestData(int.Parse(_pcModel.TestId), ref pcErrorResponse);
                return(pcTest.Name);
            }
            catch (Exception e)
            {
                _fileLog.Write(LogMessageType.Error, string.Format("getTestName failed, reason: {0}", e.Message));
                if (pcErrorResponse.ErrorCode > 0)
                {
                    _fileLog.Write(LogMessageType.Error, string.Format("GetTestName failed, ExceptionMessage: {0}, ErrorCode: {1}", pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                }
                return("");
            }
        }
示例#3
0
        public bool AddRunToTrendReport(int runId, String trendReportId)
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            try
            {
                if (trendReportId == "0")
                {
                    pcErrorResponse.ErrorCode        = 99999543;
                    pcErrorResponse.ExceptionMessage = "The test is not associated with any trend Report";
                    _fileLog.Write(LogMessageType.Info, "Error: " + pcErrorResponse.ExceptionMessage);
                }
                else
                {
                    PCTrendReportRequest pcTrendReportRequest = new PCTrendReportRequest(_pcModel.Project, runId, null);
                    _fileLog.Write(LogMessageType.Info, "Adding run: " + runId + " to trend report: " + trendReportId);
                    _pcRestProxy.UpdateTrendReport(trendReportId, pcTrendReportRequest, ref pcErrorResponse);
                    if (pcErrorResponse.ErrorCode > 0)
                    {
                        _fileLog.Write(LogMessageType.Info, "Error: " + pcErrorResponse.ExceptionMessage);
                    }
                    else
                    {
                        _fileLog.Write(LogMessageType.Info, "Publishing run: " + runId + " on trend report: " + trendReportId);
                    }
                }
            }
            catch (Exception e)
            {
                _fileLog.Write(LogMessageType.Error, "Failed to add run to trend report: Problem connecting to PC Server. " + e.Message);
                if (pcErrorResponse.ErrorCode > 0)
                {
                    _fileLog.Write(LogMessageType.Error, string.Format("AddRunToTrendReport failed, ExceptionMessage: {0}, ErrorCode: {1}", pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                }
            }
            return(pcErrorResponse.ErrorCode == 0);
        }
示例#4
0
        public bool Login()
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            try
            {
                _fileLog.Write(LogMessageType.Info, string.Format("Trying to login: [PCServer: '{0}://{1}', User: '******']", _pcModel.isHTTPSProtocol(), _pcModel.PCServerAndPort, _pcModel.UserName));
                _loggedIn = _pcRestProxy.Authenticate(_pcModel.UserName, _pcModel.Password, ref pcErrorResponse);
            }
            catch (Exception e)
            {
                _fileLog.Write(LogMessageType.Error, "Error: " + e.Message);
                if (pcErrorResponse.ErrorCode > 0)
                {
                    _fileLog.Write(LogMessageType.Error, "\n ExceptionMessage: " + pcErrorResponse.ExceptionMessage + "\n ErrorCode: " + pcErrorResponse.ErrorCode.ToString());
                }
            }
            if (!_loggedIn && pcErrorResponse.ErrorCode > 0)
            {
                _fileLog.Write(LogMessageType.Info, "\n ExceptionMessage: " + pcErrorResponse.ExceptionMessage + "\n ErrorCode: " + pcErrorResponse.ErrorCode.ToString());
            }
            _fileLog.Write(LogMessageType.Info, string.Format("Login {0}", _loggedIn ? "succeeded\n" : "failed\n"));
            return(_loggedIn);
        }
示例#5
0
        public string PublishRunReport(int runId, string reportDirectory)
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            try
            {
                PCRunResults runResultsList = _pcRestProxy.GetRunResults(runId, ref pcErrorResponse);
                if (runResultsList.ResultsList != null)
                {
                    foreach (PCRunResult result in runResultsList.ResultsList)
                    {
                        if (result.Name.Equals(PCBuilder.PC_REPORT_ARCHIVE_NAME))
                        {
                            string reportArchiveFullPath = Path.Combine(reportDirectory, PCBuilder.PC_REPORT_ARCHIVE_NAME);
                            _fileLog.Write(LogMessageType.Info, "Publishing analysis report:");
                            bool downloadSucceeded = _pcRestProxy.GetRunResultData(runId, result.ID, reportArchiveFullPath, ref pcErrorResponse);
                            if (downloadSucceeded && File.Exists(reportArchiveFullPath))
                            {
                                _fileLog.Write(LogMessageType.Info, "Result file downloaded successfully to: " + reportArchiveFullPath);
                                string extractedReportDirectory = reportDirectory;
                                if (!Directory.Exists(extractedReportDirectory))
                                {
                                    Directory.CreateDirectory(extractedReportDirectory);
                                }
                                if (Directory.Exists(reportDirectory))
                                {
                                    WaitForUnlockedFile(reportArchiveFullPath);
                                    ZipFile.ExtractToDirectory(reportArchiveFullPath, extractedReportDirectory);
                                }
                                else
                                {
                                    _fileLog.Write(LogMessageType.Info, "Failed to create directory for extracting the report");
                                }

                                string reportFile = Path.Combine(extractedReportDirectory, PCBuilder.PC_REPORT_FILENAME);
                                if (File.Exists(reportFile))
                                {
                                    _fileLog.Write(LogMessageType.Info, "Report file extracted and available from: " + reportFile + "\n");
                                    return(reportFile);
                                }
                                else
                                {
                                    _fileLog.Write(LogMessageType.Info, "Failed to extract report\n");
                                }
                            }
                            else
                            {
                                _fileLog.Write(LogMessageType.Info, "Failed to download\\create report\n");
                            }
                        }
                    }
                }
                _fileLog.Write(LogMessageType.Info, "Failed to get run report\n");
            }
            catch (Exception ex)
            {
                _fileLog.Write(LogMessageType.Error, "failed to get run report\n" + ex.Message);
                if (pcErrorResponse.ErrorCode > 0)
                {
                    _fileLog.Write(LogMessageType.Error, string.Format("PublishRunReport failed, ExceptionMessage: {0}, ErrorCode: {1}\n", pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                }
            }
            return("");
        }
示例#6
0
        private int GetCorrectTestInstanceID(int testID)
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            if (!TestExist(testID, ref pcErrorResponse))
            {
                _fileLog.Write(LogMessageType.Info, string.Format("Error: {0}", pcErrorResponse.ExceptionMessage));
                return(0);
            }
            if (_pcModel.AutoTestInstance)
            {
                try {
                    _fileLog.Write(LogMessageType.Info, "Searching for available Test Instance");
                    PCTestInstances pcTestInstances = _pcRestProxy.GetTestInstancesByTestId(testID, ref pcErrorResponse);
                    int             testInstanceID  = 0;
                    if (pcTestInstances != null && pcTestInstances.TestInstancesList != null && pcTestInstances.TestInstancesList.Count > 0)
                    {
                        PCTestInstance pcTestInstance = pcTestInstances.TestInstancesList[pcTestInstances.TestInstancesList.Count - 1];
                        testInstanceID = pcTestInstance.TestInstanceID;
                        _fileLog.Write(LogMessageType.Info, "Found test instance ID: " + testInstanceID + "\n");
                    }
                    else
                    {
                        _fileLog.Write(LogMessageType.Info, "Could not find available TestInstanceID, Creating Test Instance.");
                        _fileLog.Write(LogMessageType.Info, "Searching for available TestSet");
                        // Get a random TestSet
                        PCTestSets pcTestSets = _pcRestProxy.GetAllTestSets(ref pcErrorResponse);
                        if (pcTestSets != null && pcTestSets.PCTestSetsList != null)
                        {
                            PCTestSet pcTestSet = pcTestSets.PCTestSetsList[pcTestSets.PCTestSetsList.Count - 1];
                            int       testSetID = pcTestSet.TestSetID;
                            _fileLog.Write(LogMessageType.Info, string.Format("Creating Test Instance with testID: {0} and TestSetID: {1}", testID, testSetID));
                            testInstanceID = _pcRestProxy.CreateTestInstance(testID, testSetID, ref pcErrorResponse);
                            if (testInstanceID == 0)
                            {
                                _fileLog.Write(LogMessageType.Info, string.Format("Test Instance could not be created for Test ID '", testID + "'"));
                            }
                            else
                            {
                                _fileLog.Write(LogMessageType.Info, string.Format("Test Instance with ID : {0} has been created successfully.", testInstanceID));
                            }
                        }
                        else
                        {
                            string msg = "No TestSetID available in project, please create a testset from LoadRunner Enterprise UI";
                            _fileLog.Write(LogMessageType.Info, msg);
                        }
                    }
                    return(testInstanceID);
                }
                catch (Exception ex)
                {
                    _fileLog.Write(LogMessageType.Error, string.Format("getCorrectTestInstanceID failed, reason: {0}", ex));
                    if (pcErrorResponse.ErrorCode > 0)
                    {
                        _fileLog.Write(LogMessageType.Error, string.Format("getCorrectTestInstanceID failed, ExceptionMessage: {0}, ErrorCode: {1}", pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                    }
                    return(int.Parse(null));
                }
            }
            return(int.Parse(_pcModel.TestInstanceId));
        }
示例#7
0
        public int StartRun()
        {
            PCErrorResponse pcErrorResponse = new PCErrorResponse("", 0);

            try
            {
                int testID       = int.Parse(_pcModel.TestId);
                int testInstance = GetCorrectTestInstanceID(testID);
                if (testInstance == 0)
                {
                    return(0);
                }
                SetCorrectTrendReportID();
                //if(_pcModel)
                string msg = string.Format("Executing Load Test:\n====================\nTest ID: {0} \nTest Instance ID: {1} \nTimeslot Duration: {2} \nPost Run Action: {3} \nUse VUDS: {4}\n====================\n",
                                           int.Parse(_pcModel.TestId), testInstance, _pcModel.PCTimeslotDuration, _pcModel.PCPostRunActionsRequest.PostRunAction, _pcModel.isVudsMode());
                _fileLog.Write(LogMessageType.Info, msg);


                PCRunResponse response = _pcRestProxy.StartRun(testID,
                                                               testInstance,
                                                               _pcModel.PCTimeslotDuration,
                                                               ref pcErrorResponse,
                                                               _pcModel.PCPostRunActionsRequest.PostRunAction,
                                                               _pcModel.isVudsMode());
                if (response == null && pcErrorResponse != null)
                {
                    _fileLog.Write(LogMessageType.Info, string.Format("{0}. {1}Code: {2}",
                                                                      pcErrorResponse.ExceptionMessage, !"RepeatWithParameters".Equals(_pcModel.TimeslotRepeat) ? "Error " : "", pcErrorResponse.ErrorCode));
                    if ("RepeatWithParameters".Equals(_pcModel.TimeslotRepeat))
                    {
                        int count = 1;
                        while (count < Int32.Parse(_pcModel.TimeslotRepeatAttempts) && response == null)
                        {
                            count++;
                            _fileLog.Write(LogMessageType.Info, string.Format("Repeating timeslot - Attempt # {0}. Waiting {1} minute(s) before trying once again to execute the test.", count, _pcModel.TimeslotRepeatDelay));
                            System.Threading.Thread.Sleep(Int32.Parse(_pcModel.TimeslotRepeatDelay) * 1000 * 60);
                            _fileLog.Write(LogMessageType.Info, string.Format("Repeating timeslot - Attempt # {0}. Executing the test:", count));
                            response = _pcRestProxy.StartRun(testID,
                                                             testInstance,
                                                             _pcModel.PCTimeslotDuration,
                                                             ref pcErrorResponse,
                                                             _pcModel.PCPostRunActionsRequest.PostRunAction,
                                                             _pcModel.isVudsMode());
                            if (response == null && pcErrorResponse != null)
                            {
                                _fileLog.Write(LogMessageType.Info, string.Format("Repeating timeslot - Attempt # {0}. Exception - {1}, Code: {2}.", count, pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                                _fileLog.Write(LogMessageType.Info, string.Format("Repeating timeslot - Attempt # {0}. {1} remaining attempt(s).", count, Int32.Parse(_pcModel.TimeslotRepeatAttempts) - count));
                            }
                            if (count == Int32.Parse(_pcModel.TimeslotRepeatAttempts) && response == null)
                            {
                                _fileLog.Write(LogMessageType.Info, string.Format("All attempts to create a timeslot failed. Exception - {0}, Error Code: {1}.", pcErrorResponse.ExceptionMessage, pcErrorResponse.ErrorCode));
                            }
                        }
                    }
                    return(0);
                }
                _fileLog.Write(LogMessageType.Info, string.Format("Run started (TestID: {0}, RunID: {1}, TimeslotID: {2})\n",
                                                                  response.TestID, response.ID, response.TimeslotID));
                if (response.ID > 0)
                {
                    return(response.ID);
                }
            }
            catch (Exception ex)
            {
                if (!_loggedIn && pcErrorResponse.ErrorCode > 0)
                {
                    _fileLog.Write(LogMessageType.Error, "\n ExceptionMessage: " + pcErrorResponse.ExceptionMessage + "\n ErrorCode: " + pcErrorResponse.ErrorCode.ToString());
                }
                _fileLog.Write(LogMessageType.Error, ex.Message);
            }
            return(0);
        }