コード例 #1
0
		public void AndGetRightCount_Parallel()
		{
			using (var options = new StreamOptions())
			using (var eventStream = new EventStream(options))
			{
				var tasks = new List<Task>();
				for (int x = 0; x < 3; x++)
				{
					for (int i = 0; i < 10; i++)
					{
						tasks.Add(Task.Factory.StartNew(() =>
						{
							for (int j = 0; j < 5; j++)
							{
								eventStream.AppendAsync(new RavenJObject { { "counter", i + "-" + j } }).Wait();
							}
						}));
					}

					foreach (var task in tasks)
					{
						while (task.IsCompleted == false && task.IsFaulted == false)
						{
							Thread.Sleep(100);
						}
					}

					eventStream.FlushMemTableToFiskAsync(Etag.Empty).Wait();

					eventStream.FlushingMemTable.Wait();
				}

				Assert.Equal(150, eventStream.EventCount);
			}
		}
コード例 #2
0
		public void CanRestart()
		{
			using (var options = new StreamOptions
			{
				Storage = new FileSystemLowLevelStorage("data")
			})
			{
				using (var eventStream = new EventStream(options))
				{
					for (int i = 0; i < 15; i++)
					{
						eventStream.AppendAsync(new RavenJObject { { "counter", i } }).Wait();
					}

					eventStream.FlushMemTableToFiskAsync(Etag.Empty).Wait();
					eventStream.FlushingMemTable.Wait();
				}

				using (var eventStream = new EventStream(options))
				{
					Assert.Equal(15, eventStream.EventCount);

					int x = 0;
					foreach (var it in eventStream.ReadFrom(Etag.Empty))
					{
						Assert.Equal(x++, it.Value<int>("counter"));
					}
				}
			}
		}
コード例 #3
0
		public void Parallel()
		{
			using (var options = new StreamOptions())
			using (var eventStream = new EventStream(options))
			{
				var tasks = new List<Task>();
				for (int i = 0; i < 10; i++)
				{
					tasks.Add(Task.Factory.StartNew(() =>
						{
							for (int j = 0; j < 5; j++)
							{
								eventStream.AppendAsync(new RavenJObject { { "counter", i +"-" + j } }).Wait();
							}
						}));
				}

				foreach (var task in tasks)
				{
					while (task.IsCompleted == false && task.IsFaulted == false)
					{
						Thread.Sleep(100);
					}
				}

				Assert.Equal(50, eventStream.EventCount);
			}
		}
コード例 #4
0
		public void Sequence()
		{
			using (var options = new StreamOptions())
			using (var eventStream = new EventStream(options))
			{
				for (int i = 0; i < 5; i++)
				{
					eventStream.AppendAsync(new RavenJObject {{"counter", i}}).Wait();
				}

				Assert.Equal(5, eventStream.EventCount);
			}
		}
コード例 #5
0
		public void AndGetRightCount_Sequence()
		{
			using (var options = new StreamOptions())
			using (var eventStream = new EventStream(options))
			{
				for (int i = 0; i < 15; i++)
				{
					eventStream.AppendAsync(new RavenJObject { { "counter", i } }).Wait();
				}

				var list = eventStream.ReadFrom(Etag.Empty).ToList();
				Assert.Equal(15, list.Count);
			}
		} 
コード例 #6
0
		public void AndGetRightCount_Sequence()
		{
			using (var options = new StreamOptions())
			using (var eventStream = new EventStream(options))
			{
				for (int i = 0; i < 15; i++)
				{
					eventStream.AppendAsync(new RavenJObject {{"counter", i}}).Wait();
				}

				eventStream.FlushMemTableToFiskAsync(Etag.Empty).Wait();
				eventStream.FlushingMemTable.Wait();
				Assert.Equal(15, eventStream.EventCount);
			}
		}
コード例 #7
0
		public void AndReadContentsProperly()
		{
			using (var options = new StreamOptions())
			using (var eventStream = new EventStream(options))
			{
				for (int i = 0; i < 15; i++)
				{
					eventStream.AppendAsync(new RavenJObject { { "counter", i } }).Wait();
				}

				int x = 0;
				foreach (var item in eventStream.ReadFrom(Etag.Empty))
				{
					var value = item.Value<int>("counter");
					Assert.Equal(x++, value);
				}
			}
		}