Imported Upstream version 4.3.2.467

Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
Xamarin Public Jenkins
2016-02-22 11:00:01 -05:00
parent f302175246
commit f3e3aab35a
4097 changed files with 122406 additions and 82300 deletions

View File

@@ -23,6 +23,7 @@
// THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
@@ -62,16 +63,24 @@ namespace MonoTests.System.ServiceModel.Dispatcher
var client = new TempConvertSoapClient (binding, remoteAddress);
var wait = new ManualResetEvent (false);
Exception error = null;
string result = null;
client.CelsiusToFahrenheitCompleted += delegate (object o, CelsiusToFahrenheitCompletedEventArgs e) {
if (e.Error != null)
throw e.Error;
Assert.AreEqual ("76.1", e.Result, "#1");
wait.Set ();
try {
error = e.Error;
result = e.Error == null ? e.Result : null;
} finally {
wait.Set ();
}
};
client.CelsiusToFahrenheitAsync ("24.5");
if (!wait.WaitOne (TimeSpan.FromSeconds (20)))
Assert.Fail ("timeout");
Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "timeout");
Assert.IsNull (error, "#1, inner exception: {0}", error);
Assert.AreEqual ("76.1", result, "#2");
} finally {
serviceHost.Close ();
}
@@ -81,16 +90,16 @@ namespace MonoTests.System.ServiceModel.Dispatcher
{
public FahrenheitToCelsiusResponse FarenheitToCelsius (FahrenheitToCelsiusRequest request)
{
var farenheit = double.Parse (request.Body.Fahrenheit);
var farenheit = double.Parse (request.Body.Fahrenheit, CultureInfo.InvariantCulture);
var celsius = ((farenheit - 32) / 9) * 5;
return new FahrenheitToCelsiusResponse (new FahrenheitToCelsiusResponseBody (celsius.ToString ()));
return new FahrenheitToCelsiusResponse (new FahrenheitToCelsiusResponseBody (celsius.ToString (CultureInfo.InvariantCulture)));
}
public CelsiusToFahrenheitResponse CelsiusToFarenheit (CelsiusToFahrenheitRequest request)
{
var celsius = double.Parse (request.Body.Celsius);
var celsius = double.Parse (request.Body.Celsius, CultureInfo.InvariantCulture);
var farenheit = ((celsius * 9) / 5) + 32;
return new CelsiusToFahrenheitResponse (new CelsiusToFahrenheitResponseBody (farenheit.ToString ()));
return new CelsiusToFahrenheitResponse (new CelsiusToFahrenheitResponseBody (farenheit.ToString (CultureInfo.InvariantCulture)));
}
Func<FahrenheitToCelsiusRequest,FahrenheitToCelsiusResponse> farenheitToCelsius;

View File

@@ -57,6 +57,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
serviceHost.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), "mex");
serviceHost.Open ();
Thread.Sleep (2000); // let WCF spin up
try {
// client
@@ -65,16 +66,24 @@ namespace MonoTests.System.ServiceModel.Dispatcher
var client = new Service1Client (binding, remoteAddress);
var wait = new ManualResetEvent (false);
Exception error = null;
object result = null;
client.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
if (e.Error != null)
throw e.Error;
Assert.AreEqual ("A", ((DataType1) e.Result).Id, "#1");
wait.Set ();
try {
error = e.Error;
result = e.Error == null ? e.Result : null;
} finally {
wait.Set ();
}
};
client.GetDataAsync ();
if (!wait.WaitOne (TimeSpan.FromSeconds (20)))
Assert.Fail ("timeout");
Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "timeout");
Assert.IsNull (error, "#1, inner exception: {0}", error);
Assert.AreEqual ("A", ((DataType1) result).Id, "#2");
} finally {
serviceHost.Close ();
}

View File

@@ -1,4 +1,3 @@
#if NET_4_0
//
// Authors:
// David Straw
@@ -77,58 +76,85 @@ namespace MonoTests.System.ServiceModel.Dispatcher
var nestedClient = new Service1Client (binding, remoteAddress);
var dbClient = new Service1Client (binding, remoteAddress);
var waits = new ManualResetEvent [4];
for (int i = 0; i < waits.Length; i++)
waits [i] = new ManualResetEvent (false);
{
ManualResetEvent wait = new ManualResetEvent (false);
Exception error = null;
object result = null;
int passed = 0;
normalClient.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
try {
error = e.Error;
result = e.Error == null ? e.Result : null;
} finally {
wait.Set ();
}
};
normalClient.GetDataAsync ();
normalClient.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
if (e.Error != null) {
Assert.Fail ("Normal failed; error: {0}", e.Error);
throw e.Error;
}
Assert.AreEqual ("A", ((DataType1) e.Result).Id, "Normal");
Interlocked.Increment (ref passed);
waits [0].Set ();
};
normalClient.GetDataAsync ();
Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#1 timeout");
Assert.IsNull (error, "#1.1, inner exception: {0}", error);
Assert.AreEqual ("A", ((DataType1) result).Id, "#1.2");
}
collectionClient.GetCollectionDataCompleted += delegate (object sender, GetCollectionDataCompletedEventArgs e) {
if (e.Error != null) {
Assert.Fail ("Collection failed; error: {0}", e.Error);
throw e.Error;
}
Assert.AreEqual ("B,C", ItemsToString (e.Result.Cast<DataType1> ()), "Collection");
Interlocked.Increment (ref passed);
waits [1].Set ();
};
collectionClient.GetCollectionDataAsync ();
{
ManualResetEvent wait = new ManualResetEvent (false);
Exception error = null;
ObservableCollection<object> result = null;
nestedClient.GetNestedDataCompleted += delegate (object sender, GetNestedDataCompletedEventArgs e) {
if (e.Error != null) {
Assert.Fail ("Nested failed; error: {0}", e.Error);
throw e.Error;
}
Assert.AreEqual ("D,E", ItemsToString (e.Result.Items.Cast<DataType1> ()), "Nested");
Interlocked.Increment (ref passed);
waits [2].Set ();
};
nestedClient.GetNestedDataAsync ();
collectionClient.GetCollectionDataCompleted += delegate (object sender, GetCollectionDataCompletedEventArgs e) {
try {
error = e.Error;
result = e.Error == null ? e.Result : null;
} finally {
wait.Set ();
}
};
collectionClient.GetCollectionDataAsync ();
dbClient.JSMGetDatabasesCompleted += delegate (object sender, JSMGetDatabasesCompletedEventArgs e) {
waits [3].Set ();
if (e.Error != null) {
throw e.Error;
}
Assert.AreEqual ("databases", e.Result, "Databases");
Interlocked.Increment (ref passed);
};
dbClient.JSMGetDatabasesAsync();
Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#2 timeout");
Assert.IsNull (error, "#2.1, inner exception: {0}", error);
Assert.AreEqual ("B,C", ItemsToString (result.Cast<DataType1> ()), "#2.2");
}
WaitHandle.WaitAll (waits, TimeSpan.FromMinutes (1));
if (passed != waits.Length)
Assert.Fail ("Not all tests passed!");
{
ManualResetEvent wait = new ManualResetEvent (false);
Exception error = null;
WebServiceMoonlightTest.ServiceReference2.DataType2 result = null;
nestedClient.GetNestedDataCompleted += delegate (object sender, GetNestedDataCompletedEventArgs e) {
try {
error = e.Error;
result = e.Error == null ? e.Result : null;
} finally {
wait.Set ();
}
};
nestedClient.GetNestedDataAsync ();
Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#3 timeout");
Assert.IsNull (error, "#3.1, inner exception: {0}", error);
Assert.AreEqual ("D,E", ItemsToString (result.Items.Cast<DataType1> ()), "#3.2");
}
{
ManualResetEvent wait = new ManualResetEvent (false);
Exception error = null;
string result = null;
dbClient.JSMGetDatabasesCompleted += delegate (object sender, JSMGetDatabasesCompletedEventArgs e) {
try {
error = e.Error;
result = e.Error == null ? e.Result : null;
} finally {
wait.Set ();
}
};
dbClient.JSMGetDatabasesAsync();
Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#4 timeout");
Assert.IsNull (error, "#4.1, inner exception: {0}", error);
Assert.AreEqual ("databases", result, "#4.2");
}
}
string ItemsToString (IEnumerable<DataType1> items)
@@ -857,4 +883,3 @@ namespace WebServiceMoonlightTest.ServiceReference2 {
}
}
#endif

View File

@@ -17,19 +17,6 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[TestFixture]
public class ChannelDispatcherTest
{
Uri CreateAvailableUri (string uriString)
{
var uri = new Uri (uriString);
try {
var t = new TcpListener (uri.Port);
t.Start ();
t.Stop ();
} catch (Exception ex) {
Assert.Fail (String.Format ("Port {0} is not open. It is likely previous tests have failed and the port is kept opened", uri.Port));
}
return uri;
}
[Test]
public void ConstructorNullBindingName ()
{
@@ -44,7 +31,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
var st = cd.ServiceThrottle;
Assert.IsNull (st, "#0");
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
h.AddServiceEndpoint (typeof (TestContract).FullName, new BasicHttpBinding (), "address");
h.ChannelDispatchers.Add (cd);
@@ -71,7 +58,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[Test]
public void Collection_Add_Remove () {
Console.WriteLine ("STart test Collection_Add_Remove");
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
h.AddServiceEndpoint (typeof (TestContract).FullName, new BasicHttpBinding (), "address");
MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
@@ -89,7 +76,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[Test]
public void EndpointDispatcherAddTest ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
d.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "", ""));
}
@@ -97,7 +84,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[Test]
[ExpectedException (typeof (InvalidOperationException))]
public void EndpointDispatcherAddTest2 () {
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
d.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "", ""));
d.Open (); // the dispatcher must be attached.
@@ -107,7 +94,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[ExpectedException (typeof (InvalidOperationException))]
public void EndpointDispatcherAddTest3 ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
d.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "", ""));
@@ -119,7 +106,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[ExpectedException (typeof (InvalidOperationException))] // i.e. it is thrown synchronously in current thread.
public void EndpointDispatcherAddTest4 ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
var listener = new MyChannelListener (uri);
MyChannelDispatcher d = new MyChannelDispatcher (listener);
@@ -151,7 +138,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[ExpectedException (typeof (InvalidOperationException))] // i.e. it is thrown synchronously in current thread.
public void EndpointDispatcherAddTest5 ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
var binding = new BasicHttpBinding ();
var listener = new MyChannelListener (uri);
@@ -173,7 +160,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[Test]
public void EndpointDispatcherAddTest6 ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
var binding = new BasicHttpBinding ();
var listener = new MyChannelListener<IReplyChannel> (uri);
@@ -204,7 +191,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
[ExpectedException (typeof (InvalidOperationException))]
public void EndpointDispatcherAddTest7 ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
var binding = new BasicHttpBinding ();
var listener = new MyChannelListener<IReplyChannel> (uri);
@@ -239,7 +226,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
// but it makes little sense especially for checking duplicate listen URIs. Duplicate listen URIs should be rejected anyways.
public void EndpointDispatcherAddTest8 ()
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (typeof (TestContract), uri);
var listener = new MyChannelListener<IReplyChannel> (uri);
MyChannelDispatcher d = new MyChannelDispatcher (listener);
@@ -284,7 +271,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
// [Test]
public void EndpointDispatcherAddTest9 () // test singleton service
{
var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
ServiceHost h = new ServiceHost (new TestContract (), uri);
h.Description.Behaviors.Find<ServiceBehaviorAttribute> ().InstanceContextMode = InstanceContextMode.Single;
var listener = new MyChannelListener<IReplyChannel> (uri);