Exemple #1
0
        /// <summary>
        /// Creates the <see cref="SubscriberBase"/> class.
        /// </summary>
        /// <param name="subscriptionToken">The subscription token</param>
        /// <param name="synchronizationContext">The synchronization context</param>
        public SubscriberBase(SubscriptionToken subscriptionToken, SynchronizationContext synchronizationContext)
        {
            if (subscriptionToken == null)
            {
                throw new System.ArgumentNullException(nameof(subscriptionToken));
            }

            this.executionStrategy      = ExecutionStrategyType.PublisherThread;
            this.subscriptionToken      = subscriptionToken;
            this.synchronizationContext = synchronizationContext;
        }
        public static ICompiler CreateCompiler(
            CompilerType compilerType,
            ExecutionStrategyType type = ExecutionStrategyType.DoNothing)
        {
            switch (compilerType)
            {
            case CompilerType.None:
                return(null);

            case CompilerType.CSharp:
                return(new CSharpCompiler(Settings.CSharpCompilerProcessExitTimeOutMultiplier));

            case CompilerType.CSharpDotNetCore:
                return(new CSharpDotNetCoreCompiler(
                           Settings.CSharpDotNetCoreCompilerProcessExitTimeOutMultiplier,
                           Settings.CSharpDotNetCoreCompilerPath(type),
                           Settings.DotNetCoreSharedAssembliesPath(type)));

            case CompilerType.CPlusPlusGcc:
                return(new CPlusPlusCompiler(Settings.CPlusPlusCompilerProcessExitTimeOutMultiplier));

            case CompilerType.MsBuild:
                return(new MsBuildCompiler(Settings.MsBuildCompilerProcessExitTimeOutMultiplier));

            case CompilerType.Java:
                return(new JavaCompiler(Settings.JavaCompilerProcessExitTimeOutMultiplier));

            case CompilerType.JavaZip:
                return(new JavaZipCompiler(Settings.JavaZipCompilerProcessExitTimeOutMultiplier));

            case CompilerType.JavaInPlaceCompiler:
                return(new JavaInPlaceFolderCompiler(Settings.JavaInPlaceCompilerProcessExitTimeOutMultiplier));

            case CompilerType.MsBuildLibrary:
                return(new MsBuildLibraryCompiler(Settings.MsBuildLibraryCompilerProcessExitTimeOutMultiplier));

            case CompilerType.CPlusPlusZip:
                return(new CPlusPlusZipCompiler(Settings.CPlusPlusZipCompilerProcessExitTimeOutMultiplier));

            case CompilerType.DotNetCompiler:
                return(new DotNetCompiler(Settings.DotNetCompilerProcessExitTimeOutMultiplier));

            case CompilerType.GolangCompiler:
                return(new GolangCompiler(Settings.GolangCompilerProcessExitTimeOutMultiplier));

            case CompilerType.SolidityCompiler:
                return(new SolidityCompiler(Settings.SolidityCompilerProcessExitTimeOutMultiplier));

            default:
                throw new ArgumentException("Unsupported compiler.");
            }
        }
        public static string GetFileExtension(this ExecutionStrategyType executionStrategyType)
        {
            switch (executionStrategyType)
            {
            case ExecutionStrategyType.CompileExecuteAndCheck:
                return(null);    // The file extension depends on the compiler.

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                return("js");

            default:
                return(null);
            }
        }
Exemple #4
0
        private IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type)
        {
            IExecutionStrategy executionStrategy;

            switch (type)
            {
            case ExecutionStrategyType.CompileExecuteAndCheck:
                executionStrategy = new CompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(Settings.NodeJsExecutablePath);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(executionStrategy);
        }
        private IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type)
        {
            IExecutionStrategy executionStrategy;

            switch (type)
            {
            case ExecutionStrategyType.CompileExecuteAndCheck:
                executionStrategy = new CompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(Settings.NodeJsExecutablePath);
                break;

            case ExecutionStrategyType.JavaPreprocessCompileExecuteAndCheck:
                executionStrategy = new JavaPreprocessCompileExecuteAndCheckExecutionStrategy(Settings.JavaExecutablePath, GetCompilerPath);
                break;

            case ExecutionStrategyType.PhpCgiExecuteAndCheck:
                executionStrategy = new PhpCgiExecuteAndCheckExecutionStrategy(Settings.PhpCgiExecutablePath);
                break;

            case ExecutionStrategyType.PhpCliExecuteAndCheck:
                executionStrategy = new PhpCliExecuteAndCheckExecutionStrategy(Settings.PhpCliExecutablePath);
                break;

            case ExecutionStrategyType.DoNothing:
                executionStrategy = new DoNothingExecutionStrategy();
                break;

            case ExecutionStrategyType.RemoteExecution:
                executionStrategy = new RemoteExecutionStrategy();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(executionStrategy);
        }
 /// <summary>
 /// Allows to change the executionstrategy.
 /// </summary>
 /// <param name="executionStrategy">The execution strategy</param>
 /// <returns>The subscriber options</returns>
 public SubscriberOptions <TPayload> WithExecutionStrategy(ExecutionStrategyType executionStrategy)
 {
     subscriber.ExecutionStrategy = executionStrategy;
     return(this);
 }
        private IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type)
        {
            IExecutionStrategy executionStrategy;
            switch (type)
            {
                case ExecutionStrategyType.CompileExecuteAndCheck:
                    executionStrategy = new CompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                    break;
                case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                    executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(Settings.NodeJsExecutablePath);
                    break;
                case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunUnitTestsWithMocha:
                    executionStrategy = new NodeJsPreprocessExecuteAndRunUnitTestsWithMochaExecutionStrategy(
                        Settings.NodeJsExecutablePath,
                        Settings.MochaModulePath,
                        Settings.ChaiModulePath);
                    break;
                case ExecutionStrategyType.IoJsPreprocessExecuteAndRunJsDomUnitTests:
                    executionStrategy = new IoJsPreprocessExecuteAndRunJsDomUnitTestsExecutionStrategy(
                        Settings.IoJsExecutablePath,
                        Settings.MochaModulePath,
                        Settings.ChaiModulePath,
                        Settings.JsDomModulePath,
                        Settings.JQueryModulePath,
                        Settings.HandlebarsModulePath);
                    break;
                case ExecutionStrategyType.JavaPreprocessCompileExecuteAndCheck:
                    executionStrategy = new JavaPreprocessCompileExecuteAndCheckExecutionStrategy(Settings.JavaExecutablePath, GetCompilerPath);
                    break;
                case ExecutionStrategyType.PhpCgiExecuteAndCheck:
                    executionStrategy = new PhpCgiExecuteAndCheckExecutionStrategy(Settings.PhpCgiExecutablePath);
                    break;
                case ExecutionStrategyType.PhpCliExecuteAndCheck:
                    executionStrategy = new PhpCliExecuteAndCheckExecutionStrategy(Settings.PhpCliExecutablePath);
                    break;
                case ExecutionStrategyType.DoNothing:
                    executionStrategy = new DoNothingExecutionStrategy();
                    break;
                case ExecutionStrategyType.RemoteExecution:
                    executionStrategy = new RemoteExecutionStrategy();
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            return executionStrategy;
        }
Exemple #8
0
        public static IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type, int portNumber)
        {
            IExecutionStrategy executionStrategy;
            var tasksService                  = new TasksService();
            var processExecutorFactory        = new ProcessExecutorFactory(tasksService);
            var submissionProcessorIdentifier = portNumber.ToString();

            switch (type)
            {
            case ExecutionStrategyType.CompileExecuteAndCheck:
                executionStrategy = new CompileExecuteAndCheckExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.MsBuildBaseTimeUsedInMilliseconds,
                    Settings.MsBuildBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.CPlusPlusCompileExecuteAndCheckExecutionStrategy:
                executionStrategy = new CPlusPlusCompileExecuteAndCheckExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.GPlusPlusBaseTimeUsedInMilliseconds,
                    Settings.GPlusPlusBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.CPlusPlusZipFileExecutionStrategy:
                executionStrategy = new CPlusPlusZipFileExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.GPlusPlusBaseTimeUsedInMilliseconds,
                    Settings.GPlusPlusBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.DotNetCoreCompileExecuteAndCheck:
                executionStrategy = new DotNetCoreCompileExecuteAndCheckExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.DotNetCoreRuntimeVersion,
                    Settings.DotNetCscBaseTimeUsedInMilliseconds,
                    Settings.DotNetCscBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.DotNetCoreTestRunner:
                executionStrategy = new DotNetCoreTestRunnerExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.DotNetCliBaseTimeUsedInMilliseconds,
                    Settings.DotNetCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.DotNetCoreUnitTestsExecutionStrategy:
                executionStrategy = new DotNetCoreUnitTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.DotNetCliBaseTimeUsedInMilliseconds,
                    Settings.DotNetCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.CSharpUnitTestsExecutionStrategy:
                executionStrategy = new CSharpUnitTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.NUnitConsoleRunnerPath,
                    Settings.MsBuildBaseTimeUsedInMilliseconds,
                    Settings.MsBuildBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.CSharpProjectTestsExecutionStrategy:
                executionStrategy = new CSharpProjectTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.NUnitConsoleRunnerPath,
                    Settings.MsBuildBaseTimeUsedInMilliseconds,
                    Settings.MsBuildBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.CSharpPerformanceProjectTestsExecutionStrategy:
                executionStrategy = new CSharpPerformanceProjectTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.NUnitConsoleRunnerPath,
                    Settings.DotNetCliBaseTimeUsedInMilliseconds,
                    Settings.DotNetCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.CSharpAspProjectTestsExecutionStrategy:
                executionStrategy = new CSharpAspProjectTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.NUnitConsoleRunnerPath,
                    Settings.MsBuildBaseTimeUsedInMilliseconds,
                    Settings.MsBuildBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.DotNetCoreProjectExecutionStrategy:
                executionStrategy = new DotNetCoreProjectExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.DotNetCliBaseTimeUsedInMilliseconds,
                    Settings.DotNetCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.DotNetCoreProjectTestsExecutionStrategy:
                executionStrategy = new DotNetCoreProjectTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.DotNetCliBaseTimeUsedInMilliseconds,
                    Settings.DotNetCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.RubyExecutionStrategy:
                executionStrategy = new RubyExecutionStrategy(
                    processExecutorFactory,
                    Settings.RubyPath,
                    Settings.RubyBaseTimeUsedInMilliseconds,
                    Settings.RubyBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.JavaPreprocessCompileExecuteAndCheck:
                executionStrategy = new JavaPreprocessCompileExecuteAndCheckExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.JavaExecutablePath,
                    Settings.JavaLibsPath,
                    Settings.JavaBaseTimeUsedInMilliseconds,
                    Settings.JavaBaseMemoryUsedInBytes,
                    Settings.JavaBaseUpdateTimeOffsetInMilliseconds);
                break;

            case ExecutionStrategyType.JavaZipFileCompileExecuteAndCheck:
                executionStrategy = new JavaZipFileCompileExecuteAndCheckExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.JavaExecutablePath,
                    Settings.JavaLibsPath,
                    Settings.JavaBaseTimeUsedInMilliseconds,
                    Settings.JavaBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.JavaProjectTestsExecutionStrategy:
                executionStrategy = new JavaProjectTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.JavaExecutablePath,
                    Settings.JavaLibsPath,
                    Settings.JavaBaseTimeUsedInMilliseconds,
                    Settings.JavaBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.JavaUnitTestsExecutionStrategy:
                executionStrategy = new JavaUnitTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.JavaExecutablePath,
                    Settings.JavaLibsPath,
                    Settings.JavaBaseTimeUsedInMilliseconds,
                    Settings.JavaBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.JavaSpringAndHibernateProjectExecutionStrategy:
                executionStrategy = new JavaSpringAndHibernateProjectExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.JavaExecutablePath,
                    Settings.JavaLibsPath,
                    Settings.MavenPath,
                    Settings.JavaBaseTimeUsedInMilliseconds,
                    Settings.JavaBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds * 2,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunUnitTestsWithMocha:
                executionStrategy = new NodeJsPreprocessExecuteAndRunUnitTestsWithMochaExecutionStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsZipPreprocessExecuteAndRunUnitTestsWithDomAndMocha:
                executionStrategy = new NodeJsZipPreprocessExecuteAndRunUnitTestsWithDomAndMochaExecutionStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.BrowserifyModulePath,
                    Settings.BabelifyModulePath,
                    Settings.Es2015ImportPluginPath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunJsDomUnitTests:
                executionStrategy = new NodeJsPreprocessExecuteAndRunJsDomUnitTestsExecutionStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunCodeAgainstUnitTestsWithMochaExecutionStrategy:
                executionStrategy = new NodeJsPreprocessExecuteAndRunCodeAgainstUnitTestsWithMochaExecutionStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsExecuteAndRunAsyncJsDomTestsWithReactExecutionStrategy:
                executionStrategy = new NodeJsExecuteAndRunAsyncJsDomTestsWithReactExecutionStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonJsDomModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.BabelCoreModulePath,
                    Settings.ReactJsxPluginPath,
                    Settings.ReactModulePath,
                    Settings.ReactDomModulePath,
                    Settings.NodeFetchModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsZipExecuteHtmlAndCssStrategy:
                executionStrategy = new NodeJsZipExecuteHtmlAndCssStrategy(
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.BootstrapModulePath,
                    Settings.BootstrapCssPath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PythonExecuteAndCheck:
                executionStrategy = new PythonExecuteAndCheckExecutionStrategy(
                    processExecutorFactory,
                    Settings.PythonExecutablePath,
                    Settings.PythonBaseTimeUsedInMilliseconds,
                    Settings.PythonBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PythonUnitTests:
                executionStrategy = new PythonUnitTestsExecutionStrategy(
                    processExecutorFactory,
                    Settings.PythonExecutablePath,
                    Settings.PythonBaseTimeUsedInMilliseconds,
                    Settings.PythonBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PythonCodeExecuteAgainstUnitTests:
                executionStrategy = new PythonCodeExecuteAgainstUnitTestsExecutionStrategy(
                    processExecutorFactory,
                    Settings.PythonExecutablePath,
                    Settings.PythonBaseTimeUsedInMilliseconds,
                    Settings.PythonBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PythonProjectTests:
                executionStrategy = new PythonProjectTestsExecutionStrategy(
                    processExecutorFactory,
                    Settings.PythonExecutablePath,
                    Settings.PythonBaseTimeUsedInMilliseconds,
                    Settings.PythonBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PythonProjectUnitTests:
                executionStrategy = new PythonProjectUnitTestsExecutionStrategy(
                    processExecutorFactory,
                    Settings.PythonExecutablePath,
                    Settings.PythonBaseTimeUsedInMilliseconds,
                    Settings.PythonBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PhpProjectExecutionStrategy:
                executionStrategy = new PhpProjectExecutionStrategy(
                    processExecutorFactory,
                    Settings.PhpCliExecutablePath,
                    Settings.PhpCliBaseTimeUsedInMilliseconds,
                    Settings.PhpCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PhpProjectWithDbExecutionStrategy:
                executionStrategy = new PhpProjectWithDbExecutionStrategy(
                    processExecutorFactory,
                    Settings.PhpCliExecutablePath,
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword,
                    Settings.PhpCliBaseTimeUsedInMilliseconds,
                    Settings.PhpCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PhpCgiExecuteAndCheck:
                executionStrategy = new PhpCgiExecuteAndCheckExecutionStrategy(
                    processExecutorFactory,
                    Settings.PhpCgiExecutablePath,
                    Settings.PhpCgiBaseTimeUsedInMilliseconds,
                    Settings.PhpCgiBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PhpCliExecuteAndCheck:
                executionStrategy = new PhpCliExecuteAndCheckExecutionStrategy(
                    processExecutorFactory,
                    Settings.PhpCliExecutablePath,
                    Settings.PhpCliBaseTimeUsedInMilliseconds,
                    Settings.PhpCliBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.SolidityCompileDeployAndRunUnitTestsExecutionStrategy:
                executionStrategy = new SolidityCompileDeployAndRunUnitTestsExecutionStrategy(
                    GetCompilerPath,
                    processExecutorFactory,
                    Settings.NodeJsExecutablePath,
                    Settings.GanacheCliNodeExecutablePath,
                    Settings.TruffleCliNodeExecutablePath,
                    portNumber,
                    Settings.SolidityBaseTimeUsedInMilliseconds,
                    Settings.SolidityBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.SqlServerLocalDbPrepareDatabaseAndRunQueries:
                executionStrategy = new SqlServerLocalDbPrepareDatabaseAndRunQueriesExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword);
                break;

            case ExecutionStrategyType.SqlServerLocalDbRunQueriesAndCheckDatabase:
                executionStrategy = new SqlServerLocalDbRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword);
                break;

            case ExecutionStrategyType.SqlServerLocalDbRunSkeletonRunQueriesAndCheckDatabase:
                executionStrategy = new SqlServerLocalDbRunSkeletonRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword);
                break;

            case ExecutionStrategyType.SqlServerSingleDatabasePrepareDatabaseAndRunQueries:
                executionStrategy = new SqlServerSingleDatabasePrepareDatabaseAndRunQueriesExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword,
                    submissionProcessorIdentifier);
                break;

            case ExecutionStrategyType.SqlServerSingleDatabaseRunQueriesAndCheckDatabase:
                executionStrategy = new SqlServerSingleDatabaseRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword,
                    submissionProcessorIdentifier);
                break;

            case ExecutionStrategyType.SqlServerSingleDatabaseRunSkeletonRunQueriesAndCheckDatabase:
                executionStrategy = new SqlServerSingleDatabaseRunSkeletonRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword,
                    submissionProcessorIdentifier);
                break;

            case ExecutionStrategyType.MySqlPrepareDatabaseAndRunQueries:
                executionStrategy = new MySqlPrepareDatabaseAndRunQueriesExecutionStrategy(
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.MySqlRunQueriesAndCheckDatabase:
                executionStrategy = new MySqlRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.MySqlRunSkeletonRunQueriesAndCheckDatabase:
                executionStrategy = new MySqlRunSkeletonRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.DoNothing:
                executionStrategy = new DoNothingExecutionStrategy();
                break;

            case ExecutionStrategyType.RemoteExecution:
                executionStrategy = new RemoteExecutionStrategy();
                break;

            case ExecutionStrategyType.CheckOnly:
                executionStrategy = new CheckOnlyExecutionStrategy(processExecutorFactory, 0, 0);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(executionStrategy);
        }
        private IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type)
        {
            IExecutionStrategy executionStrategy;
            switch (type)
            {
                case ExecutionStrategyType.CompileExecuteAndCheck:
                    executionStrategy = new CompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                    break;
                case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                    executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(Settings.NodeJsExecutablePath);
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            return executionStrategy;
        }
Exemple #10
0
        private IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type)
        {
            IExecutionStrategy executionStrategy;

            switch (type)
            {
            case ExecutionStrategyType.CompileExecuteAndCheck:
                executionStrategy = new CompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.CPlusPlusCompileExecuteAndCheckExecutionStrategy:
                executionStrategy = new CPlusPlusCompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.CPlusPlusZipFileExecutionStrategy:
                executionStrategy = new CPlusPlusZipFileExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.DotNetCoreTestRunner:
                executionStrategy = new DotNetCoreTestRunnerExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.CSharpUnitTestsExecutionStrategy:
                executionStrategy = new CSharpUnitTestsExecutionStrategy(Settings.NUnitConsoleRunnerPath, GetCompilerPath);
                break;

            case ExecutionStrategyType.CSharpProjectTestsExecutionStrategy:
                executionStrategy = new CSharpProjectTestsExecutionStrategy(Settings.NUnitConsoleRunnerPath, GetCompilerPath);
                break;

            case ExecutionStrategyType.CSharpPerformanceProjectTestsExecutionStrategy:
                executionStrategy = new CSharpPerformanceProjectTestsExecutionStrategy(Settings.NUnitConsoleRunnerPath, GetCompilerPath);
                break;

            case ExecutionStrategyType.CSharpAspProjectTestsExecutionStrategy:
                executionStrategy = new CSharpAspProjectTestsExecutionStrategy(Settings.NUnitConsoleRunnerPath, GetCompilerPath);
                break;

            case ExecutionStrategyType.DotNetCoreProjectExecutionStrategy:
                executionStrategy = new DotNetCoreProjectExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.DotNetCoreProjectTestsExecutionStrategy:
                executionStrategy = new DotNetCoreProjectTestsExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.RubyExecutionStrategy:
                executionStrategy = new RubyExecutionStrategy(Settings.RubyPath);
                break;

            case ExecutionStrategyType.JavaPreprocessCompileExecuteAndCheck:
                executionStrategy = new JavaPreprocessCompileExecuteAndCheckExecutionStrategy(
                    Settings.JavaExecutablePath,
                    GetCompilerPath);
                break;

            case ExecutionStrategyType.JavaZipFileCompileExecuteAndCheck:
                executionStrategy = new JavaZipFileCompileExecuteAndCheckExecutionStrategy(
                    Settings.JavaExecutablePath,
                    GetCompilerPath);
                break;

            case ExecutionStrategyType.JavaProjectTestsExecutionStrategy:
                executionStrategy = new JavaProjectTestsExecutionStrategy(
                    Settings.JavaExecutablePath,
                    GetCompilerPath,
                    Settings.JavaLibsPath);
                break;

            case ExecutionStrategyType.JavaUnitTestsExecutionStrategy:
                executionStrategy = new JavaUnitTestsExecutionStrategy(
                    Settings.JavaExecutablePath,
                    GetCompilerPath,
                    Settings.JavaLibsPath);
                break;

            case ExecutionStrategyType.JavaSpringAndHibernateProjectExecutionStrategy:
                executionStrategy = new JavaSpringAndHibernateProjectExecutionStrategy(
                    Settings.JavaExecutablePath,
                    GetCompilerPath,
                    Settings.JavaLibsPath,
                    Settings.MavenPath);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds * 2,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunUnitTestsWithMocha:
                executionStrategy = new NodeJsPreprocessExecuteAndRunUnitTestsWithMochaExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsZipPreprocessExecuteAndRunUnitTestsWithDomAndMocha:
                executionStrategy = new NodeJsZipPreprocessExecuteAndRunUnitTestsWithDomAndMochaExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.BrowserifyModulePath,
                    Settings.BabelifyModulePath,
                    Settings.Es2015ImportPluginPath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunJsDomUnitTests:
                executionStrategy = new NodeJsPreprocessExecuteAndRunJsDomUnitTestsExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunCodeAgainstUnitTestsWithMochaExecutionStrategy:
                executionStrategy = new NodeJsPreprocessExecuteAndRunCodeAgainstUnitTestsWithMochaExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsExecuteAndRunAsyncJsDomTestsWithReactExecutionStrategy:
                executionStrategy = new NodeJsExecuteAndRunAsyncJsDomTestsWithReactExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonJsDomModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.BabelCoreModulePath,
                    Settings.ReactJsxPluginPath,
                    Settings.ReactModulePath,
                    Settings.ReactDomModulePath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.NodeJsZipExecuteHtmlAndCssStrategy:
                executionStrategy = new NodeJsZipExecuteHtmlAndCssStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.UnderscoreModulePath,
                    Settings.BootstrapModulePath,
                    Settings.BootstrapCssPath,
                    Settings.NodeJsBaseTimeUsedInMilliseconds,
                    Settings.NodeJsBaseMemoryUsedInBytes);
                break;

            case ExecutionStrategyType.PythonExecuteAndCheck:
                executionStrategy = new PythonExecuteAndCheckExecutionStrategy(Settings.PythonExecutablePath);
                break;

            case ExecutionStrategyType.PhpProjectExecutionStrategy:
                executionStrategy = new PhpProjectExecutionStrategy(Settings.PhpCliExecutablePath);
                break;

            case ExecutionStrategyType.PhpProjectWithDbExecutionStrategy:
                executionStrategy = new PhpProjectWithDbExecutionStrategy(
                    Settings.PhpCliExecutablePath,
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.PhpCgiExecuteAndCheck:
                executionStrategy = new PhpCgiExecuteAndCheckExecutionStrategy(Settings.PhpCgiExecutablePath);
                break;

            case ExecutionStrategyType.PhpCliExecuteAndCheck:
                executionStrategy = new PhpCliExecuteAndCheckExecutionStrategy(Settings.PhpCliExecutablePath);
                break;

            case ExecutionStrategyType.SqlServerLocalDbPrepareDatabaseAndRunQueries:
                executionStrategy = new SqlServerLocalDbPrepareDatabaseAndRunQueriesExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword);
                break;

            case ExecutionStrategyType.SqlServerLocalDbRunQueriesAndCheckDatabase:
                executionStrategy = new SqlServerLocalDbRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword);
                break;

            case ExecutionStrategyType.SqlServerLocalDbRunSkeletonRunQueriesAndCheckDatabase:
                executionStrategy = new SqlServerLocalDbRunSkeletonRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.SqlServerLocalDbMasterDbConnectionString,
                    Settings.SqlServerLocalDbRestrictedUserId,
                    Settings.SqlServerLocalDbRestrictedUserPassword);
                break;

            case ExecutionStrategyType.MySqlPrepareDatabaseAndRunQueries:
                executionStrategy = new MySqlPrepareDatabaseAndRunQueriesExecutionStrategy(
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.MySqlRunQueriesAndCheckDatabase:
                executionStrategy = new MySqlRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.MySqlRunSkeletonRunQueriesAndCheckDatabase:
                executionStrategy = new MySqlRunSkeletonRunQueriesAndCheckDatabaseExecutionStrategy(
                    Settings.MySqlSysDbConnectionString,
                    Settings.MySqlRestrictedUserId,
                    Settings.MySqlRestrictedUserPassword);
                break;

            case ExecutionStrategyType.DoNothing:
                executionStrategy = new DoNothingExecutionStrategy();
                break;

            case ExecutionStrategyType.RemoteExecution:
                executionStrategy = new RemoteExecutionStrategy();
                break;

            case ExecutionStrategyType.CheckOnly:
                executionStrategy = new CheckOnlyExecutionStrategy();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(executionStrategy);
        }
        private IExecutionStrategy CreateExecutionStrategy(ExecutionStrategyType type)
        {
            IExecutionStrategy executionStrategy;

            switch (type)
            {
            case ExecutionStrategyType.CompileExecuteAndCheck:
                executionStrategy = new CompileExecuteAndCheckExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.CSharpTestRunner:
                executionStrategy = new CSharpTestRunnerExecutionStrategy(GetCompilerPath);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndCheck:
                executionStrategy = new NodeJsPreprocessExecuteAndCheckExecutionStrategy(Settings.NodeJsExecutablePath);
                break;

            case ExecutionStrategyType.NodeJsPreprocessExecuteAndRunUnitTestsWithMocha:
                executionStrategy = new NodeJsPreprocessExecuteAndRunUnitTestsWithMochaExecutionStrategy(
                    Settings.NodeJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath);
                break;

            case ExecutionStrategyType.IoJsPreprocessExecuteAndRunJsDomUnitTests:
                executionStrategy = new IoJsPreprocessExecuteAndRunJsDomUnitTestsExecutionStrategy(
                    Settings.IoJsExecutablePath,
                    Settings.MochaModulePath,
                    Settings.ChaiModulePath,
                    Settings.JsDomModulePath,
                    Settings.JQueryModulePath,
                    Settings.HandlebarsModulePath,
                    Settings.SinonModulePath,
                    Settings.SinonChaiModulePath,
                    Settings.UnderscoreModulePath);
                break;

            case ExecutionStrategyType.JavaPreprocessCompileExecuteAndCheck:
                executionStrategy = new JavaPreprocessCompileExecuteAndCheckExecutionStrategy(Settings.JavaExecutablePath, GetCompilerPath);
                break;

            case ExecutionStrategyType.PhpCgiExecuteAndCheck:
                executionStrategy = new PhpCgiExecuteAndCheckExecutionStrategy(Settings.PhpCgiExecutablePath);
                break;

            case ExecutionStrategyType.PhpCliExecuteAndCheck:
                executionStrategy = new PhpCliExecuteAndCheckExecutionStrategy(Settings.PhpCliExecutablePath);
                break;

            case ExecutionStrategyType.DoNothing:
                executionStrategy = new DoNothingExecutionStrategy();
                break;

            case ExecutionStrategyType.RemoteExecution:
                executionStrategy = new RemoteExecutionStrategy();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(executionStrategy);
        }
Exemple #12
0
 public static string MicrosoftEntityFrameworkCoreProxiesVersion(ExecutionStrategyType type)
 => type == ExecutionStrategyType.DotNetCoreProjectTestsExecutionStrategy
         ? "3.1.4"
         : type == ExecutionStrategyType.DotNetCore5ProjectTestsExecutionStrategy
             ? "5.0.13"
             : "6.0.1";
Exemple #13
0
 public static string DotNetCoreTargetFrameworkName(ExecutionStrategyType type)
 => type == ExecutionStrategyType.DotNetCoreProjectTestsExecutionStrategy
         ? "netcoreapp3.1"
         : type == ExecutionStrategyType.DotNetCore5ProjectTestsExecutionStrategy
             ? "net5.0"
             : "net6.0";
Exemple #14
0
 public static string CSharpDotNetCoreCompilerPath(ExecutionStrategyType type)
 => type == ExecutionStrategyType.DotNetCoreCompileExecuteAndCheck
         ? SettingsHelper.GetSetting("CSharpDotNet3CoreCompilerPath")
         : type == ExecutionStrategyType.DotNetCore5CompileExecuteAndCheck
             ? SettingsHelper.GetSetting("CSharpDotNetCore5CompilerPath")
             : SettingsHelper.GetSetting("CSharpDotNetCore6CompilerPath");
Exemple #15
0
 public static string DotNetCoreSharedAssembliesPath(ExecutionStrategyType type)
 => type == ExecutionStrategyType.DotNetCoreCompileExecuteAndCheck
         ? SettingsHelper.GetSetting("DotNetCore3SharedAssembliesPath")
         : type == ExecutionStrategyType.DotNetCore5CompileExecuteAndCheck
             ? SettingsHelper.GetSetting("DotNetCore5SharedAssembliesPath")
             : SettingsHelper.GetSetting("DotNetCore6SharedAssembliesPath");
Exemple #16
0
 public static string DotNetCoreRuntimeVersion(ExecutionStrategyType type)
 => type == ExecutionStrategyType.DotNetCoreCompileExecuteAndCheck
         ? SettingsHelper.GetSetting("DotNetCore3RuntimeVersion")
         : type == ExecutionStrategyType.DotNetCore5CompileExecuteAndCheck
             ? SettingsHelper.GetSetting("DotNetCore5RuntimeVersion")
             : SettingsHelper.GetSetting("DotNetCore6RuntimeVersion");