Пример #1
0
        private ExecuteProcessResult Bootstrap()
        {
            Submit submit = Settings.Submit;

            ExecuteProcessResult result = new ExecuteProcessResult();

            result.ExitCode = 0;
            result.Result   = ExitCode.Success;

            try
            {
                IFileSystem fileSystem = ServiceLocator.Instance.GetService <IFileSystem>();

                Assignment assignment = Settings.Assignment;

                string teamSubmitDirName = CreateTeamDirectory(Settings.Submit.Team.Id.ToString(), assignment);

                Settings.OutputPath  = teamSubmitDirName;
                Settings.SourcesPath = teamSubmitDirName;

                CopyFiles(assignment, submit, teamSubmitDirName);
            }
            catch (Exception ex)
            {
                result.Output = ex.Message;
                result.Result = ExitCode.Failure;
            }

            return(result);
        }
Пример #2
0
        protected virtual ExecuteProcessResult ExecuteProcess(ProcessStartInfo psi)
        {
            ExecuteProcessResult result = new ExecuteProcessResult();

            result.ExitCode = -99;

            try
            {
                psi.RedirectStandardOutput = true;
                psi.CreateNoWindow         = true;
                psi.UseShellExecute        = false;

                using (Process exeProcess = System.Diagnostics.Process.Start(psi))
                {
                    exeProcess.WaitForExit();
                    result.Output = exeProcess.StandardOutput.ReadToEnd();
                    exeProcess.WaitForExit();
                    result.ExitCode = exeProcess.ExitCode;
                }
            }
            catch
            {
            }

            return(result);
        }
Пример #3
0
        protected virtual ExecuteProcessResult ExecuteProcess(ProcessStartInfo psi)
        {
            ExecuteProcessResult result = new ExecuteProcessResult();
            result.ExitCode = -99;

            try
            {
                    psi.RedirectStandardOutput = true;
                    psi.CreateNoWindow = true;
                    psi.UseShellExecute = false;

                    using (Process exeProcess = System.Diagnostics.Process.Start(psi))
                    {
                        exeProcess.WaitForExit();
                        result.Output = exeProcess.StandardOutput.ReadToEnd();
                        exeProcess.WaitForExit();
                        result.ExitCode = exeProcess.ExitCode;
                    }
            }
            catch
            {
            }

            return result;
        }
Пример #4
0
        public void TestMethod1()
        {
            ProcessSettings settings = new ProcessSettings();

            BaseProcess process = new MoCSValidationProcess(settings);

            ExecuteProcessResult result = process.Process();
        }
Пример #5
0
        private ExecuteProcessResult CheckBusinessRules(string outputDllPath)
        {
            ExecuteProcessResult result = new ExecuteProcessResult();

            //Compilation is successfull. Now check businessrules.
            //check if the assembly is found;
            if (!FileSystem.FileExists(outputDllPath))
            {
                result.Result = ExitCode.Failure;
                result.Output = "compiled dll was not found.";
                return(result);
            }

            Type implementedClass = null;

            Assembly assembly = FileSystem.LoadAssembly(outputDllPath);

            //loop through the types in the assembly
            foreach (Type type in assembly.GetTypes())
            {
                //try to find the class that was implemented
                if (type.Name.Equals(Settings.Assignment.ClassNameToImplement))
                {
                    implementedClass = type;
                    break;
                }
            }

            //if the classToImplement cannot be found, return with an error
            if (implementedClass == null)
            {
                result.Result = ExitCode.Failure;
                result.Output = string.Format("The class to implement ({0}) is not found", Settings.Assignment.ClassNameToImplement);
                return(result);
            }

            //check to see if it implements the required interface...
            Type requiredInterface = implementedClass.GetInterface(Settings.Assignment.InterfaceNameToImplement);

            if (requiredInterface == null)
            {
                result.Result = ExitCode.Failure;
                result.Output = string.Format("The class to implement ({0}) does not implement the required interface {1}", Settings.Assignment.ClassNameToImplement, Settings.Assignment.InterfaceNameToImplement);
                return(result);
            }

            return(result);
        }
Пример #6
0
        private ExecuteProcessResult Start()
        {
            ExecuteProcessResult totalResult = new ExecuteProcessResult();

            foreach (BaseProcess process in _processes)
            {
                totalResult = process.Process();

                if (totalResult.Result == ExitCode.Failure)
                {
                    break;
                }
            }

            return(totalResult);
        }
Пример #7
0
        private ExecuteProcessResult Start()
        {
            ExecuteProcessResult totalResult = new ExecuteProcessResult();

            foreach (BaseProcess process in _processes)
            {
                totalResult = process.Process();

                if (totalResult.Result == ExitCode.Failure)
                {
                    break;
                }
            }

            return totalResult;
        }
Пример #8
0
        private ExecuteProcessResult Compile()
        {
            ProcessStartInfo     startInfo = ProcessStartInfoFactory.CreateCompileProcessStartInfo(Settings);
            ExecuteProcessResult result    = ExecuteProcess(startInfo);

            if (result.ExitCode == 0)
            {
                result.Result = ExitCode.Success;
            }
            else
            {
                result.Result = ExitCode.Failure;
            }

            return(result);
        }
Пример #9
0
        private ExecuteProcessResult CheckBusinessRules(string outputDllPath)
        {
            ExecuteProcessResult result = new ExecuteProcessResult();

            //Compilation is successfull. Now check businessrules.
            //check if the assembly is found;
            if (!FileSystem.FileExists(outputDllPath))
            {
                result.Result = ExitCode.Failure;
                result.Output = "compiled dll was not found.";
                return result;
            }

            Type implementedClass = null;

            Assembly assembly = FileSystem.LoadAssembly(outputDllPath);

            //loop through the types in the assembly
            foreach (Type type in assembly.GetTypes())
            {
                //try to find the class that was implemented
                if (type.Name.Equals(Settings.Assignment.ClassNameToImplement))
                {
                    implementedClass = type;
                    break;
                }
            }

            //if the classToImplement cannot be found, return with an error
            if (implementedClass == null)
            {
                result.Result = ExitCode.Failure;
                result.Output = string.Format("The class to implement ({0}) is not found", Settings.Assignment.ClassNameToImplement);
                return result;
            }

            //check to see if it implements the required interface...
            Type requiredInterface = implementedClass.GetInterface(Settings.Assignment.InterfaceNameToImplement);
            if (requiredInterface == null)
            {
                result.Result = ExitCode.Failure;
                result.Output = string.Format("The class to implement ({0}) does not implement the required interface {1}", Settings.Assignment.ClassNameToImplement, Settings.Assignment.InterfaceNameToImplement);
                return result;
            }

            return result;
        }
Пример #10
0
        private void button1_Click(object sender, EventArgs e)
        {
            var logger  = Substitute.For <ILogger>();
            var facade  = Substitute.For <IBuildServiceFacade>();
            var filesys = new FileSystemWrapper();

            ProcessSettings processSettings = new ProcessSettings();

            processSettings.BaseResultPath    = @"c:\mocs\";
            processSettings.NunitAssemblyPath = @"C:\Program Files\NUnit 2.5.9\bin\net-2.0\framework";
            processSettings.CscPath           = @"C:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe";
            processSettings.NunitConsolePath  = @"C:\Program Files\NUnit 2.5.9\bin\net-2.0\nunit-console.exe";

            processSettings.SourcesPath     = "";
            processSettings.OutputPath      = "";
            processSettings.TestLogFileName = "testresult.xml";
            processSettings.NunitTimeOut    = 5000;
            processSettings.CleanUp         = true;

            processSettings.Assignment = CreateTestAssignment(facade);

            processSettings.Submit = CreateTestSubmit();
            processSettings.Submit.TournamentAssignment.Assignment = processSettings.Assignment;

            ServiceLocator services = ServiceLocator.Instance;

            services.AddService(typeof(IFileSystem), filesys);

            BaseProcess          process = new MoCSValidationProcess(processSettings, filesys);
            ExecuteProcessResult result  = process.Process();

            richTextBox1.Clear();
            if (result.Result == ExitCode.Success)
            {
                this.panel1.BackColor = Color.Green;
            }
            else
            {
                this.panel1.BackColor = Color.Red;
                richTextBox1.AppendText(result.Output);
            }
        }
Пример #11
0
        private TestResults RunUnitTests()
        {
            ProcessStartInfo startInfo = null;

            startInfo = ProcessStartInfoFactory.CreateTestProcessStartInfoNunit(Settings);
            ExecuteProcessResult result = ExecuteProcess(startInfo);

            TestResults testResults = TestResultsInterpreter.InterpretTestResults(Settings.GetTestLogPath());

            if (testResults.FailingTests.Count == 0 && result.ExitCode == 0)
            {
                testResults.ResultCode = ExitCode.Success;
            }
            else
            {
                testResults.ResultCode = ExitCode.Failure;
            }

            return(testResults);
        }
Пример #12
0
        public void Process()
        {
            IBuildServiceFacade facade = ServiceLocator.Instance.GetService <IBuildServiceFacade>();

            ProcessSettings settings = ServiceLocator.Instance.GetService <ProcessSettings>().Clone();

            settings.Submit = this.Submit;

            settings.Assignment = facade.GetAssignmentById(this.Submit.TournamentAssignment.Assignment.Id, true);
            this.Submit.TournamentAssignment.Assignment = settings.Assignment;

            facade.UpdateSubmitStatusDetails(Submit.Id, SubmitStatus.Processing, "submit is being processed", DateTime.Now);

            IFileSystem           fileSystem = ServiceLocator.Instance.GetService <IFileSystem>();
            MoCSValidationProcess process    = new MoCSValidationProcess(settings, fileSystem);
            ExecuteProcessResult  result     = process.Process();

            this.Result = result;
            SaveStatusToDatabase();
        }
Пример #13
0
        public override ExecuteProcessResult Process()
        {
            TestResults testResults = RunUnitTests();

            ExecuteProcessResult result = new ExecuteProcessResult();

            result.Result = testResults.ResultCode;

            if (testResults.ResultCode == ExitCode.Failure)
            {
                StringBuilder sb = new StringBuilder();
                foreach (string message in testResults.FailingTests)
                {
                    sb.AppendLine(message);
                }

                result.Output = sb.ToString();
            }

            return result;
        }
Пример #14
0
        public override ExecuteProcessResult Process()
        {
            TestResults testResults = RunUnitTests();

            ExecuteProcessResult result = new ExecuteProcessResult();

            result.Result = testResults.ResultCode;

            if (testResults.ResultCode == ExitCode.Failure)
            {
                StringBuilder sb = new StringBuilder();
                foreach (string message in testResults.FailingTests)
                {
                    sb.AppendLine(message);
                }

                result.Output = sb.ToString();
            }

            return(result);
        }
Пример #15
0
        private ExecuteProcessResult Bootstrap()
        {
            Submit submit = Settings.Submit;

            ExecuteProcessResult result = new ExecuteProcessResult();
            result.ExitCode = 0;
            result.Result = ExitCode.Success;

            try
            {
                IFileSystem fileSystem = ServiceLocator.Instance.GetService<IFileSystem>();

                Assignment assignment = Settings.Assignment;

                string teamSubmitDirName = CreateTeamDirectory(Settings.Submit.Team.Id.ToString(), assignment);

                Settings.OutputPath = teamSubmitDirName;
                Settings.SourcesPath = teamSubmitDirName;

                CopyFiles(assignment, submit, teamSubmitDirName);
            }
            catch(Exception ex)
            {
                result.Output = ex.Message;
                result.Result = ExitCode.Failure;
            }

            return result;
        }