Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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]));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public void Setup()
 {
     _repository     = Substitute.For <ICustomerRepository <CustomerForTest> >();
     _customersQueue = new PersistenceCustomersQueue <CustomerForTest>(_repository);
 }