Ejemplo n.º 1
0
        private RlNetProcessor SetupRlNetProcessor()
        {
            Mock <LiveModelBase> mockLiveModel = new Mock <LiveModelBase>();

            List <ActionProbabilityWrapper> actionProbability = new List <ActionProbabilityWrapper>
            {
                new ActionProbabilityWrapperForTest(0, 1f)
            };

            RankingResponseWrapper responseWrapper = new RankingResponseWrapperForTest(actionProbability);

            mockLiveModel.Setup(m => m.ChooseRank(It.IsAny <string>(), It.IsAny <string>(), ActionFlags.Default)).Returns(responseWrapper);

            Dictionary <string, List <ActionProbabilityWrapper> > slotRankedActions = GetSlotActionProbabilityList();
            List <SlotRankingWrapper> rankedSlots = new List <SlotRankingWrapper>();

            foreach (var item in slotRankedActions)
            {
                var slotRankingWrapperForTest = new SlotRankingWrapperForTest(item.Value.FirstOrDefault().ActionIndex, item.Key, item.Value);
                rankedSlots.Add(slotRankingWrapperForTest);
            }

            MultiSlotResponseDetailedWrapper multiSlotResponseWrapper = new MultiSlotResponseWrapperForTest(rankedSlots);

            mockLiveModel.Setup(m => m.RequestMultiSlotDecisionDetailed(It.IsAny <string>(), It.IsAny <string>(), ActionFlags.Default, It.IsAny <int[]>())).Returns(multiSlotResponseWrapper);
            mockLiveModel.Setup(m => m.QueueOutcomeEvent(It.IsAny <string>(), It.IsAny <float>())).Verifiable();
            mockLiveModel.Setup(m => m.QueueOutcomeEvent(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <float>())).Verifiable();
            mockLiveModel.Setup(m => m.QueueActionTakenEvent(It.IsAny <string>())).Verifiable();

            return(new RlNetProcessor(mockLiveModel.Object));
        }
Ejemplo n.º 2
0
        public void GenerateMultiSlotRankResponseTest()
        {
            string eventId = "testEventId";
            List <PersonalizerRankableAction> actions = GetActions();

            List <ActionProbabilityWrapper> rankedActionsSlot1 = new List <ActionProbabilityWrapper>
            {
                new ActionProbabilityWrapperForTest(1, 0.8f),
                new ActionProbabilityWrapperForTest(2, 0.1f),
                new ActionProbabilityWrapperForTest(0, 0.1f)
            };

            List <ActionProbabilityWrapper> rankedActionsSlot2 = new List <ActionProbabilityWrapper>
            {
                new ActionProbabilityWrapperForTest(2, 0.9f),
                new ActionProbabilityWrapperForTest(0, 0.1f)
            };

            List <ActionProbabilityWrapper> rankedActionsSlot3 = new List <ActionProbabilityWrapper>
            {
                new ActionProbabilityWrapperForTest(0, 1.0f)
            };

            // setup response
            List <SlotRankingWrapper> rankedSlots = new List <SlotRankingWrapper>
            {
                new SlotRankingWrapperForTest(1, "slot1", rankedActionsSlot1),
                new SlotRankingWrapperForTest(2, "slot2", rankedActionsSlot2),
                new SlotRankingWrapperForTest(0, "slot3", rankedActionsSlot3)
            };

            MultiSlotResponseDetailedWrapper multiSlotResponseWrapper = new MultiSlotResponseWrapperForTest(rankedSlots);

            PersonalizerMultiSlotRankResult response = RlObjectConverter.GenerateMultiSlotRankResponse(actions, multiSlotResponseWrapper, eventId);

            int actionCount = rankedSlots.Count;

            Assert.AreEqual(actionCount, response.Slots.Count);
            for (int i = 0; i < actionCount; i++)
            {
                // Assert indices were assigned correctly
                var rankedAction = actions[(int)rankedSlots[i].ChosenAction];
                Assert.AreEqual(rankedAction.Id, response.Slots[i].RewardActionId);
            }

            Assert.AreEqual(eventId, response.EventId);
        }