public void RceMessageHelpers_WhenGivenListWithMissingMessages_MinimizesList() { MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); MessageList.RemoveAt(0); RceMessageHelpers.Minimize(MessageList); var index = 0; Assert.Equal(7, MessageList.Count); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000011"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000012"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000014"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000015"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000016"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000017"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000018"), MessageList[index++].MessageId); }
public async Task MarkDisconnectedWorkers() { try { var pastTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - (long)TimeSpan.FromMinutes(DeclareDisconnectedAfterMinutes).TotalMilliseconds; var oldMessages = await _messageRepository.GetMessagesBefore(pastTimestamp); var newMessages = await _messageRepository.GetMessagesAfter(pastTimestamp); var previouslyActiveWorkers = RceMessageHelpers.GetActiveWorkerIds(oldMessages).ToList(); var currentlyActiveWorkers = RceMessageHelpers.GetActiveWorkerIds(newMessages).ToList(); foreach (var disconnectedWorkerId in previouslyActiveWorkers.Except(currentlyActiveWorkers)) { if (await _messageRepository.IsDisconnected(disconnectedWorkerId)) { continue; } await _messageRepository.AddMessage(new WorkerRemovedMessage { WorkerId = disconnectedWorkerId, ConnectionStatus = WorkerRemovedMessage.Statuses.ConnectionLost }); } } catch (Exception e) { // ignore } }
public void RceMessageHelpers_WhenGivenFullList_MinimizesList() { RceMessageHelpers.Minimize(MessageList); var index = 0; Assert.Equal(1, MessageList.Count); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000003"), MessageList[index++].MessageId); }
public void RceMessageHelpers_WhenGivenListWithoutWorkerOneCreated_MinimizesList() { MessageList.RemoveAt(0); RceMessageHelpers.Minimize(MessageList); var index = 0; Assert.Equal(4, MessageList.Count); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000003"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000004"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000006"), MessageList[index++].MessageId); Assert.Equal(new Guid("00000000-0000-0000-0000-000000000012"), MessageList[index++].MessageId); }
public async Task <IActionResult> GetMessages() { try { var messages = await _serverService.GetMyMessages(); return(Ok(RceMessageHelpers.Minimize(messages.ToList()))); } catch (Exception e) { return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message)); } }
public async Task RemoveOldActivity() { try { var pastTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - (long)TimeSpan.FromMinutes(DeclareOldAfterMinutes).TotalMilliseconds; var messages = await _messageRepository.GetMessagesBefore(pastTimestamp); var redundantMessages = RceMessageHelpers.GetRedundantMessages(messages).ToList(); await _messageRepository.RemoveMessages(redundantMessages.Select(e => e.MessageId)); await _messageRepository.RemoveOwnership(redundantMessages .Where(e => e is WorkerRemovedMessage) .Select(e => ((WorkerRemovedMessage)e).WorkerId) .Distinct()); } catch (Exception e) { // ignore } }