diff --git a/plugins/TestingList.form b/plugins/TestingList.form index 7a919d3..fec3bf8 100644 --- a/plugins/TestingList.form +++ b/plugins/TestingList.form @@ -34,7 +34,7 @@ - + diff --git a/plugins/TestingList.java b/plugins/TestingList.java index 21281e8..b1a35c4 100644 --- a/plugins/TestingList.java +++ b/plugins/TestingList.java @@ -74,7 +74,7 @@ public class TestingList extends Panel { * @param exception */ @Override - protected void onExecutedFile(String fileName, Object result, Throwable exception) { + protected void onExecutedFile(String fileName, Object result) { int iCurrentTestPos = 0; try { Object ret = eval("ret"); @@ -133,16 +133,16 @@ public class TestingList extends Panel { */ public enum COL { CHECK (0), - TIME (1), - DEVICENAME (2), - DEVICEDESCR (3), - TESTSUITE (4), - TESTNAME (5), - TESTPATH (6), - TESTPARAMS (7), - TESTDESCR (8), - TESTHELP (9), - STARTSEQUENCE (10), + STARTSEQUENCE(1), + TIME (2), + DEVICENAME (3), + DEVICEDESCR (4), + TESTSUITE (5), + TESTNAME (6), + TESTPATH (7), + TESTPARAMS (8), + TESTDESCR (9), + TESTHELP (10), RESULT (11), STATUS (12), ICON (13); @@ -318,14 +318,14 @@ public class TestingList extends Panel { }, new String [] { - "Select", "Time", "Device Name", "Device Description", "Test Suite", "Test Name", "Test Peth", "Test Parameters", "Test Description", "Test Help", "Start", "Last Test Result", "Status", "" + "Select", "Start", "Time", "Device Name", "Device Description", "Test Suite", "Test Name", "Test Peth", "Test Parameters", "Test Description", "Test Help", "Last Test Result", "Status", "" } ) { Class[] types = new Class [] { java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, javax.swing.Icon.class }; boolean[] canEdit = new boolean [] { - true, false, false, false, false, false, false, false, false, false, true, false, false, false + true, true, false, false, false, false, false, false, false, false, false, false, false, false }; public Class getColumnClass(int columnIndex) { @@ -442,6 +442,7 @@ public class TestingList extends Panel { private void jButtonRunActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRunActionPerformed if(this.jButtonRun.getToolTipText().equals("Run selected tests")){ setButtonToStart(); + updateStatus(); executeTest(0); } else{ @@ -726,16 +727,20 @@ public class TestingList extends Panel { String sStart; for (int row = 0; row <= jTable1.getRowCount() - 1; row++) { bSelected = (boolean) jTable1.getValueAt(row, COL.CHECK.ordinal()); + sStart = String.valueOf(jTable1.getValueAt(row, COL.STARTSEQUENCE.ordinal())); if (bSelected) { sStatus = TestStatus.PENDING.toString(); icon = TestStatus.PENDING.Icon(); + if(sStart == "") sStart = StartSequence.START_SEQ_AFTER.toString(); } else { sStatus = TestStatus.DISABLED.toString(); icon = TestStatus.DISABLED.Icon(); + sStart = ""; } jTable1.setValueAt(bSelected, row, COL.CHECK.ordinal()); jTable1.setValueAt(icon, row, COL.ICON.ordinal()); jTable1.setValueAt(sStatus, row, COL.STATUS.ordinal()); + jTable1.setValueAt(sStart, row, COL.STARTSEQUENCE.ordinal()); } } @@ -803,18 +808,20 @@ public class TestingList extends Panel { int[] selectedTestsRows = {}; //scan through the table starting from 'position' and execute the first selected test found int row = position; - if (row >=0 && row <= jTable1.getRowCount()-1 ) { - for(row = position ; row <= jTable1.getRowCount()-1 ; row++){ + if (row >=0 && row < jTable1.getRowCount() ) { + for(row = position ; row < jTable1.getRowCount() ; row++){ bSelected = (boolean) jTable1.getValueAt(row, COL.CHECK.ordinal()); sStartSequence = jTable1.getValueAt(row, COL.STARTSEQUENCE.ordinal()).toString(); sStatus = jTable1.getValueAt(row, COL.STATUS.ordinal()).toString(); //collect tests to be launched in parallel //the test must be: selected, set as start with previous, pending. //alternatively, the test must be: selected, first of the list. + System.out.println(String.valueOf(row) +"\t"+ String.valueOf(bSelected) +"\t"+ String.valueOf(selectedTestsRows.length) +"\t"+ sStartSequence +"\t"+ sStatus); + if( bSelected && (selectedTestsRows.length == 0 || //the test must be: selected, first of the list. (sStartSequence.equals(StartSequence.START_SEQ_TOGETHER.toString()) && //or the test must be: selected, set as start with previous, pending. - sStatus.equals(TestStatus.PENDING.toString()) ))){ + sStatus.equals(TestStatus.PENDING.toString()) ))){ selectedTestsRows = append(selectedTestsRows, row); } else if (bSelected && //if this test must be executed... selectedTestsRows.length > 0 && //but there are already tests to be executed in parallel.... @@ -822,8 +829,10 @@ public class TestingList extends Panel { break; } } - if (bSelected) { //at least one test is selected: launch it (or them) - executeParallelTestsGroup(selectedTestsRows); + if (selectedTestsRows.length > 0) { //at least one test is selected: launch it (or them) + if (executeParallelTestsGroup(selectedTestsRows) < 0){ //last execution did not find a test file. Continue with next execution + executeTest(position+1); + } } } if(!bSelected){ //No test to play. Stop @@ -832,20 +841,23 @@ public class TestingList extends Panel { } } - private void executeParallelTestsGroup(int[] rowsToExecute){ + //start all the tests in the rowsToExecute + private int executeParallelTestsGroup(int[] rowsToExecute){ HashMap args = new HashMap(); + int iRet = -1; for(int row: rowsToExecute){ - //build the .py test file path String sDeviceName = jTable1.getValueAt(row, COL.DEVICENAME.ordinal()).toString(); String sTestName = jTable1.getValueAt(row, COL.TESTNAME.ordinal()).toString(); String sTestCaseName = jTable1.getValueAt(row, COL.TESTSUITE.ordinal()).toString(); String sTestPath = jTable1.getValueAt(row, COL.TESTPATH.ordinal()).toString(); HashMap mParameters = buildParametersMap(String.valueOf(jTable1.getValueAt(row, COL.TESTPARAMS.ordinal()))); + System.out.println(String.valueOf(row) +"\t"+ sDeviceName +"\t"+ sTestName +"\t"+ sTestCaseName +"\t"+ String.valueOf(rowsToExecute.length)); try{ File f = new File(sTestPath); if(!f.exists() || f.isDirectory()){ logger.log(Level.SEVERE, "Cannot find test script: " + sTestPath); showResult(sDeviceName, sTestPath, "Cannot find test script: " + sTestPath, TestStatus.FAILURE.toString()); + iRet = -1; continue; } showResult(sDeviceName, sTestPath, "Test running", TestStatus.RUNNING.toString()); @@ -860,6 +872,7 @@ public class TestingList extends Panel { logger.log(Level.INFO, "Running Test '" + sTestName + "'. No parameters found."); } runAsync(sTestPath, args); + iRet = 0; } catch (Exception ex) { SwingUtils.showMessage(this, "executeTest()", ex.toString()); logger.log(Level.SEVERE, ex.toString()); @@ -867,6 +880,7 @@ public class TestingList extends Panel { setButtonToStop(); } } + return iRet; } /** @@ -920,7 +934,7 @@ public class TestingList extends Panel { ImageIcon icon = null;// new ImageIcon(getClass().getResource("/icons/button_pause-16px.png")); DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); String testPath = FilenameUtils.separatorsToSystem(TESTS_TESTS_DEFAULT_DIR + testSuite + "/" + testName + "/" + testName + ".py"); - model.addRow(new Object[]{false, sDate, deviceName, deviceDescription, testSuite, testName, testPath, testParams, testDescription, testHelp, StartSequence.START_SEQ_AFTER.toString(), "", "Pending", icon}); + model.addRow(new Object[]{false, "", sDate, deviceName, deviceDescription, testSuite, testName, testPath, testParams, testDescription, testHelp, "", "Pending", icon}); jTable1.setModel(model); updateStatus(); } diff --git a/script/tests/tests/PS Tests/power-supply/power-supply.py b/script/tests/tests/PS Tests/power-supply/power-supply.py deleted file mode 100644 index 8001828..0000000 --- a/script/tests/tests/PS Tests/power-supply/power-supply.py +++ /dev/null @@ -1,76 +0,0 @@ -#TODO: Set the diplay names of positioners and detectors -#ManualScan(writables, readables, start = None, end = None, steps = None, relative = False) - -#by default, failed -ret = 'Test failed' -status = False - -scan = ManualScan(['time'], ['SetVA', 'ActualVA', 'ActualIA'] , [0.0], [30.0], [20]) -scan.start() - -#Creating channels: dimension 1 -#Ramp rate -SetRamp = Channel(DEVICE + ':Set-RampA', type = 'd') -#SetRamp = Channel('pw84:ai', type = 'd') -#LinearPositioner SetVA -SetVA = Channel(DEVICE + ':Set-VA', type = 'd') -#SetVA = Channel('pw84:ai', type = 'd') -#Timestamp time -#ScalarDetector ActualVA -ActualVA = Channel(DEVICE + ':Actual-VA', type = 'd') -#ActualVA = Channel('pw84:ai', type = 'd') -#ScalarDetector ActualIA -ActualIA = Channel(DEVICE + ':Actual-IA', type = 'd') -#ActualIA = Channel('pw84:ai', type = 'd') - -#Init -SetRamp.put(10.0, timeout=None) - -#set voltage to 0 -print 'Ramping down power supply to 0V' -SetVA.put(0.0, timeout=None) - -#wait up to 2 minutes for voltage to be ~0 -for setpoint1 in frange(0.0, 120.0, 1.0, True): - detector2 = ActualVA.get() - if detector2 <= 1.0: - break - sleep(0.5) - -#Dimension 1 -#LinearPositioner SetVA -print 'Ramping up power supply' -for setpoint1 in frange(0.0, 30.0, 5.0, True): - if setpoint1 > 50.0 or setpoint1 < 0.0: - break - SetVA.put(setpoint1, timeout=None) # TODO: Set appropriate timeout - readback1 = SetVA.get() - if abs(readback1 - setpoint1) > 0.9 : # TODO: Check accuracy - raise Exception('SetVA could not be set to the value ' + str(setpoint1)) - ret = 'SetVA could not be set to the value ' + str(setpoint1) + '(measured value: '+str(readback1)+')' - status = False - break - #scan quickly the output during some seconds - for setpoint2 in range(0, 20): - #Detector time - detector1 = float(java.lang.System.currentTimeMillis()) - #Detector ActualVA - detector2 = ActualVA.get() - detector3 = ActualIA.get() - #scan.append ([setpoint1], [readback1], [detector1, detector2]) - #append(setpoints, positions, values) - scan.append ([detector1], [detector1], [readback1, detector2, detector3]) - sleep( 0.1 ) # Settling time - ret = 'Test completed' - status = True - -#reset output to 0V -SetVA.put(0.0, timeout=None) -#Closing channels -SetVA.close() -ActualVA.close() -ActualIA.close() - - - -scan.end()