示例#1
0
        public void CanLoadStateFromSnapshotStore()
        {
            const string ACTOR_NAME     = "test-actorX";
            const string EXPECTED_STATE = "Ken Hartley Reed";
            var          snapshots      = InMemoryPersistence.Get(Sys).SnapshotSource;

            snapshots.Add(new SnapshotEntry()
            {
                Id            = ACTOR_NAME + "_0",
                PersistenceId = ACTOR_NAME,
                SequenceNr    = 0,
                Snapshot      = new TestActorState()
                {
                    State = EXPECTED_STATE
                },
                Timestamp = 1
            });

            // verify the SnapshotOffer was triggered when we create our actor
            EventFilter.Info(message: "SnapshotOffer received.").ExpectOne(() =>
            {
                var snapshotActor = Sys.ActorOf(Props.Create(() => new PersistBySnapshotTestActor()), ACTOR_NAME);
                snapshotActor.Tell(new GetStateCommand());
            });

            ExpectMsg <string>(msg => msg == EXPECTED_STATE);
        }
示例#2
0
        protected override void PreStart()
        {
            base.PreStart();

            _journalCollection  = InMemoryPersistence.Get(Context.System).JournalSource;
            _metadataCollection = InMemoryPersistence.Get(Context.System).MetadataSource;
        }
示例#3
0
        protected BaseRepositoryTest()
        {
            Persistence = new InMemoryPersistence();

            Streams          = new StreamsFactory(Persistence);
            AggregateFactory = new DefaultAggregateFactory();
        }
示例#4
0
        public void CanStoreToJournal()
        {
            const string ACTOR_NAME       = "test-actor";
            const string EXPECTED_STATE01 = "Bob was here";
            const string EXPECTED_STATE02 = "So was Red";

            var actor = Sys.ActorOf(Props.Create(() => new PersistByJournalTestActor()), ACTOR_NAME);

            actor.Tell(new SetStateCommand(EXPECTED_STATE01));
            ExpectNoMsg();
            actor.Tell(new SetStateCommand(EXPECTED_STATE02));
            ExpectNoMsg();

            var journal = InMemoryPersistence.Get(Sys).JournalSource;

            Assert.Equal(2, journal.Count);
            Assert.Equal(ACTOR_NAME, journal[0].PersistenceId);
            Assert.Equal(EXPECTED_STATE01, (journal[0].Payload as SetStateCommand).NewState);
            Assert.Equal(ACTOR_NAME, journal[1].PersistenceId);
            Assert.Equal(EXPECTED_STATE02, (journal[1].Payload as SetStateCommand).NewState);

            var metadata = InMemoryPersistence.Get(Sys).MetadataSource;

            Assert.Equal(1, metadata.Count);
            Assert.Equal(2, metadata[0].SequenceNr);
            Assert.Equal(ACTOR_NAME, metadata[0].PersistenceId);
        }
示例#5
0
        public static void Main(string[] args)
        {
            string qos          = args[0];
            string topic        = args[1];
            string client_id    = args[2];
            int    publishCount = Int32.Parse(args[3]);

            MqttQos Qos = ParseQos(qos);

            using (var pers = new InMemoryPersistence())
            {
                var client = new MqttClient(topic, client_id, Qos, publishCount, pers);
                while (!client.Finished)
                {
                    try
                    {
                        client.Run();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("{0} : {1}", client_id, ex.ToString());
                    }

                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
            }

            Console.WriteLine("{0} done", client_id);
        }
        public void Cleanup()
        {
            _inmemoryStore = null;

            Task.WaitAll(
                _mongoPersistence.Select(x => x.Drop(CancellationToken.None)).ToArray()
                );
        }
        public override void SetData()
        {
            advertisementService = ServiceProvider.GetService <IAdvertisementService>();
            Assert.NotNull(advertisementService);

            data = ServiceProvider.GetService <InMemoryPersistence>();
            Assert.NotNull(data);
        }
        private PersistedQueue <T> CreatePersistedQueue <T>(int inMemoryCapacity = 1024)
        {
            IPersistence <T>            persistence = new InMemoryPersistence <T>();
            PersistedQueueConfiguration config      = new PersistedQueueConfiguration {
                MaxItemsInMemory = inMemoryCapacity
            };

            return(new PersistedQueue <T>(persistence, config));
        }
示例#9
0
        public void SetUp()
        {
            container         = new WindsorContainer();
            memoryPersistence = new InMemoryPersistence();
            sut = new Repository(new AggregateFactoryEx(container.Kernel), new StreamsFactory(memoryPersistence));

            var snapshotMemoryPersistence = new InMemoryPersistence();

            snapshotStore = new DefaultSnapshotStore(snapshotMemoryPersistence);
        }
示例#10
0
        protected IPersistence CreatePersistence()
        {
            networkSimulator = new AlwaysThrowsNetworkSimulator();
            var options = new InMemoryPersistenceOptions
            {
                NetworkSimulator = networkSimulator
            };
            var persistence = new InMemoryPersistence(options);

            return(persistence);
        }
示例#11
0
        void IHandleProfile.ProfileActivated()
        {
            InMemoryPersistence.UseAsDefault();

            if (!Configure.Instance.Configurer.HasComponent <IManageMessageFailures>())
            {
                Configure.Instance.InMemoryFaultManagement();
            }

            WindowsInstallerRunner.RunInstallers = true;
        }
示例#12
0
        /// <summary>
        ///     Tells the endpoint to not enforce durability (using InMemory storages, non durable messages, ...).
        /// </summary>
        public Endpoint AsVolatile()
        {
            InMemoryPersistence.UseAsDefault();

            Configure.Transactions.Disable();
            Configure.Transactions.Advanced(s => s.DoNotWrapHandlersExecutionInATransactionScope()
                                            .DisableDistributedTransactions());

            Advanced(settings => settings.DisableDurableMessages());

            return(this);
        }
示例#13
0
        public SampleApp(IPersistence store, string name, bool useSnapshots, bool quiet, bool fast)
        {
            _quiet        = quiet;
            _name         = name;
            _rooms        = 32;
            _storeProfile = new ProfileDecorator(store);

            _streams          = new StreamsFactory(_storeProfile);
            _aggregateFactory = new DefaultAggregateFactory();

            var network = fast
                ? (INetworkSimulator) new NoNetworkLatencySimulator()
                : (INetworkSimulator) new ReliableNetworkSimulator(10, 50);

            _appProjections = new AppProjections(network, quiet);

            _poller = new PollingClient(_storeProfile, 0, _appProjections, this._loggerFactory);

            if (useSnapshots)
            {
                _cloneProfiler = new TaskProfilingInfo("Cloning state");

                var inMemoryPersistence = new InMemoryPersistence(new InMemoryPersistenceOptions
                {
                    CloneFunc = CloneSnapshot
                });
                _snapshotProfile = new ProfileDecorator(inMemoryPersistence);
                _snapshots       = new DefaultSnapshotStore(_snapshotProfile);
            }

            _unboundedOptions = new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = DataflowBlockOptions.Unbounded,
                BoundedCapacity        = DataflowBlockOptions.Unbounded,
                EnsureOrdered          = false,
                MaxMessagesPerTask     = DataflowBlockOptions.Unbounded
            };

            _boundedOptions = new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = Environment.ProcessorCount * 8,
                BoundedCapacity        = 500,
                EnsureOrdered          = true
            };


            if (store is MongoPersistence)
            {
                _unboundedOptions.MaxDegreeOfParallelism = Environment.ProcessorCount * 4;
                _unboundedOptions.BoundedCapacity        = 2000;
            }
        }
示例#14
0
        static IMapPersistence OnMapPersistence(IServiceContainer container, Type type)
        {
            var messageSender     = (IMessageSender)container.GetService(typeof(IMessageSender));
            var sagaStorage       = (IStoreSagaData)container.GetService(typeof(IStoreSagaData));
            var persistenceMapper = new PersistenceMapper();
            var persistence       = new InMemoryPersistence(messageSender, sagaStorage);

            persistenceMapper.Add(nameof(MintRequest), persistence);
            persistenceMapper.Add(nameof(Order), persistence);
            persistenceMapper.Add(nameof(Token), persistence);

            return(persistenceMapper);
        }
示例#15
0
        public override void SetData()
        {
            advertisementQuery = ServiceProvider.GetService <IAdvertisementsQuery>();
            Assert.NotNull(advertisementQuery);

            mediatR = ServiceProvider.GetService <IMediator>();
            Assert.NotNull(mediatR);

            controller = new AdvertisementsController(mediatR, advertisementQuery);
            Assert.NotNull(controller);

            data = ServiceProvider.GetService <InMemoryPersistence>();
            Assert.NotNull(data);
        }
        protected void Init()
        {
            var url    = new MongoUrl(ConfigurationManager.ConnectionStrings["readmodel"].ConnectionString);
            var client = new MongoClient(url);

            _db         = client.GetDatabase(url.DatabaseName);
            _collection = _db.GetCollection <SimpleTestAtomicReadModel>(
                CollectionNames.GetCollectionName <SimpleTestAtomicReadModel>());
            _persistence = new InMemoryPersistence();
            _db.Drop();

            _identityManager     = new IdentityManager(new CounterService(_db));
            _mongoBsonCollection = _db.GetCollection <BsonDocument>(CollectionNames.GetCollectionName <SimpleTestAtomicReadModel>());
        }
示例#17
0
        public void CanSaveStateToSnapshotStore()
        {
            const string EXPECTED_STATE = "Bob was here";

            var snapshotActor = Sys.ActorOf(Props.Create(() => new PersistBySnapshotTestActor()), "test-actor");

            snapshotActor.Tell(new SetStateCommand(EXPECTED_STATE));
            ExpectNoMsg();

            var snapshots = InMemoryPersistence.Get(Sys).SnapshotSource;

            Assert.Equal(1, snapshots.Count);
            Assert.IsType(typeof(TestActorState), snapshots[0].Snapshot);
            Assert.Equal(EXPECTED_STATE, (snapshots[0].Snapshot as TestActorState).State);
        }
示例#18
0
        private async Task InMemoryInt()
        {
            IPersistence <int>          persistence = new InMemoryPersistence <int>();
            PersistedQueueConfiguration config      = new PersistedQueueConfiguration {
                MaxItemsInMemory = itemsToKeepInMemory
            };
            PersistedQueue <int> queue = new PersistedQueue <int>(persistence, config);

            for (int i = 0; i < totalItems; i++)
            {
                queue.Enqueue(i);
            }
            for (int i = 0; i < totalItems; i++)
            {
                await queue.DequeueAsync();
            }
        }
        public void OneTimeSetup()
        {
            var url    = new MongoUrl(ConfigurationManager.ConnectionStrings["readmodel"].ConnectionString);
            var client = new MongoClient(url);

            _db = client.GetDatabase(url.DatabaseName);
            _db.Drop();

            _collection = _db.GetCollection <SimpleTestAtomicReadModel>(
                CollectionNames.GetCollectionName <SimpleTestAtomicReadModel>());

            _persistence       = new InMemoryPersistence();
            _collectionWrapper = new AtomicMongoCollectionWrapper <SimpleTestAtomicReadModel>(
                _db,
                new AtomicReadModelFactory(),
                new LiveAtomicReadModelProcessor(new AtomicReadModelFactory(), new CommitEnhancer(), _persistence));
        }
        public when_an_event_is_received()
        {
            Bus = new InMemoryMessageBus();

            var config          = Bus.Configuration;
            var persistence     = new InMemoryPersistence(config.MessageSender, config.Sagas.Storage);
            var repository      = new Repository <InventoryItem>(new InMemoryEventStore <Guid>(persistence));
            var commandHandlers = new InventoryCommandHandlers(repository);
            var projector       = new Projector();

            config.CommandHandlers.Register <CreateInventoryItem>(() => commandHandlers);
            config.CommandHandlers.Register <RenameInventoryItem>(() => commandHandlers);
            config.CommandHandlers.Register <DeactivateInventoryItem>(() => commandHandlers);
            config.EventReceivers.Register <InventoryItemCreated>(() => projector);
            config.EventReceivers.Register <InventoryItemRenamed>(() => projector);
            config.EventReceivers.Register <InventoryItemDeactivated>(() => projector);
            Products = projector.Products;
            Bus.Start();
        }
示例#21
0
        public void CanLoadFromJournal()
        {
            const string ACTOR_NAME       = "test-actor";
            const string EXPECTED_STATE01 = "State01";
            const string EXPECTED_STATE02 = "State02";

            var journal  = InMemoryPersistence.Get(Sys).JournalSource;
            var metadata = InMemoryPersistence.Get(Sys).MetadataSource;

            journal.Add(new JournalEntry()
            {
                Id            = ACTOR_NAME + "_2",
                PersistenceId = ACTOR_NAME,
                SequenceNr    = 2,
                Manifest      = "",
                Payload       = new SetStateCommand(EXPECTED_STATE02)
            });
            journal.Add(new JournalEntry()
            {
                Id            = ACTOR_NAME + "_1",
                PersistenceId = ACTOR_NAME,
                SequenceNr    = 1,
                Manifest      = "",
                Payload       = new SetStateCommand(EXPECTED_STATE01)
            });
            metadata.Add(new MetadataEntry()
            {
                Id            = ACTOR_NAME,
                PersistenceId = ACTOR_NAME,
                SequenceNr    = 2
            });

            EventFilter.Info(message: "Recovering SetStateCommand.").Expect(2, () =>
            {
                var actor = Sys.ActorOf(Props.Create(() => new PersistByJournalTestActor()), ACTOR_NAME);
                actor.Tell(new GetStateCommand());
                ExpectMsg <string>(msg => msg == EXPECTED_STATE02);
            });
        }
示例#22
0
 public InMemoryJournal()
 {
     _settings = InMemoryPersistence.Get(Context.System).JournalSettings;
 }
示例#23
0
        private IPersistence Create()
        {
            var store = new InMemoryPersistence(cloneFunc: Clone);

            return(store);
        }
示例#24
0
 public InMemoryPersistenceSpecFixture()
 {
     persistence = new InMemoryPersistence();
 }
 public AdvertisementsQuery(InMemoryPersistence database, IMapper mapper)
 {
     this.database = database;
     this.mapper   = mapper;
 }
示例#26
0
 public void SetUp()
 {
     persistence   = new InMemoryPersistence();
     streamfactory = new StreamsFactory(persistence);
     sut           = new StreamProcessorManager(persistence);
 }
示例#27
0
 public void load_memory_parallel()
 {
     _inmemoryStore = new InMemoryPersistence();
     paralell_worker(_inmemoryStore);
 }
示例#28
0
 public void load_memory_async()
 {
     _inmemoryStore = new InMemoryPersistence();
     async_worker(_inmemoryStore);
 }
示例#29
0
 public void load_memory_task()
 {
     _inmemoryStore = new InMemoryPersistence();
     task_worker(_inmemoryStore);
 }
示例#30
0
 public AdvertisementService(InMemoryPersistence database)
 {
     this.database = database;
 }