private void UploadTestData(string xmlfile) { try { if (!xmlfile.Contains(".xml")) { return; } //Save test data to server if (xmlfile.Contains("TxO")) { TxOTable dtTxO = new TxOTable(); dtTxO.ReadXml("TxOData", xmlfile); //save to excel dtTxO.SaveTableToExcel(xmlfile.Replace("xml", "xls")); Log.SaveLogToTxt("upload test data: " + xmlfile); if (this.UploadTestDataToServer(dtTxO, "select * from my_databases.txo") == true) { try { File.Move(xmlfile, FolderPath.BackupTestDataPath + Path.GetFileName(xmlfile)); } catch { MessageBox.Show("移动测试数据到备份文件夹失败,你可以继续测试。"); } } dtTxO = null; } if (xmlfile.Contains("RxO")) { RxOTable dtRxO = new RxOTable(); dtRxO.ReadXml("RxOData", xmlfile); //save to excel dtRxO.SaveTableToExcel(xmlfile.Replace("xml", "xls")); Log.SaveLogToTxt("upload test data: " + xmlfile); if (this.UploadTestDataToServer(dtRxO, "select * from my_databases.rxo") == true) { try { File.Move(xmlfile, FolderPath.BackupTestDataPath + Path.GetFileName(xmlfile)); } catch { MessageBox.Show("移动测试数据到备份文件夹失败,你可以继续测试。"); } } dtRxO = null; } } catch { MessageBox.Show("上传以前未上传的测试数据到数据库失败,请检测网络。当然你也可以离线测试。"); } }
public bool ParallelBeginTest() { try { Log.SaveLogToTxt("Begin to test..."); Log.SaveLogToTxt("Power on all equipments."); foreach (string key in this.usedEquipments.Keys) { this.usedEquipments[key].OutPutSwitch(true); } Log.SaveLogToTxt("Enable full function for module."); dut.FullFunctionEnable(); Log.SaveLogToTxt("Try to get test condition from server."); testItemsObject = new Dictionary <string, ITest>(); DataTable dataTable_Condition = this.BuildConditionTable(); //create testdata table if (TestPlanParaByPN.ItemName.Contains("TR")) { txoTable = new TxOTable(); rxoTable = new RxOTable(); } else if (TestPlanParaByPN.ItemName.Contains("TX")) { txoTable = new TxOTable(); } else if (TestPlanParaByPN.ItemName.Contains("RX")) { rxoTable = new RxOTable(); } else { Log.SaveLogToTxt("Test plan is not for function test."); } string beginTime = DateTime.Now.ToString(); for (int row = 0; row < dataTable_Condition.Rows.Count; row++)//遍历测试环境条件 { if (txoTable != null) { //create testdata table new row, set the default value for new row, excepte for ID column drOfTxOTable = txoTable.NewRow(); for (int i = 1; i < txoTable.Columns.Count; i++) { drOfTxOTable[i] = Algorithm.MyNaN; } } if (rxoTable != null) { drOfRxOTable = rxoTable.NewRow(); for (int i = 1; i < rxoTable.Columns.Count; i++) { drOfRxOTable[i] = Algorithm.MyNaN; } } DataRow dr = dataTable_Condition.Rows[row]; ConditionParaByTestPlan.SetValue(dr); Log.SaveLogToTxt("Begin to config environment."); Log.SaveLogToTxt("Temp = " + ConditionParaByTestPlan.Temp + " VCC = " + ConditionParaByTestPlan.VCC.ToString("f3") + " Channel = " + ConditionParaByTestPlan.Channel); //myDataIO.WriterLog(ctrlType_Condition, SNID, "", StrStartTime, StrStartTime, Convert.ToSingle(StrCurrentTemp), Convert.ToSingle(StrCurrentVcc), CurrentChannel, false, out CurrentLogId); if (!this.ConfigEnvironment(ConditionParaByTestPlan.Temp, ConditionParaByTestPlan.VCC, ConditionParaByTestPlan.Channel, ConditionParaByTestPlan.TempOffset, ConditionParaByTestPlan.TempWaitingTimes, GlobalParaByPN.OverLoadPoint)) { Log.SaveLogToTxt("Failed to config environment."); return(false); } ConditionParaByTestPlan.LastTemp = ConditionParaByTestPlan.Temp; Log.SaveLogToTxt("Try to get test model list under this condition."); string table = "TopoTestModel"; string expression = "select B.ItemName,A.*,C.* , A.ID AS TestmodelID,c.ItemName as AppType from TopoTestModel A,GlobalAllTestModelList B,GlobalAllAppModelList C where C.ID=B.PID AND A.PID=" + ConditionParaByTestPlan.ID + " and A.IgnoreFlag=0 AND A.GID=B.ID order by SEQ ASC"; DataTable dataTable_TestItems = myDataIO.GetDataTable(expression, table);// 获得TestModelList DataTable dataTable_TestItemsPara = GetCurrentConditionPrameter(dataTable_TestItems); if (ConditionParaByTestPlan.CtrlType == 2) { supply.OutPutSwitch(false); supply.OutPutSwitch(true); dut.FullFunctionEnable(); //parallel test for FMT Parallel.For(0, dataTable_TestItems.Rows.Count, (int i, ParallelLoopState pls) =>// 遍历Condition中的TestModel { DataRow dr_TestItem = dataTable_TestItems.Rows[i]; string ID_TestItem = dr_TestItem["TestmodelID"].ToString(); string name_TestItem = dr_TestItem["ItemName"].ToString(); string type_TestItem = dr_TestItem["AppType"].ToString(); bool isFailedBreak_TestItem = Convert.ToBoolean(dr_TestItem["Failbreak"]); DataRow[] drs = dataTable_TestItemsPara.Select("TestmodelId='" + ID_TestItem + "'"); Dictionary <string, string> inPara_TestItem = new Dictionary <string, string>(); Log.SaveLogToTxt("Try to get test parameter for " + name_TestItem + "."); for (int j = 0; j < drs.Length; j++) { inPara_TestItem.Add(drs[j]["ItemName"].ToString().Trim().ToUpper(), drs[j]["ItemValue"].ToString().Trim().ToUpper()); Log.SaveLogToTxt(drs[j]["ItemName"].ToString() + " " + drs[j]["ItemValue"].ToString()); } Log.SaveLogToTxt("Test " + name_TestItem + "..."); if (!RunTestItem(name_TestItem, ID_TestItem, type_TestItem, inPara_TestItem)) { //bool result_TestItem = false; //pls.Break(); } //GC.Collect(); }); } else { //onebyone test for adjust for (int i = 0; i < dataTable_TestItems.Rows.Count; i++)// 遍历Condition中的TestModel { DataRow dr_TestItem = dataTable_TestItems.Rows[i]; string ID_TestItem = dr_TestItem["TestmodelID"].ToString(); string name_TestItem = dr_TestItem["ItemName"].ToString(); string type_TestItem = dr_TestItem["AppType"].ToString(); bool isFailedBreak_TestItem = Convert.ToBoolean(dr_TestItem["Failbreak"]); DataRow[] drs = dataTable_TestItemsPara.Select("TestmodelId='" + ID_TestItem + "'"); Dictionary <string, string> inPara_TestItem = new Dictionary <string, string>(); Log.SaveLogToTxt("Try to get test parameter for " + name_TestItem + "."); for (int j = 0; j < drs.Length; j++) { inPara_TestItem.Add(drs[j]["ItemName"].ToString(), drs[j]["ItemValue"].ToString()); Log.SaveLogToTxt(drs[j]["ItemName"].ToString() + " " + drs[j]["ItemValue"].ToString()); } Log.SaveLogToTxt("Test " + name_TestItem + "..."); if (!RunTestItem(name_TestItem, ID_TestItem, type_TestItem, inPara_TestItem)) { //bool result_TestItem = false; } GC.Collect(); } } if (drOfTxOTable != null) { drOfTxOTable["Family"] = GlobalParaByPN.Family; drOfTxOTable["PartNumber"] = GlobalParaByPN.PN; drOfTxOTable["SerialNumber"] = TestPlanParaByPN.SN; drOfTxOTable["Channel"] = ConditionParaByTestPlan.Channel; drOfTxOTable["Temp"] = ConditionParaByTestPlan.Temp; drOfTxOTable["Station"] = "TXO"; drOfTxOTable["Time"] = beginTime; drOfTxOTable["Status"] = 0; txoTable.Rows.Add(drOfTxOTable); } if (drOfRxOTable != null) { drOfRxOTable["Family"] = GlobalParaByPN.Family; drOfRxOTable["PartNumber"] = GlobalParaByPN.PN; drOfRxOTable["SerialNumber"] = TestPlanParaByPN.SN; drOfRxOTable["Channel"] = ConditionParaByTestPlan.Channel; drOfRxOTable["Temp"] = ConditionParaByTestPlan.Temp; drOfRxOTable["Station"] = "RXO"; drOfRxOTable["Time"] = beginTime; drOfRxOTable["Status"] = 0; rxoTable.Rows.Add(drOfRxOTable); } drOfTxOTable = null; drOfRxOTable = null; } //Save test data to xml file if (txoTable != null) { txoTable.WriteXml("TxOData", FilePath.TxODataXml); } if (rxoTable != null) { rxoTable.WriteXml("RxOData", FilePath.RxODataXml); } txoTable = null; rxoTable = null; foreach (string key in testItemsObject.Keys) { if (!testItemsObject[key].SaveTestData()) { return(false); } } return(true); } catch (Exception ex) { Log.SaveLogToTxt(ex.Message); Log.SaveLogToTxt(ex.StackTrace); Log.SaveLogToTxt("Failed to test."); return(false); } }