You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/11/08 21:48:35 UTC
systemml git commit: [MINOR] Additional input/output verification in
flaky JMLC test
Repository: systemml
Updated Branches:
refs/heads/master ec024661a -> a03065299
[MINOR] Additional input/output verification in flaky JMLC test
Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/a0306529
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/a0306529
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/a0306529
Branch: refs/heads/master
Commit: a03065299a11487655863f4077df9c4af97829e1
Parents: ec02466
Author: Matthias Boehm <mb...@gmail.com>
Authored: Wed Nov 8 13:49:50 2017 -0800
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Wed Nov 8 13:49:50 2017 -0800
----------------------------------------------------------------------
.../functions/jmlc/MulticlassSVMScoreTest.java | 44 ++++++++++++--------
1 file changed, 26 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/systemml/blob/a0306529/src/test/java/org/apache/sysml/test/integration/functions/jmlc/MulticlassSVMScoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/jmlc/MulticlassSVMScoreTest.java b/src/test/java/org/apache/sysml/test/integration/functions/jmlc/MulticlassSVMScoreTest.java
index eca6e52..519ebac 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/jmlc/MulticlassSVMScoreTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/jmlc/MulticlassSVMScoreTest.java
@@ -39,7 +39,6 @@ import org.junit.Test;
public class MulticlassSVMScoreTest extends AutomatedTestBase
{
-
private final static String TEST_NAME = "m-svm-score";
private final static String TEST_DIR = "functions/jmlc/";
private final static String MODEL_FILE = "sentiment_model.mtx";
@@ -49,15 +48,17 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
private final static int rows = 107;
private final static int cols = 46; //fixed
- private final static int nRuns = 5;
+ private final static int nRuns = 3;
private final static double sparsity1 = 0.7;
private final static double sparsity2 = 0.1;
+ //This testcase recently caused intermittent test failures on jenkins that are not
+ //reproducible in local environments; hence we perform additional sanity checks here.
+ private final static boolean CHECK_IN_OUT = true;
@Override
- public void setUp()
- {
+ public void setUp() {
addTestConfiguration(TEST_NAME, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME, new String[] { "predicted_y" }) );
}
@@ -88,10 +89,14 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
loadTestConfiguration(config);
//generate inputs
- ArrayList<double[][]> Xset = generateInputs(nRuns, rows, cols, sparse?sparsity2:sparsity1);
+ ArrayList<double[][]> Xset = generateInputs(nRuns, rows, cols, sparse?sparsity2:sparsity1);
+ if( CHECK_IN_OUT )
+ checkSelfEquivalence(Xset, rows, cols);
//run DML via JMLC
ArrayList<double[][]> Yset = execDMLScriptviaJMLC( Xset, flags );
+ if( CHECK_IN_OUT )
+ checkSelfEquivalence(Yset, rows, 1);
//run R and compare results to DML result
String HOME = SCRIPT_DIR + TEST_DIR;
@@ -99,8 +104,8 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
rCmd = getRCmd(inputDir(), expectedDir());
//write model data once
- MatrixBlock mb = DataConverter.readMatrixFromHDFS(SCRIPT_DIR + TEST_DIR + MODEL_FILE,
- InputInfo.TextCellInputInfo, rows, cols, 1000, 1000);
+ MatrixBlock mb = DataConverter.readMatrixFromHDFS(SCRIPT_DIR + TEST_DIR + MODEL_FILE,
+ InputInfo.TextCellInputInfo, rows, cols, 1000, 1000);
double[][] W = DataConverter.convertToDoubleMatrix( mb );
writeInputMatrix("W", W, true);
@@ -108,7 +113,7 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
for( int i=0; i<nRuns; i++ )
{
//write input data
- writeInputMatrix("X", Xset.get(i), true);
+ writeInputMatrix("X", Xset.get(i), true);
//run the R script
runRScript(true);
@@ -117,7 +122,7 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
HashMap<CellIndex, Double> rfile = readRMatrixFromFS("predicted_y");
double[][] expected = TestUtils.convertHashMapToDoubleArray(rfile, rows, 1);
- TestUtils.compareMatrices(expected, Yset.get(i), rows, 1, eps);
+ TestUtils.compareMatrices(expected, Yset.get(i), rows, 1, eps);
}
}
@@ -140,7 +145,7 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
boolean parsePyDML = false;
//read and precompile script
- String script = conn.readScript(SCRIPT_DIR + TEST_DIR + TEST_NAME + ".dml");
+ String script = conn.readScript(SCRIPT_DIR + TEST_DIR + TEST_NAME + ".dml");
PreparedScript pstmt = conn.prepareScript(script, new String[]{"X","W"}, new String[]{"predicted_y"}, parsePyDML);
//read model
@@ -162,13 +167,11 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
ret.add(Y); //keep result for comparison
}
}
- catch(Exception ex)
- {
+ catch(Exception ex) {
ex.printStackTrace();
throw new IOException(ex);
}
- finally
- {
+ finally {
if( conn != null )
conn.close();
}
@@ -178,13 +181,18 @@ public class MulticlassSVMScoreTest extends AutomatedTestBase
return ret;
}
- private ArrayList<double[][]> generateInputs( int num, int rows, int cols, double sparsity )
- {
+ private ArrayList<double[][]> generateInputs( int num, int rows, int cols, double sparsity ) {
ArrayList<double[][]> ret = new ArrayList<double[][]>();
for( int i=0; i<num; i++ )
- ret.add(getRandomMatrix(rows, cols, -1, 1, sparsity, i));
-
+ ret.add(getRandomMatrix(rows, cols, -1, 1, sparsity, 7));
return ret;
}
+ private void checkSelfEquivalence(ArrayList<double[][]> data, int rows, int cols) {
+ if( data == null || data.size() < 2 )
+ return;
+ double[][] data0 = data.get(0);
+ for(int i=1; i<data.size(); i++)
+ TestUtils.compareMatrices(data0, data.get(i), rows, cols, eps);
+ }
}
\ No newline at end of file