public async Task MultipleScheduleSuccessTestApi() { const int scheduleSize = 10; var context = _workContext.WithTag(_tag); AgentContractV1 agent = await _utility.SetupAgentAndQueue(_queueName, _agentName); var list = new List <EnqueueMessageContractV1>(); foreach (var item in Enumerable.Range(0, scheduleSize)) { EnqueueMessageContractV1 message = _utility.CreateMessage(context, agent.AgentId, _queueName); message.ScheduleDate = DateTime.UtcNow.AddSeconds(2); await _client.Message.EnqueueMessage(context, message); list.Add(message); } await _utility.VerifyQueue(context, _queueName, 0, scheduleSize); MessageContractV1 readMessage = (await _client.Message.DequeueMessageAndDelete(context, _queueName, null)).Value; readMessage.Should().BeNull(); await Task.Delay(TimeSpan.FromSeconds(10)); var readList = new List <MessageContractV1>(); foreach (var item in Enumerable.Range(0, scheduleSize)) { readMessage = (await _client.Message.DequeueMessageAndDelete(context, _queueName, null)).Value; readMessage.Should().NotBeNull(); readList.Add(readMessage); } readList.Count.Should().Be(scheduleSize); readMessage = (await _client.Message.DequeueMessageAndDelete(context, _queueName, null)).Value; readMessage.Should().BeNull(); var zip = list .OrderBy(x => x.ClientMessageId) .Zip(readList.OrderBy(x => x.ClientMessageId), (f, s) => new Tuple <EnqueueMessageContractV1, MessageContractV1>(f, s)); foreach (var item in zip) { _utility.VerifyMessage(item.Item1, item.Item2, agent.AgentId, false); } await _utility.VerifyQueue(context, _queueName, 0, 0); foreach (var item in readList) { HistoryContractV1 history = (await _client.History.GetHistory(context, item.MessageId)).Value; _utility.VerifyHistoryMessage(item, history, _queueName, _agentName); } }
public async Task SimpleScheduleSuccessTestApi() { var context = _workContext.WithTag(_tag); AgentContractV1 agent = await _utility.SetupAgentAndQueue(_queueName, _agentName); EnqueueMessageContractV1 message = _utility.CreateMessage(context, agent.AgentId, _queueName); message.ScheduleDate = DateTime.UtcNow.AddSeconds(2); await _client.Message.EnqueueMessage(context, message); await _utility.VerifyQueue(context, _queueName, 0, 1); MessageContractV1 readMessage = (await _client.Message.DequeueMessageAndDelete(context, _queueName, null)).Value; readMessage.Should().BeNull(); await Task.Delay(TimeSpan.FromSeconds(10)); readMessage = (await _client.Message.DequeueMessageAndDelete(context, _queueName, null)).Value; _utility.VerifyMessage(message, readMessage, agent.AgentId, false); HistoryContractV1 history = (await _client.History.GetHistory(context, readMessage.MessageId)).Value; _utility.VerifyHistoryMessage(readMessage, history, _queueName, _agentName); }
public async Task SimpleEnqueueWithLockTimeoutSuccessTestApi() { var context = _workContext.WithTag(_tag); AgentContractV1 agent = await _utility.SetupAgentAndQueue(_queueName, _agentName, lockValidForSec : 5); EnqueueMessageContractV1 message = _utility.CreateMessage(context, agent.AgentId, _queueName); await _client.Message.EnqueueMessage(context, message); await _utility.VerifyQueue(context, _queueName, 1, 0); MessageContractV1 readMessage = (await _client.Message.DequeueMessageWithLock(context, _queueName, agent, null)).Value; long saveMessageId = readMessage.MessageId; _utility.VerifyMessage(message, readMessage, agent.AgentId, true); MessageContractV1 tempMessage = (await _client.Message.DequeueMessageWithLock(context, _queueName, agent, null)).Value; tempMessage.Should().BeNull(); await Task.Delay(TimeSpan.FromSeconds(10)); readMessage = (await _client.Message.DequeueMessageWithLock(context, _queueName, agent, null)).Value; _utility.VerifyMessage(message, readMessage, agent.AgentId, true); readMessage.MessageId.Should().Be(saveMessageId); var settleMessage = new SettleMessageContractV1 { AgentId = agent.AgentId, QueueName = _queueName, SettleType = SettleType.Processed, MessageId = readMessage.MessageId, }; await _client.Message.SettleMessage(context, settleMessage); await _utility.VerifyQueue(context, _queueName, 0, 0); HistoryContractV1 history = (await _client.History.GetHistory(context, readMessage.MessageId)).Value; _utility.VerifyHistoryMessage(readMessage, history, _queueName, _agentName, retryCount: 2); }
public void VerifyMessage(EnqueueMessageContractV1 message, MessageContractV1 readMessage, int agentId, bool testLock) { readMessage.Should().NotBeNull(); readMessage.QueueId.Should().BeGreaterOrEqualTo(0); readMessage.MessageId.Should().BeGreaterOrEqualTo(0); readMessage.CreatedByAgentId.Should().Be(agentId); readMessage.ClientMessageId.Should().Be(message.ClientMessageId); readMessage.Cv.Should().Be(message.Cv); readMessage.Payload.Should().Be(message.Payload); if (testLock) { readMessage.LockedByAgentId.Should().Be(agentId); } WorkRequest readWorkRequest = readMessage.Deserialize <WorkRequest>(); readWorkRequest.Should().NotBeNull(); readWorkRequest.ProcessName.Should().Be("this process"); readWorkRequest.Parameters.Should().NotBeNull(); readWorkRequest.Parameters.Count().Should().Be(3); }