public static MockEnvironment Create(ITestOutputHelper output, Action<LumberjackClientSettings> settingsModifier = null, bool socketPending = false) { var clientSettings = new LumberjackClientSettings { Host = "localhost", Port = 5000, SendBufferSize = 1024, ReceiveBufferSize = 1024, }; settingsModifier?.Invoke(clientSettings); var env = new MockEnvironment(); env.Client = new LumberjackClient(clientSettings); env.Socket = new MockSocket(); if (socketPending) { env.Socket.ConnectPending = true; env.Socket.SendPending = true; env.Socket.ReceivePending = true; } env.Server = env.Socket.Server; env.Server.Output = output; env.Client._socketFactory = () => env.Socket; env.Client._writeTrace = m => output?.WriteLine(m); return env; }
public void Test_SendFullPolicy_Wait(LumberjackClientSettings.SendConfirmPolicy sendConfirm) { var env = MockEnvironment.Create(_output, s => { s.SendFull = LumberjackClientSettings.SendFullPolicy.Wait; s.SendConfirm = sendConfirm; s.SendBufferSize = 64; }, true); var state = 0; ThreadPool.QueueUserWorkItem(o => { while (state == 0) { Thread.Sleep(0); env.Socket.WaitForPendings(true); } state = 2; }); var keyValues = new List<KeyValuePair<string, string>>(); for (var i = 0; i < 10; i++) { var kv = new KeyValuePair<string, string>("Key" + i, "Value" + i); keyValues.Add(kv); env.Client.Send(kv); } state = 1; while (state == 1) Thread.Sleep(0); Assert.Equal(10, env.Server.KeyValues.Count); Assert.Equal(keyValues, env.Server.KeyValues); }
public void Test_Close_WaitForCompletingSend_And_Completed(LumberjackClientSettings.SendConfirmPolicy sendConfirm) { var env = MockEnvironment.Create(_output, s => { s.SendConfirm = sendConfirm; s.CloseTimeout = TimeSpan.FromSeconds(2); }, true); env.Client.Send(new KeyValuePair<string, string>("Key0", "Value0")); env.Client.Send(new KeyValuePair<string, string>("Key1", "Value1")); var state = 0; ThreadPool.QueueUserWorkItem(o => { while (state == 0) { Thread.Sleep(0); env.Socket.WaitForPendings(true); } state = 2; }); env.Client.Close(); state = 1; while (state == 1) Thread.Sleep(0); Assert.Equal(2, env.Server.KeyValues.Count); }