public void SessionExpiryTest()
        {
            var agentChatCoordinatorService = new AgentChatCoordinatorService(new ConsoleLogProvider());
            var queue     = new ChatSessionQueue(new ConsoleLogProvider(), agentChatCoordinatorService);
            var sessionId = Guid.NewGuid();

            Assert.IsTrue(queue.Enqueue(new ChatSession(sessionId)));

            Thread.Sleep((ChatSettings.ChatSessionTimeoutSeconds + 2) * 1000);
            Assert.IsNull(queue.GetChatSession(sessionId));
        }
Exemple #2
0
        public void AssignChatShouldConsiderSeniorLevel()
        {
            var agents = new List <Agent>
            {
                new Agent("Senior 1", SeniorityLevel.Senior),
                new Agent("Junior 1", SeniorityLevel.Junior)
            };

            var chatMessages = new[] { "message 1", "message 2", "message 3", "message 4", "message 5" };

            var chatCoordinatorService = new AgentChatCoordinatorService(agents, new List <OverflowAgent>());

            foreach (var chatMessage in chatMessages)
            {
                chatCoordinatorService.AssignChat(chatMessage);
            }

            Assert.Equal(4, agents.Where(x => x.SeniorityLevel == SeniorityLevel.Junior).Sum(x => x.WorkList.Count));
            Assert.Equal(1, agents.Where(x => x.SeniorityLevel == SeniorityLevel.Senior).Sum(x => x.WorkList.Count));
        }
        public void SessionKeepAliveTest()
        {
            var agentChatCoordinatorService = new AgentChatCoordinatorService(new ConsoleLogProvider());
            var queue     = new ChatSessionQueue(new ConsoleLogProvider(), agentChatCoordinatorService);
            var sessionId = Guid.NewGuid();

            Assert.IsTrue(queue.Enqueue(new ChatSession(sessionId)));

            for (var i = 0; i < 10; i++)
            {
                queue.UpdateHeartbeat(sessionId);
                Assert.IsNotNull(queue.GetChatSession(sessionId));
                if (i < 9)
                {
                    Thread.Sleep(1000);
                }
            }
            Assert.IsNotNull(queue.GetChatSession(sessionId));
            queue.RemoveSession(sessionId);
            Assert.IsNull(queue.GetChatSession(sessionId));
        }
        public void MaxCapacityTest()
        {
            var agentChatCoordinatorService = new AgentChatCoordinatorService(new ConsoleLogProvider());
            var queue        = new ChatSessionQueue(new ConsoleLogProvider(), agentChatCoordinatorService);
            var teamCapacity = agentChatCoordinatorService.GetTeamCapacity();

            for (var i = 0; i < teamCapacity + 1; i++)
            {
                var sessionId = Guid.NewGuid();

                if (i < teamCapacity)
                {
                    // Ensure that when within the capacity, the enqueue is true
                    Assert.IsTrue(queue.Enqueue(new ChatSession(sessionId)));
                }
                else
                {
                    // Ensure that when we exceed the capacity, the enqueue is false
                    Assert.IsFalse(queue.Enqueue(new ChatSession(sessionId)));
                }
            }
        }