public static void Main(string[] args) { AbstractSerializer.RegisterKnownType(typeof(UserCreatedEvent)); // Create serializers after registering known types ISerializer[] Serializers = { new DataContractSerializer(), new ProtoBufSerializer(), new BsonNetSerializer(), new JsonNetSerializer() }; foreach (Func<IAppendOnlyStore> aStoreBuilder in AppendOnlyStores) { foreach (ISerializer serializer in Serializers) { UserId id = new UserId(1); List<IEvent> events = new List<IEvent>() { new UserCreatedEvent(id, "John") }; IAppendOnlyStore aStore = aStoreBuilder(); try { EventStoreDB eStore = new EventStoreDB(aStore, serializer); eStore.Append(id, 0, events); // Warm up various caches for (int i = 0; i < 10; ++i) { EventStream s = eStore.Load(id); eStore.Append(id, s.Version, events); } int count = 0; DateTime t1 = DateTime.Now; do { id = new UserId(100 + count); //EventStream s = eStore.Load(id); eStore.Append(id, 0, new IEvent[] { new UserCreatedEvent(id, "John") }); ++count; } while ((DateTime.Now - t1) < TimeSpan.FromMilliseconds(1000)); Console.WriteLine("{0} + {1}: {2}", aStore, serializer, count); } finally { aStore.Dispose(); } } } }
static void TestLoad(object o) { TestLoadData data = (TestLoadData)o; IAppendOnlyStore appendOnlyStore = data.Store; { ISerializer serializer = new JsonNetSerializer(); EventStoreDB store = new EventStoreDB(appendOnlyStore, serializer); UserId id = new UserId(data.N); EventStream s = store.Load(id); System.Threading.Thread.Sleep(Rand.GetInts(100, 500, 1)[0]); Assert.AreEqual(s.Version, 0); List<IEvent> events = new List<IEvent>() { new UserCreatedEvent(id, "John") }; store.Append(id, 0, events); } }