Introduction
DMM has several options that control what happens if a drive fails during a test run.
The “Stop On Error” options, which can be set on the “Advanced Options” dialog inside of DMM, were designed to allow you to accomplish the following six options:
- If an error occurs to stop the current test in the test sequence
- If an error occurs to stop all tests in the test sequence
- If an error occurs to simply ignore the error
- If an error occurs to run an “External Program”
- If an error occurs to run an “External Program” and if the “External Program” fails to stop the current test
- If an error occurs to run an “External Program” and if the “External Program” fails to stop all tests
- If an error occurs to run an “External Program” and continue executing the current test
Let’s take a closer look at each of the above options.
Option A) If an error occurs to stop the current test in the test sequence
On the Advanced Options dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is checked, and “Group 2” is unchecked
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test. What this option will do is stop the current test (i.e. step 3 of 7 steps, will NOT continue the remaining 5 minutes of the sequential write test, and proceed to step 4 of your 7 step test sequence).
Option B) If an error occurs to stop all tests in the test sequence
On the “Advanced Options” dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is checked, and “Group 2” is unchecked
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test.
What this option will do is stop all tests (i.e. it will stop step 3 and will NOT continue the remaining 5 minutes of the sequential write test, and will NOT execute steps 4-thru-7).
Option C) If an error occurs to simply ignore the error
On the “Advanced Options” dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is checked, and “Group 2” is unchecked
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test. What this option will do is simply ignore the error (i.e. it will continue step 3 and will continue with the remaining 5 minutes of the sequential write test, and after this step 3 has completed proceed to step 4 of your 7 step test sequence).
Option D) If an error occurs to run an “External Program”
On the “Advanced Options” dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is unchecked, and “Group 2” is checked
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test. What this option will do is run the “External Program” that you inputted on the “Advanced Options” dialog, and pass, as a command line argument, the following information:
HBA=n,TID=m,LUN=x,SLOT=255,RecordTemperature.
IMPORTANT: Notice that preceding the command line parameters you inputted on the “Advanced Options” dialog are the device address of the device that had the error. After the device address information, we append the string “RecordTemperature” at the end of the command line argument to the “External Program”.
After the “External Program” completes, the return code from the External Program logged to the devices logfile and step 3 is stopped (so the remaining 5 minutes of the sequential write test is not performed). Then we proceed to step 4 of your 7 step test sequence.
Option E) If an error occurs to run an “External Program” and if the “External Program” fails to stop the current test
On the “Advanced Options” dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is checked, and “Group 2” is checked. Also note that the “Enter External Program Name” edit box is filled in, and so is the “Command Line Parameters to External Program” edit box is filled in.
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test. What this option will do is run the “External Program” that you inputted on the “Advanced Options” dialog, and pass, as a command line argument, the following information:
HBA=n,TID=m,LUN=x,SLOT=255,RecordTemperature.
IMPORTANT: Notice that preceding the command line parameters you inputted on the “Advanced Options” dialog are the device address of the device that had the error. After the device address information, we append the string “RecordTemperature” at the end of the command line argument to the “External Program”.
After the “External Program” completes, the return code from the External Program logged to the devices logfile. THEN the return code from the “External Program” is analyzed for SUCCESS (return code of 0) or FAILURE (return code of anything other than 0). IF the return code from the “External Program” is 0 (SUCCESS) then step 3 is continued. IF the return code from the “External Program” is non-zero (FAILURE), step 3 is stopped (so the remaining 5 minutes of the sequential write test is not performed). Then we proceed to step 4 of your 7 step test sequence.
Option F) If an error occurs to run an “External Program” and if the “External Program” fails to stop all tests
On the “Advanced Options” dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is checked, and “Group 2” is checked. Also note that the “Enter External Program Name” edit box is filled in, and so is the “Command Line Parameters to External Program” edit box is filled in.
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test. What this option will do is run the “External Program” that you inputted on the “Advanced Options” dialog, and pass, as a command line argument, the following information:
HBA=n,TID=m,LUN=x,SLOT=255,RecordTemperature.
IMPORTANT: Notice that preceding the command line parameters you inputted on the “Advanced Options” dialog are the device address of the device that had the error. After the device address information, we append the string “RecordTemperature” at the end of the command line argument to the “External Program”.
After the “External Program” completes, the return code from the External Program is logged to the device’s logfile. THEN the return code from the “External Program” is analyzed for SUCCESS (return code of 0) or FAILURE (return code of anything other than 0). IF the return code from the “External Program” is 0 (SUCCESS) then step 3 is continued. IF the return code from the “External Program” is non-zero (FAILURE), step 3 is stopped (so the remaining 5 minutes of the sequential write test is not performed). No other tests are executed on this device.
Option G) If an error occurs to run an “External Program” and continue executing the current test
On the “Advanced Options” dialog in DMM, you set this option as seen in the following picture:
Notice that the checkbox “Stop On Error” is checked, “Group 1” is checked, and “Group 2” is checked. Also note that the “Enter External Program Name” edit box is filled in, and so is the “Command Line Parameters to External Program” edit box is filled in.
As an example, let’s say you have a 7-step test sequence, and step 3 is a sequential write test for 10 minutes, and that step 3 is currently executing when an error occurs at say the 5 minute mark of the test. What this option will do is run the “External Program” that you inputted on the “Advanced Options” dialog, and pass, as a command line argument, the following information:
HBA=n,TID=m,LUN=x,SLOT=255,RecordTemperature.
IMPORTANT: Notice that preceding the command line parameters you inputted on the “Advanced Options” dialog are the device address of the device that had the error. After the device address information, we append the string “RecordTemperature” at the end of the command line argument to the “External Program”.
After the “External Program” completes, the return code from the External Program is logged to the device’s logfile. Step 3 is continued.
“ASYNCHRONOUS NOTIFICATIONS” OPTIONS IN DMM
The user can asynchronously notify DMM of the following actions:
- Run an “External Program”
- Log information to a device’s DMM logfile
- Stop testing on a drive
We’ll take a closer look at these three options:
Option 1) Run an “External Program”
Here the goal is to run an “external program” on a device asynchronously. This is different from having an “external program” as a test step (which is predefined in the test sequence). For example, suppose you have a sequential write test currently running on a drive and you want to run an external program. You can “on-the-spur-of-a-moment” notify DMM to execute an external program. The following code snippet shows you how to accomplish this:
char * pBuf = new char[256];
sprintf(pBuf,”CODE=2,ExtProg=%s,CmdLine=%s,HBA=%02d,TID=%03d,LUN=%02d”,
m_strExternalProgram,m_strCommandLine,m_nHBA,m_nTid,m_nLun);
COPYDATASTRUCT * pCDS = new COPYDATASTRUCT;
pCDS->dwData = 4;
pCDS->cbData = 256;
pCDS->lpData = pBuf;
CWnd * pWnd = CWnd::FindWindow(NULL,”Disk Manufacturing & Screening Module”);
if (pWnd != NULL && ::IsWindow(pWnd->m_hWnd))
{
pWnd->SendMessage(WM_COPYDATA,(WPARAM)NULL,(LPARAM)pCDS);
}
When DMM receives this asynchronous notification, it will parse the device address and then execute the external program name passed in, passing to the external program as a command line argument the device’s address plus the command line you pass DMM.
Option 2) Log information to a device’s DMM logfile
Here the goal is to asynchronously log information to a device’s DMM logfile. The following code snippet shows you how to accomplish this:
char * pBuf = new char[256];
sprintf(pBuf,”CODE=2,LogToFile=%s,HBA=%02d,TID=%03d,LUN=%02d”,
m_strDMMText,m_nHBA,m_nTid,m_nLun);
COPYDATASTRUCT * pCDS = new COPYDATASTRUCT;
pCDS->dwData = 5;
pCDS->cbData = strlen(pBuf)+1;
pCDS->lpData = pBuf;
CWnd * pWnd = CWnd::FindWindow(NULL,”Disk Manufacturing & Screening Module”);
if (pWnd != NULL && ::IsWindow(pWnd->m_hWnd))
{
pWnd->SendMessage(WM_COPYDATA,(WPARAM)NULL,(LPARAM)pCDS);
}
Option 3) Stop testing on a drive
Here the goal is to asynchronously stop all testing on a drive. The following code snippet shows you how to accomplish this:
char * pBuf = new char[256];
sprintf(pBuf,”CODE=2,HBA=%02d,TID=%03d,LUN=%02d”,
m_nHBA,m_nTid,m_nLun);
COPYDATASTRUCT * pCDS = new COPYDATASTRUCT;
pCDS->dwData = 6;
pCDS->cbData = strlen(pBuf)+1;
pCDS->lpData = pBuf;
CWnd * pWnd = CWnd::FindWindow(NULL,”Disk Manufacturing & Screening Module”);
if (pWnd != NULL && ::IsWindow(pWnd->m_hWnd))
{
pWnd->SendMessage(WM_COPYDATA,(WPARAM)NULL,(LPARAM)pCDS);
}