Пример #1
0
        private List <Tuple <int, RealTimeInventory, int> > CreateInventoryOperationEvents(RealTimeInventory inventory, int toUpdate, int looplength)
        {
            List <Tuple <int, RealTimeInventory, int> > events = new List <Tuple <int, RealTimeInventory, int> >();
            var operations       = InventoryServiceSpecificationHelper.GetOperations(null);
            var updatedInventory = inventory;

            for (var i = 0; i < looplength; i++)
            {
                var selection = new Random().Next(1, operations.Count);
                events.Add(new Tuple <int, RealTimeInventory, int>(selection, new RealTimeInventory(updatedInventory.ProductId, updatedInventory.Quantity, updatedInventory.Reserved, updatedInventory.Holds), toUpdate));
            }
            return(events);
        }
Пример #2
0
        private RealTimeInventory RunSomeInventoryOperationUsingEventsAsync(List <Tuple <int, RealTimeInventory, int> > events, InventoryServiceServer testHelper)
        {
            var operations2 = InventoryServiceSpecificationHelper.GetOperations(testHelper);

            Task <IInventoryServiceCompletedMessage> currentInventoryAfterLastOperationResult = null;

            foreach (var @event in events)
            {
                currentInventoryAfterLastOperationResult = operations2[@event.Item1](@event.Item2, @event.Item3);
            }
            var currentInventoryAfterLastOperation = currentInventoryAfterLastOperationResult.WaitAndGetOperationResult().RealTimeInventory;

            return(currentInventoryAfterLastOperation as RealTimeInventory);
        }
Пример #3
0
 public void Holds_Reservation_PurchaseFromHold_And_Purchase_Test(RealTimeInventory inventory, int toUpdate)
 {
     using (var testHelper = CreateInventoryServiceServer(inventory))
     {
         const int looplength       = 5;
         var       operations       = InventoryServiceSpecificationHelper.GetOperations(testHelper);
         var       assertions       = InventoryServiceSpecificationHelper.GetAssertions();
         var       updatedInventory = inventory;
         for (var i = 0; i < looplength; i++)
         {
             var selection = new Random().Next(1, operations.Count);
             var updatedInventoryMessage = operations[selection](updatedInventory, toUpdate).WaitAndGetOperationResult();
             assertions[selection](updatedInventory, toUpdate, updatedInventoryMessage);
             updatedInventory = updatedInventoryMessage.RealTimeInventory as RealTimeInventory;
         }
     }
 }
Пример #4
0
        public void Basic_Test()
        {
            var produltId = "sample" + Guid.NewGuid().ToString().Replace("-", "");

            foreach (var request in new List <Tuple <RealTimeInventory, int> >()
            {
                new Tuple <RealTimeInventory, int>(new RealTimeInventory(produltId, 10, 0, 0), 2)
                //  new Tuple<RealTimeInventory, int>(new RealTimeInventory(produltId, -8,8,11),-42),
                //new Tuple<RealTimeInventory, int>(new RealTimeInventory(produltId, -3,2,2),-17)
            })
            {
                Enumerable.Range(1, 6).ForEach(oo =>
                {
                    using (var testHelper = CreateInventoryServiceServer(request.Item1))
                    {
                        //var  response = testHelper.ReserveAsync(request.Item1, request.Item2).WaitAndGetOperationResult();
                        //  response = testHelper.ReserveAsync(request.Item1, request.Item2).WaitAndGetOperationResult();
                        var operation = InventoryServiceSpecificationHelper.GetOperations(testHelper)[oo];
                        InventoryServiceSpecificationHelper.GetAssertions()[oo](request.Item1, request.Item2, operation(request.Item1, request.Item2).WaitAndGetOperationResult());
                    }
                });
            }
        }