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); }
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); }
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; } } }
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()); } }); } }