private static InMessage CreateInMessage(string id, InStatus status, Operation operation) { var m = new InMessage(id); m.SetStatus(status); m.Operation = operation; return(m); }
public UploadRetry( int currentRetryCount, int maxRetryCount, UploadResult uploadResult, int expectedCurrentRetryCount, Operation expectedOperation, InStatus expectedStatus) { CurrentRetryCount = currentRetryCount; MaxRetryCount = maxRetryCount; UploadResult = uploadResult; ExpectedCurrentRetryCount = expectedCurrentRetryCount; ExpectedOperation = expectedOperation; ExpectedStatus = expectedStatus; }
public DeliverRetry( int currentRetryCount, int maxRetryCount, SendResult sendResult, int expectedCurrentRetryCount, Operation expectedOperation, InStatus expectedStatus) { CurrentRetryCount = currentRetryCount; MaxRetryCount = maxRetryCount; SendResult = sendResult; ExpectedCurrentRetryCount = expectedCurrentRetryCount; ExpectedOperation = expectedOperation; ExpectedStatus = expectedStatus; }
public async Task MainAsync() { Logger.Info("NerdBot MainAsync() Started"); _client = new DiscordSocketClient(); _client.Log += Log; _commands = new CommandService(); _randomQuotePicker = new RandomQuotePicker(); _InStatus = new InStatus(_client); _client.MessageReceived += _randomQuotePicker.MessageReceived; if (Environment.GetEnvironmentVariable("InStatusURL") != null && Environment.GetEnvironmentVariable("InStatusURL") != "") { _client.Connected += _InStatus.ConnectEvent; _client.Disconnected += _InStatus.DisconnectEvent; } _customCommandHandler = new CustomCommandHandler(_client); _client.MessageReceived += _customCommandHandler.MessageReceived; var services = ConfigureServices(); await services.GetRequiredService <CommandHandler>().InitializeAsync(services); Logger.Info("Using Discord Token: " + Environment.GetEnvironmentVariable("DiscordToken")); Logger.Info("Logging into Discord now!"); await _client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("DiscordToken")); await _client.StartAsync(); // Block this task until the program is closed. await Task.Delay(-1); }
public void SetStatus(InStatus status) { Status = status.ToString(); }
public async Task All_Attachments_Should_Succeed_Or_Fail(UploadRetry input) { // Arrange string id = "deliver-" + Guid.NewGuid(); InMessage im = InsertInMessage(id); var r = RetryReliability.CreateForInMessage( refToInMessageId: im.Id, maxRetryCount: input.MaxRetryCount, retryInterval: default(TimeSpan), type: RetryType.Delivery); r.CurrentRetryCount = input.CurrentRetryCount; GetDataStoreContext.InsertRetryReliability(r); var a1 = new FilledAttachment("attachment-1"); var a2 = new FilledAttachment("attachment-2"); var userMessage = new FilledUserMessage(id, a1.Id, a2.Id); var as4Msg = AS4Message.Create(userMessage); as4Msg.AddAttachment(a1); as4Msg.AddAttachment(a2); MessagingContext fixture = await PrepareAS4MessageForDeliveryAsync(as4Msg, CreateReceivingPModeWithPayloadMethod()); var stub = new Mock <IAttachmentUploader>(); stub.Setup(s => s.UploadAsync(a1, fixture.DeliverMessage.Message.MessageInfo)) .ReturnsAsync(input.UploadResult); stub.Setup(s => s.UploadAsync(a2, fixture.DeliverMessage.Message.MessageInfo)) .ReturnsAsync( input.UploadResult.Status == SendResult.Success ? UploadResult.FatalFail : UploadResult.RetryableFail); // Act await CreateUploadStep(stub.Object).ExecuteAsync(fixture); // Assert GetDataStoreContext.AssertInMessage(id, actual => { Assert.NotNull(actual); Operation op = actual.Operation; Assert.NotEqual(Operation.Delivered, op); InStatus st = actual.Status.ToEnum <InStatus>(); Assert.NotEqual(InStatus.Delivered, st); bool operationToBeRetried = Operation.ToBeRetried == op; bool uploadResultCanBeRetried = input.UploadResult.Status == SendResult.RetryableFail && input.CurrentRetryCount < input.MaxRetryCount; Assert.True( operationToBeRetried == uploadResultCanBeRetried, "InMessage should update Operation=ToBeDelivered"); bool messageSetToException = Operation.DeadLettered == op && InStatus.Exception == st; bool exhaustRetries = input.CurrentRetryCount == input.MaxRetryCount || input.UploadResult.Status != SendResult.RetryableFail; Assert.True( messageSetToException == exhaustRetries, $"{messageSetToException} != {exhaustRetries} InMessage should update Operation=DeadLettered, Status=Exception"); }); }