Esempio n. 1
0
        public void updateOperationTask(int id, Update operationTask)
        {
            try
            {
                if (operationTask.TaskContent != null)
                {
                    JObject tmp = JObject.Parse(operationTask.TaskContent);
                }
            }
            catch
            {
                throw new Exception("TaskContent must be in Json fromat");
            }

            DBHelper._OperationTask dbhelp = new DBHelper._OperationTask();
            OperationTask           existingOperationTask = dbhelp.GetByid(id);
            DateTime invaildDatetime = new DateTime(1, 1, 1);

            existingOperationTask.Name         = operationTask.Name;
            existingOperationTask.TaskStatus   = operationTask.TaskStatus;
            existingOperationTask.CompletedAt  = (operationTask.CompletedAt.Equals(invaildDatetime)) ? null : operationTask.CompletedAt;
            existingOperationTask.RetryCounter = operationTask.RetryCounter;
            existingOperationTask.Entity       = operationTask.Entity;
            existingOperationTask.EntityId     = operationTask.EntityId;
            existingOperationTask.TaskContent  = operationTask.TaskContent;
            existingOperationTask.TaskLog      = operationTask.TaskLog;

            dbhelp.Update(existingOperationTask);
        }
Esempio n. 2
0
        public static void UpdateTaskByFail(int taskId, string failLog, int status = TaskStatus.FAILED)
        {
            try
            {
                DBHelper._OperationTask opsTaskHelper = new DBHelper._OperationTask();
                OperationTask           opsTask       = opsTaskHelper.GetByid(taskId);
                opsTask.RetryCounter = opsTask.RetryCounter + 1;
                opsTask.TaskLog      = DateTime.UtcNow + ": " + failLog;
                switch (status)
                {
                case TaskStatus.FAILED:
                    opsTask.TaskStatus = "Fail";
                    break;

                case TaskStatus.WARNING:
                    opsTask.TaskStatus = "Warning";
                    break;

                case TaskStatus.COMPLETED:
                    opsTask.TaskStatus  = "Completed";
                    opsTask.TaskLog     = DateTime.UtcNow + ": Done. " + failLog;
                    opsTask.CompletedAt = DateTime.UtcNow;
                    break;
                }

                opsTaskHelper.Update(opsTask);
            }
            catch (Exception)
            {
            }
        }
Esempio n. 3
0
        public void deleteOperationTask(int id)
        {
            DBHelper._OperationTask dbhelp = new DBHelper._OperationTask();
            OperationTask           existingOperationTask = dbhelp.GetByid(id);

            dbhelp.Delete(existingOperationTask);
        }
Esempio n. 4
0
        public async Task Monitor_NoTimeout()
        {
            var connection = new TestConnection();
            var task       = new OperationTask();
            var flow       = new OperationTaskflow(task);

            List <OperationEvent> received = new List <OperationEvent>();

            void callback(OperationEvent operationEvent)
            {
                received.Add(operationEvent);
            }

            var monitor = new OperationMonitor(
                flow,
                TimeSpan.FromMilliseconds(200),
                TimeSpan.FromMilliseconds(200),
                connection,
                callback);

            // Time to start monitoring
            await Task.Delay(100);

            monitor.Update(TaskProgress.Acknowledged);

            await Task.Delay(100);

            flow.Update(TaskProgress.Confirmed);

            await Task.Delay(300);

            Assert.AreEqual(0, received.Count);
            Assert.IsTrue(monitor.IsComplete);
        }
Esempio n. 5
0
        public int Create(int companyId, Format_Create parseData)
        {
            try
            {
                JObject.Parse(parseData.TaskContent);
            }
            catch
            {
                throw new CDSException(11501);
            }

            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                OperationTask newData = new OperationTask();
                newData.CompanyId   = companyId;
                newData.Name        = parseData.Name;
                newData.TaskStatus  = "Submit";
                newData.Entity      = parseData.Entity;
                newData.EntityId    = parseData.EntityId;
                newData.TaskContent = parseData.TaskContent ?? "{}";

                newData.RetryCounter = 0;
                newData.CreatedAt    = DateTime.UtcNow;
                newData.DeletedFlag  = false;
                dbEntity.OperationTask.Add(newData);
                dbEntity.SaveChanges();
                return(newData.Id);
            }
        }
Esempio n. 6
0
        public Format_Detail GetById(int id)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                OperationTask existingData = (from c in dbEntity.OperationTask.AsNoTracking()
                                              where c.Id == id && c.DeletedFlag == false
                                              select c).SingleOrDefault <OperationTask>();
                if (existingData == null)
                {
                    throw new CDSException(10701);
                }

                return(new Format_Detail()
                {
                    Id = existingData.Id,
                    Name = existingData.Name,
                    TaskStatus = existingData.TaskStatus,
                    CompletedAt = existingData.CompletedAt.ToString() ?? "",
                    RetryCounter = existingData.RetryCounter,
                    Entity = existingData.Entity,
                    EntityId = existingData.EntityId,
                    TaskContent = JObject.Parse(existingData.TaskContent),
                    TaskLog = existingData.TaskLog,
                    CreatedAt = existingData.CreatedAt
                });
            }
        }
Esempio n. 7
0
        public int addOperationTask(Add operationTask)
        {
            try
            {
                if (operationTask.TaskContent != null)
                {
                    JObject tmp = JObject.Parse(operationTask.TaskContent);
                }
            }
            catch
            {
                throw new Exception("TaskContent must be in Json fromat");
            }

            DBHelper._OperationTask dbhelp = new DBHelper._OperationTask();
            DateTime invaildDatetime       = new DateTime(1, 1, 1);

            var newOperationTask = new OperationTask()
            {
                Name         = operationTask.Name,
                TaskStatus   = operationTask.TaskStatus,
                CompanyId    = operationTask.CompanyId,
                CompletedAt  = (operationTask.CompletedAt.Equals(invaildDatetime)) ? null : operationTask.CompletedAt,
                RetryCounter = operationTask.RetryCounter,
                Entity       = operationTask.Entity,
                EntityId     = operationTask.EntityId,
                TaskContent  = operationTask.TaskContent,
                TaskLog      = operationTask.TaskLog
            };
            int operationTaskId = dbhelp.Add(newOperationTask);

            return(operationTaskId);
        }
Esempio n. 8
0
        public static void RestartIoTHubRecevicer(int companyId, string ioTHubAlias, string requester, string requesterEmail)
        {
            string command = "restart iothub receiver";

            ProcessorCommandMessage processorCommandMessage =
                new ProcessorCommandMessage(
                    command,
                    ioTHubAlias,
                    requester,
                    requesterEmail);

            OpsTaskModel opsTask = new OpsTaskModel(command,
                                                    companyId, "IoTHubAlias", ioTHubAlias, processorCommandMessage.GetJsonContent());

            OperationTask task = new OperationTask();

            task.Name         = opsTask.Name;
            task.TaskStatus   = opsTask.TaskStatus;
            task.RetryCounter = opsTask.RetryCounter;
            task.CompanyId    = opsTask.CompanyId;
            task.Entity       = opsTask.Entity;
            task.EntityId     = opsTask.EntityId;
            task.TaskContent  = opsTask.TaskContent;

            int newOperationTaskId = addOperationTask(task);

            if (newOperationTaskId > 0)
            {
                processorCommandMessage.taskId = newOperationTaskId;
                processorCommandMessage.PublishProcessorCommandMessage();
            }
        }
Esempio n. 9
0
 internal void Add(OperationTask task)
 {
     lock (pendingTasks)
     {
         task.Progress = TaskProgress.Submitted;
         pendingTasks.Add(task);
     }
 }
Esempio n. 10
0
 internal void Update(OperationTask task, TaskProgress progress, OperationEvent sourceEvent, OperationEvent destinationEvent)
 {
     operations[task.OperationID] = new OperationInfo
     {
         Progress             = progress,
         LastSourceEvent      = sourceEvent,
         LastDestinationEvent = destinationEvent,
     };
 }
Esempio n. 11
0
 internal void Store(OperationTask task, OperationEvent sourceEvent, OperationEvent destinationEvent)
 {
     operations[task.OperationID] = new OperationInfo
     {
         Progress             = TaskProgress.Acknowledged,
         LastSourceEvent      = sourceEvent,
         LastDestinationEvent = destinationEvent,
     };
 }
Esempio n. 12
0
            public void Update(OperationTask operationTask)
            {
                CDS20AzureSQL dbEntity = new CDS20AzureSQL();

                operationTask.UpdatedAt = DateTime.Parse(DateTime.UtcNow.ToString());
                dbEntity.OperationTask.Attach(operationTask);
                dbEntity.Entry(operationTask).State = System.Data.Entity.EntityState.Modified;

                dbEntity.SaveChanges();
            }
Esempio n. 13
0
        public static void UpdateTaskBySuccess(int taskId)
        {
            DBHelper._OperationTask opsTaskHelper = new DBHelper._OperationTask();
            OperationTask           opsTask       = opsTaskHelper.GetByid(taskId);

            opsTask.CompletedAt = DateTime.UtcNow;
            opsTask.TaskLog     = DateTime.UtcNow + ": Done.";
            opsTask.TaskStatus  = "Completed";

            opsTaskHelper.Update(opsTask);
        }
Esempio n. 14
0
        public void DeleteById(int id)
        {
            using (CDStudioEntities dbEntity = new CDStudioEntities())
            {
                OperationTask existingData = dbEntity.OperationTask.Find(id);
                if (existingData == null)
                {
                    throw new CDSException(10701);
                }

                existingData.DeletedFlag = true;
                existingData.UpdatedAt   = DateTime.UtcNow;
                dbEntity.SaveChanges();
            }
        }
Esempio n. 15
0
        static void UpdateTaskByFail(int taskId, string failLog)
        {
            try
            {
                DBHelper._OperationTask opsTaskHelper = new DBHelper._OperationTask();
                OperationTask           opsTask       = opsTaskHelper.GetByid(taskId);
                opsTask.RetryCounter = opsTask.RetryCounter + 1;
                opsTask.TaskStatus   = "Fail";
                opsTask.TaskLog      = DateTime.UtcNow + ": " + failLog;

                opsTaskHelper.Update(opsTask);
            }
            catch (Exception ex)
            {
                ConsoleLog.WriteBlobLogError("Exception on UpdateTaskByFail: {0}", ex.Message);
            }
        }
Esempio n. 16
0
 public void UpdateTaskByFail(int Id, string failLog)
 {
     try
     {
         OperationTask operationTask = GetByid(Id);
         if (operationTask == null)
         {
             return;
         }
         operationTask.TaskLog    = operationTask.TaskLog + Environment.NewLine + DateTime.UtcNow + ": " + failLog;
         operationTask.TaskStatus = "Fail";
         Update(operationTask);
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 17
0
 public void UpdateTaskBySuccess(int Id)
 {
     try
     {
         OperationTask operationTask = GetByid(Id);
         if (operationTask == null)
         {
             return;
         }
         operationTask.CompletedAt = DateTime.UtcNow;
         operationTask.TaskLog     = operationTask.TaskLog + Environment.NewLine + DateTime.UtcNow + ": Done.";
         operationTask.TaskStatus  = "Completed";
         Update(operationTask);
     }
     catch (Exception)
     {
         throw;
     }
 }
        public override void OnEndTest(TestResult testResult)
        {
            _server.TaskOutput(null, "bla", TaskOutputType.STDOUT);

            var task = TryGetTask(testResult);

            if (task == null)
            {
                return;
            }

            ReportResult(task, testResult.State, testResult.Exception, testResult.Name);

            foreach (var operation in testResult.Operations)
            {
                var operationTask = new OperationTask(operation.GetAbsoluteId(), operation.Id, task.AbsoluteId, operation.Name, operation.Type);
                _server.CreateDynamicElement(operationTask);

                ReportResult(operationTask, operation.State, operation.Exception, operation.Name);
            }
        }
Esempio n. 19
0
        private static int addOperationTask(OperationTask operationTask)
        {
            DBHelper._OperationTask dbhelp = new DBHelper._OperationTask();
            DateTime invaildDatetime       = new DateTime(1, 1, 1);

            var newOperationTask = new OperationTask()
            {
                Name         = operationTask.Name,
                TaskStatus   = operationTask.TaskStatus,
                CompanyId    = operationTask.CompanyId,
                CompletedAt  = (operationTask.CompletedAt.Equals(invaildDatetime)) ? null : operationTask.CompletedAt,
                RetryCounter = operationTask.RetryCounter,
                Entity       = operationTask.Entity,
                EntityId     = operationTask.EntityId,
                TaskContent  = operationTask.TaskContent,
                TaskLog      = operationTask.TaskLog
            };
            int operationTaskId = dbhelp.Add(newOperationTask);

            return(operationTaskId);
        }
Esempio n. 20
0
        public Detail getOperationTaskById(int id)
        {
            DBHelper._OperationTask dbhelp         = new DBHelper._OperationTask();
            DBHelper._Company       dbhelp_company = new DBHelper._Company();
            OperationTask           operationTask  = dbhelp.GetByid(id);
            Company company = dbhelp_company.GetByid((int)operationTask.CompanyId);

            return(new Detail()
            {
                Id = operationTask.Id,
                Name = operationTask.Name,
                TaskStatus = operationTask.TaskStatus,
                CompanyId = (int)operationTask.CompanyId,
                CompanyName = company == null ? "" : company.Name,
                CompletedAt = operationTask.CompletedAt,
                RetryCounter = (operationTask.RetryCounter == null) ? "" : operationTask.RetryCounter.ToString(),
                Entity = operationTask.Entity,
                EntityId = operationTask.EntityId,
                TaskContent = (operationTask.TaskContent == null) ? null : JObject.Parse(operationTask.TaskContent),
                TaskLog = operationTask.TaskLog
            });
        }
Esempio n. 21
0
        public void Monitor_AcknowledgeLost()
        {
            var connection = new TestConnection();
            var task       = new OperationTask();
            var flow       = new OperationTaskflow(task);

            AutoResetEvent signal = new AutoResetEvent(false);

            void callback(OperationEvent operationEvent)
            {
                signal.Set();
            }

            connection.NextStatus = new OperationStatus
            {
                Events     = new[] { new OperationEvent() },
                RetryAfter = TimeSpan.FromMilliseconds(100)
            };

            var monitor = new OperationMonitor(
                flow,
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(2000),
                connection,
                callback);

            Assert.IsTrue(signal.WaitOne(200));
            Assert.IsTrue(signal.WaitOne(200));
            Assert.IsTrue(signal.WaitOne(200));

            monitor.Update(TaskProgress.Confirmed);

            Assert.IsFalse(signal.WaitOne(200));

            Assert.IsTrue(monitor.IsComplete);
        }
Esempio n. 22
0
        public async Task Handle(CreateNewOperationTaskCommand message)
        {
            var command = JsonConvert.DeserializeObject(message.CommandData, Type.GetType(message.CommandType));

            var op = await _dbContext.Operations.FindAsync(message.OperationId).ConfigureAwait(false);

            if (op == null)
            {
                MarkAsComplete();
                return;
            }

            var task = await _dbContext.OperationTasks.FindAsync(message.TaskId).ConfigureAwait(false);

            if (task == null)
            {
                task = new OperationTask
                {
                    Id        = message.TaskId,
                    Operation = op,
                };

                _dbContext.Add(task);
            }

            task.Name = command.GetType().Name;
            Data.Tasks.Add(message.TaskId, command.GetType().AssemblyQualifiedName);

            await _dbContext.SaveChangesAsync().ConfigureAwait(false);

            var sendCommandAttribute = command.GetType().GetCustomAttribute <SendMessageToAttribute>();

            switch (sendCommandAttribute.Recipient)
            {
            case MessageRecipient.VMHostAgent:
            {
                switch (command)
                {
                case IMachineCommand machineCommand:
                {
                    var machine = await _dbContext.Machines.FindAsync(machineCommand.MachineId).ConfigureAwait(false);

                    if (machine == null)
                    {
                        if (command.GetType().GetCustomAttribute(typeof(MachineMayNotExistsAttribute)) != null)
                        {
                            await Handle(OperationTaskStatusEvent.Completed(message.OperationId, message.TaskId));
                        }
                        else
                        {
                            await Handle(OperationTaskStatusEvent.Failed(message.OperationId, message.TaskId,
                                                                         new ErrorData {
                                        ErrorMessage = "Machine not found"
                                    }));
                        }

                        return;
                    }

                    await _bus.Advanced.Routing.Send($"{QueueNames.VMHostAgent}.{machine.AgentName}", command)
                    .ConfigureAwait(false);

                    return;
                }

                case IHostAgentCommand agentCommand:
                    await _bus.Advanced.Routing.Send($"{QueueNames.VMHostAgent}.{agentCommand.AgentName}", command)
                    .ConfigureAwait(false);

                    return;

                default:
                    throw new InvalidDataException($"Don't know how to route operation task command of type {command.GetType()}");
                }
            }

            case MessageRecipient.Controllers:
                await _bus.Send(command);

                return;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 23
0
        public async Task <OperationStatus> GetOperationStatus(OperationTask task)
        {
            await CallService();

            return(simulation.GetOperationStatus(task));
        }
Esempio n. 24
0
            public Task <OperationStatus> GetOperationStatus(OperationTask task)
            {
                NumCalled++;

                return(Task.FromResult(NextStatus));
            }