private async Task RecordPeriodEndJob(PeriodEndTaskType taskType, PeriodEndEvent periodEndEvent)
        {
            logger.LogDebug($"Recording period end job. Type: {taskType:G}");
            var generatedMessage = new GeneratedMessage
            {
                MessageId   = periodEndEvent.EventId,
                MessageName = periodEndEvent.GetType().FullName,
                StartTime   = periodEndEvent.EventTime
            };

            if (taskType == PeriodEndTaskType.PeriodEndStart ||
                taskType == PeriodEndTaskType.PeriodEndRun ||
                taskType == PeriodEndTaskType.PeriodEndStop ||
                taskType == PeriodEndTaskType.PeriodEndSubmissionWindowValidation ||
                taskType == PeriodEndTaskType.PeriodEndReports)
            {
                var job = CreatePeriodEndJob(taskType);

                job.JobId             = periodEndEvent.JobId;
                job.CollectionYear    = periodEndEvent.CollectionPeriod.AcademicYear;
                job.CollectionPeriod  = periodEndEvent.CollectionPeriod.Period;
                job.GeneratedMessages = new List <GeneratedMessage> {
                    generatedMessage
                };

                await jobClient.StartPeriodEndJob(job).ConfigureAwait(false);
            }
            else
            {
                throw new InvalidOperationException($"Unhandled period end task type: {taskType:G}");
            }
        }
Beispiel #2
0
        public async Task Stores_In_Progress_Messages()
        {
            var generatedMessageA = new GeneratedMessage
            {
                StartTime   = DateTimeOffset.UtcNow,
                MessageId   = Guid.NewGuid(),
                MessageName = "MessageA",
            };
            var generatedMessageB = new GeneratedMessage
            {
                StartTime   = DateTimeOffset.UtcNow,
                MessageId   = Guid.NewGuid(),
                MessageName = "MessageB",
            };
            var jobStatusMessage = new RecordJobMessageProcessingStatus
            {
                Id                = Guid.NewGuid(),
                JobId             = 1,
                GeneratedMessages = new List <GeneratedMessage> {
                    generatedMessageA, generatedMessageB
                },
                EndTime   = DateTime.UtcNow,
                Succeeded = true
            };

            var service = mocker.Create <JobMessageService>();
            await service.RecordCompletedJobMessageStatus(jobStatusMessage, CancellationToken.None);

            mocker.Mock <IJobStorageService>()
            .Verify(x => x.StoreInProgressMessages(It.Is <long>(jobId => jobId == jobStatusMessage.JobId), It.Is <List <InProgressMessage> >(identifiers =>
                                                                                                                                             identifiers.Count == 2 &&
                                                                                                                                             identifiers.Exists(inProgress => inProgress.MessageId == generatedMessageA.MessageId) &&
                                                                                                                                             identifiers.Exists(inProgress => inProgress.MessageId == generatedMessageB.MessageId)), It.IsAny <CancellationToken>()), Times.Once);
        }
        public async Task Stores_Earning_Job_Inprogress_Messages()
        {
            var generatedMessageA = new GeneratedMessage
            {
                StartTime   = DateTimeOffset.UtcNow,
                MessageId   = Guid.NewGuid(),
                MessageName = "MessageA",
            };
            var generatedMessageB = new GeneratedMessage
            {
                StartTime   = DateTimeOffset.UtcNow,
                MessageId   = Guid.NewGuid(),
                MessageName = "MessageB",
            };
            var jobStarted = new RecordJobAdditionalMessages
            {
                GeneratedMessages = new List <GeneratedMessage> {
                    generatedMessageA, generatedMessageB
                },
                JobId = 1,
            };

            var service = mocker.Create <EarningsJobService>();
            await service.RecordNewJobAdditionalMessages(jobStarted, CancellationToken.None);

            mocker.Mock <IJobStorageService>()
            .Verify(x => x.StoreInProgressMessages(It.Is <long>(jobId => jobId == jobStarted.JobId), It.Is <List <InProgressMessage> >(identifiers =>
                                                                                                                                       identifiers.Count == 2 &&
                                                                                                                                       identifiers.Exists(inProgress => inProgress.MessageId == generatedMessageA.MessageId) &&
                                                                                                                                       identifiers.Exists(inProgress => inProgress.MessageId == generatedMessageB.MessageId)), It.IsAny <CancellationToken>()), Times.Once);
        }
Beispiel #4
0
        public static SEMessage Create(Guid eventID, GeneratedMessage message, StringDictionary stringDictionary, string body)
        {
            var mail = new SEMessage();

            mail.HtmlBody = body;
            mail.EventID  = eventID;
            foreach (string key in stringDictionary.Keys)
            {
                mail[key] = stringDictionary[key];
            }
            if (message.Subject != null)
            {
                mail[SEMessage.SUBJECT] = message.Subject;
            }
            if (message.Body != null)
            {
                mail.HtmlBody = message.Body;
            }
            if (message.Replay != null)
            {
                mail[REPLYTO] = message.Replay;
            }
            if (message.From != null)
            {
                mail[FROM] = message.From;
            }

            return(mail);
        }
Beispiel #5
0
 protected uint SendProto <TMessage, TBuilder>(uint protoID, GeneratedMessage <TMessage, TBuilder> req)
     where TMessage : Google.ProtocolBuffers.GeneratedMessage <TMessage, TBuilder>
     where TBuilder : Google.ProtocolBuffers.GeneratedBuilder <TMessage, TBuilder>, new()
 {
     if (this.channel != null)
     {
         byte[] data    = req.ToByteArray();
         IntPtr dataPtr = Marshal.AllocHGlobal(data.Length);
         Marshal.Copy(data, 0, dataPtr, data.Length);
         uint serialNo = FTCAPI.FTAPIChannel_SendProto(this.channel, protoID, (byte)0, dataPtr, data.Length);
         Marshal.FreeHGlobal(dataPtr);
         return(serialNo);
     }
     return(0);
 }
        private async Task RecordPeriodEndJob(PeriodEndTaskType taskType, PeriodEndEvent periodEndEvent)
        {
            logger.LogDebug($"Recording period end job. Type: {taskType:G}");
            var generatedMessage = new GeneratedMessage
            {
                MessageId   = periodEndEvent.EventId,
                MessageName = periodEndEvent.GetType().FullName,
                StartTime   = periodEndEvent.EventTime
            };

            switch (taskType)
            {
            case PeriodEndTaskType.PeriodEndStart:
                await jobClient.RecordPeriodEndStart(periodEndEvent.JobId, periodEndEvent.CollectionPeriod.AcademicYear,
                                                     periodEndEvent.CollectionPeriod.Period, new List <GeneratedMessage> {
                    generatedMessage
                }).ConfigureAwait(false);

                break;

            case PeriodEndTaskType.PeriodEndRun:
                await jobClient.RecordPeriodEndRun(periodEndEvent.JobId, periodEndEvent.CollectionPeriod.AcademicYear,
                                                   periodEndEvent.CollectionPeriod.Period, new List <GeneratedMessage> {
                    generatedMessage
                }).ConfigureAwait(false);

                break;

            case PeriodEndTaskType.PeriodEndStop:
                await jobClient.RecordPeriodEndStop(periodEndEvent.JobId, periodEndEvent.CollectionPeriod.AcademicYear,
                                                    periodEndEvent.CollectionPeriod.Period, new List <GeneratedMessage> {
                    generatedMessage
                }).ConfigureAwait(false);

                break;

            case PeriodEndTaskType.PeriodEndSubmissionWindowValidation:
                await jobClient.RecordPeriodEndSubmissionWindowValidation(periodEndEvent.JobId, periodEndEvent.CollectionPeriod.AcademicYear,
                                                                          periodEndEvent.CollectionPeriod.Period, new List <GeneratedMessage> {
                    generatedMessage
                }).ConfigureAwait(false);

                break;

            default:
                throw new InvalidOperationException($"Unhandled period end task type: {taskType:G}");
            }
        }
        public async Task Stores_In_Progress_Messages()
        {
            var generatedMessageA = new GeneratedMessage
            {
                StartTime   = DateTimeOffset.UtcNow,
                MessageId   = Guid.NewGuid(),
                MessageName = "MessageA",
            };
            var generatedMessageB = new GeneratedMessage
            {
                StartTime   = DateTimeOffset.UtcNow,
                MessageId   = Guid.NewGuid(),
                MessageName = "MessageB",
            };
            var jobStarted = new RecordEarningsJob
            {
                CollectionPeriod  = 1,
                CollectionYear    = 1819,
                JobId             = 1,
                Ukprn             = 9999,
                IlrSubmissionTime = DateTime.UtcNow.AddMinutes(-20),
                StartTime         = DateTimeOffset.UtcNow,
                GeneratedMessages = new List <GeneratedMessage> {
                    generatedMessageA, generatedMessageB
                }
            };

            var service = mocker.Create <EarningsJobService>();
            await service.RecordNewJob(jobStarted, default(CancellationToken));

            mocker.Mock <IJobStorageService>()
            .Verify(x => x.StoreInProgressMessages(It.Is <long>(jobId => jobId == jobStarted.JobId), It.Is <List <InProgressMessage> >(identifiers =>
                                                                                                                                       identifiers.Count == 2 &&
                                                                                                                                       identifiers.Exists(inProgress => inProgress.MessageId == generatedMessageA.MessageId) &&
                                                                                                                                       identifiers.Exists(inProgress => inProgress.MessageId == generatedMessageB.MessageId)), It.IsAny <CancellationToken>()), Times.Once);
        }
 private static int GetOndiskTrunkSize(GeneratedMessage s)
 {
     return(CodedOutputStream.ComputeRawVarint32Size(s.GetSerializedSize()) + s.GetSerializedSize
                ());
 }