protected void ImplementBase() { if (ConfigReader.GetBool("AUTO_COMMAND_CONSOLE_ENABLED")) { Initialize(); List <string> duplicatedAliases = new List <string>(); //Report any duplicated command aliases. These need to be unique between each command for things to function properly. for (int c = 0; c < RegisteredCommands.Count; c++) { for (int a = 0; a < RegisteredCommands[c].Aliases.Count; a++) { string alias = RegisteredCommands[c].Aliases[a]; int matches = RegisteredCommands.FindAll(x => x.Aliases.Contains(alias)).Count; if (matches > 1 && !duplicatedAliases.Contains(alias)) { duplicatedAliases.Add(alias); string message = string.Format("More than one command shares the alias \"{0}\". Please rename them so that each alias is unique.", alias); UpdateCommandConsoleOutput(message); } } } } }
public string SendPost(string uri, string json) { if (UnityEngine.Application.isEditor && !ConfigReader.GetBool("TEST_RAILS_ACTIVATE_WHILE_IN_EDITOR_MODE")) { return("POST updates not sent to TestRails when tests are run in Unity Editor. This can be overridden in Trilleon settings."); } else { return(SendRequest("POST", uri, json)); } }
public IEnumerator RunBuddySystemTests() { //If a relationship has not yet been established, then cancel BuddySystem execution. This is not used if IgnoreAllBuddyTests flag set. BuddySystemHandlingStarted = true; _isBuddySystemFailure = string.IsNullOrEmpty(BuddyName); if (!AutomationMaster.IgnoreAllBuddyTests) { //If allowed, and Buddy is not yet set, then set Buddy to last-used Buddy. #if UNITY_EDITOR if (ConfigReader.GetBool("EDITOR_DEFAULT_BUDDY_TO_LAST")) { string mostRecentBuddy = AutomationReport.GetMostRecentBuddy(); if (!string.IsNullOrEmpty(mostRecentBuddy)) { BuddyName = mostRecentBuddy; } } #endif if (_isBuddySystemFailure) { _failureReason = "Buddy was not set before BuddySystem test execution started."; } if (!_isBuddySystemFailure) { AutoConsole.PostMessage("Establishing Connection With Buddy", MessageLevel.Abridged); do { if (RoleGridLock) { _isBuddySystemFailure = true; _failureReason = "This client and the associated Buddy client share the same role (primary/secondary). One must be a primary Buddy, and the other a secondary Buddy."; break; } SendBuddyCommunication("buddy_ready_for_tests", IsPrimary ? "primary" : "secondary"); yield return(StartCoroutine(Q.driver.WaitRealTime(5))); time += 5; } while((!_isBuddyReadyForBuddyTests || !HasBuddyAcknowledgedOurReadiness) && time <= timeout); AutoConsole.PostMessage(time > timeout ? "Buddy Connection Failure": "Buddy Connection Established", MessageLevel.Abridged); if (IsPrimary && !BuddyTestRequiredDetails.Any()) { //If this client is the Primary, and has not yet recieved its required information from the Secondary, request it. for (int limit = 30; limit >= 0; limit--) { if (!BuddyTestRequiredDetails.Any()) { break; } SendBuddyCommunication("buddy_requesting_required_details", "0"); yield return(StartCoroutine(Q.driver.WaitRealTime(1))); } } if (time >= timeout || (IsPrimary && !BuddyTestRequiredDetails.Any())) { _isBuddySystemFailure = true; _failureReason = "Timed out waiting for Buddy to be ready for multi-client testing."; } if (!_isBuddySystemFailure) { SendBasicBuddyDetails(); if (_isPrimary) { yield return(StartCoroutine(PrimaryBuddyTestRun())); if (!_isBuddySystemFailure) { ResetBuddySystemValues(); yield return(StartCoroutine(Q.driver.WaitRealTime(5))); SendBuddyCommunication("buddy_switching_roles", "0"); timeout = 300; time = 0; while (!BuddyHasSuccessfullySwitchRoles && time <= timeout) { yield return(StartCoroutine(Q.driver.WaitRealTime(5))); SendBuddyCommunication("buddy_primary_complete_action_tests", "0"); time += 5; } if (time > timeout) { _isBuddySystemFailure = true; _failureReason = "Timed out waiting for Buddy to switch roles from Secondary to Primary."; } else { AutoConsole.PostMessage("Switching Roles With Buddy", MessageLevel.Abridged); yield return(StartCoroutine(SecondaryBuddyTestRun())); } } } else { yield return(StartCoroutine(SecondaryBuddyTestRun())); if (!_isBuddySystemFailure) { ResetBuddySystemValues(); yield return(StartCoroutine(Q.driver.WaitRealTime(5))); SendBuddyCommunication("buddy_switching_roles", "0"); timeout = 300; time = 0; while (!BuddyHasSuccessfullySwitchRoles && time <= timeout) { yield return(StartCoroutine(Q.driver.WaitRealTime(5))); SendBuddyCommunication("buddy_secondary_tests_complete", "0"); time += 5; } if (time > timeout) { _isBuddySystemFailure = true; _failureReason = "Timed out waiting for Buddy to switch roles from Primary to Secondary."; } else { AutoConsole.PostMessage("Switching Roles With Buddy", MessageLevel.Abridged); yield return(StartCoroutine(PrimaryBuddyTestRun())); } } } SendBuddyCommunication("buddy_tearing_down", "0"); yield return(StartCoroutine(Q.driver.WaitRealTime(5))); SendBuddyCommunication("buddy_tearing_down", "0"); } } } if (_isBuddySystemFailure || AutomationMaster.IgnoreAllBuddyTests) { //Fail all remaining tests. string errorMessage = string.Format("BuddySystem failure. Reason: {0} Skipping BuddySystem tests.", _failureReason); AutoConsole.PostMessage(errorMessage, MessageLevel.Abridged); for (int f = 0; f < _buddies.Count; f++) { if (!HandledBuddyTests.Contains(_buddies[f].Key.Key)) { AutomationMaster.CurrentTestContext = new TestContext(); if (!AutomationMaster.Methods.KeyValListContainsKey(_buddies[f].Key.Key)) { AutomationMaster.Methods.Add(new KeyValuePair <string, MethodInfo>(_buddies[f].Key.Key, Buddies[f].Key.Value)); } } yield return(StartCoroutine(Master.LaunchSingleTest(_buddies[f].Key, AutomationMaster.Methods.Count - 1, AutomationMaster.IgnoreAllBuddyTests ? TestStatus.Ignore : TestStatus.Fail, errorMessage))); for (int fr = 0; fr < _buddies[f].Value.Count; fr++) { if (HandledBuddyTests.Contains(Buddies[f].Value[fr].Value.Name)) { continue; } AutomationMaster.CurrentTestContext = new TestContext(); if (!AutomationMaster.Methods.KeyValListContainsKey(_buddies[f].Value[fr].Key)) { AutomationMaster.Methods.Add(new KeyValuePair <string, MethodInfo>(_buddies[f].Value[fr].Key, Buddies[f].Value[fr].Value)); } yield return(StartCoroutine(Master.LaunchSingleTest(_buddies[f].Value[fr], AutomationMaster.Methods.Count - 1, AutomationMaster.IgnoreAllBuddyTests ? TestStatus.Ignore : TestStatus.Fail, errorMessage))); } } } HandledBuddyTests = new List <string>(); ResetBuddySystemValues(); yield return(null); }