public void TryConfigureArguments_ReturnsTrue() { var provider = new GenericWorkerProvider(new WorkerDescription(), new List <string>()); var args = new ArgumentsDescription(); Assert.True(provider.TryConfigureArguments(args, null, null)); }
public IEnumerable <WorkerConfig> GetConfigs(IEnumerable <IWorkerProvider> providers) { foreach (var provider in providers) { var description = provider.GetDescription(); var languageSection = _config.GetSection($"workers:{description.Language}"); // Can override the path we load from, or we use the default path from where we loaded the config var workerPath = languageSection.GetSection("path").Value ?? Path.Combine(provider.GetWorkerDirectoryPath(), description.DefaultWorkerPath); var arguments = new ArgumentsDescription() { ExecutablePath = description.DefaultExecutablePath, WorkerPath = workerPath }; if (provider.TryConfigureArguments(arguments, _config, _logger)) { yield return(new WorkerConfig() { Description = description, Arguments = arguments }); } else { _logger.LogTrace($"Could not configure language worker {description.Language}."); } } }
public IEnumerable <WorkerConfig> GetConfigs(IEnumerable <IWorkerProvider> providers) { foreach (var provider in providers) { var description = provider.GetDescription(); var languageSection = _config.GetSection($"workers:{description.Language}"); // get explicit worker path from config, or build relative path from default var workerPath = languageSection.GetSection("path").Value; if (string.IsNullOrEmpty(workerPath) && !string.IsNullOrEmpty(description.DefaultWorkerPath)) { workerPath = Path.Combine(_assemblyDir, "workers", description.Language.ToLower(), description.DefaultWorkerPath); } var arguments = new ArgumentsDescription() { ExecutablePath = description.DefaultExecutablePath, WorkerPath = workerPath }; if (provider.TryConfigureArguments(arguments, _config, _logger)) { yield return(new WorkerConfig() { Description = description, Arguments = arguments }); } else { _logger.LogError($"Could not configure language worker {description.Language}."); } } }
public bool TryConfigureArguments(ArgumentsDescription args, IConfiguration config, ILogger logger) { var options = new DefaultWorkerOptions(); config.GetSection("workers:node").Bind(options); if (options.TryGetDebugPort(out int debugPort)) { args.ExecutableArguments.Add($"--inspect={debugPort}"); } return(true); }
public void DisablesDebugIfNotConfigured() { var config = new ConfigurationBuilder().Build(); var provider = new NodeWorkerProvider(); var args = new ArgumentsDescription(); var result = provider.TryConfigureArguments(args, config, new TestLogger("test")); Assert.True(result); Assert.DoesNotContain(args.ExecutableArguments, (exeArgs) => exeArgs.Contains("--inspect")); }
public bool TryConfigureArguments(ArgumentsDescription args, IConfiguration config, ILogger logger) { var options = new DefaultWorkerOptions(); config.GetSection("workers:node").Bind(options); if (!string.IsNullOrWhiteSpace(options.Debug)) { args.ExecutableArguments.Add($"--inspect={options.Debug}"); } return(true); }
public void FailsIfNoJavaHome() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("workers:java:debug", "1000") }) .Build(); var provider = new JavaWorkerProvider(); var args = new ArgumentsDescription(); var result = provider.TryConfigureArguments(args, config, new TestLogger("test")); Assert.False(result); }
public void DisablesDebugIfNotConfigured() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("JAVA_HOME", "asdf"), }) .Build(); var provider = new JavaWorkerProvider(); var args = new ArgumentsDescription(); var result = provider.TryConfigureArguments(args, config, new TestLogger("test")); Assert.True(result); Assert.DoesNotContain(args.ExecutableArguments, (exeArg) => exeArg.Contains("address=")); }
public void SetsDebugAddress() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("workers:node:debug", "localhost:2020"), }) .Build(); var provider = new NodeWorkerProvider(); var args = new ArgumentsDescription(); var result = provider.TryConfigureArguments(args, config, new TestLogger("test")); Assert.True(result); Assert.Contains(args.ExecutableArguments, (exeArgs) => exeArgs.Contains("--inspect=localhost:2020")); }
public void SetsDebugAddress() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("JAVA_HOME", "asdf"), new KeyValuePair <string, string>("workers:java:debug", "localhost:1000") }) .Build(); var provider = new JavaWorkerProvider(); var args = new ArgumentsDescription(); var result = provider.TryConfigureArguments(args, config, new TestLogger("test")); Assert.True(result); Assert.Contains(args.ExecutableArguments, (exeArg) => exeArg.Contains("address=localhost:1000")); }
public void OverridesJavaHomeInAzure() { var config = new ConfigurationBuilder() .AddInMemoryCollection(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("JAVA_HOME", "d:/java/jdk1.7.0"), new KeyValuePair <string, string>("WEBSITE_INSTANCE_ID", "id"), }) .Build(); var provider = new JavaWorkerProvider(); var args = new ArgumentsDescription(); var result = provider.TryConfigureArguments(args, config, new TestLogger("test")); Assert.True(result); var exePath = Path.GetFullPath("d:/java/zulu8.23.0.3-jdk8.0.144-win_x64/bin/java"); Assert.Equal(exePath, args.ExecutablePath); }
public IEnumerable <WorkerConfig> GetConfigs(IEnumerable <IWorkerProvider> providers) { foreach (var provider in providers) { var description = provider.GetDescription(); var languageSection = _config.GetSection($"workers:{description.Language}"); // Resolve worker path // 1. If workers.{language}.path is set, use that explicitly // 2. If workers.path is set, use that as the base directory + language + default path // 3. Else, use the default workers directory // get explicit worker path from config, or build relative path from default var workerPath = languageSection.GetSection("path").Value; if (string.IsNullOrEmpty(workerPath)) { var baseWorkerPath = !string.IsNullOrEmpty(_config.GetSection("workers:path").Value) ? _config.GetSection("workers:path").Value : Path.Combine(_assemblyDir, "workers"); workerPath = Path.Combine(baseWorkerPath, description.Language.ToLower(), description.DefaultWorkerPath); } var arguments = new ArgumentsDescription() { ExecutablePath = description.DefaultExecutablePath, WorkerPath = workerPath }; if (provider.TryConfigureArguments(arguments, _config, _logger)) { yield return(new WorkerConfig() { Description = description, Arguments = arguments }); } else { _logger.LogError($"Could not configure language worker {description.Language}."); } } }
public bool TryConfigureArguments(ArgumentsDescription args, IConfiguration config, ILogger logger) { var options = new DefaultWorkerOptions(); config.GetSection("workers:java").Bind(options); var env = new JavaEnvironment(); config.Bind(env); if (string.IsNullOrEmpty(env.JAVA_HOME)) { logger.LogError("Unable to configure java worker. Could not find JAVA_HOME app setting."); return(false); } args.ExecutablePath = Path.GetFullPath(Path.Combine(env.ResolveJavaHome(), "bin", "java")); args.ExecutableArguments.Add("-jar"); if (options.TryGetDebugPort(out int debugPort)) { if (!env.HasJavaOpts) { var debugOpts = $"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address={debugPort}"; args.ExecutableArguments.Add(debugOpts); } else { logger.LogWarning("Both JAVA_OPTS and debug port settings found. Defaulting to JAVA_OPTS."); } } if (env.HasJavaOpts) { args.ExecutableArguments.Add(env.JAVA_OPTS); } return(true); }
public bool TryConfigureArguments(ArgumentsDescription args, IConfiguration config, ILogger logger) { args.ExecutableArguments.AddRange(_arguments); return(true); }
/// <summary> /// Initialises the action description. /// </summary> protected override void Initialise() { base.Initialise(); maArguments = new ArgumentsDescription(this); }
public bool TryConfigureArguments(ArgumentsDescription args, IConfiguration config, ILogger logger) { // make no modifications return(true); }