public void RunTestProgram(int NumIteration) { bool _Ignore; MTKTestError ReturnValue = MTKTestError.NoError; CurrentTestStatus = TestProgramState.Running; NumberOfDUTs = NumIteration; TestRunViability(); TestStart = false; for (int j = 0; j < NumIteration; j++) { devTestComplete = false; _Ignore = false; _CurrentDUT = j; Log.PrintLog(this, "Selecting DUT " + (j + 1).ToString() + "/" + NumIteration.ToString() + " for tests", LogDetailLevel.LogRelevant); OnNextIteration(j); ReturnValue = RunAllTests(); devTestComplete = true; if ((CurrentTestStatus == TestProgramState.Stop) || (CurrentTestStatus == TestProgramState.Stopped) || (CurrentTestStatus == TestProgramState.Stopping)) { break; } if (ReturnValue == MTKTestError.NoError) { if (TestStart) { OnOverallPass(); Log.PrintLog(this, "Overall test result: PASS", LogDetailLevel.LogRelevant); } } else if (ReturnValue == MTKTestError.TestFailed) { OnOverallFail(); Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant); } else if (ReturnValue == MTKTestError.IgnoringDUT) { OnIgnoreDUT(); Log.PrintLog(this, "Ignoring DUT# " + _CurrentDUT.ToString(), LogDetailLevel.LogRelevant); _Ignore = true; } OnCurrentIterationComplete(j, _Ignore); } StopTestProgram(); OnTestStopped(); _CurrentDUT = 0; _CurrentTestIndex = 0; CurrentTestStatus = TestProgramState.Stopped; }
public void StopTestProgram() { if ((CurrentTestStatus != TestProgramState.Stopped) && (CurrentTestStatus != TestProgramState.Stopping) && (CurrentTestStatus != TestProgramState.Stop)) { CurrentTestStatus = TestProgramState.Stop; } PauseTestEvent.Set(); }
public TestProgramManager() { _CurrentDUT = 0; _CurrentTestIndex = 0; NumberOfDUTs = 0; SupervisorMode = false; CurrentTestStatus = TestProgramState.Stopped; TestProgram = new List <MTKTest>(); NoFileLoaded = true; FileNotSaved = false; NewFileCounter = 1; TestFileName = "NewTestProgram" + NewFileCounter.ToString(); FullFileName = TestFileName + ".xml"; DUTConnectionType = "BLE"; PauseTestsOnFailure = true; PauseTestEvent = new AutoResetEvent(false); Log = new LogManager(); }
public void _RunTestProgram(int NumIteration) { bool _Ignore; MTKTestError ReturnValue = MTKTestError.NoError; CurrentTestStatus = TestProgramState.Running; NumberOfDUTs = NumIteration; TestRunViability(); TestStart = false; try { stopwatch.Restart(); Log.PrintLog(this, $"RunTestProgram StopWatch is started.", LogDetailLevel.LogRelevant); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "StopWatch of TestProgramManager"); } if (CheckAllDutsPermissionFailure()) { for (int i = 0; i < NumIteration; i++) { OnOverallFail(); Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant); } } else { for (int j = 0; j < NumIteration; j++) { devTestComplete = false; _Ignore = false; _CurrentDUT = j; Log.PrintLog(this, "Selecting DUT " + (j + 1).ToString() + "/" + NumIteration.ToString() + " for tests", LogDetailLevel.LogRelevant); OnNextIteration(j); if (CyBLE_MTK.DUTsTestFlag[j]) { ReturnValue = RunAllTests(); } else { ReturnValue = MTKTestError.IgnoringDUT; } devTestComplete = true; if ((CurrentTestStatus == TestProgramState.Stop) || (CurrentTestStatus == TestProgramState.Stopped) || (CurrentTestStatus == TestProgramState.Stopping)) { break; } if (ReturnValue == MTKTestError.NoError && CyBLE_MTK.DUTsTestFlag[_CurrentDUT]) { if (TestStart) { OnOverallPass(); Log.PrintLog(this, "Overall test result: PASS", LogDetailLevel.LogRelevant); } } //else if (ReturnValue == MTKTestError.ProcessCheckFailure) //{ // DUTOverallSFCSErrCode[_CurrentDUT] = ECCS.ERRORCODE_SHOPFLOOR_PROCESS_ERROR; // OnOverallFail(); //} else if (ReturnValue == MTKTestError.IgnoringDUT || ReturnValue == MTKTestError.ProgrammerNotConfigured || (!CyBLE_MTK.DUTsTestFlag[_CurrentDUT] && CyBLE_MTK.shopfloor_permission[_CurrentDUT])) { OnIgnoreDUT(); Log.PrintLog(this, "Ignoring DUT# " + _CurrentDUT.ToString(), LogDetailLevel.LogRelevant); DUTOverallSFCSErrCode[_CurrentDUT] = ECCS.ERRORCODE_DUT_NOT_TEST; _Ignore = true; } else { OnOverallFail(); Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant); } CurrentDUTTestError = ReturnValue; OnCurrentIterationComplete(j, _Ignore); } } try { stopwatch.Stop(); Log.PrintLog(this, $"The last cycle run test program with {NumberOfDUTs} DUT(s) totally elasped: " + stopwatch.Elapsed.TotalSeconds + " secs.", LogDetailLevel.LogRelevant); CyBLE_MTK.TestProgramRunCycleTimeForBatch = stopwatch.Elapsed.TotalSeconds.ToString(); } catch { MessageBox.Show("Fail to stopwatch"); } SetDUTOverallSFCSErrCode(); StopTestProgram(); OnTestStopped(); _CurrentDUT = 0; _CurrentTestIndex = 0; CurrentTestStatus = TestProgramState.Stopped; }
private MTKTestError RunAllTests() { bool FailedOnce = false; testRunning = true; for (int i = 0; i < TestProgram.Count; i++) { _CurrentTestIndex = i; if (CurrentTestStatus == TestProgramState.Stop) { CurrentTestStatus = TestProgramState.Stopping; StopTestProgram(); CurrentTestStatus = TestProgramState.Stopped; OnTestStopped(); break; } TestStart = true; MTKTestError TestResult = MTKTestError.Pending; TestResult = RunTest(i); if (TestResult != MTKTestError.NoError) { if (TestResult == MTKTestError.IgnoringDUT || TestResult == MTKTestError.ProgrammerNotConfigured && CyBLE_MTK.DUTsTestFlag[_CurrentDUT]) { OnIgnoreDUT(); return(MTKTestError.IgnoringDUT); } else if (TestResult == MTKTestError.NotAllDevicesProgrammed) { return(MTKTestError.NotAllDevicesProgrammed); } else { if ((CurrentTestStatus != TestProgramState.Pausing) && (CurrentTestStatus != TestProgramState.Paused) && (CurrentTestStatus != TestProgramState.Pause) && (PauseTestsOnFailure == true)) { CurrentTestStatus = TestProgramState.Pause; } OnOverallFail(); FailedOnce = true; OnTestError(TestResult, TestResult.ToString()); } } if (CurrentTestStatus == TestProgramState.Pause) { CurrentTestStatus = TestProgramState.Paused; Log.PrintLog(this, "Test program paused.", LogDetailLevel.LogRelevant); OnTestPaused(); while (!PauseTestEvent.WaitOne(100)) { ; } if (CurrentTestStatus == TestProgramState.Stop) { StopTestProgram(); testRunning = false; if (FailedOnce) { return(MTKTestError.TestFailed); } else { return(MTKTestError.NoError); } } CurrentTestStatus = TestProgramState.Running; } ///cysp: SetDUTOverallSFCSErrorCodeForUploadTestResult SetDUTTmplSFCSErrorCode(_CurrentDUT, _CurrentTestIndex); } testRunning = false; if (FailedOnce) { return(MTKTestError.TestFailed); } else { return(MTKTestError.NoError); } }
public void ContinueTestProgram() { CurrentTestStatus = TestProgramState.Run; Log.PrintLog(this, "Continuing test program.", LogDetailLevel.LogRelevant); PauseTestEvent.Set(); }
public void PauseTestProgram() { CurrentTestStatus = TestProgramState.Pause; PauseTestEvent.Reset(); Log.PrintLog(this, "Pausing test program.", LogDetailLevel.LogRelevant); }
private MTKTestError RunAllTests() { bool FailedOnce = false; for (int i = 0; i < TestProgram.Count; i++) { _CurrentTestIndex = i; if (CurrentTestStatus == TestProgramState.Stop) { CurrentTestStatus = TestProgramState.Stopping; StopTestProgram(); CurrentTestStatus = TestProgramState.Stopped; OnTestStopped(); break; } TestStart = true; MTKTestError TestResult = RunTest(i); if (TestResult != MTKTestError.NoError) { if (TestResult == MTKTestError.IgnoringDUT) { return(MTKTestError.IgnoringDUT); } else { if ((CurrentTestStatus != TestProgramState.Pausing) && (CurrentTestStatus != TestProgramState.Paused) && (CurrentTestStatus != TestProgramState.Pause) && (PauseTestsOnFailure == true)) { CurrentTestStatus = TestProgramState.Pause; } OnOverallFail(); FailedOnce = true; OnTestError(TestResult, TestResult.ToString()); } } if (CurrentTestStatus == TestProgramState.Pause) { CurrentTestStatus = TestProgramState.Paused; Log.PrintLog(this, "Test program paused.", LogDetailLevel.LogRelevant); OnTestPaused(); while (!PauseTestEvent.WaitOne(100)) { ; } if (CurrentTestStatus == TestProgramState.Stop) { StopTestProgram(); if (FailedOnce) { return(MTKTestError.TestFailed); } else { return(MTKTestError.NoError); } } CurrentTestStatus = TestProgramState.Running; } } if (FailedOnce) { return(MTKTestError.TestFailed); } else { return(MTKTestError.NoError); } }
public void _RunTestProgram(int NumIteration) { bool _Ignore; MTKTestError ReturnValue = MTKTestError.NoError; CurrentTestStatus = TestProgramState.Running; NumberOfDUTs = NumIteration; TestRunViability(); TestStart = false; try { stopwatch.Restart(); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "StopWatch of TestProgramManager"); } for (int j = 0; j < NumIteration; j++) { devTestComplete = false; _Ignore = false; _CurrentDUT = j; Log.PrintLog(this, "Selecting DUT " + (j + 1).ToString() + "/" + NumIteration.ToString() + " for tests", LogDetailLevel.LogRelevant); OnNextIteration(j); if (CyBLE_MTK.DUTsTestFlag[j]) { ReturnValue = RunAllTests(); } else { ReturnValue = MTKTestError.IgnoringDUT; } devTestComplete = true; if ((CurrentTestStatus == TestProgramState.Stop) || (CurrentTestStatus == TestProgramState.Stopped) || (CurrentTestStatus == TestProgramState.Stopping)) { break; } if (ReturnValue == MTKTestError.NoError && CyBLE_MTK.DUTsTestFlag[_CurrentDUT]) { if (TestStart) { OnOverallPass(); Log.PrintLog(this, "Overall test result: PASS", LogDetailLevel.LogRelevant); } //CyBLE_MTK.COUNT_PASS++; } else if (ReturnValue == MTKTestError.TestFailed || ReturnValue == MTKTestError.NotAllDevicesProgrammed && CyBLE_MTK.DUTsTestFlag[_CurrentDUT]) { OnOverallFail(); Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant); //CyBLE_MTK.COUNT_FAIL++; } else { OnIgnoreDUT(); Log.PrintLog(this, "Ignoring DUT# " + _CurrentDUT.ToString(), LogDetailLevel.LogRelevant); DUTOverallSFCSErrCode[_CurrentDUT] = ECCS.ERRORCODE_DUT_NOT_TEST; _Ignore = true; } //CyBLE_MTK.COUNT_ALL++; OnCurrentIterationComplete(j, _Ignore); } SetDUTOverallSFCSErrCode(); StopTestProgram(); OnTestStopped(); _CurrentDUT = 0; _CurrentTestIndex = 0; CurrentTestStatus = TestProgramState.Stopped; try { stopwatch.Stop(); } catch { MessageBox.Show("Fail to stopwatch"); } }