22
33import com .mathworks .ci .*;
44import 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 ;
510import hudson .model .FreeStyleBuild ;
611import hudson .model .FreeStyleProject ;
712import 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 ;
816import org .junit .*;
9- import org .junit .rules .Timeout ;
1017import org .jvnet .hudson .test .JenkinsRule ;
11- import java .io .IOException ;
12-
18+ import java .util .Arrays ;
1319
1420public 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