示例#1
0
        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);
                        }
                    }
                }
            }
        }
示例#2
0
 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));
     }
 }
示例#3
0
        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);
        }