Example #1
0
        /// <summary> 终止当前案例进程 </summary>
        public bool StopProcess(CaseConfiger pCase)
        {
            pCase = _manager.GetCatchCase(pCase);

            try
            {
                if (pCase.PreHMProcess != null && !pCase.PreHMProcess.HasExited)
                {
                    pCase.PreHMProcess.Kill();
                    pCase.PreHMProcess = null;
                }

                if (pCase.EsmdaProcess != null && !pCase.EsmdaProcess.HasExited)
                {
                    pCase.EsmdaProcess.Kill();
                    pCase.EsmdaProcess = null;
                }
                if (pCase.EclipseProcess != null && !pCase.EclipseProcess.HasExited)
                {
                    pCase.EclipseProcess.Kill();
                    pCase.EclipseProcess = null;
                }

                pCase.Step = Step.StopOver;
                return(true);
            }
            catch (Exception ex)
            {
                _errMessage = ex.Message;
                pCase.Step  = Step.StopOver;
                return(false);
            }
        }
Example #2
0
 /// <summary> 增加案例 </summary>
 public void AddCase(CaseConfiger pCase)
 {
     if (!caseCache.Exists(l => l.Name == pCase.Name))
     {
         caseCache.Add(pCase);
     }
 }
Example #3
0
        /// <summary> 获取服务器上所有案例 </summary>
        public List <CaseConfiger> GetCaseDiretroys(string basePath)
        {
            //  获取当前缓存案例
            List <CaseConfiger> caseconfigers = new List <CaseConfiger>();
            string        baseDirectory       = _fileTransferService.GetUploadFolder(basePath);
            List <string> caseDirs            = Directory.GetDirectories(baseDirectory).ToList();

            foreach (string str in caseDirs)
            {
                CaseConfiger caseConfiger = new CaseConfiger();
                caseConfiger.Name       = Path.GetFileName(str);
                caseConfiger            = _manager.GetCatchCase(caseConfiger);
                caseConfiger.Id         = Guid.NewGuid().ToString();
                caseConfiger.ServerPath = str + "\\";
                caseConfiger.Messager   = "开始启动中....";
                caseConfiger            = _manager.GetCatchCase(caseConfiger);
                caseconfigers.Add(caseConfiger);
            }

            //  不在文件夹中的案例清理
            //List<CaseConfiger> noFindCase = _manager.FindAll(l => !caseDirs.Exists(r => Path.GetFileName(r) == l.Name));
            //foreach (CaseConfiger caseconfiger in noFindCase)
            //{
            //    DeleteCase(caseconfiger);
            //    _manager.RemoveCase(caseconfiger);
            //}

            return(caseconfigers);
        }
Example #4
0
        /// <summary> 执行结束 </summary>
        private void EsmDa_Exited(object sender, EventArgs e)
        {
            CaseConfiger caseConfiger = _manager.GetCatchCase(tempCase);

            //  解绑进程
            caseConfiger.EsmdaProcess   = null;
            caseConfiger.EclipseProcess = null;

            string binFolder = AppDomain.CurrentDomain.BaseDirectory;

            if (!binFolder.EndsWith("\\"))
            {
                binFolder += "\\";
            }

            string passEsmda = binFolder + "ESMDA.exe";

            if (File.Exists(passEsmda))
            {
                try
                {
                    //passEsmda.EncryptFileToDat("OPTPassWord");
                    File.Delete(passEsmda);
                }
                catch
                {
                }
            }

            //  记录步骤
            if (caseConfiger.Step != Step.StopOver)
            {
                caseConfiger.Step = Step.Over;
            }
        }
Example #5
0
        /// <summary> 执行Esmda.exe </summary>
        private void ExecutiveEsmDa(object sender, EventArgs e)
        {
            //  获取缓存
            CaseConfiger caseConfiger = _manager.GetCatchCase(tempCase);

            //  解绑步骤一
            caseConfiger.PreHMProcess = null;

            string binFolder = AppDomain.CurrentDomain.BaseDirectory;

            if (!binFolder.EndsWith("\\"))
            {
                binFolder += "\\";
            }

            //  解密文件
            string passEsmda = binFolder + "ESMDA.exe.dat";

            if (File.Exists(passEsmda))
            {
                if (!File.Exists(binFolder + _EsmDaName))
                {
                    passEsmda.DecryptFileFromDat("OPTPassWord");
                }
            }

            Process EsmDa = new Process();

            EsmDa.StartInfo.WorkingDirectory = caseConfiger.ServerPath;
            EsmDa.StartInfo.FileName         = binFolder + _EsmDaName;
            EsmDa.EnableRaisingEvents        = true;
            EsmDa.Exited += EsmDa_Exited;
            EsmDa.Start();

            //  绑定进程
            caseConfiger.EsmdaProcess = EsmDa;
            //  记录步骤
            caseConfiger.Step = Step.RunEsmDA;



            //  删除文件
            string passPreHM = binFolder + "PREHM.exe";

            if (File.Exists(passPreHM))
            {
                try
                {
                    //passPreHM.EncryptFileToDat("OPTPassWord");
                    File.Delete(passPreHM);
                }
                catch
                {
                }
            }
        }
Example #6
0
 /// <summary> 获取当前案例执行步骤 </summary>
 public bool GetStepOfCase(CaseConfiger pCase, ref Step step)
 {
     try
     {
         step = _manager.GetCatchCase(pCase).Step;
         return(true);
     }
     catch (Exception ex)
     {
         _errMessage = ex.Message;
         return(false);
     }
 }
Example #7
0
        /// <summary> 从缓存中获取案例 </summary>
        public CaseConfiger GetCatchCase(CaseConfiger pCase, bool isCreate = false)
        {
            if (caseCache.Exists(l => l.Name == pCase.Name))
            {
                if (isCreate)
                {
                    caseCache.RemoveAll(l => l.Name == pCase.Name);
                    AddCase(pCase);
                }
            }
            else
            {
                AddCase(pCase);
            }

            return(caseCache.Find(l => l.Name == pCase.Name));
        }
Example #8
0
 /// <summary> 增加案例(增加到内存) </summary>
 public bool AddCase(CaseConfiger pCase)
 {
     try
     {
         string baseDirectory = _fileTransferService.GetUploadFolder(_parentDirectory);
         //  增加服务器目录
         if (string.IsNullOrEmpty(pCase.ServerPath))
         {
             pCase.ServerPath = baseDirectory + pCase.Name + "\\";
         }
         _manager.AddCase(pCase);
         return(true);
     }
     catch (Exception ex)
     {
         _errMessage = ex.Message;
         return(false);
     }
 }
Example #9
0
        /// <summary> 删除案例 </summary>
        public bool DeleteCase(CaseConfiger pCase)
        {
            CaseConfiger caseConfiger = _manager.GetCatchCase(pCase);

            //  结束进程
            if (!StopProcess(caseConfiger))
            {
                return(false);
            }
            //  删除文件

            try
            {
                Directory.Delete(caseConfiger.ServerPath, true);
                //  移除
                _manager.RemoveCase(caseConfiger);
                return(true);
            }
            catch (Exception ex)
            {
                _errMessage = ex.Message;
                return(false);
            }
        }
Example #10
0
 /// <summary> 存在案例么? </summary>
 public bool ExistCase(CaseConfiger pCase)
 {
     return(caseCache.Exists(l => l.Name == pCase.Name));
 }
Example #11
0
 /// <summary> 移除案例 </summary>
 public void RemoveCase(CaseConfiger pCase)
 {
     caseCache.Remove(pCase);
 }
Example #12
0
        /// <summary> 执行PreHM.exe </summary>
        public bool ExecutivePreHM(CaseConfiger pCase)
        {
            //  获取缓存
            CaseConfiger caseConfiger = _manager.GetCatchCase(pCase);

            //  记录案例
            tempCase = caseConfiger;

            string binFolder = AppDomain.CurrentDomain.BaseDirectory;

            if (!binFolder.EndsWith("\\"))
            {
                binFolder += "\\";
            }

            if (caseConfiger.PreHMProcess != null || caseConfiger.EsmdaProcess != null)
            {
                _errMessage = "当前案例正在计算中,重启计算请先停止计算!";
                return(false);
            }

            //  检查是否存在ECLIPSE.exe
            string eclipse = caseConfiger.ServerPath.EndsWith("\\")
                ? caseConfiger.ServerPath + _EClIPSEName
                : caseConfiger.ServerPath + "\\" + _EClIPSEName;

            //  解密文件
            string passPreHM = binFolder + "PREHM.exe.dat";

            if (File.Exists(passPreHM))
            {
                if (!File.Exists(binFolder + _preHMName))
                {
                    passPreHM.DecryptFileFromDat("OPTPassWord");
                }
            }


            //  不存在
            if (!File.Exists(eclipse))
            {
                File.Copy(binFolder + _EClIPSEName, eclipse, true);
            }

            try
            {
                //  找到exe程序
                Process preHM = new Process();
                preHM.StartInfo.WorkingDirectory = caseConfiger.ServerPath;
                preHM.StartInfo.FileName         = binFolder + _preHMName;
                preHM.EnableRaisingEvents        = true;
                preHM.Exited += ExecutiveEsmDa;
                preHM.Start();

                //  绑定进程
                caseConfiger.PreHMProcess = preHM;

                //  记录步骤
                caseConfiger.Step = Step.RunPreHM;

                return(true);
            }
            catch (Exception ex)
            {
                _errMessage = ex.Message;
                return(false);
            }
        }