public void WarewolfQueue_Threaded_EnqueueDequeue_FlushShouldDelay_Success() { var startTime = DateTime.UtcNow; var expected = new BenchmarkObject { Number = 123, Word = "test value" }; using (var gate = new ManualResetEvent(false)) { Exception threadException = null; var thread = new Thread((Object queueInstance) => { var queue = queueInstance as WarewolfQueue; try { using (var session = queue.OpenSession()) { BenchmarkObject data = null; gate.WaitOne(); data = session.Dequeue <BenchmarkObject>(); Assert.IsNotNull(data); Assert.AreEqual(data, expected); var startTimeValue = (DateTime.UtcNow - startTime).TotalMilliseconds; Assert.IsTrue(startTimeValue > 1000, "flush does not define enqueue timing"); session.Flush(); } } catch (Exception e) { threadException = e; } }) { IsBackground = true }; thread.Start(_queue); using (var session = _queue.OpenSession()) { startTime = DateTime.UtcNow; session.Enqueue(expected); Thread.Sleep(1000); session.Flush(); gate.Set(); } thread.Join(); if (threadException != null) { throw threadException; } } }
public bool Equals(BenchmarkObject other) { var eq = true; eq &= Number == other.Number; eq &= Word == other.Word; return(eq); }
public void WarewolfQueue_Threaded_EnqueueDequeue_Benchmark_Success() { var expected = new BenchmarkObject { Number = 123, Word = "test value" }; Exception threadException = null; var thread = new Thread(() => { try { using (var session = _queue.OpenSession()) { for (var i = 0; i < 100000; i++) { BenchmarkObject data = null; do { data = session.Dequeue <BenchmarkObject>(); } while (data is null); Assert.AreEqual(data, expected); session.Flush(); } } } catch (Exception e) { threadException = e; } }) { IsBackground = true }; thread.Start(); using (var session = _queue.OpenSession()) { for (var i = 0; i < 100000; i++) { session.Enqueue(expected); session.Flush(); } } thread.Join(); if (threadException != null) { throw threadException; } } }
public MeasurementResult Measure() { using (var remoteObjectServer = new EloquentServer($"{_scheme}://127.0.0.1:50000", new EloquentSettings { HeartBeatMs = 1000, MaxHeartBeatLost = 5, ReceiveTimeout = 1000, SendTimeout = 1000 })) { var benchmarkObject = new BenchmarkObject(); remoteObjectServer.Add <IBenchmarkObject>("endpoint1", benchmarkObject); //Create Clients var clients = new EloquentClient[_numberOfEventClients]; var connections = new IBenchmarkObject[_numberOfEventClients]; var autoResetEvent = new AutoResetEvent(false); for (var i = 0; i < _numberOfEventClients; i++) { clients[i] = new EloquentClient($"{_scheme}://127.0.0.1:50000", $"{_scheme}://127.0.0.1:6000{i}", new EloquentSettings { HeartBeatMs = 1000, SendTimeout = 1000, ReceiveTimeout = 10000 }); connections[i] = clients[i].Connect <IBenchmarkObject>("endpoint1"); connections[i].EventOccurred += last => { if (last) { autoResetEvent.Set(); } }; } var result = MeasurementResult.Measure($"EloquentObjects: Events with {_scheme}", () => { benchmarkObject.StartEvents(_iterations / _numberOfEventClients); autoResetEvent.WaitOne(); }); //Dispose clients for (var i = 0; i < _numberOfEventClients; i++) { clients[i].Dispose(); } return(result); } }