public void ReplaceVariable() { var j = new JsonParser(); Boolean res = j.AddConfigToMemory(""); string a = @"aaaaaaaaaaaaaaaaaaaaa $$AppiumServerHost ~ $$app-package\ ~ bbbbbbbbbbbbb"; a = j.replaceVariable(a); Console.Write(a); }
/// <summary> /// Unitest will cal this one /// </summary> /// <param name="batchId"></param> /// <returns></returns> public bool ExecuteOneBatch(string batchId) { try { var jp = new JsonParser(); //VSH: clean global configuration before ExecuteOneBatch Boolean res = jp.AddConfigToMemory(""); string remote = Constants.MemoryConf["RemoteNode"]; int timeoutAllScenarios = Convert.ToInt32(Constants.MemoryConf["TimeoutAllScenarios"]) * 1000; var sel = new Selenium(); if (batchId == string.Empty) { MessageBox.Show("Select Batch first", "Applenium"); return(false); } var sql = new Sql(); _batchId = Convert.ToInt32(batchId); DataTable dtScenario = sql.GetDataTable(Constants.StrBatchScenariosToSelenium, _batchId.ToString(CultureInfo.InvariantCulture)); //SetAllScenariusStatusToRunorNot(dtScenario, Constants.Pending); var adapterBatches = new BatchesTableAdapter(); var adapterBatchLogic = new BatchLogicTableAdapter(); var adapterBrowser = new BrowsersTableAdapter(); _batchname = adapterBatches.GetBatchName(_batchId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterBatches.GetProjectID(Convert.ToInt32(_batchId))); LogObject logObject = new LogObject(); logObject.ExecutionID = _runExecutionId; logObject.BatchID = _batchId; logObject.Description = Constants.LogBatchStatus + "=" + Constants.PROGRESS_STARTED; logObject.BatchName = _batchname; logObject.BatchProgress = Constants.PROGRESS_STARTED; logObject.StatusTag = Constants.DONE; logObject.ProjectID = _projectId; logger.Print(logObject); Singleton myInstance = Singleton.Instance; myInstance.BatchResult = true; var threadFinishEvents = new List <EventWaitHandle>(); foreach (DataRow row in dtScenario.Rows) { if (myInstance.StopExecution) { myInstance.BatchResult = false; break; } var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset); string BrowserID = row["BrowserID"].ToString(); string batchLogicId = row["BatchLogicID"].ToString(); int executionStatus = Convert.ToInt32(row["ExecutionStatusID"].ToString()); if (executionStatus == 1) //run only selected scenarios { threadFinishEvents.Add(threadFinish); _browserName = adapterBrowser.GetBrowserName(Convert.ToInt32(BrowserID)); ThreadStart ts = delegate { //wait till hub return available browser RemoteWebDriver driver = null; driver = sel.SetWebDriverBrowser(null, BrowserID, false); driver.Manage().Window.Maximize(); string scenarioId = row["ScenarioID"].ToString(); // adapterBatchLogic.Update(_batchId, Convert.ToInt32(scenarioId), Convert.ToInt32(browserId),Constants.Running, Convert.ToInt32(batchLogicId)); string scenarioname = adapterScenario.GetScenarioName(Convert.ToInt32(scenarioId)); if (guiInstance != null && isBatchRun == true) { guiInstance.UpdateProgressLabel("", "", Constants.UpdateProgress_REGULAR); } LogObject logObject2 = new LogObject(); logObject2.ExecutionID = _runExecutionId; logObject2.BatchID = _batchId; logObject2.ScenarioID = Convert.ToInt32(scenarioId); logObject2.ScnearioName = scenarioname; logObject2.Browser = _browserName; logObject2.ProjectID = _projectId; logObject2.ProjectName = _projectName; logObject2.BatchName = _batchname; logObject2.ProjectPageID = _projectPageId; logObject2.StatusTag = Constants.DONE; logObject2.Browser = _browserName; logger.Print(logObject2); // Do long work here bool scanearioresult = ExecuteOneScenario(scenarioId, driver); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, (EventHandler) delegate { if (scanearioresult == false) { myInstance.BatchResult = false; //adapterBatchLogic.Update(_batchId,Convert.ToInt32(scenarioId),Convert.ToInt32(browserId),Constants.Failed,Convert.ToInt32(batchLogicId)); } driver.Quit(); threadFinish.Set(); }, null, null); }; try { ts.BeginInvoke(delegate(IAsyncResult aysncResult) { ts.EndInvoke(aysncResult); }, null); } catch (Exception exc) { MessageBox.Show("An exception has occoured when trying to execute a scenario - " + exc.TargetSite); } if (remote == "no") { WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); } } } WaitHandle.WaitAll(threadFinishEvents.ToArray(), Convert.ToInt32(timeoutAllScenarios)); string description; int status; string bStatus = Constants.PROGRESS_FAILED; if (myInstance.BatchResult) { description = string.Format("{0}={1}", Constants.LogBatchName, "Passed"); status = Constants.PASSED; bStatus = Constants.PROGRESS_PASSED; //LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Passed",Constants.Passed, "0", _projectId, 0); } else { //LogResult(_runExecutionId, Convert.ToInt32(_batchId), 0, 0, 0, batchname + " Batch Failed",Constants.Failed, "0", _projectId, 0); description = string.Format("{0}={1}", Constants.LogBatchStatus, "Failed"); status = Constants.FAILED; bStatus = Constants.PROGRESS_FAILED; } LogObject logObject3 = new LogObject(); logObject3.ExecutionID = _runExecutionId; logObject3.BatchID = Convert.ToInt32(_batchId); logObject3.Description = description; logObject3.StatusTag = status; logObject3.BatchStatus = bStatus; logObject3.ProjectID = _projectId; logger.Print(logObject3); //SetAllScenariusStatusToRunorNot(dtScenario, Constants.NotRunnig); return(myInstance.BatchResult); } catch (Exception exception) { LogObject exceptionLog = new LogObject(); exceptionLog.Description = exception.Message; exceptionLog.StatusTag = Constants.ERROR; logger.Print(exceptionLog); return(false); } }
internal bool ExecuteOneScenario(string scenarioId, RemoteWebDriver driver) { //clean global configuration before ExecuteOneScenario var jp = new JsonParser(); Boolean res = jp.AddConfigToMemory(""); //init test status count var testStatus = new Dictionary <string, int>(); if (testStatus.ContainsKey("PassedTests")) { testStatus["PassedTests"] = 0; } else { testStatus.Add("PassedTests", 0); } if (testStatus.ContainsKey("FailedTests")) { testStatus["FailedTests"] = 0; } else { testStatus.Add("FailedTests", 0); } if (testStatus.ContainsKey("TotalTests")) { testStatus["TotalTests"] = 0; } else { testStatus.Add("TotalTests", 0); } try { if (scenarioId == string.Empty) { MessageBox.Show("Select Scenario first", "Applenium"); return(false); } _flowId = Convert.ToInt32(scenarioId); var sql = new Sql(); DataTable dtScenario = sql.GetDataTable(Constants.StrScenarioTestsToSelenium, scenarioId); var adapterScenario = new ScenarioTableAdapter(); _projectId = Convert.ToInt32(adapterScenario.GetProjectID(_flowId)); _scenarioname = adapterScenario.GetScenarioName(_flowId); string scenariodescription = adapterScenario.GetScenarioDescription(_flowId); if (guiInstance != null && isBatchRun == false) { guiInstance.UpdateProgressLabel(_scenarioname, _testname, Constants.UpdateProgress_REGULAR); } LogObject logObject = new LogObject(); logObject.Description = "-------------------------------------------------------------------------------------------------------------\n" + "\t\t\t\t\t\t\t\t\t\t" + _scenarioname + " Scenario Started\n-------------------------------------------------------------------------------------------------------------\n"; logObject.StatusTag = Constants.INFO; logger.Print(logObject); // AppleniumLogger.LogResult(string.Empty, //"-------------------------------------------------------------------------------------------------------------\n" + "\t\t\t\t\t\t\t\t\t\t" + scenarioname + " Scenario Started\n-------------------------------------------------------------------------------------------------------------\n", Constants.Info, null); LogObject logObject2 = new LogObject(); logObject2.ExecutionID = _runExecutionId; logObject2.BatchID = _batchId; logObject2.BatchName = _batchname; logObject2.ProjectName = _projectName; logObject2.ScenarioID = _flowId; logObject2.ScenarioStatus = Constants.PROGRESS_STARTED; logObject2.StatusTag = Constants.DONE; logObject2.Description = Constants.LogScenarioStatus + "=" + Constants.PROGRESS_STARTED; logger.Print(logObject2); Singleton myInstance = Singleton.Instance; // Will always be the same instance... bool scenarioresult = true; LogObject result = new LogObject(); foreach (DataRow row in dtScenario.Rows) { // Check if we got a warning message, if we did skip all tests in the scenario if (Applenium._4____Infrustructure.Utilities.skipSCN == true) { break; } if (myInstance.StopExecution) { scenarioresult = false; break; } string testId = row["GuiTestID"].ToString(); bool testresult = ExecuteOneTest(testId, row["InputDataRow"].ToString(), driver, ref testStatus); if (testresult == false) { scenarioresult = false; } } string description; if (scenarioresult == true && Applenium._4____Infrustructure.Utilities.skipSCN == false) { description = String.Format("{0}={1}", Constants.LogScenarioStatus, "Passed"); result.ScenarioStatus = Constants.PROGRESS_PASSED; result.StatusTag = Constants.PASSED; } else if (scenarioresult == false && Applenium._4____Infrustructure.Utilities.skipSCN == false) { result.ScenarioStatus = Constants.PROGRESS_FAILED; result.StatusTag = Constants.FAILED; } else if (scenarioresult == true && Applenium._4____Infrustructure.Utilities.skipSCN == true) { scenarioresult = true; result.StatusTag = Constants.DEBUG; } result.ExecutionID = _runExecutionId; result.BatchID = _batchId; result.BatchName = _batchname; result.ScenarioID = _flowId; result.ScnearioName = _scenarioname; result.ProjectName = _projectName; result.ProjectID = _projectId; result.ProjectPageID = _projectPageId; result.BatchName = _batchname; result.Description = scenariodescription + " | PassedTest=" + testStatus["PassedTests"] + " | FailedTest=" + testStatus["FailedTests"] + " | TotalTest=" + testStatus["TotalTests"]; result.ProjectID = _projectId; result.Browser = _browserName; logger.Print(result); Applenium._4____Infrustructure.Utilities.skipSCN = false; return(scenarioresult); } catch (Exception exception) { LogObject logObject3 = new LogObject(); logObject3.Exception = exception; logObject3.StatusTag = Constants.ERROR; logObject3.Description = exception.Message; logger.Print(logObject3); return(false); } }