void OnMessageReceived(Message m)
 {
     try {
         if (m.MessageType == TestMessageTypes.TestSessionConnected)
         {
             testServer.StartTestDiscovery();
         }
         else if (m.MessageType == TestMessageTypes.TestDiscoveryTestFound)
         {
             var val = m.Payload.ToObject <TestDiscovered> ();
             tests.Add(val);
             testFound = true;
             shutdownTimer.Stop();
         }
         else if (m.MessageType == TestMessageTypes.TestDiscoveryCompleted)
         {
             discoveryCompleted = true;
             testServer.TerminateTestSession();
             DnxOutputPad.WriteText(GettextCatalog.GetString("Test discovery completed."));
             OnDiscoveryCompleted();
             Stop();
         }
         else if (m.MessageType == "Error")
         {
             var val = m.Payload.ToObject <Microsoft.DotNet.Tools.Test.ErrorMessage> ();
             DnxOutputPad.WriteError(val.Message);
             OnDiscoveryFailed();
         }
     } catch (Exception ex) {
         LoggingService.LogError("Test loader error", ex);
         DnxOutputPad.WriteError(ex.Message);
         OnDiscoveryFailed();
     }
 }
        void RunDotNetCoreTest(string projectDirectory)
        {
            string arguments = String.Format(@"test --port {0} --parentProcessId {1} --no-build",
                                             testServer.Port,
                                             Process.GetCurrentProcess().Id);

            DnxOutputPad.WriteText(GettextCatalog.GetString("Starting test discovery..."));
            DnxOutputPad.WriteText(String.Format("{0} {1}", DnxServices.ProjectService.CurrentDotNetRuntimePath, arguments));

            dotNetTestOperation = Runtime.ProcessService.StartConsoleProcess(
                DnxServices.ProjectService.CurrentDotNetRuntimePath,
                arguments,
                projectDirectory,
                new DotNetCoreOutputOperationConsole(),
                null,
                DotNetTestProcessExited);
        }