[REEF-1690] Replace Skip attribute with Trait for .NET tests running on Yarn

This change replaces [Fact(Skip)] annotation with [Trait("Environment", "Yarn")]
for .NET tests which are supposed to be executed on Yarn. This allows to execute
them (skipped tests can't be executed at all).

JIRA:
  [REEF-1690](https://issues.apache.org/jira/browse/REEF-1690)

Pull request:
  This closes #1209
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs
index 66fd513..1a11af6 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestBridgeClient.cs
@@ -18,7 +18,6 @@
 using System.Threading.Tasks;
 using Org.Apache.REEF.Client.Common;
 using Org.Apache.REEF.Examples.AllHandlers;
-using Org.Apache.REEF.Utilities.Logging;
 using Xunit;
 
 namespace Org.Apache.REEF.Tests.Functional.Bridge
@@ -26,9 +25,8 @@
     [Collection("FunctionalTests")]
     public class TestBridgeClient : ReefFunctionalTest
     {
-        private static readonly Logger LOGGER = Logger.GetLogger(typeof(TestBridgeClient));
-
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         [Trait("Priority", "1")]
         [Trait("Category", "FunctionalGated")]
         [Trait("Description", "Run CLR Bridge on Yarn")]
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Group/BroadcastReduceTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Group/BroadcastReduceTest.cs
index 9387f87..7cdd772 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Group/BroadcastReduceTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Group/BroadcastReduceTest.cs
@@ -42,7 +42,8 @@
             CleanUp(testFolder);
         }
 
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestBroadcastAndReduceOnYarn()
         {
             int numTasks = 9;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Group/PipelinedBroadcastReduceTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Group/PipelinedBroadcastReduceTest.cs
index 62694a4..cb9ef67 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Group/PipelinedBroadcastReduceTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Group/PipelinedBroadcastReduceTest.cs
@@ -42,7 +42,8 @@
             CleanUp(testFolder);
         }
 
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestPipelinedBroadcastAndReduceOnYarn()
         {
             const int numTasks = 9;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Group/ScatterReduceTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Group/ScatterReduceTest.cs
index 64bb3f1..0fdfc41 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Group/ScatterReduceTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Group/ScatterReduceTest.cs
@@ -42,7 +42,8 @@
             CleanUp(testFolder);
         }
 
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestScatterAndReduceOnYarn()
         {
             int numTasks = 5;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBroadcastReduceTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBroadcastReduceTest.cs
index 1db3d80..01d116c 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBroadcastReduceTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBroadcastReduceTest.cs
@@ -57,7 +57,8 @@
             CleanUp(testFolder);
         }
 
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         [Trait("Description", "Run IMRU broadcast and reduce example as test on Yarn.")]
         void TestIMRUBroadcastReduceOnYarn()
         {
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBrodcastReduceWithoutIMRUClientTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBrodcastReduceWithoutIMRUClientTest.cs
index 46ac244..31283ed 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBrodcastReduceWithoutIMRUClientTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUBrodcastReduceWithoutIMRUClientTest.cs
@@ -48,7 +48,8 @@
         /// <summary>
         /// This test is for the normal scenarios of IMRUDriver and IMRUTasks on yarn
         /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestWithHandlersInIMRUDriverOnYarn()
         {
             int chunkSize = 2;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUCloseTaskTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUCloseTaskTest.cs
index af1e758..2a752ca 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUCloseTaskTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUCloseTaskTest.cs
@@ -71,7 +71,8 @@
         /// Same testing for running on YARN
         /// It sends close event for all the running tasks.
         /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestTaskCloseOnLocalRuntimeOnYarn()
         {
             const int chunkSize = 2;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUMapperCountTest.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUMapperCountTest.cs
index 54ce76c..3025807 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUMapperCountTest.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/IMRUMapperCountTest.cs
@@ -39,7 +39,8 @@
             CleanUp(testFolder);
         }
 
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         [Trait("Description", "Run IMRU mapper count example as test on Yarn.")]
         void TestIMRUMapperCountOnYarn()
         {
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestExceptionInResultHandlerDispose.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestExceptionInResultHandlerDispose.cs
index d6a8564..01840f7 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestExceptionInResultHandlerDispose.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestExceptionInResultHandlerDispose.cs
@@ -76,7 +76,8 @@
         /// <summary>
         /// This test is for the normal scenarios of IMRUDriver and IMRUTasks on yarn
         /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestExceptionInResultHandlerDisposerOnYarn()
         {
             int chunkSize = 2;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluators.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluators.cs
index df99e0b..5061d8d 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluators.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluators.cs
@@ -76,10 +76,8 @@
             CleanUp(testFolder);
         }
 
-        /// <summary>
-        /// This test is for the normal scenarios of IMRUDriver and IMRUTasks on yarn
-        /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public virtual void TestFailedMapperOnYarn()
         {
             int chunkSize = 2;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs
index 1ce7686..250ee79 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs
@@ -79,10 +79,8 @@
             CleanUp(testFolder);
         }
 
-        /// <summary>
-        /// This test is on yarn
-        /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public override void TestFailedMapperOnYarn()
         {
             int chunkSize = 2;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluator.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluator.cs
index ff2245f..b138148 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluator.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluator.cs
@@ -78,10 +78,8 @@
             CleanUp(testFolder);
         }
 
-        /// <summary>
-        /// This test is for the normal scenarios of IMRUDriver and IMRUTasks on yarn
-        /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public virtual void TestFailedUpdateOnYarn()
         {
             int chunkSize = 2;
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluatorOnWaitingForEvaluator.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluatorOnWaitingForEvaluator.cs
index 08a9c7d..81bf5f0 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluatorOnWaitingForEvaluator.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailUpdateEvaluatorOnWaitingForEvaluator.cs
@@ -58,7 +58,8 @@
         /// <summary>
         /// This test is to fail master evaluator at context start. The system will fail. 
         /// </summary>
-        [Fact(Skip = "Requires Yarn")]
+        [Fact]
+        [Trait("Environment", "Yarn")]
         public void TestFailUpdateEvaluatorAtContexStartOnOnYarn()
         {
             int chunkSize = 2;
diff --git a/lang/cs/xunit.targets b/lang/cs/xunit.targets
index 301ab19..f75ef14 100644
--- a/lang/cs/xunit.targets
+++ b/lang/cs/xunit.targets
@@ -49,7 +49,7 @@
     <Exec Command="$(SolutionDir)\.nuget\nuget.exe restore $(SolutionDir)\.nuget\packages.config -o $(PackagesDir)" />
   </Target>
   <Target Name="Test">
-    <Exec Command="$(PackagesDir)\xunit.runner.console.$(xUnitVersion)\tools\xunit.console.exe $(OutputPath)\$(AssemblyName).dll -html $(OutputPath)\xunit_report.html"
+    <Exec Command="$(PackagesDir)\xunit.runner.console.$(xUnitVersion)\tools\xunit.console.exe $(OutputPath)\$(AssemblyName).dll -notrait Environment=Yarn -html $(OutputPath)\xunit_report.html"
           IgnoreStandardErrorWarningFormat="true"
       />
   </Target>