Esempio n. 1
0
        /// <summary>
        /// Launch a java class in ClientConstants.ClientJarFilePrefix with provided parameters.
        /// </summary>
        /// <param name="javaLogLevel">Java logging level</param>
        /// <param name="javaClassName">Java class that launches the Java driver</param>
        /// <param name="parameters">Parameters associated with the Java main class</param>
        /// <param name="cancellationToken">Token to cancel the launch</param>
        public Task LaunchAsync(
            JavaLoggingSetting javaLogLevel,
            string javaClassName,
            string[] parameters,
            CancellationToken cancellationToken = default)
        {
            var startInfo = new ProcessStartInfo
            {
                Arguments              = AssembleArguments(javaLogLevel, javaClassName, parameters),
                FileName               = GetJavaCommand(),
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                RedirectStandardError  = true,
            };

            Log.Log(Level.Info, "Launch Java with command: {0} {1}", startInfo.FileName, startInfo.Arguments);
            var processExitTracker = new TaskCompletionSource <bool>();
            var process            = new Process
            {
                StartInfo           = startInfo,
                EnableRaisingEvents = true
            };

            process.Exited += (sender, args) => { processExitTracker.SetResult(process.ExitCode == 0); };
            if (cancellationToken != default)
            {
                cancellationToken.Register(processExitTracker.SetCanceled);
            }
            process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e)
            {
                if (!string.IsNullOrWhiteSpace(e.Data))
                {
                    Log.Log(Level.Info, e.Data);
                }
            };
            process.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e)
            {
                if (!string.IsNullOrWhiteSpace(e.Data))
                {
                    Log.Log(Level.Error, e.Data);
                }
            };
            if (!process.Start())
            {
                processExitTracker.SetException(new Exception("Java client process didn't start."));
            }
            else
            {
                process.BeginErrorReadLine();
                process.BeginOutputReadLine();
            }
            return(processExitTracker.Task);
        }
Esempio n. 2
0
        /// <summary>
        /// Assembles the command line arguments. Used by LaunchAsync()
        /// </summary>
        /// <param name="javaLogLevel"></param>
        /// <param name="javaClassName"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private string AssembleArguments(JavaLoggingSetting javaLogLevel, string javaClassName, params string[] parameters)
        {
            IList <string> arguments = new List <string>();

            if (javaLogLevel == JavaLoggingSetting.Verbose)
            {
                arguments.Add("-Djava.util.logging.config.class=org.apache.reef.util.logging.Config");
            }

            arguments.Add("-cp");
            arguments.Add(GetClientClasspath());
            arguments.Add(javaClassName);
            return(string.Join(" ", arguments.Concat(parameters)));
        }
Esempio n. 3
0
        /// <summary>
        /// Launch a java class in ClientConstants.ClientJarFilePrefix with provided parameters.
        /// </summary>
        /// <param name="javaLogLevel"></param>
        /// <param name="javaClassName"></param>
        /// <param name="parameters"></param>
        public Task LaunchAsync(JavaLoggingSetting javaLogLevel, string javaClassName, params string[] parameters)
        {
            var startInfo = new ProcessStartInfo
            {
                Arguments = AssembleArguments(javaLogLevel, javaClassName, parameters),
                FileName = GetJavaCommand(),
                UseShellExecute = false,
                RedirectStandardOutput = true,
                RedirectStandardError = true,
            };

            var msg = string.Format(CultureInfo.CurrentCulture, "Launch Java with command: {0} {1}",
                startInfo.FileName, startInfo.Arguments);
            Logger.Log(Level.Info, msg);

            var process = Process.Start(startInfo);
            var processExitTracker = new TaskCompletionSource<bool>();
            if (process != null)
            {
                process.EnableRaisingEvents = true;
                process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e)
                {
                    if (!string.IsNullOrWhiteSpace(e.Data))
                    {
                        Logger.Log(Level.Info, e.Data);
                    }
                };
                process.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e)
                {
                    if (!string.IsNullOrWhiteSpace(e.Data))
                    {
                        Logger.Log(Level.Error, e.Data);
                    }
                };
                process.BeginErrorReadLine();
                process.BeginOutputReadLine();
                process.Exited += (sender, args) => { processExitTracker.SetResult(process.ExitCode == 0); };
            }
            else
            {
                processExitTracker.SetException(new Exception("Java client process didn't start."));
            }

            return processExitTracker.Task;
        }
Esempio n. 4
0
        internal JobParameters(
            string jobIdentifier, 
            int maxApplicationSubmissions, 
            int driverMemory,
            string stdoutFilePath,
            string stderrFilePath,
            JavaLoggingSetting logSetting)
        {
            _jobIdentifier = jobIdentifier;
            _maxApplicationSubmissions = maxApplicationSubmissions;
            _driverMemory = driverMemory;
            
            _stdoutFilePath = string.IsNullOrWhiteSpace(stdoutFilePath) ? 
                Optional<string>.Empty() : Optional<string>.Of(stdoutFilePath);

            _stderrFilePath = string.IsNullOrWhiteSpace(stderrFilePath) ?
                Optional<string>.Empty() : Optional<string>.Of(stderrFilePath);

            _logSetting = logSetting;
        }
Esempio n. 5
0
        internal JobParameters(
            string jobIdentifier,
            int maxApplicationSubmissions,
            int driverMemory,
            string stdoutFilePath,
            string stderrFilePath,
            JavaLoggingSetting logSetting)
        {
            _jobIdentifier             = jobIdentifier;
            _maxApplicationSubmissions = maxApplicationSubmissions;
            _driverMemory = driverMemory;

            _stdoutFilePath = string.IsNullOrWhiteSpace(stdoutFilePath) ?
                              Optional <string> .Empty() : Optional <string> .Of(stdoutFilePath);

            _stderrFilePath = string.IsNullOrWhiteSpace(stderrFilePath) ?
                              Optional <string> .Empty() : Optional <string> .Of(stderrFilePath);

            _logSetting = logSetting;
        }
 protected void TestRun(HashSet<string> appDlls, IConfiguration driverBridgeConfig, bool runOnYarn = false, JavaLoggingSetting javaLogSettings = JavaLoggingSetting.INFO)
 {
     ClrClientHelper.Run(appDlls, driverBridgeConfig, new DriverSubmissionSettings() { RunOnYarn = runOnYarn, JavaLogLevel = javaLogSettings }, _reefJar, _runCommand, _clrFolder, _className);
 }
Esempio n. 7
0
 public JobRequestBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel)
 {
     _jobParametersBuilder.SetJavaLogLevel(javaLogLevel);
     return(this);
 }
 /// <summary>
 /// Sets the Java Log Level.
 /// </summary>
 public JobParametersBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel)
 {
     _javaLogLevel = javaLogLevel;
     return(this);
 }
Esempio n. 9
0
 public JobRequestBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel)
 {
     _jobParametersBuilder.SetJavaLogLevel(javaLogLevel);
     return this;
 }
Esempio n. 10
0
 protected void TestRun(HashSet <string> appDlls, IConfiguration driverBridgeConfig, bool runOnYarn = false, JavaLoggingSetting javaLogSettings = JavaLoggingSetting.INFO)
 {
     ClrClientHelper.Run(appDlls, driverBridgeConfig, new DriverSubmissionSettings()
     {
         RunOnYarn = runOnYarn, JavaLogLevel = javaLogSettings
     }, _reefJar, _runCommand, _clrFolder, _className);
 }
Esempio n. 11
0
        /// <summary>
        /// Assembles the command line arguments. Used by LaunchAsync()
        /// </summary>
        /// <param name="javaLogLevel"></param>
        /// <param name="javaClassName"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private string AssembleArguments(JavaLoggingSetting javaLogLevel, string javaClassName, params string[] parameters)
        {
            IList<string> arguments = new List<string>();

            if (javaLogLevel == JavaLoggingSetting.Verbose)
            {
                arguments.Add("-Djava.util.logging.config.class=org.apache.reef.util.logging.Config");
            }

            arguments.Add("-cp");
            arguments.Add(GetClientClasspath());
            arguments.Add(javaClassName);
            foreach (var parameter in parameters)
            {
                arguments.Add(parameter);
            }
            return string.Join(" ", arguments);
        }
Esempio n. 12
0
 /// <summary>
 /// Sets the Java Log Level.
 /// </summary>
 public JobParametersBuilder SetJavaLogLevel(JavaLoggingSetting javaLogLevel)
 {
     _javaLogLevel = javaLogLevel;
     return this;
 }