コード例 #1
0
        public void SetObjectsStatus(string typeName, long objId, string newStatus)
        {
            ObjectStatus status;

            switch (newStatus.ToLowerInvariant())
            {
            case "failed":
                status = ObjectStatus.Failed;
                break;

            case "passed":
                status = ObjectStatus.Passed;
                break;

            default:
                LogErrorMessage(ErrorMessage.ErorCode.SetObjectStatusError,
                                $"Status {newStatus} is not recognized. Possible values: failed, passed");
                return;
            }

            try
            {
                ObjectStatusUpdater.SetObjectsStatus(typeName, objId, status);
            }
            catch (Exception ex)
            {
                LogErrorMessage(ErrorMessage.ErorCode.SetObjectStatusError, ex);
            }
        }
コード例 #2
0
 public void UpdateObjectsTypeTests()
 {
     ObjectStatusUpdater.RecursiveSetObjectsStatus <Build>(2, ObjectStatus.Stopped);
 }
コード例 #3
0
 public void UpdateObjectsStatuses(object sender, ElapsedEventArgs eventArgs)
 {
     ObjectStatusUpdater.UpdateAllObjectStatusesToActual();
 }
コード例 #4
0
        public void RunOperation(string typeName, long objId, string operationName)
        {
            switch (operationName.ToLowerInvariant())
            {
            case "run":
                try
                {
                    ObjectStatusUpdater.SetObjectsStatus(typeName, objId, ObjectStatus.InQueue);

                    if (typeName == "build")
                    {
                        return;
                    }

                    long?buildId = -1;
                    switch (typeName.ToLowerInvariant())
                    {
                    case "screenshot":
                        var screenShot = ScreenShotRepository.Instance.Get(objId);
                        buildId = screenShot.BuildId;

                        var caseRepo = TestCaseRepository.Instance;
                        ObjectStatusUpdater.SetParentObjStatus <TestCaseRepository, TestCase>(
                            caseRepo, screenShot.ParentObjId.Value, ObjectStatus.InQueue);
                        var suiteId = caseRepo.Get(screenShot.ParentObjId.Value).ParentObjId.Value;

                        var repoSuite = TestSuiteRepository.Instance;
                        ObjectStatusUpdater.SetParentObjStatus <TestSuiteRepository, TestSuite>(
                            repoSuite, suiteId, ObjectStatus.InQueue);
                        var assembId = repoSuite.Get(suiteId).ParentObjId.Value;

                        ObjectStatusUpdater.SetParentObjStatus <TestAssemblyRepository, TestAssembly>(
                            TestAssemblyRepository.Instance, assembId, ObjectStatus.InQueue);

                        break;

                    case "testcase":
                        var testCase = TestCaseRepository.Instance.Get(objId);
                        buildId = testCase.BuildId;

                        var suiteRepo = TestSuiteRepository.Instance;
                        ObjectStatusUpdater.SetParentObjStatus <TestSuiteRepository, TestSuite>(
                            suiteRepo, testCase.ParentObjId.Value, ObjectStatus.InQueue);
                        var assemblyId = suiteRepo.Get(testCase.ParentObjId.Value).ParentObjId.Value;

                        ObjectStatusUpdater.SetParentObjStatus <TestAssemblyRepository, TestAssembly>(
                            TestAssemblyRepository.Instance, assemblyId, ObjectStatus.InQueue);

                        break;

                    case "testsuite":
                        var suite = TestSuiteRepository.Instance.Get(objId);
                        buildId = suite.BuildId;

                        ObjectStatusUpdater.SetParentObjStatus <TestAssemblyRepository, TestAssembly>(
                            TestAssemblyRepository.Instance, suite.ParentObjId.Value, ObjectStatus.InQueue);

                        break;

                    case "testassembly":
                        buildId = TestAssemblyRepository.Instance.Get(objId).BuildId;
                        break;
                    }

                    var buildRepo = BuildRepository.Instance;

                    var build = buildRepo.Get(buildId.Value);
                    build.Status = ObjectStatus.InQueue;
                    buildRepo.Update(build);
                }
                catch (Exception ex)
                {
                    LogErrorMessage(ErrorMessage.ErorCode.RunOperationError, ex);
                }
                break;

            case "stop":
                var affectedScreenShots = new List <ScreenShot>();
                try
                {
                    affectedScreenShots = ObjectStatusUpdater.SetObjectsStatus(typeName, objId, ObjectStatus.Stopped);
                }
                catch (Exception ex)
                {
                    LogErrorMessage(ErrorMessage.ErorCode.StopOperationError, ex);
                }

                var workers = ImageWorkerRepository.Instance.FindAll()
                              .Where(worker => worker.WorkerStatus == ImageWorker.StatusOfWorker.Available).ToList();

                foreach (var imageWorker in workers)
                {
                    var restImageProcessorClient = new RestImageProcessorClient(imageWorker.WorkerServiceUrl);
                    restImageProcessorClient.StopStopDiffGeneration(affectedScreenShots);
                }
                break;

            default:
                LogErrorMessage(ErrorMessage.ErorCode.RunOperationError,
                                $"OperationName {operationName} is not recognized. Possible values: run, stop");
                return;
            }
        }