diff --git a/external/mono b/external/mono
index e70439f186..ab882c0c3d 160000
--- a/external/mono
+++ b/external/mono
@@ -1 +1 @@
-Subproject commit e70439f1868fc29e5b649c89222829f02fc886d3
+Subproject commit ab882c0c3decfaa2e2d71b85404ce35328a2a99d
diff --git a/tests/Makefile b/tests/Makefile
index f778b17930..5e6ac4f4e9 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -33,6 +33,7 @@ BCL_TEST_SUITES=mscorlib \
System.IO.Compression.FileSystem \
Mono.CSharp \
System.Security \
+ System.ServiceModel \
ALL_TEST_SUITES=$(TEST_SUITES) $(BCL_TEST_SUITES)
EXEC_UNIT_SERVER=XCODE_DEVELOPER_ROOT=$(XCODE_DEVELOPER_ROOT) MONOTOUCH_ROOT=$(IOS_DESTDIR)/$(MONOTOUCH_PREFIX) $(SYSTEM_MONO) --debug $(UNIT_SERVER)
diff --git a/tests/bcl-test/System.ServiceModel/Info-mac.plist b/tests/bcl-test/System.ServiceModel/Info-mac.plist
new file mode 100644
index 0000000000..24c5037365
--- /dev/null
+++ b/tests/bcl-test/System.ServiceModel/Info-mac.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleDisplayName
+ systemservicemodeltests
+ CFBundleIdentifier
+ com.xamarin.systemservicemodeltests
+ CFBundleName
+ systemservicemodeltests
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ 10.7
+ NSPrincipalClass
+ NSApplication
+ LSUIElement
+ 1
+
+
diff --git a/tests/bcl-test/System.ServiceModel/Info.plist b/tests/bcl-test/System.ServiceModel/Info.plist
new file mode 100644
index 0000000000..d5036725a1
--- /dev/null
+++ b/tests/bcl-test/System.ServiceModel/Info.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ CFBundleIdentifier
+ com.xamarin.systemservicemodeltests
+ MinimumOSVersion
+ 6.0
+ UIApplicationExitsOnSuspend
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/tests/bcl-test/System.ServiceModel/Makefile b/tests/bcl-test/System.ServiceModel/Makefile
new file mode 100644
index 0000000000..51463e3b30
--- /dev/null
+++ b/tests/bcl-test/System.ServiceModel/Makefile
@@ -0,0 +1,5 @@
+
+LIB=System.ServiceModel
+APP=System.ServiceModel
+
+include ../Make.frag
diff --git a/tests/bcl-test/System.ServiceModel/System.ServiceModel-mac.csproj.template b/tests/bcl-test/System.ServiceModel/System.ServiceModel-mac.csproj.template
new file mode 100644
index 0000000000..3fe16813a1
--- /dev/null
+++ b/tests/bcl-test/System.ServiceModel/System.ServiceModel-mac.csproj.template
@@ -0,0 +1,107 @@
+
+
+
+ Debug
+ AnyCPU
+ {8CB7C94E-B34D-4552-8E8D-1900D7E537C6}
+ {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ BCL.Tests
+ Resources
+ System.ServiceModelTests
+ 67,168,169,219,414,612,618,649,672
+ v4.5
+ true
+ obj\$(Platform)\$(Configuration)-unified
+ XAMCORE_2_0;ADD_BCL_EXCLUSIONS
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MONOMAC;DISABLE_CAS_USE;NO_GUI_TESTING;$(DefineConstants)
+ True
+ prompt
+ 4
+ false
+ false
+ Mac Developer
+ false
+ false
+ None
+ x86_64
+ cjk,mideast,other,rare,west
+
+
+ full
+ true
+ bin\Release
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MONOMAC;DISABLE_CAS_USE;NO_GUI_TESTING;$(DefineConstants)
+ True
+ prompt
+ 4
+ false
+ None
+ false
+ Mac Developer
+ false
+ false
+ cjk,mideast,other,rare,west
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\..\external\guiunit\src\framework\obj\Debug\net-4.5\GuiUnit.exe
+
+
+
+
+
+
+
+ Info.plist
+
+
+
+
+ MacTestMain.cs
+
+
+ Assert.cs
+
+
+
+#FILES#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/bcl-test/System.ServiceModel/System.ServiceModel.csproj.template b/tests/bcl-test/System.ServiceModel/System.ServiceModel.csproj.template
new file mode 100644
index 0000000000..60b7f60699
--- /dev/null
+++ b/tests/bcl-test/System.ServiceModel/System.ServiceModel.csproj.template
@@ -0,0 +1,176 @@
+
+
+
+ Debug
+ iPhoneSimulator
+ 10.0.0
+ 2.0
+ {C4C63CC5-CD9F-449F-B1F2-7DF155B1E759}
+ {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ BCL.Tests
+ Resources
+ SystemServiceModelTests
+ 67,168,169,219,414,612,618,649,672
+ Xamarin.iOS
+ obj\$(Platform)\$(Configuration)-unified
+ XAMCORE_2_0
+
+
+ True
+ full
+ False
+ bin\iPhoneSimulator\$(Configuration)-unified
+ DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ True
+ None
+ True
+ i386, x86_64
+
+
+ none
+ True
+ bin\iPhoneSimulator\$(Configuration)-unified
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ None
+ True
+ i386, x86_64
+
+
+ True
+ full
+ False
+ bin\iPhone\$(Configuration)-unified
+ DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ True
+ ARMv7, ARM64
+
+
+ True
+ full
+ False
+ bin\iPhone\$(Configuration)-unified
+ DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ True
+ ARMv7
+
+
+ True
+ full
+ False
+ bin\iPhone\$(Configuration)-unified
+ DEBUG;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ True
+ ARM64
+
+
+ none
+ True
+ bin\iPhone\$(Configuration)-unified
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ ARMv7, ARM64
+
+
+ none
+ True
+ bin\iPhone\$(Configuration)-unified
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ ARMv7
+
+
+ none
+ True
+ bin\iPhone\$(Configuration)-unified
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ ARM64
+
+
+ none
+ True
+ bin\iPhone\$(Configuration)-unified
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ prompt
+ 4
+ iPhone Developer
+ True
+ NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;MOBILE;MONOTOUCH;FULL_AOT_RUNTIME;DISABLE_CAS_USE;$(DefineConstants)
+ ARMv7, ARM64
+ --bitcode:full
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Info.plist
+
+
+
+
+ Main.cs
+
+
+ AppDelegate.cs
+
+
+ Assert.cs
+
+
+
+#FILES#
+
+
+
+ Test\System.ServiceModel.Channels\soap-fault.xml
+
+
+ Test\System.ServiceModel.Channels\soap-fault-incomplete.xml
+
+
+ Test\System.ServiceModel.Channels\soap-fault-incomplete4.xml
+
+
+
+
\ No newline at end of file
diff --git a/tests/xharness/Harness.cs b/tests/xharness/Harness.cs
index 49bdac1544..b3ca003298 100644
--- a/tests/xharness/Harness.cs
+++ b/tests/xharness/Harness.cs
@@ -294,6 +294,7 @@ namespace xharness
"System.IO.Compression.FileSystem",
"Mono.CSharp",
"System.Security",
+ "System.ServiceModel",
};
foreach (var p in bcl_suites) {
foreach (var flavor in new MacFlavors [] { MacFlavors.Full, MacFlavors.Modern }) {
@@ -337,6 +338,7 @@ namespace xharness
"System.IO.Compression.FileSystem",
"Mono.CSharp",
"System.Security",
+ "System.ServiceModel",
};
var bcl_skip_watchos = new string [] {
"Mono.Security",