一个记录程序运行时间表的控件 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 一个记录程序运行时间表的控件 (http://www.webasp.net/article/26/25973.htm) |
| -- 作者:未知 -- 发布日期: 2005-08-18 |
| using System; using System.Collections; using System.Data; namespace MyTools { /// <summary> /// Summary description for TimeTest. /// </summary> public class TimeTest { private DataTable manager = new DataTable("manager"); private DataTable timeList = new DataTable("timeList"); public TimeTest() { #region initialize the ManagerTable to save the test cases DataColumn tempColumn = new DataColumn("name",typeof(System.String)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("description",typeof(System.String)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("totalTime",typeof(System.TimeSpan)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("startTime",typeof(System.DateTime)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("testCount",typeof(System.Int32)); manager.Columns.Add(tempColumn); manager.PrimaryKey = new DataColumn[]{manager.Columns["name"]}; #endregion #region initialize the TimeListTable to save the list of time span tempColumn = new DataColumn("name",typeof(System.String)); timeList.Columns.Add(tempColumn); tempColumn = new DataColumn("time",typeof(System.TimeSpan)); timeList.Columns.Add(tempColumn); tempColumn = new DataColumn("description",typeof(System.String)); timeList.Columns.Add(tempColumn); #endregion #region initialize a test case this.AddProcess("__mainTest__","The default test is created by system!"); #endregion } public TimeTest(string testName,string description) { #region initialize the ManagerTable to save the test cases DataColumn tempColumn = new DataColumn("name",typeof(System.String)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("description",typeof(System.String)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("totalTime",typeof(System.TimeSpan)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("startTime",typeof(System.DateTime)); manager.Columns.Add(tempColumn); tempColumn = new DataColumn("testCount",typeof(System.Int32)); manager.Columns.Add(tempColumn); manager.PrimaryKey = new DataColumn[]{manager.Columns["name"]}; #endregion #region initialize the TimeListTable to save the list of time span tempColumn = new DataColumn("name",typeof(System.String)); timeList.Columns.Add(tempColumn); tempColumn = new DataColumn("time",typeof(System.TimeSpan)); timeList.Columns.Add(tempColumn); tempColumn = new DataColumn("description",typeof(System.String)); timeList.Columns.Add(tempColumn); #endregion #region initialize a test case this.AddProcess(testName,description); #endregion } private void AddProcess(string testName,string description) { DataRow tempRow = this.manager.NewRow(); tempRow["name"] = testName; tempRow["description"] = description; tempRow["startTime"] = DateTime.Now; tempRow["totalTime"] = TimeSpan.Zero; tempRow["testCount"] = 0; this.manager.Rows.Add(tempRow); } #region Begin a test public void BeginTest(string testName,string description) { DataRow tempRow = this.manager.Rows.Find(testName); if(null != tempRow) { tempRow["startTime"] = DateTime.Now; } else { this.AddProcess(testName,description); } } public void BeginTest(string testName) { this.BeginTest(testName,""); } public void Begin() { this.BeginTest(this.manager.Rows[0]["name"].ToString(),""); } #endregion #region End a test public void EndTest(string testName,string description) { DataRow tempRow = this.manager.Rows.Find(testName); if(null == tempRow) { return; } DateTime tempTime = (DateTime)tempRow["startTime"]; // tempRow = this.timeList.NewRow(); // tempRow["time"] = DateTime.Now - tempTime; // tempRow["name"] = testName; // tempRow["description"] = description; // this.timeList.Rows.Add(tempRow); this.manager.Rows.Find(testName)["startTime"] = DateTime.Now; this.manager.Rows.Find(testName)["totalTime"] = (TimeSpan)(this.manager.Rows.Find(testName)["totalTime"]) + (DateTime.Now - tempTime); this.manager.Rows.Find(testName)["testCount"] = (int)this.manager.Rows.Find(testName)["testCount"] + 1; } public void EndTest(string testName) { this.EndTest(testName,""); } public void End() { this.EndTest(this.manager.Rows[0]["name"].ToString(),""); } public void End(string description) { this.EndTest(this.manager.Rows[0]["name"].ToString(),description); } #endregion public DataTable GetTestListByName(string testName) { DataTable RtnTable = this.timeList.Clone(); RtnTable.Columns["time"].DataType = typeof(System.Double); DataRow row; foreach(DataRow tempRow in this.timeList.Select("name = '" + testName +"'")) { row = RtnTable.NewRow(); if(tempRow["name"].ToString().Trim().Equals("__mainTest__")) { row["name"] = "[System Default]"; } else { row["name"] = tempRow["name"]; } row["description"] = tempRow["description"]; row["time"] = ((TimeSpan)tempRow["time"]).TotalMilliseconds; RtnTable.Rows.Add(row); } return RtnTable; } public DataTable GetTestListByName() { return GetTestListByName(this.manager.Rows[0]["name"].ToString()); } public double GetTestTimeByName(string testName) { return ((TimeSpan)this.manager.Rows.Find(testName)["totalTime"]).TotalMilliseconds; } public double GetTestTimeByName() { return GetTestTimeByName(this.manager.Rows[0]["name"].ToString()); } public DataTable GetAllTestTime() { DataTable RtnTable = this.manager.Clone(); RtnTable.Columns["totalTime"].DataType = typeof(System.Double); RtnTable.Columns.Remove("startTime"); DataRow row; foreach(DataRow tempRow in this.manager.Rows) { row = RtnTable.NewRow(); if(tempRow["name"].ToString().Trim().Equals("__mainTest__")) { row["name"] = "[System Default]"; } else { row["name"] = tempRow["name"]; } row["description"] = tempRow["description"]; row["totalTime"] = ((TimeSpan)tempRow["totalTime"]).TotalMilliseconds; row["testCount"] = tempRow["testCount"]; RtnTable.Rows.Add(row); } return RtnTable; } public DataTable GetAllTestList() { DataTable RtnTable = this.timeList.Clone(); RtnTable.Columns["time"].DataType = typeof(System.Double); DataRow row; foreach(DataRow tempRow in this.timeList.Rows) { row = RtnTable.NewRow(); if(tempRow["name"].ToString().Trim().Equals("__mainTest__")) { row["name"] = "[System Default]"; } else { row["name"] = tempRow["name"]; } row["description"] = tempRow["description"]; row["time"] = ((TimeSpan)tempRow["time"]).TotalMilliseconds; RtnTable.Rows.Add(row); } return RtnTable; } } } |
| webasp.net |