Added NightAlert project for travel kit
This commit is contained in:
180
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/BinaryPollingTest.cs
vendored
Normal file
180
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/BinaryPollingTest.cs
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Client.Transports;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Immutable;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class BinaryPollingTest : Connection
|
||||
{
|
||||
//[Fact]
|
||||
//public void PingTest()
|
||||
//{
|
||||
// var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
|
||||
// log.Info("Start");
|
||||
|
||||
// var binaryData = new byte[5];
|
||||
// for (int i = 0; i < binaryData.Length; i++)
|
||||
// {
|
||||
// binaryData[i] = (byte)i;
|
||||
// }
|
||||
|
||||
// var events = new ConcurrentQueue<object>();
|
||||
|
||||
// var options = CreateOptions();
|
||||
// options.Transports = ImmutableList.Create<string>(Polling.NAME);
|
||||
|
||||
// var socket = new Socket(options);
|
||||
|
||||
// socket.On(Socket.EVENT_OPEN, () =>
|
||||
// {
|
||||
// log.Info("EVENT_OPEN");
|
||||
|
||||
// socket.Send(binaryData);
|
||||
// socket.Send("cash money €€€");
|
||||
// });
|
||||
|
||||
// socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
// {
|
||||
// var data = d as string;
|
||||
// log.Info(string.Format("EVENT_MESSAGE data ={0} d = {1} ", data, d));
|
||||
|
||||
// if (data == "hi")
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// events.Enqueue(d);
|
||||
// //socket.Close();
|
||||
// });
|
||||
|
||||
// socket.Open();
|
||||
// Task.Delay(20000).Wait();
|
||||
// socket.Close();
|
||||
// log.Info("ReceiveBinaryData end");
|
||||
|
||||
// var binaryData2 = new byte[5];
|
||||
// for (int i = 0; i < binaryData2.Length; i++)
|
||||
// {
|
||||
// binaryData2[i] = (byte)(i + 1);
|
||||
// }
|
||||
|
||||
// object result;
|
||||
// events.TryDequeue(out result);
|
||||
// Assert.Equal("1", "1");
|
||||
//}
|
||||
|
||||
private ManualResetEvent _manualResetEvent = null;
|
||||
|
||||
[Fact]
|
||||
public void ReceiveBinaryData()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<object>();
|
||||
|
||||
var binaryData = new byte[5];
|
||||
for (int i = 0; i < binaryData.Length; i++)
|
||||
{
|
||||
binaryData[i] = (byte)i;
|
||||
}
|
||||
|
||||
var options = CreateOptions();
|
||||
options.Transports = ImmutableList.Create<string>(Polling.NAME);
|
||||
|
||||
var socket = new Socket(options);
|
||||
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.Send(binaryData);
|
||||
//socket.Send("cash money €€€");
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = d as string;
|
||||
//log.Info(string.Format("EVENT_MESSAGE data ={0} d = {1} ", data, d));
|
||||
|
||||
if (data == "hi")
|
||||
{
|
||||
return;
|
||||
}
|
||||
events.Enqueue(d);
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
//log.Info("ReceiveBinaryData end");
|
||||
|
||||
var binaryData2 = new byte[5];
|
||||
for (int i = 0; i < binaryData2.Length; i++)
|
||||
{
|
||||
binaryData2[i] = (byte)(i + 1);
|
||||
}
|
||||
|
||||
object result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(binaryData, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReceiveBinaryDataAndMultibyteUTF8String()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<object>();
|
||||
|
||||
var binaryData = new byte[5];
|
||||
for (int i = 0; i < binaryData.Length; i++)
|
||||
{
|
||||
binaryData[i] = (byte)i;
|
||||
}
|
||||
const string stringData = "cash money €€€";
|
||||
|
||||
var options = CreateOptions();
|
||||
options.Transports = ImmutableList.Create<string>(Polling.NAME);
|
||||
|
||||
var socket = new Socket(options);
|
||||
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = d as string;
|
||||
//log.Info(string.Format("EVENT_MESSAGE data ={0} d = {1} ", data, d));
|
||||
|
||||
if (data == "hi")
|
||||
{
|
||||
return;
|
||||
}
|
||||
events.Enqueue(d);
|
||||
if (events.Count > 1)
|
||||
{
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
socket.Send(binaryData);
|
||||
socket.Send(stringData);
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
var binaryData2 = new byte[5];
|
||||
for (int i = 0; i < binaryData2.Length; i++)
|
||||
{
|
||||
binaryData2[i] = (byte)(i + 1);
|
||||
}
|
||||
|
||||
object result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(binaryData, result);
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(stringData, (string)result);
|
||||
socket.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class BinaryWebSocketTest : Connection
|
||||
{
|
||||
private ManualResetEvent _manualResetEvent = null;
|
||||
|
||||
[Fact]
|
||||
public void ReceiveBinaryData()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<object>();
|
||||
|
||||
var binaryData = new byte[5];
|
||||
for (int i = 0; i < binaryData.Length; i++)
|
||||
{
|
||||
binaryData[i] = (byte)(i + 0);
|
||||
}
|
||||
|
||||
var options = CreateOptions();
|
||||
|
||||
var socket = new Socket(options);
|
||||
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_OPEN);
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_UPGRADE, () =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE);
|
||||
socket.Send(binaryData);
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = d as string;
|
||||
//log.Info(string.Format("EVENT_MESSAGE data ={0} d = {1} ", data, d));
|
||||
|
||||
if (data == "hi")
|
||||
{
|
||||
return;
|
||||
}
|
||||
events.Enqueue(d);
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
//log.Info("ReceiveBinaryData end");
|
||||
|
||||
var binaryData2 = new byte[5];
|
||||
for (int i = 0; i < binaryData2.Length; i++)
|
||||
{
|
||||
binaryData2[i] = (byte)(i + 1);
|
||||
}
|
||||
|
||||
object result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(binaryData, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReceiveBinaryDataAndMultibyteUTF8String()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<object>();
|
||||
|
||||
var binaryData = new byte[5];
|
||||
for (int i = 0; i < binaryData.Length; i++)
|
||||
{
|
||||
binaryData[i] = (byte)i;
|
||||
}
|
||||
const string stringData = "Ä ä Ü ü ß";
|
||||
|
||||
var options = CreateOptions();
|
||||
|
||||
var socket = new Socket(options);
|
||||
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_UPGRADE, () =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE);
|
||||
socket.Send(binaryData);
|
||||
socket.Send(stringData);
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = d as string;
|
||||
//log.Info(string.Format("EVENT_MESSAGE data ={0} d = {1} ", data, d));
|
||||
|
||||
if (data == "hi")
|
||||
{
|
||||
return;
|
||||
}
|
||||
events.Enqueue(d);
|
||||
if (events.Count > 1)
|
||||
{
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
var binaryData2 = new byte[5];
|
||||
for (int i = 0; i < binaryData2.Length; i++)
|
||||
{
|
||||
binaryData2[i] = (byte)(i + 1);
|
||||
}
|
||||
|
||||
object result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(binaryData, result);
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(stringData, (string)result);
|
||||
//log.Info("ReceiveBinaryDataAndMultibyteUTF8String end");
|
||||
}
|
||||
}
|
||||
}
|
||||
38
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/Connection.cs
vendored
Normal file
38
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/Connection.cs
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Modules;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class Connection
|
||||
{
|
||||
static Connection()
|
||||
{
|
||||
LogManager.SetupLogManager();
|
||||
}
|
||||
|
||||
protected static Socket.Options CreateOptions()
|
||||
{
|
||||
var options = new Socket.Options
|
||||
{
|
||||
Port = ConnectionConstants.PORT,
|
||||
Hostname = ConnectionConstants.HOSTNAME
|
||||
};
|
||||
//log.Info("Please add to your hosts file: 127.0.0.1 " + options.Hostname);
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
protected static Socket.Options CreateOptionsSecure()
|
||||
{
|
||||
var options = new Socket.Options
|
||||
{
|
||||
Port = ConnectionConstants.SSL_PORT,
|
||||
Hostname = ConnectionConstants.HOSTNAME,
|
||||
//log.Info("Please add to your hosts file: 127.0.0.1 " + options.Hostname);
|
||||
Secure = true,
|
||||
IgnoreServerCertificateValidation = true
|
||||
};
|
||||
return options;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public static class ConnectionConstants
|
||||
{
|
||||
public static int PORT = 80;
|
||||
public static string HOSTNAME = "testme.quobject.com";
|
||||
public static int SSL_PORT = 443;
|
||||
public static readonly int TIMEOUT = 300000;
|
||||
}
|
||||
}
|
||||
211
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/ConnectionTest.cs
vendored
Normal file
211
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/ConnectionTest.cs
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Client.Transports;
|
||||
using Quobject.EngineIoClientDotNet.ComponentEmitter;
|
||||
using System.Collections.Immutable;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class ConnectionTest : Connection
|
||||
{
|
||||
private ManualResetEvent _manualResetEvent = null;
|
||||
private Socket socket;
|
||||
public string Message;
|
||||
|
||||
[Fact]
|
||||
public void ConnectToLocalhost()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
socket = new Socket(CreateOptions());
|
||||
socket.On(Socket.EVENT_OPEN, new TestListener());
|
||||
socket.On(Socket.EVENT_MESSAGE, new MessageListener(socket, this));
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
Assert.Equal("hi", this.Message);
|
||||
}
|
||||
|
||||
public class TestListener : IListener
|
||||
{
|
||||
public void Call(params object[] args)
|
||||
{
|
||||
//log.Info("open");
|
||||
}
|
||||
|
||||
public int CompareTo(IListener other)
|
||||
{
|
||||
return this.GetId().CompareTo(other.GetId());
|
||||
}
|
||||
|
||||
public int GetId()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public class MessageListener : IListener
|
||||
{
|
||||
private Socket socket;
|
||||
private ConnectionTest connectionTest;
|
||||
|
||||
public MessageListener(Socket socket)
|
||||
{
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
public MessageListener(Socket socket, ConnectionTest connectionTest)
|
||||
{
|
||||
this.socket = socket;
|
||||
this.connectionTest = connectionTest;
|
||||
}
|
||||
|
||||
public void Call(params object[] args)
|
||||
{
|
||||
//log.Info("message = " + args[0]);
|
||||
connectionTest.Message = (string)args[0];
|
||||
connectionTest._manualResetEvent.Set();
|
||||
}
|
||||
|
||||
public int CompareTo(IListener other)
|
||||
{
|
||||
return this.GetId().CompareTo(other.GetId());
|
||||
}
|
||||
|
||||
public int GetId()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConnectToLocalhost2()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
this.Message = "";
|
||||
|
||||
var options = CreateOptions();
|
||||
options.Transports = ImmutableList.Create<string>(Polling.NAME);
|
||||
socket = new Socket(options);
|
||||
|
||||
//socket = new Socket(CreateOptions());
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//log.Info("open");
|
||||
//socket.Send("test send");
|
||||
});
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = (string)d;
|
||||
|
||||
//log.Info("message2 = " + data);
|
||||
this.Message = data;
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
Assert.Equal("hi", this.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestmultibyteUtf8StringsWithPolling()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
const string SendMessage = "cash money €€€";
|
||||
|
||||
socket = new Socket(CreateOptions());
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//log.Info("open");
|
||||
|
||||
socket.Send(SendMessage);
|
||||
});
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = (string)d;
|
||||
|
||||
//log.Info("TestMessage data = " + data);
|
||||
|
||||
if (data == "hi")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.Message = data;
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
//log.Info("TestmultibyteUtf8StringsWithPolling this.Message = " + this.Message);
|
||||
Assert.Equal(SendMessage, this.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Testemoji()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
const string SendMessage = "\uD800-\uDB7F\uDB80-\uDBFF\uDC00-\uDFFF\uE000-\uF8FF";
|
||||
|
||||
var options = CreateOptions();
|
||||
socket = new Socket(options);
|
||||
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//log.Info("open");
|
||||
|
||||
socket.Send(SendMessage);
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = (string)d;
|
||||
|
||||
//log.Info(Socket.EVENT_MESSAGE);
|
||||
|
||||
if (data == "hi")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.Message = data;
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
Assert.True(SendMessage == this.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NotSendPacketsIfSocketCloses()
|
||||
{
|
||||
var noPacket = true;
|
||||
|
||||
socket = new Socket(CreateOptions());
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
noPacket = true;
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
socket.On(Socket.EVENT_PACKET_CREATE, () =>
|
||||
{
|
||||
noPacket = false;
|
||||
//log.Info("NotSendPacketsIfSocketCloses EVENT_PACKET_CREATE noPacket = " + noPacket);
|
||||
});
|
||||
socket.Close();
|
||||
await Task.Delay(1000);
|
||||
//log.Info("NotSendPacketsIfSocketCloses end noPacket = " + noPacket);
|
||||
Assert.True(noPacket);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
using Newtonsoft.Json;
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Modules;
|
||||
using System.IO;
|
||||
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class Connection
|
||||
{
|
||||
public static readonly int TIMEOUT = 300000;
|
||||
|
||||
static Connection()
|
||||
{
|
||||
LogManager.SetupLogManager();
|
||||
}
|
||||
|
||||
protected Socket.Options CreateOptions()
|
||||
{
|
||||
|
||||
|
||||
|
||||
var config = ConfigBase.Load();
|
||||
var options = new Socket.Options();
|
||||
options.Port = config.server.port;
|
||||
options.Hostname = config.server.hostname;
|
||||
//log.Info("Please add to your hosts file: 127.0.0.1 " + options.Hostname);
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
|
||||
protected Socket.Options CreateOptionsSecure()
|
||||
{
|
||||
|
||||
|
||||
var config = ConfigBase.Load();
|
||||
var options = new Socket.Options();
|
||||
options.Port = config.server.ssl_port;
|
||||
options.Hostname = config.server.hostname;
|
||||
//log.Info("Please add to your hosts file: 127.0.0.1 " + options.Hostname);
|
||||
options.Secure = true;
|
||||
options.IgnoreServerCertificateValidation = true;
|
||||
return options;
|
||||
}
|
||||
}
|
||||
|
||||
public class ConfigBase
|
||||
{
|
||||
public string version { get; set; }
|
||||
public ConfigServer server { get; set; }
|
||||
|
||||
public static ConfigBase Load()
|
||||
{
|
||||
//var configString = File.ReadAllText("./../../../../grunt/config.json");
|
||||
var configString = @"{""version"":""0.1.0.0"",""server"":{""port"":80,""ssl_port"":443,""hostname"":""192.168.178.59""},""win"":{""powershell"":""C:/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe"",""msbuild"":""C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe"",""xunit_path"":""C:/vendors/xunit"",""nuget"":""C:/vendors/nuget/nuget.exe""},""linux"":{""msbuild"":""xbuild"",""xunit_path"":""/home/apollo/vendors/xunit""}}";
|
||||
|
||||
var config = JsonConvert.DeserializeObject<ConfigBase>(configString);
|
||||
return config;
|
||||
}
|
||||
}
|
||||
|
||||
public class ConfigServer
|
||||
{
|
||||
public string hostname { get; set; }
|
||||
public int port { get; set; }
|
||||
public int ssl_port { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class HandshakeDataTests
|
||||
{
|
||||
[Fact]
|
||||
public void Test()
|
||||
{
|
||||
var json = @"{
|
||||
sid: 'nne323',
|
||||
upgrades: ['u1','u2'],
|
||||
pingInterval: 12,
|
||||
pingTimeout: 23
|
||||
}";
|
||||
|
||||
var handshakeData = new HandshakeData(json);
|
||||
Assert.Equal("u1", handshakeData.Upgrades[0]);
|
||||
Assert.Equal("u2", handshakeData.Upgrades[1]);
|
||||
|
||||
Assert.Equal(12, handshakeData.PingInterval);
|
||||
Assert.Equal(23, handshakeData.PingTimeout);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Client.Transports;
|
||||
using Quobject.EngineIoClientDotNet.ComponentEmitter;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class SSLServerConnectionTest : Connection
|
||||
{
|
||||
private ManualResetEvent _manualResetEvent = null;
|
||||
|
||||
[Fact]
|
||||
public void OpenAndClose()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<string>();
|
||||
|
||||
var socket = new Socket(CreateOptionsSecure());
|
||||
Console.WriteLine(Directory.GetCurrentDirectory());
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
Console.WriteLine("EVENT_OPEN");
|
||||
events.Enqueue(Socket.EVENT_OPEN);
|
||||
socket.Close();
|
||||
});
|
||||
socket.On(Socket.EVENT_CLOSE, () =>
|
||||
{
|
||||
Console.WriteLine("EVENT_CLOSE");
|
||||
events.Enqueue(Socket.EVENT_CLOSE);
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
string result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(Socket.EVENT_OPEN, result);
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(Socket.EVENT_CLOSE, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Messages()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<string>();
|
||||
|
||||
var socket = new Socket(CreateOptionsSecure());
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.Send("hello");
|
||||
});
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = (string)d;
|
||||
//log.Info("EVENT_MESSAGE data = " + data);
|
||||
events.Enqueue(data);
|
||||
if (events.Count > 1)
|
||||
{
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
string result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal("hi", result);
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal("hello", result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Handshake()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
HandshakeData handshake_data = null;
|
||||
|
||||
var socket = new Socket(CreateOptionsSecure());
|
||||
|
||||
socket.On(Socket.EVENT_HANDSHAKE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_HANDSHAKE + string.Format(" data = {0}", data));
|
||||
handshake_data = data as HandshakeData;
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
Assert.NotNull(handshake_data);
|
||||
Assert.NotNull(handshake_data.Upgrades);
|
||||
Assert.True(handshake_data.Upgrades.Count > 0);
|
||||
Assert.True(handshake_data.PingInterval > 0);
|
||||
Assert.True(handshake_data.PingTimeout > 0);
|
||||
}
|
||||
|
||||
public class TestHandshakeListener : IListener
|
||||
{
|
||||
public HandshakeData HandshakeData;
|
||||
private SSLServerConnectionTest serverConnectionTest;
|
||||
|
||||
public TestHandshakeListener(SSLServerConnectionTest serverConnectionTest)
|
||||
{
|
||||
this.serverConnectionTest = serverConnectionTest;
|
||||
}
|
||||
|
||||
public void Call(params object[] args)
|
||||
{
|
||||
//log.Info(string.Format("open args[0]={0} args.Length={1}", args[0], args.Length));
|
||||
HandshakeData = args[0] as HandshakeData;
|
||||
serverConnectionTest._manualResetEvent.Set();
|
||||
}
|
||||
|
||||
public int CompareTo(IListener other)
|
||||
{
|
||||
return this.GetId().CompareTo(other.GetId());
|
||||
}
|
||||
|
||||
public int GetId()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Handshake2()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var socket = new Socket(CreateOptionsSecure());
|
||||
var testListener = new TestHandshakeListener(this);
|
||||
socket.On(Socket.EVENT_HANDSHAKE, testListener);
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
Assert.NotNull(testListener.HandshakeData);
|
||||
Assert.NotNull(testListener.HandshakeData.Upgrades);
|
||||
Assert.True(testListener.HandshakeData.Upgrades.Count > 0);
|
||||
Assert.True(testListener.HandshakeData.PingInterval > 0);
|
||||
Assert.True(testListener.HandshakeData.PingTimeout > 0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Upgrade()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<object>();
|
||||
|
||||
var socket = new Socket(CreateOptionsSecure());
|
||||
|
||||
socket.On(Socket.EVENT_UPGRADING, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADING + string.Format(" data = {0}", data));
|
||||
events.Enqueue(data);
|
||||
});
|
||||
socket.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
events.Enqueue(data);
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
|
||||
object test = null;
|
||||
events.TryDequeue(out test);
|
||||
Assert.NotNull(test);
|
||||
Assert.IsAssignableFrom<Transport>(test);
|
||||
|
||||
events.TryDequeue(out test);
|
||||
Assert.NotNull(test);
|
||||
Assert.IsAssignableFrom<Transport>(test);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RememberWebsocket()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var socket1 = new Socket(CreateOptionsSecure());
|
||||
string socket1TransportName = null;
|
||||
string socket2TransportName = null;
|
||||
|
||||
socket1.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket1TransportName = socket1.Transport.Name;
|
||||
});
|
||||
|
||||
socket1.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
var transport = (Transport)data;
|
||||
socket1.Close();
|
||||
if (WebSocket.NAME == transport.Name)
|
||||
{
|
||||
var options = CreateOptionsSecure();
|
||||
options.RememberUpgrade = true;
|
||||
var socket2 = new Socket(options);
|
||||
socket2.Open();
|
||||
socket2TransportName = socket2.Transport.Name;
|
||||
socket2.Close();
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
|
||||
socket1.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
Assert.Equal(Polling.NAME, socket1TransportName);
|
||||
Assert.Equal(WebSocket.NAME, socket2TransportName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NotRememberWebsocket()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var socket1 = new Socket(CreateOptionsSecure());
|
||||
string socket1TransportName = null;
|
||||
string socket2TransportName = null;
|
||||
|
||||
socket1.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket1TransportName = socket1.Transport.Name;
|
||||
});
|
||||
|
||||
socket1.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
var transport = (Transport)data;
|
||||
if (WebSocket.NAME == transport.Name)
|
||||
{
|
||||
socket1.Close();
|
||||
var options = CreateOptionsSecure();
|
||||
options.RememberUpgrade = false;
|
||||
var socket2 = new Socket(options);
|
||||
socket2.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//log.Info("EVENT_OPEN socket 2");
|
||||
socket2TransportName = socket2.Transport.Name;
|
||||
socket2.Close();
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
socket2.Open();
|
||||
}
|
||||
});
|
||||
|
||||
socket1.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
Assert.Equal(Polling.NAME, socket1TransportName);
|
||||
Assert.Equal(Polling.NAME, socket2TransportName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,451 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Client.Transports;
|
||||
using Quobject.EngineIoClientDotNet.ComponentEmitter;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class ServerConnectionTest : Connection
|
||||
{
|
||||
private ManualResetEvent _manualResetEvent = null;
|
||||
|
||||
[Fact]
|
||||
public void OpenAndClose()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<string>();
|
||||
|
||||
var options = CreateOptions();
|
||||
options.Query = new Dictionary<string, string>
|
||||
{
|
||||
{
|
||||
"access_token", "akaka"
|
||||
}
|
||||
};
|
||||
options.QueryString = "akka=ekek";
|
||||
var socket = new Socket(options);
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
events.Enqueue(Socket.EVENT_OPEN);
|
||||
socket.Close();
|
||||
});
|
||||
socket.On(Socket.EVENT_CLOSE, () =>
|
||||
{
|
||||
//log.Info("EVENT_CLOSE");
|
||||
events.Enqueue(Socket.EVENT_CLOSE);
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
string result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(Socket.EVENT_OPEN, result);
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal(Socket.EVENT_CLOSE, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Messages()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<string>();
|
||||
|
||||
var socket = new Socket(CreateOptions());
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.Send("hello");
|
||||
});
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = (string)d;
|
||||
//log.Info("EVENT_MESSAGE data = " + data);
|
||||
events.Enqueue(data);
|
||||
if (events.Count > 1)
|
||||
{
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
string result;
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal("hi", result);
|
||||
events.TryDequeue(out result);
|
||||
Assert.Equal("hello", result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Handshake()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
HandshakeData handshake_data = null;
|
||||
|
||||
var socket = new Socket(CreateOptions());
|
||||
|
||||
socket.On(Socket.EVENT_HANDSHAKE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_HANDSHAKE + string.Format(" data = {0}", data));
|
||||
handshake_data = data as HandshakeData;
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
Assert.NotNull(handshake_data);
|
||||
Assert.NotNull(handshake_data.Upgrades);
|
||||
Assert.True(handshake_data.Upgrades.Count > 0);
|
||||
Assert.True(handshake_data.PingInterval > 0);
|
||||
Assert.True(handshake_data.PingTimeout > 0);
|
||||
}
|
||||
|
||||
public class TestHandshakeListener : IListener
|
||||
{
|
||||
public HandshakeData HandshakeData;
|
||||
private ServerConnectionTest serverConnectionTest;
|
||||
|
||||
public TestHandshakeListener(ServerConnectionTest serverConnectionTest)
|
||||
{
|
||||
this.serverConnectionTest = serverConnectionTest;
|
||||
}
|
||||
|
||||
public void Call(params object[] args)
|
||||
{
|
||||
//log.Info(string.Format("open args[0]={0} args.Length={1}", args[0], args.Length));
|
||||
HandshakeData = args[0] as HandshakeData;
|
||||
serverConnectionTest._manualResetEvent.Set();
|
||||
}
|
||||
|
||||
public int CompareTo(IListener other)
|
||||
{
|
||||
return this.GetId().CompareTo(other.GetId());
|
||||
}
|
||||
|
||||
public int GetId()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Handshake2()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var socket = new Socket(CreateOptions());
|
||||
var testListener = new TestHandshakeListener(this);
|
||||
socket.On(Socket.EVENT_HANDSHAKE, testListener);
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
Assert.NotNull(testListener.HandshakeData);
|
||||
Assert.NotNull(testListener.HandshakeData.Upgrades);
|
||||
Assert.True(testListener.HandshakeData.Upgrades.Count > 0);
|
||||
Assert.True(testListener.HandshakeData.PingInterval > 0);
|
||||
Assert.True(testListener.HandshakeData.PingTimeout > 0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Upgrade()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new ConcurrentQueue<object>();
|
||||
|
||||
var socket = new Socket(CreateOptions());
|
||||
|
||||
socket.On(Socket.EVENT_UPGRADING, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADING + string.Format(" data = {0}", data));
|
||||
events.Enqueue(data);
|
||||
});
|
||||
socket.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
events.Enqueue(data);
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
|
||||
object test = null;
|
||||
events.TryDequeue(out test);
|
||||
Assert.NotNull(test);
|
||||
Assert.IsAssignableFrom<Transport>(test);
|
||||
|
||||
events.TryDequeue(out test);
|
||||
Assert.NotNull(test);
|
||||
Assert.IsAssignableFrom<Transport>(test);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RememberWebsocket()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var socket1 = new Socket(CreateOptions());
|
||||
string socket1TransportName = null;
|
||||
string socket2TransportName = null;
|
||||
|
||||
socket1.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket1TransportName = socket1.Transport.Name;
|
||||
});
|
||||
|
||||
socket1.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
var transport = (Transport)data;
|
||||
socket1.Close();
|
||||
if (WebSocket.NAME == transport.Name)
|
||||
{
|
||||
var options = CreateOptions();
|
||||
options.RememberUpgrade = true;
|
||||
var socket2 = new Socket(options);
|
||||
socket2.Open();
|
||||
socket2TransportName = socket2.Transport.Name;
|
||||
socket2.Close();
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
|
||||
socket1.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
Assert.Equal(Polling.NAME, socket1TransportName);
|
||||
Assert.Equal(WebSocket.NAME, socket2TransportName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NotRememberWebsocket()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var socket1 = new Socket(CreateOptions());
|
||||
string socket1TransportName = null;
|
||||
string socket2TransportName = null;
|
||||
|
||||
socket1.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket1TransportName = socket1.Transport.Name;
|
||||
});
|
||||
|
||||
socket1.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
var transport = (Transport)data;
|
||||
if (WebSocket.NAME == transport.Name)
|
||||
{
|
||||
socket1.Close();
|
||||
var options = CreateOptions();
|
||||
options.RememberUpgrade = false;
|
||||
var socket2 = new Socket(options);
|
||||
socket2.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//log.Info("EVENT_OPEN socket 2");
|
||||
socket2TransportName = socket2.Transport.Name;
|
||||
socket2.Close();
|
||||
_manualResetEvent.Set();
|
||||
});
|
||||
socket2.Open();
|
||||
}
|
||||
});
|
||||
|
||||
socket1.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
Assert.Equal(Polling.NAME, socket1TransportName);
|
||||
Assert.Equal(Polling.NAME, socket2TransportName);
|
||||
}
|
||||
|
||||
|
||||
//Fails in .netstandard1.3 for EngineIoClientDotNet 1.0.4
|
||||
[Fact]
|
||||
public void Cookie()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new Queue<string>();
|
||||
|
||||
var options = CreateOptions();
|
||||
options.Cookies.Add("foo", "bar");
|
||||
var socket = new Socket(options);
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.Send("cookie");
|
||||
});
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
var data = (string)d;
|
||||
//log.Info("EVENT_MESSAGE data = " + data);
|
||||
events.Enqueue(data);
|
||||
if (events.Count > 1)
|
||||
{
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
socket.Close();
|
||||
|
||||
string result;
|
||||
result = events.Dequeue();
|
||||
Assert.Equal("hi", result);
|
||||
result = events.Dequeue();
|
||||
Assert.Equal("got cookie", result);
|
||||
}
|
||||
|
||||
//Fails in .netstandard1.3 for EngineIoClientDotNet 1.0.4
|
||||
[Fact]
|
||||
public void UpgradeCookie()
|
||||
{
|
||||
_manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
var events = new Queue<object>();
|
||||
|
||||
var options = CreateOptions();
|
||||
options.Cookies.Add("foo", "bar");
|
||||
var socket = new Socket(options);
|
||||
|
||||
socket.On(Socket.EVENT_UPGRADING, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADING + string.Format(" data = {0}", data));
|
||||
events.Enqueue(data);
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_UPGRADE, (data) =>
|
||||
{
|
||||
//log.Info(Socket.EVENT_UPGRADE + string.Format(" data = {0}", data));
|
||||
events.Enqueue(data);
|
||||
socket.Send("cookie");
|
||||
});
|
||||
|
||||
socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
{
|
||||
if (events.Count > 1)
|
||||
{
|
||||
var data = (string)d;
|
||||
//log.Info("EVENT_MESSAGE data = " + data);
|
||||
events.Enqueue(data);
|
||||
_manualResetEvent.Set();
|
||||
}
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
_manualResetEvent.WaitOne();
|
||||
|
||||
object test = null;
|
||||
test = events.Dequeue();
|
||||
Assert.NotNull(test);
|
||||
Assert.IsAssignableFrom<Transport>(test);
|
||||
|
||||
test = events.Dequeue();
|
||||
Assert.NotNull(test);
|
||||
Assert.IsAssignableFrom<Transport>(test);
|
||||
test = events.Dequeue();
|
||||
Assert.Equal("got cookie", test);
|
||||
}
|
||||
|
||||
//[Fact]
|
||||
//public void PrimusEndpoint()
|
||||
//{
|
||||
// var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
|
||||
// //log.Info("Start");
|
||||
// _manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
// var events = new Queue<string>();
|
||||
|
||||
// var options = CreateOptions();
|
||||
// options.Cookies.Add("foo", "bar");
|
||||
// options.Hostname = "testme.quobject.com/";
|
||||
// options.Path = "primus";
|
||||
// var socket = new Socket(options);
|
||||
// //var socket = new Socket("testme.quobject.com");
|
||||
// socket.On(Socket.EVENT_OPEN, () =>
|
||||
// {
|
||||
// //log.Info("EVENT_OPEN");
|
||||
// socket.Send("cookie");
|
||||
// });
|
||||
// socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
// {
|
||||
// var data = (string)d;
|
||||
// //log.Info("EVENT_MESSAGE data = " + data);
|
||||
// events.Enqueue(data);
|
||||
// if (events.Count > 1)
|
||||
// {
|
||||
// _manualResetEvent.Set();
|
||||
// }
|
||||
// });
|
||||
// socket.Open();
|
||||
// _manualResetEvent.WaitOne();
|
||||
// socket.Close();
|
||||
|
||||
// string result;
|
||||
// result = events.Dequeue();
|
||||
// Assert.Equal("hi", result);
|
||||
// result = events.Dequeue();
|
||||
// Assert.Equal("got cookie", result);
|
||||
//}
|
||||
|
||||
// [Fact]
|
||||
//public void MessagesMulti()
|
||||
//{
|
||||
// //logManager.Enabled = true;
|
||||
|
||||
// var log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod());
|
||||
// //log.Info("Start");
|
||||
// _manualResetEvent = new ManualResetEvent(false);
|
||||
|
||||
// var events = new ConcurrentQueue<string>();
|
||||
|
||||
// int count = 200;
|
||||
|
||||
// var socket = new Socket(CreateOptions());
|
||||
// socket.On(Socket.EVENT_OPEN, () =>
|
||||
// {
|
||||
// //log.Info("EVENT_OPEN");
|
||||
|
||||
// Task.Run(() =>
|
||||
// {
|
||||
// for (int i = 0; i < count; i++)
|
||||
// {
|
||||
// socket.Send("multi");
|
||||
// Task.Delay(TimeSpan.FromSeconds(1)).Wait();
|
||||
// }
|
||||
|
||||
// });
|
||||
|
||||
// });
|
||||
// socket.On(Socket.EVENT_MESSAGE, (d) =>
|
||||
// {
|
||||
// var data = (string)d;
|
||||
// //log.Info("EVENT_MESSAGE data = " + data);
|
||||
// events.Enqueue(data);
|
||||
// if (events.Count > count)
|
||||
// {
|
||||
// _manualResetEvent.Set();
|
||||
// }
|
||||
// });
|
||||
// socket.Open();
|
||||
// _manualResetEvent.WaitOne();
|
||||
// socket.Close();
|
||||
|
||||
// string result;
|
||||
// events.TryDequeue(out result);
|
||||
// Assert.Equal("hi", result);
|
||||
// events.TryDequeue(out result);
|
||||
// Assert.Equal("multi", result);
|
||||
//}
|
||||
}
|
||||
}
|
||||
76
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/SocketTest.cs
vendored
Normal file
76
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/SocketTest.cs
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using System.Collections.Immutable;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class SocketTest : Connection
|
||||
{
|
||||
private Socket socket;
|
||||
public string Message;
|
||||
|
||||
[Fact]
|
||||
public void FilterUpgrades()
|
||||
{
|
||||
var options = CreateOptions();
|
||||
options.Transports = ImmutableList<string>.Empty.Add("polling");
|
||||
|
||||
socket = new Socket(options);
|
||||
|
||||
var immutablelist = socket.FilterUpgrades(ImmutableList<string>.Empty.Add("polling").Add("websocket"));
|
||||
|
||||
Assert.Equal("polling", immutablelist[0]);
|
||||
Assert.Equal(1, immutablelist.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SocketClosing()
|
||||
{
|
||||
var closed = false;
|
||||
var error = false;
|
||||
|
||||
var options = CreateOptions();
|
||||
|
||||
socket = new Socket("ws://0.0.0.0:8080", options);
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
//socket.Send("test send");
|
||||
});
|
||||
socket.On(Socket.EVENT_CLOSE, () =>
|
||||
{
|
||||
//log.Info("EVENT_CLOSE = ");
|
||||
closed = true;
|
||||
});
|
||||
|
||||
socket.Once(Socket.EVENT_ERROR, () =>
|
||||
{
|
||||
//log.Info("EVENT_ERROR = ");
|
||||
error = true;
|
||||
});
|
||||
|
||||
socket.Open();
|
||||
//System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
|
||||
await Task.Delay(1000);
|
||||
Assert.True(closed);
|
||||
Assert.True(error);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SocketOptionCookies()
|
||||
{
|
||||
var options = new Socket.Options();
|
||||
options.Cookies.Add("foo", "bar");
|
||||
Assert.Equal("foo=bar", options.GetCookiesAsString());
|
||||
options.Cookies.Add("name2", "value2");
|
||||
Assert.Equal("foo=bar; name2=value2", options.GetCookiesAsString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DefaultProtocol()
|
||||
{
|
||||
var socket = new Socket("testme.quobject.com");
|
||||
Assert.NotNull(socket);
|
||||
}
|
||||
}
|
||||
}
|
||||
170
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/TransportTest.cs
vendored
Normal file
170
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/TransportTest.cs
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using Quobject.EngineIoClientDotNet.Client.Transports;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
// NOTE: tests for the rememberUpgrade option are on ServerConnectionTest.
|
||||
|
||||
public class TransportTest : Connection
|
||||
{
|
||||
[Fact]
|
||||
public void Constructors()
|
||||
{
|
||||
var socket = new Socket(CreateOptions());
|
||||
|
||||
socket.Open();
|
||||
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
|
||||
Assert.NotNull(socket.Transport);
|
||||
|
||||
socket.Close();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Uri()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = Connection.CreateOptions().Hostname,
|
||||
Secure = false,
|
||||
Query = new Dictionary<string, string> { { "sid", "test" } },
|
||||
TimestampRequests = false
|
||||
};
|
||||
var polling = new Polling(options);
|
||||
var expected = string.Format("http://{0}/engine.io?sid=test&b64=1", options.Hostname);
|
||||
Assert.Contains(expected, polling.Uri());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UriWithDefaultPort()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = Connection.CreateOptions().Hostname,
|
||||
Secure = false,
|
||||
Query = new Dictionary<string, string> { { "sid", "test" } },
|
||||
TimestampRequests = false,
|
||||
Port = 80
|
||||
};
|
||||
var polling = new Polling(options);
|
||||
//Assert.Contains("http://localhost/engine.io?sid=test&b64=1", polling.Uri());
|
||||
var expected = string.Format("http://{0}/engine.io?sid=test&b64=1", options.Hostname);
|
||||
Assert.Contains(expected, polling.Uri());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UriWithPort()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = Connection.CreateOptions().Hostname,
|
||||
Secure = false,
|
||||
Query = new Dictionary<string, string> { { "sid", "test" } },
|
||||
TimestampRequests = false,
|
||||
Port = 3000
|
||||
};
|
||||
var polling = new Polling(options);
|
||||
//Assert.Contains("http://localhost:3000/engine.io?sid=test&b64=1", polling.Uri());
|
||||
var expected = string.Format("http://{0}:{1}/engine.io?sid=test&b64=1", options.Hostname, options.Port);
|
||||
Assert.Contains(expected, polling.Uri());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HttpsUriWithDefaultPort()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = Connection.CreateOptions().Hostname,
|
||||
Secure = true,
|
||||
Query = new Dictionary<string, string> { { "sid", "test" } },
|
||||
TimestampRequests = false,
|
||||
Port = 443
|
||||
};
|
||||
var polling = new Polling(options);
|
||||
//Assert.Contains("https://localhost/engine.io?sid=test&b64=1", polling.Uri());
|
||||
var expected = string.Format("https://{0}/engine.io?sid=test&b64=1", options.Hostname);
|
||||
Assert.Contains(expected, polling.Uri());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TimestampedUri()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = "test",
|
||||
Secure = false,
|
||||
Query = new Dictionary<string, string> { { "sid", "test" } },
|
||||
TimestampRequests = true,
|
||||
TimestampParam = "t"
|
||||
};
|
||||
var polling = new Polling(options);
|
||||
|
||||
var pat = @"http://test/engine.io\?sid=test&(t=[0-9]+-[0-9]+)";
|
||||
var r = new Regex(pat, RegexOptions.IgnoreCase);
|
||||
var test = polling.Uri();
|
||||
//log.Info(test);
|
||||
var m = r.Match(test);
|
||||
Assert.True(m.Success);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WsUri()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = "test",
|
||||
Secure = false,
|
||||
Query = new Dictionary<string, string> { { "transport", "websocket" } },
|
||||
TimestampRequests = false
|
||||
};
|
||||
var ws = new WebSocket(options);
|
||||
Assert.Contains("ws://test/engine.io?transport=websocket", ws.Uri());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WssUri()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = "test",
|
||||
Secure = true,
|
||||
Query = new Dictionary<string, string> { { "transport", "websocket" } },
|
||||
TimestampRequests = false
|
||||
};
|
||||
var ws = new WebSocket(options);
|
||||
Assert.Contains("wss://test/engine.io?transport=websocket", ws.Uri());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WsTimestampedUri()
|
||||
{
|
||||
var options = new Transport.Options
|
||||
{
|
||||
Path = "/engine.io",
|
||||
Hostname = "test",
|
||||
Secure = false,
|
||||
Query = new Dictionary<string, string> { { "sid", "test" } },
|
||||
TimestampRequests = true,
|
||||
TimestampParam = "woot"
|
||||
};
|
||||
var ws = new WebSocket(options);
|
||||
|
||||
var pat = @"ws://test/engine.io\?sid=test&(woot=[0-9]+-[0-9]+)";
|
||||
var r = new Regex(pat, RegexOptions.IgnoreCase);
|
||||
var test = ws.Uri();
|
||||
//log.Info(test);
|
||||
var m = r.Match(test);
|
||||
Assert.True(m.Success);
|
||||
}
|
||||
}
|
||||
}
|
||||
45
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/UsageTest.cs
vendored
Normal file
45
ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.Tests.mono/ClientTests/UsageTest.cs
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
using Quobject.EngineIoClientDotNet.Client;
|
||||
using System;
|
||||
using Xunit;
|
||||
|
||||
namespace Quobject.EngineIoClientDotNet_Tests.ClientTests
|
||||
{
|
||||
public class UsageTest : Connection
|
||||
{
|
||||
[Fact]
|
||||
public void Usage1()
|
||||
{
|
||||
var options = CreateOptions();
|
||||
var socket = new Socket(options);
|
||||
|
||||
//You can use `Socket` to connect:
|
||||
//var socket = new Socket("ws://localhost");
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.Send("hi");
|
||||
socket.Close();
|
||||
});
|
||||
socket.Open();
|
||||
|
||||
//System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Usage2()
|
||||
{
|
||||
var options = CreateOptions();
|
||||
var socket = new Socket(options);
|
||||
|
||||
//Receiving data
|
||||
//var socket = new Socket("ws://localhost:3000");
|
||||
socket.On(Socket.EVENT_OPEN, () =>
|
||||
{
|
||||
socket.On(Socket.EVENT_MESSAGE, (data) => Console.WriteLine((string)data));
|
||||
});
|
||||
socket.Open();
|
||||
|
||||
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
|
||||
socket.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user