static void Main(string[] args) { /* Can use any RavenDb implementation * EmbeddableDocumentStore, * RavenDbDocumentStore, * DocumentStore */ var ravenDbdocumentStore = new DocumentStore { Url = "http://localhost:8080", DefaultDatabase = "Customers", //ConnectionStringName = "RavenDBDatabaseConnection" }; var repository = new RavenDBcustomerRepository <Customer>(ravenDbdocumentStore); var queue = new PersistenceCustomersQueue <Customer>(repository); var server = new Server <Customer>(); var barber = new SleepingBarber <Customer>(queue, server); barber.CustomerServed += CustomerServed; barber.GoingToSleep += BarberWentToSleep; for (int i = 0; i < 50; i++) { var name = $"Customer{i}"; queue.Enqueue(new Customer { Id = name, Name = name, DateCreate = DateTime.Now }); Console.WriteLine($"{i} was added to database"); } Console.ReadLine(); }
public void Initialize_Queue_From_Repository() { var defaultList = new List <CustomerForTest> { new CustomerForTest(), new CustomerForTest() }; _repository.GetAll().Returns(defaultList); _customersQueue = new PersistenceCustomersQueue <CustomerForTest>(_repository); var first = _customersQueue.Dequeue(); var second = _customersQueue.Dequeue(); Assert.That(first, Is.EqualTo(defaultList[0])); Assert.That(second, Is.EqualTo(defaultList[1])); }
public void Initialize_Triggers_CustomerArrived_If_Database_Contains_Any_Customer() { bool customerArrived = false; var defaultList = ParallelEnumerable.Repeat(new CustomerForTest(), 1000); _repository.GetAll().Returns(defaultList); _customersQueue = new PersistenceCustomersQueue <CustomerForTest>(_repository); _customersQueue.CustomerArrived += (sender, args) => customerArrived = true; var starTime = DateTime.Now; //wait until the event triggered or timeout. while (!customerArrived && starTime > DateTime.Now.Subtract(TimeSpan.FromSeconds(5))) { Thread.Sleep(100); } Assert.IsTrue(customerArrived); }
public void Setup() { _repository = Substitute.For <ICustomerRepository <CustomerForTest> >(); _customersQueue = new PersistenceCustomersQueue <CustomerForTest>(_repository); }