Skip to content
This repository was archived by the owner on Mar 27, 2025. It is now read-only.

Commit 309b23d

Browse files
committed
Add tests for Matrix project
1 parent 9e9f57c commit 309b23d

File tree

1 file changed

+112
-38
lines changed

1 file changed

+112
-38
lines changed

src/test/java/com/mathworks/ci/systemTests/RunMATLABCommandIT.java

Lines changed: 112 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,22 @@
22

33
import com.mathworks.ci.*;
44
import com.mathworks.ci.freestyle.RunMatlabCommandBuilder;
5+
import hudson.matrix.AxisList;
6+
import hudson.matrix.Combination;
7+
import hudson.matrix.MatrixProject;
8+
import hudson.matrix.MatrixRun;
9+
import hudson.matrix.MatrixBuild;
510
import hudson.model.FreeStyleBuild;
611
import hudson.model.FreeStyleProject;
712
import hudson.model.Result;
13+
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
14+
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
15+
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
816
import org.junit.*;
9-
import org.junit.rules.Timeout;
1017
import org.jvnet.hudson.test.JenkinsRule;
11-
import java.io.IOException;
12-
18+
import java.util.Arrays;
1319

1420
public class RunMATLABCommandIT {
15-
16-
private FreeStyleProject project;
17-
private UseMatlabVersionBuildWrapper buildWrapper;
18-
private RunMatlabCommandBuilder scriptBuilder;
19-
20-
@Rule
21-
public Timeout timeout = Timeout.seconds(0);
22-
2321
@Rule
2422
public JenkinsRule jenkins = new JenkinsRule();
2523

@@ -30,17 +28,24 @@ public static void checkMatlabRoot() {
3028
Assume.assumeTrue("Not running tests as MATLAB_ROOT environment variable is not defined", matlabRoot != null && !matlabRoot.isEmpty());
3129
}
3230

33-
@Before
34-
public void testSetup() throws IOException {
35-
this.project = jenkins.createFreeStyleProject();
36-
this.scriptBuilder = new RunMatlabCommandBuilder();
37-
this.buildWrapper = new UseMatlabVersionBuildWrapper();
38-
}
31+
/*
32+
*Test To Verify if Build passes when matlab command passes
33+
*/
34+
@Test
35+
public void verifyBuildPassesWhenMatlabCommandPasses() throws Exception {
36+
FreeStyleProject project = jenkins.createFreeStyleProject();
37+
UseMatlabVersionBuildWrapper buildWrapper = new UseMatlabVersionBuildWrapper();
38+
RunMatlabCommandBuilder scriptBuilder = new RunMatlabCommandBuilder();
39+
40+
buildWrapper.setMatlabBuildWrapperContent(new MatlabBuildWrapperContent(Message.getValue("matlab.custom.location"), MatlabRootSetup.getMatlabRoot()));
41+
project.getBuildWrappersList().add(buildWrapper);
3942

40-
@After
41-
public void testTearDown() {
42-
this.project = null;
43-
this.scriptBuilder = null;
43+
scriptBuilder.setMatlabCommand("disp 'apple'");
44+
project.getBuildersList().add(scriptBuilder);
45+
46+
FreeStyleBuild build = project.scheduleBuild2(0).get();
47+
jenkins.assertBuildStatus(Result.SUCCESS, build);
48+
jenkins.assertLogContains("apple", build);
4449
}
4550

4651
/*
@@ -49,30 +54,99 @@ public void testTearDown() {
4954

5055
@Test
5156
public void verifyBuildFailureWhenMatlabCommandFails() throws Exception {
52-
this.buildWrapper.setMatlabBuildWrapperContent(new MatlabBuildWrapperContent(Message.getValue("matlab.custom.location"), MatlabRootSetup.getMatlabRoot()));
53-
project.getBuildWrappersList().add(this.buildWrapper);
54-
RunMatlabCommandBuilder tester =
55-
new RunMatlabCommandBuilder();
56-
tester.setMatlabCommand("apple");
57-
project.getBuildersList().add(tester);
57+
FreeStyleProject project = jenkins.createFreeStyleProject();
58+
UseMatlabVersionBuildWrapper buildWrapper = new UseMatlabVersionBuildWrapper();
59+
RunMatlabCommandBuilder scriptBuilder = new RunMatlabCommandBuilder();
60+
61+
buildWrapper.setMatlabBuildWrapperContent(new MatlabBuildWrapperContent(Message.getValue("matlab.custom.location"), MatlabRootSetup.getMatlabRoot()));
62+
project.getBuildWrappersList().add(buildWrapper);
63+
64+
scriptBuilder.setMatlabCommand("apple");
65+
project.getBuildersList().add(scriptBuilder);
5866
FreeStyleBuild build = project.scheduleBuild2(0).get();
5967
jenkins.assertLogContains("apple", build);
6068
jenkins.assertBuildStatus(Result.FAILURE, build);
6169
}
6270

71+
/*
72+
* Test to verify if Matrix build passes .
73+
*/
6374

64-
/* Test To Verify if Build passes when matlab command passes
65-
*/
6675
@Test
67-
public void verifyBuildPassesWhenMatlabCommandPasses() throws Exception {
68-
this.buildWrapper.setMatlabBuildWrapperContent(new MatlabBuildWrapperContent(Message.getValue("matlab.custom.location"), MatlabRootSetup.getMatlabRoot()));
69-
project.getBuildWrappersList().add(this.buildWrapper);
70-
RunMatlabCommandBuilder tester =
71-
new RunMatlabCommandBuilder();
72-
tester.setMatlabCommand("disp 'apple'");
73-
project.getBuildersList().add(tester);
74-
FreeStyleBuild build = project.scheduleBuild2(0).get();
76+
public void verifyMatrixBuildPassesWithMATLABCommand() throws Exception {
77+
String matlabRoot = System.getenv("MATLAB_ROOT");
78+
String matlabRoot22b = System.getenv("MATLAB_ROOT_22b");
79+
Assume.assumeTrue("Not running tests as MATLAB_ROOT_22b environment variable is not defined", matlabRoot22b != null && !matlabRoot22b.isEmpty());
80+
81+
MatlabRootSetup.setMatlabInstallation("MATLAB_PATH_1", matlabRoot, jenkins);
82+
MatlabRootSetup.setMatlabInstallation("MATLAB_PATH_22b", matlabRoot22b, jenkins);
83+
84+
MatrixProject matrixProject = jenkins.createProject(MatrixProject.class);
85+
MatlabInstallationAxis MATLABAxis = new MatlabInstallationAxis(Arrays.asList("MATLAB_PATH_1", "MATLAB_PATH_22b"));
86+
matrixProject.setAxes(new AxisList(MATLABAxis));
87+
88+
RunMatlabCommandBuilder scriptBuilder = new RunMatlabCommandBuilder();
89+
scriptBuilder.setMatlabCommand("disp('apple')");
90+
matrixProject.getBuildersList().add(scriptBuilder);
91+
92+
MatrixBuild build = matrixProject.scheduleBuild2(0).get();
93+
94+
Combination c = new Combination(new AxisList(new MatlabInstallationAxis(Arrays.asList("MATLAB_PATH_1"))), "MATLAB_PATH_1");
95+
MatrixRun run = build.getRun(c);
96+
jenkins.assertLogContains("disp('apple')", run);
97+
jenkins.assertLogContains(matlabRoot, run);
98+
jenkins.assertLogNotContains(matlabRoot22b, run);
99+
100+
c = new Combination(new AxisList(new MatlabInstallationAxis(Arrays.asList("MATLAB_PATH_22b"))), "MATLAB_PATH_22b");
101+
run = build.getRun(c);
102+
jenkins.assertLogContains("disp('apple')", run);
103+
jenkins.assertLogContains(matlabRoot22b,run);
104+
75105
jenkins.assertBuildStatus(Result.SUCCESS, build);
76-
jenkins.assertLogContains("apple", build);
106+
}
107+
108+
@Test
109+
public void verifyBuildPassesWhenMatlabCommandPassesPipeline() throws Exception {
110+
String script = "pipeline {\n" +
111+
" agent any\n" +
112+
MatlabRootSetup.getEnvironmentDSL() + "\n" +
113+
" stages{\n" +
114+
" stage('Run MATLAB Command') {\n" +
115+
" steps\n" +
116+
" {\n" +
117+
" runMATLABCommand 'version' \n" +
118+
" }\n" +
119+
" }\n" +
120+
" }\n" +
121+
"}";
122+
123+
WorkflowJob project = jenkins.createProject(WorkflowJob.class);
124+
project.setDefinition(new CpsFlowDefinition(script,true));
125+
WorkflowRun build = project.scheduleBuild2(0).get();
126+
127+
jenkins.assertBuildStatus(Result.SUCCESS, build);
128+
}
129+
130+
@Test
131+
public void verifyBuildFailsWhenMatlabCommandFails() throws Exception {
132+
String script = "pipeline {\n" +
133+
" agent any\n" +
134+
MatlabRootSetup.getEnvironmentDSL() + "\n" +
135+
" stages{\n" +
136+
" stage('Run MATLAB Command') {\n" +
137+
" steps\n" +
138+
" {\n" +
139+
" runMATLABCommand 'apple' \n" +
140+
" }\n" +
141+
" }\n" +
142+
" }\n" +
143+
"}";
144+
145+
WorkflowJob project = jenkins.createProject(WorkflowJob.class);
146+
project.setDefinition(new CpsFlowDefinition(script,true));
147+
WorkflowRun build = project.scheduleBuild2(0).get();
148+
149+
jenkins.assertLogContains("apple",build);
150+
jenkins.assertBuildStatus(Result.FAILURE, build);
77151
}
78152
}

0 commit comments

Comments
 (0)