Files
NightAlert/ThirdParty/SocketIoClientDotNet/Src/SocketIoClientDotNet.Tests.net45/ClientTests/ServerConnectionTest_net35.cs

1140 lines
34 KiB
C#

using Newtonsoft.Json.Linq;
using Quobject.EngineIoClientDotNet.Client;
using Quobject.EngineIoClientDotNet.Client.Transports;
using Quobject.EngineIoClientDotNet.Modules;
using Quobject.EngineIoClientDotNet.Parser;
using Quobject.SocketIoClientDotNet.Client;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
using Socket = Quobject.SocketIoClientDotNet.Client.Socket;
namespace SocketIoClientDotNet.Tests.ClientTests
{
public class ServerConnectionTest : Connection
{
private ManualResetEvent ManualResetEvent = null;
private Socket socket;
public string Message;
private int Number;
private bool Flag;
[Fact]
public void Connect()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
socket.Disconnect();
});
socket.On(Socket.EVENT_DISCONNECT,
(data) =>
{
log.Info("EVENT_DISCONNECT");
Message = (string) data;
ManualResetEvent.Set();
});
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
Assert.Equal("io client disconnect", this.Message);
}
[Fact]
public void MessageTest()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
socket.Emit("hi");
});
socket.On("hi",
(data) =>
{
log.Info("EVENT_MESSAGE");
events.Enqueue(data);
ManualResetEvent.Set();
});
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = events.Dequeue();
Assert.Equal("more data", obj);
}
[Fact]
public void ShouldNotConnectWhenAutoconnectOptionSetToFalse()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var options = CreateOptions();
options.AutoConnect = false;
var uri = CreateUri();
socket = IO.Socket(uri, options);
Assert.Null(socket.Io().EngineSocket);
}
[Fact]
public void ShouldWorkWithAcks()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.Emit("ack");
socket.On("ack", (cb) =>
{
var obj = new JObject();
obj["b"] = true;
var iack = (IAck) cb;
iack.Call(5, obj);
});
socket.On("got it",
(data) =>
{
log.Info("got it");
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
socket.Close();
}
[Fact]
public void ShouldReceiveDateWithAck()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
Message = "";
Number = 0;
ManualResetEvent = new ManualResetEvent(false);
var obj = new JObject();
obj["b"] = true;
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.Emit("getAckDate", new AckImpl((date, n) =>
{
log.Info("getAckDate data=" + date);
Message = ((DateTime) date).ToString("O");
Number = int.Parse(n.ToString());
ManualResetEvent.Set();
}), obj);
ManualResetEvent.WaitOne();
Assert.Equal(28, Message.Length);
Assert.Equal(5, Number);
socket.Close();
}
[Fact]
public void ShouldReceiveDateWithAckAsAction()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
Message = "";
Number = 0;
ManualResetEvent = new ManualResetEvent(false);
var obj = new JObject();
obj["b"] = true;
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.Emit("getAckDate", (date, n) =>
{
log.Info("getAckDate data=" + date);
Message = ((DateTime)date).ToString("O");
Number = int.Parse(n.ToString());
ManualResetEvent.Set();
}, obj);
ManualResetEvent.WaitOne();
Assert.Equal(28, Message.Length);
Assert.Equal(5, Number);
socket.Close();
}
[Fact]
public void ShouldWorkWithFalse()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
socket.Emit("false");
});
socket.On("false",
(data) =>
{
events.Enqueue(data);
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
socket.Close();
var obj = events.Dequeue();
Assert.False((bool) obj);
}
[Fact]
public void ShouldReceiveUtf8MultibyteCharacters()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var correct = new string[]
{
"てすと",
"Я Б Г Д Ж Й",
"Ä ä Ü ü ß",
"李O四",
"utf8 — string"
};
var i = 0;
var options = CreateOptions();
options.Transports = new List<string>() { "polling" };
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("takeUtf8", (data) =>
{
events.Enqueue(data);
i++;
log.Info(string.Format("takeUtf8 data={0} i={1}",(string)data,i));
if (i >= correct.Length)
{
ManualResetEvent.Set();
}
});
socket.Emit("getUtf8");
ManualResetEvent.WaitOne();
socket.Close();
var j = 0;
foreach (var obj in events)
{
var str = (string) obj;
Assert.Equal(correct[j++], str);
}
}
//[Fact]
//public void ShouldReceiveUtf8MultibyteCharactersOverWebsocket()
//{
// var log = LogManager.GetLogger(Global.CallerName());
// log.Info("Start");
// ManualResetEvent = new ManualResetEvent(false);
// var events = new Queue<object>();
// var correct = new string[]
// {
// "てすと",
// "Я Б Г Д Ж Й",
// "Ä ä Ü ü ß",
// "utf8 — string",
// "utf8 — string"
// };
// var i = 0;
// var options = CreateOptions();
// var uri = CreateUri();
// socket = IO.Socket(uri, options);
// socket.On("takeUtf8", (data) =>
// {
// events.Enqueue(data);
// i++;
// log.Info(string.Format("takeUtf8 data={0} i={1}", (string)data, i));
// if (i >= correct.Length)
// {
// ManualResetEvent.Set();
// }
// });
// socket.Emit("getUtf8");
// ManualResetEvent.WaitOne();
// socket.Close();
// var j = 0;
// foreach (var obj in events)
// {
// var str = (string)obj;
// Assert.Equal(correct[j++], str);
// }
//}
//[Fact]
//public void ShouldConnectToANamespaceAfterConnectionEstablished()
//{
// var log = LogManager.GetLogger(Global.CallerName());
// log.Info("Start");
// ManualResetEvent = new ManualResetEvent(false);
// Flag = false;
// var options = CreateOptions();
// var uri = CreateUri();
// var manager = new Manager( new Uri(uri), options);
// socket = manager.Socket("/");
// socket.On(Socket.EVENT_CONNECT, () =>
// {
// var foo = manager.Socket("/foo");
// foo.On(Socket.EVENT_CONNECT, () =>
// {
// Flag = true;
// foo.Disconnect();
// socket.Disconnect();
// manager.Close();
// ManualResetEvent.Set();
// });
// foo.Open();
// });
// ManualResetEvent.WaitOne();
// Assert.True(Flag);
//}
[Fact]
public void ShouldOpenANewNamespaceAfterConnectionGetsClosed()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var options = CreateOptions();
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/");
socket.On(Socket.EVENT_CONNECT, () =>
{
socket.Disconnect();
});
socket.On(Socket.EVENT_DISCONNECT, () =>
{
var foo = manager.Socket("/foo");
foo.On(Socket.EVENT_CONNECT, () =>
{
Flag = true;
foo.Disconnect();
socket.Disconnect();
manager.Close();
ManualResetEvent.Set();
});
foo.Open();
});
ManualResetEvent.WaitOne();
Assert.True(Flag);
}
[Fact]
public void ReconnectEventShouldFireInSocket()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var options = CreateOptions();
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/");
socket.On(Socket.EVENT_RECONNECT, () =>
{
log.Info("EVENT_RECONNECT");
Flag = true;
ManualResetEvent.Set();
});
//Task.Delay(2000).Wait();
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
manager.EngineSocket.Close();
ManualResetEvent.WaitOne();
log.Info("before EngineSocket close");
Assert.True(Flag);
}
[Fact]
public void ShouldReconnectByDefault()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var options = CreateOptions();
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/");
manager.On(Socket.EVENT_RECONNECT, () =>
{
log.Info("EVENT_RECONNECT");
Flag = true;
socket.Disconnect();
ManualResetEvent.Set();
});
//await Task.Delay(500);
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
log.Info("before EngineSocket close");
manager.EngineSocket.Close();
ManualResetEvent.WaitOne();
Assert.True(Flag);
}
[Fact]
public void ShouldTryToReconnectTwiceAndFailWhenRequestedTwoAttemptsWithImmediateTimeoutAndReconnectEnabled()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var reconnects = 0;
var options = CreateOptions();
options.Reconnection = true;
options.Timeout = 0;
options.ReconnectionAttempts = 2;
options.ReconnectionDelay = 10;
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
manager.On(Manager.EVENT_RECONNECT_ATTEMPT, () =>
{
log.Info("EVENT_RECONNECT_ATTEMPT");
reconnects++;
});
manager.On(Manager.EVENT_RECONNECT_FAILED, () =>
{
log.Info("EVENT_RECONNECT_FAILED");
Flag = true;
manager.Close();
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
Assert.True(Flag);
Assert.Equal(2,reconnects);
}
[Fact]
public void ShouldFireReconnectEventsOnSocket()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var reconnects = 0;
var events = new Queue<int>();
var correct = new int[]
{
1,2,2
};
var options = CreateOptions();
options.Reconnection = true;
options.Timeout = 0;
options.ReconnectionAttempts = 2;
options.ReconnectionDelay = 10;
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/timeout_socket");
socket.On(Socket.EVENT_RECONNECT_ATTEMPT, (attempts) =>
{
log.Info("EVENT_RECONNECT_ATTEMPT");
reconnects++;
events.Enqueue(int.Parse((attempts).ToString()));
});
socket.On(Socket.EVENT_RECONNECT_FAILED, () =>
{
log.Info("EVENT_RECONNECT_FAILED");
Flag = true;
events.Enqueue(reconnects);
socket.Close();
manager.Close();
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
var j = 0;
foreach (var number in events)
{
Assert.Equal(correct[j++], number);
}
}
[Fact]
public void ShouldFireErrorOnSocket()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var events = new Queue<object>();
var options = CreateOptions();
options.Reconnection = true;
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/timeout_socket");
socket.On(Socket.EVENT_ERROR, (e) =>
{
var exception = (EngineIOException) e;
log.Info("EVENT_ERROR");
events.Enqueue(exception.code);
socket.Close();
manager.Close();
ManualResetEvent.Set();
});
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
manager.EngineSocket.OnPacket(new Packet(Packet.ERROR, "test"));
});
ManualResetEvent.WaitOne();
var obj = (string)events.Dequeue();
Assert.Equal("test", obj);
}
[Fact]
public void ShouldFireReconnectingOnSocketWithAttemptsNumberWhenReconnectingTwice()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var reconnects = 0;
var events = new Queue<int>();
var correct = new int[]
{
1,2,2
};
var options = CreateOptions();
options.Reconnection = true;
options.Timeout = 0;
options.ReconnectionAttempts = 2;
options.ReconnectionDelay = 10;
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/timeout_socket");
socket.On(Socket.EVENT_RECONNECTING, (attempts) =>
{
reconnects++;
events.Enqueue(int.Parse((attempts).ToString()));
});
socket.On(Socket.EVENT_RECONNECT_FAILED, () =>
{
log.Info("EVENT_RECONNECT_FAILED");
Flag = true;
events.Enqueue(reconnects);
socket.Close();
manager.Close();
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
var j = 0;
foreach (var number in events)
{
Assert.Equal(correct[j++], number);
}
}
[Fact]
public void ShouldNotTryToReconnectAndShouldFormAConnectionWhenConnectingToCorrectPortWithDefaultTimeout()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var options = CreateOptions();
options.Reconnection = true;
options.ReconnectionDelay = 10;
var uri = CreateUri();
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/valid");
manager.On(Manager.EVENT_RECONNECT_ATTEMPT, () =>
{
Flag = true;
});
socket.On(Socket.EVENT_CONNECT, () =>
{
// set a timeout to let reconnection possibly fire
log.Info("EVENT_CONNECT");
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
log.Info("after WaitOne");
socket.Close();
manager.Close();
Assert.False(Flag);
}
[Fact]
public void ShouldTryToReconnectTwiceAndFailWhenRequestedTwoAttemptsWithIncorrectAddressAndReconnectEnabled()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var reconnects = 0;
var options = CreateOptions();
options.Reconnection = true;
options.ReconnectionAttempts = 2;
options.ReconnectionDelay = 10;
var uri = "http://localhost:3940";
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/asd");
manager.On(Manager.EVENT_RECONNECT_ATTEMPT, () =>
{
log.Info("EVENT_RECONNECT_ATTEMPT");
reconnects++;
});
manager.On(Manager.EVENT_RECONNECT_FAILED, () =>
{
log.Info("EVENT_RECONNECT_FAILED");
Flag = true;
socket.Disconnect();
manager.Close();
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
Assert.Equal(2, reconnects);
}
[Fact]
public void ShouldNotTryToReconnectWithIncorrectPortWhenReconnectionDisabled()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var options = CreateOptions();
options.Reconnection = false;
var uri = "http://localhost:3940";
var manager = new Manager(new Uri(uri), options);
socket = manager.Socket("/invalid");
manager.On(Manager.EVENT_RECONNECT_ATTEMPT, () =>
{
Flag = true;
});
manager.On(Manager.EVENT_CONNECT_ERROR, () =>
{
// set a timeout to let reconnection possibly fire
log.Info("EVENT_CONNECT_ERROR");
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
ManualResetEvent.Set();
});
ManualResetEvent.WaitOne();
log.Info("after WaitOne");
socket.Disconnect();
manager.Close();
Assert.False(Flag);
}
[Fact]
public void ShouldEmitDateAsDate()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("takeDate", (data) =>
{
log.Info("takeDate");
events.Enqueue(data);
ManualResetEvent.Set();
});
socket.Emit("getDate");
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = events.Dequeue();
Assert.IsType<DateTime>(obj);
}
[Fact]
public void ShouldEmitDateInObject()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("takeDateObj", (data) =>
{
log.Info("takeDate");
events.Enqueue(data);
ManualResetEvent.Set();
});
socket.Emit("getDateObj");
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = (JObject) events.Dequeue();
Assert.IsType<JObject>(obj);
var date = (obj["date"]).Value<DateTime>();
Assert.IsType<DateTime>(date);
}
[Fact]
public void ShouldGetBase64DataAsALastResort()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("takebin", (data) =>
{
events.Enqueue(data);
ManualResetEvent.Set();
});
socket.Emit("getbin");
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var binData = (byte[])events.Dequeue();
var exptected = System.Text.Encoding.UTF8.GetBytes("asdfasdf");
var i = 0;
foreach (var b in exptected)
{
Assert.Equal(b, binData[i++]);
}
}
[Fact]
public void ShouldGetBinaryDataAsAnArraybuffer()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("doge", (data) =>
{
events.Enqueue(data);
ManualResetEvent.Set();
});
socket.Emit("doge");
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var binData = (byte[])events.Dequeue();
var exptected = System.Text.Encoding.UTF8.GetBytes("asdfasdf");
var i = 0;
foreach (var b in exptected)
{
Assert.Equal(b, binData[i++]);
}
}
[Fact]
public void ShouldSendBinaryDataAsAnArraybuffer()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var exptected = System.Text.Encoding.UTF8.GetBytes("asdfasdf");
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("buffack", () =>
{
Flag = true;
ManualResetEvent.Set();
});
socket.Emit("buffa", exptected);
ManualResetEvent.WaitOne();
socket.Close();
Assert.True(Flag);
}
[Fact]
public void BuffAck()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var exptected = System.Text.Encoding.UTF8.GetBytes("asdfasdf");
var options = CreateOptions();
//options.Transports = ImmutableList.Create<string>(Polling.NAME);
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("buffack", () =>
{
Flag = true;
ManualResetEvent.Set();
});
socket.Emit("buffa", exptected);
ManualResetEvent.WaitOne();
//Task.Delay(8000).Wait();
socket.Close();
//Task.Delay(4000).Wait();
Assert.True(Flag);
log.Info("Finish");
}
[Fact]
public void DoubleCallTest()
{
ShouldSendBinaryDataAsAnArraybufferMixedWithJson();
ShouldSendBinaryDataAsAnArraybufferMixedWithJson();
ShouldSendBinaryDataAsAnArraybufferMixedWithJson();
}
[Fact]
public void ShouldSendBinaryDataAsAnArraybufferMixedWithJson()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var buf = System.Text.Encoding.UTF8.GetBytes("howdy");
var jobj = new JObject();
jobj.Add("hello", "lol");
jobj.Add("message", buf);
jobj.Add("goodbye", "gotcha");
var options = CreateOptions();
//options.Transports = ImmutableList.Create<string>(Polling.NAME);
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("jsonbuff-ack", () =>
{
Flag = true;
ManualResetEvent.Set();
});
socket.On(Socket.EVENT_DISCONNECT, () =>
{
log.Info("EVENT_DISCONNECT");
});
socket.Emit("jsonbuff", jobj);
ManualResetEvent.WaitOne();
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
log.Info("About to wait 1sec");
//Task.Delay(1000).Wait();
log.Info("About to call close");
socket.Close();
//Task.Delay(1000).Wait();
Assert.True(Flag);
log.Info("Finish");
}
[Fact]
public void ShouldSendEventsWithArraybuffersInTheCorrectOrder()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
Flag = false;
var buf = System.Text.Encoding.UTF8.GetBytes("abuff1");
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On("abuff2-ack", () =>
{
Flag = true;
ManualResetEvent.Set();
});
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));
socket.Emit("abuff1", buf);
socket.Emit("abuff2", "please arrive second");
ManualResetEvent.WaitOne();
Assert.True(Flag);
}
[Fact]
public void D10000CharsTest()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
socket.Emit("d10000chars");
});
socket.On("d10000chars",
(data) =>
{
log.Info("EVENT_MESSAGE data="+data);
events.Enqueue(data);
ManualResetEvent.Set();
});
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = (string)events.Dequeue();
Assert.Equal(10000, obj.Length);
}
[Fact]
public void D100000CharsTest()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
socket.Emit("d100000chars");
});
socket.On("d100000chars",
(data) =>
{
log.Info("EVENT_MESSAGE data=" + data);
events.Enqueue(data);
ManualResetEvent.Set();
});
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = (string)events.Dequeue();
Assert.Equal(100000, obj.Length);
}
[Fact]
public void Json10000CharsTest()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
socket.Emit("json10000chars");
});
socket.On("json10000chars",
(data) =>
{
log.Info("EVENT_MESSAGE data=" + data);
events.Enqueue(data);
ManualResetEvent.Set();
});
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = (JObject)events.Dequeue();
var str = (string)obj["data"];
Assert.Equal(10000, str.Length);
}
[Fact]
public void Json10000000CharsTest()
{
var log = LogManager.GetLogger(Global.CallerName());
log.Info("Start");
ManualResetEvent = new ManualResetEvent(false);
var events = new Queue<object>();
var options = CreateOptions();
var uri = CreateUri();
socket = IO.Socket(uri, options);
socket.On(Socket.EVENT_CONNECT, () =>
{
log.Info("EVENT_CONNECT");
socket.Emit("json10000000chars");
});
socket.On("json10000000chars",
(data) =>
{
log.Info("EVENT_MESSAGE data=" + data);
events.Enqueue(data);
ManualResetEvent.Set();
});
//socket.Open();
ManualResetEvent.WaitOne();
socket.Close();
var obj = (JObject)events.Dequeue();
var str = (string)obj["data"];
Assert.Equal(10000000, str.Length);
}
}
}