public void Constructor0 () { ProcessInfo pi = new ProcessInfo (); CheckProperties (pi); pi.SetAll (DateTime.MinValue, TimeSpan.Zero, 0, 0, 0, ProcessShutdownReason.None, 0); CheckProperties (pi); }
private void CheckProperties (ProcessInfo pi) { Assert.AreEqual (TimeSpan.Zero, pi.Age, "Age"); Assert.AreEqual (0, pi.PeakMemoryUsed, "PeakMemoryUsed"); Assert.AreEqual (0, pi.ProcessID, "ProcessID"); Assert.AreEqual (0, pi.RequestCount, "RequestCount"); Assert.AreEqual (ProcessShutdownReason.None, pi.ShutdownReason, "ShutdownReason"); Assert.AreEqual (DateTime.MinValue, pi.StartTime, "StartTime"); Assert.AreEqual (0, (int)pi.Status, "Status"); }
public static ProcessInfo[] GetHistory(int numRecords) { HttpContext current = HttpContext.Current; if (((current == null) || (current.WorkerRequest == null)) || !(current.WorkerRequest is ISAPIWorkerRequestOutOfProc)) { throw new HttpException(System.Web.SR.GetString("Process_information_not_available")); } if (numRecords < 1) { return null; } int[] dwPIDArr = new int[numRecords]; int[] dwReqExecuted = new int[numRecords]; int[] dwReqExecuting = new int[numRecords]; int[] dwReqPending = new int[numRecords]; int[] dwReasonForDeath = new int[numRecords]; long[] tmCreateTime = new long[numRecords]; long[] tmDeathTime = new long[numRecords]; int[] dwPeakMemoryUsed = new int[numRecords]; int num = System.Web.UnsafeNativeMethods.PMGetHistoryTable(numRecords, dwPIDArr, dwReqExecuted, dwReqPending, dwReqExecuting, dwReasonForDeath, dwPeakMemoryUsed, tmCreateTime, tmDeathTime); if (num < 0) { throw new HttpException(System.Web.SR.GetString("Process_information_not_available")); } ProcessInfo[] infoArray = new ProcessInfo[num]; for (int i = 0; i < num; i++) { DateTime time = DateTime.FromFileTime(tmCreateTime[i]); TimeSpan age = DateTime.Now.Subtract(time); ProcessStatus alive = ProcessStatus.Alive; ProcessShutdownReason none = ProcessShutdownReason.None; if (dwReasonForDeath[i] != 0) { if (tmDeathTime[i] > 0L) { age = DateTime.FromFileTime(tmDeathTime[i]).Subtract(time); } if ((dwReasonForDeath[i] & 4) != 0) { alive = ProcessStatus.Terminated; } else if ((dwReasonForDeath[i] & 2) != 0) { alive = ProcessStatus.ShutDown; } else { alive = ProcessStatus.ShuttingDown; } if ((0x40 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.IdleTimeout; } else if ((0x80 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.RequestsLimit; } else if ((0x100 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.RequestQueueLimit; } else if ((0x20 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.Timeout; } else if ((0x200 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.MemoryLimitExceeded; } else if ((0x400 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.PingFailed; } else if ((0x800 & dwReasonForDeath[i]) != 0) { none = ProcessShutdownReason.DeadlockSuspected; } else { none = ProcessShutdownReason.Unexpected; } } infoArray[i] = new ProcessInfo(time, age, dwPIDArr[i], dwReqExecuted[i], alive, none, dwPeakMemoryUsed[i]); } return infoArray; }
private IEnumerator<object> DoEval(ProcessInfo process, string pythonText) { var f = Program.EvalPython(process, pythonText); yield return f; byte[] result = f.Result; if ((result != null) && (result.Length > 0)) MessageBox.Show(this, result.DecodeUTF8Z(), String.Format("Result from process {0}", process.Process.Id)); }
static public ProcessInfo[] GetHistory(int numRecords) { HttpContext context = HttpContext.Current; if (context == null || context.WorkerRequest == null || !(context.WorkerRequest is System.Web.Hosting.ISAPIWorkerRequestOutOfProc)) { throw new HttpException(SR.GetString(SR.Process_information_not_available)); } if (numRecords < 1) return null; int [] dwPID = new int [numRecords]; int [] dwExed = new int [numRecords]; int [] dwExei = new int [numRecords]; int [] dwPend = new int [numRecords]; int [] dwReas = new int [numRecords]; long [] tmCrea = new long [numRecords]; long [] tmDeat = new long [numRecords]; int [] mem = new int [numRecords]; int iRows = UnsafeNativeMethods.PMGetHistoryTable (numRecords, dwPID, dwExed, dwPend, dwExei, dwReas, mem, tmCrea, tmDeat); if (iRows < 0) throw new HttpException(SR.GetString(SR.Process_information_not_available)); ProcessInfo[] ret = new ProcessInfo[iRows]; for (int iter=0; iter<iRows; iter++) { DateTime startTime = DateTime.FromFileTime(tmCrea[iter]); TimeSpan age = DateTime.Now.Subtract(startTime); ProcessStatus status = ProcessStatus.Alive; ProcessShutdownReason rea = ProcessShutdownReason.None; if (dwReas[iter] != 0) { if (tmDeat[iter] > 0) age = DateTime.FromFileTime(tmDeat[iter]).Subtract(startTime); if ((dwReas[iter] & 0x0004) != 0) status = ProcessStatus.Terminated; else if ((dwReas[iter] & 0x0002) != 0) status = ProcessStatus.ShutDown; else status = ProcessStatus.ShuttingDown; if ((0x0040 & dwReas[iter]) != 0) rea = ProcessShutdownReason.IdleTimeout; else if ((0x0080 & dwReas[iter]) != 0) rea = ProcessShutdownReason.RequestsLimit; else if ((0x0100 & dwReas[iter]) != 0) rea = ProcessShutdownReason.RequestQueueLimit; else if ((0x0020 & dwReas[iter]) != 0) rea = ProcessShutdownReason.Timeout; else if ((0x0200 & dwReas[iter]) != 0) rea = ProcessShutdownReason.MemoryLimitExceeded; else if ((0x0400 & dwReas[iter]) != 0) rea = ProcessShutdownReason.PingFailed; else if ((0x0800 & dwReas[iter]) != 0) rea = ProcessShutdownReason.DeadlockSuspected; else rea = ProcessShutdownReason.Unexpected; } ret[iter] = new ProcessInfo(startTime, age, dwPID[iter], dwExed[iter], status, rea, mem[iter]); } return ret; }