Пример #1
0
        public void SimpleStorageTest()
        {
            var streamId = Guid.NewGuid().ToString();
            var storage = new TransitionStorage(GetRepository());
            var originalTransitions = new List<Transition> {
                CreatedTransition(streamId, 1),
                CreatedTransition(streamId, 2),
                CreatedTransition(streamId, 3)
            };

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Write(originalTransitions[0]);
                stream.Write(originalTransitions[1]);
                stream.Write(originalTransitions[2]);
            }

            List<Transition> storedTransitions = new List<Transition>();
            using (var stream = storage.OpenStream(streamId))
            {
                foreach (var transition in stream.Read())
                {
                    storedTransitions.Add(transition);
                }
            }

            TransitionAsserter.AssertTransitions(originalTransitions, storedTransitions);

            GetRepository().RemoveStream(streamId);
        }
Пример #2
0
        public void SimpleStorageTest()
        {
            var streamId            = Guid.NewGuid().ToString();
            var storage             = new TransitionStorage(GetRepository());
            var originalTransitions = new List <Transition> {
                CreatedTransition(streamId, 1),
                CreatedTransition(streamId, 2),
                CreatedTransition(streamId, 3)
            };

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Write(originalTransitions[0]);
                stream.Write(originalTransitions[1]);
                stream.Write(originalTransitions[2]);
            }

            List <Transition> storedTransitions = new List <Transition>();

            using (var stream = storage.OpenStream(streamId))
            {
                foreach (var transition in stream.Read())
                {
                    storedTransitions.Add(transition);
                }
            }

            TransitionAsserter.AssertTransitions(originalTransitions, storedTransitions);

            GetRepository().RemoveStream(streamId);
        }
Пример #3
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            var container = new Container();

            DependencyResolver.SetResolver(new SmDependencyResolver(container));

            //
            // Service bus
            //
            var bus = ServiceBus.Run(c => c
                                     .SetServiceLocator(new StructureMapServiceLocator(container))
                                     .MemorySynchronousTransport()
                                     .SetName("Main  Service Bus")
                                     .SetInputQueue("sync.server")
                                     .AddEndpoint(type => type.FullName.EndsWith("Event"), "sync.server")
                                     .AddEndpoint(type => type.FullName.EndsWith("Command"), "sync.server")
                                     .AddEndpoint(type => type.FullName.EndsWith("Message"), "sync.server")
                                     .Dispatcher(d => d
                                                 .AddHandlers(typeof(UserAR).Assembly)
                                                 .AddHandlers(typeof(UserEntityEventHandler).Assembly)
                                                 )
                                     );

            container.Configure(config => config.For <IServiceBus>().Singleton().Use(bus));

            //
            // Domain and Event store configuration
            //
            var dataTypeRegistry = new AssemblyQualifiedDataTypeRegistry();


            var transitionsRepository = new InMemoryTransitionRepository();

            var transitionsStorage = new TransitionStorage(transitionsRepository);
            var snapshotRepository = new InMemorySnapshotRepository();

            container.Configure(config =>
            {
                config.For <ITransitionRepository>().Singleton().Use(transitionsRepository);
                config.For <ITransitionStorage>().Singleton().Use(transitionsStorage);
                config.For <CqrsSample.Infrastructure.Snapshots.ISnapshotRepository>().Singleton().Use(snapshotRepository);
                config.For <IDataTypeRegistry>().Singleton().Use(dataTypeRegistry);
                config.For <IEventStore>().Use <EventStore>();
                config.For <IEventBus>().Use <ParalectServiceBusEventBus>();
                config.For <IRepository>().Use <Repository>();
                config.For <ICommandService>().Use <CommandService>();
            });
        }
Пример #4
0
        public void ShouldThrowOnDuplicationWhenVersion1()
        {
            var streamId            = Guid.NewGuid().ToString();
            var storage             = new TransitionStorage(GetRepository());
            var originalTransitions = new List <Transition> {
                CreatedTransition(streamId, 1),
                CreatedTransition(streamId, 1),
                CreatedTransition(streamId, 1)
            };

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Write(originalTransitions[0]);
                Assert.Throws <DuplicateTransitionException>(() => stream.Write(originalTransitions[1]));
                Assert.Throws <DuplicateTransitionException>(() => stream.Write(originalTransitions[2]));
            }

            GetRepository().RemoveStream(streamId);
        }
Пример #5
0
        public void ShouldThrowOnDuplication()
        {
            var streamId = Guid.NewGuid().ToString();
            var storage = new TransitionStorage(GetRepository());
            var originalTransitions = new List<Transition> {
                CreatedTransition(streamId, 2),
                CreatedTransition(streamId, 2),
                CreatedTransition(streamId, 2)
            };

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Write(originalTransitions[0]);
                Assert.Throws<ConcurrencyException>(()=> stream.Write(originalTransitions[1]));
                Assert.Throws<ConcurrencyException>(() => stream.Write(originalTransitions[2]));
            }

            GetRepository().RemoveStream(streamId);
        }
Пример #6
0
        public void ShouldNotAllowWritingWhenInReadMode()
        {
            var streamId            = Guid.NewGuid().ToString();
            var storage             = new TransitionStorage(GetRepository());
            var originalTransitions = new List <Transition> {
                CreatedTransition(streamId, 1),
            };

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Write(originalTransitions[0]);
            }

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Read().ToList();
                Assert.Throws <InvalidOperationException>(() => stream.Write(originalTransitions[0]));
            }

            GetRepository().RemoveStream(streamId);
        }
Пример #7
0
        public static ITransitionStorage GetTransitionStorage()
        {
            var server = new TransitionStorage(GetTransitionRepository());

            return(server);
        }
Пример #8
0
        public void ShouldNotAllowWritingWhenInReadMode()
        {
            var streamId = Guid.NewGuid().ToString();
            var storage = new TransitionStorage(GetRepository());
            var originalTransitions = new List<Transition> {
                CreatedTransition(streamId, 1),
            };

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Write(originalTransitions[0]);
            }

            using (var stream = storage.OpenStream(streamId))
            {
                stream.Read().ToList();
                Assert.Throws<InvalidOperationException>(() => stream.Write(originalTransitions[0]));
            }

            GetRepository().RemoveStream(streamId);            
        }