diff --git a/test-cookiecutter-reclass.groovy b/test-cookiecutter-reclass.groovy
index f2a1c72..5da97f3 100644
--- a/test-cookiecutter-reclass.groovy
+++ b/test-cookiecutter-reclass.groovy
@@ -71,6 +71,13 @@
   gerritRef = null
 }
 
+def testOption
+try {
+  testOption = TEST_OPTION
+} catch (MissingPropertyException e) {
+  testOption = "salt-model"
+}
+
 timestamps {
     node("python&&docker") {
         def templateEnv = "${env.WORKSPACE}"
@@ -118,19 +125,21 @@
                 }
             }
 
-            stage("test-nodes") {
-                def partitions = common.partitionList(contextFileList, 3)
-                def buildSteps = [:]
-                for (int i = 0; i < partitions.size(); i++) {
-                    def partition = partitions[i]
-                    buildSteps.put("partition-${i}", new HashMap<String,org.jenkinsci.plugins.workflow.cps.CpsClosure2>())
-                    for(int k = 0; k < partition.size; k++){
-                        def basename = sh(script: "basename ${partition[k]} .yml", returnStdout: true).trim()
-                        def testEnv = "${env.WORKSPACE}/model/${basename}"
-                        buildSteps.get("partition-${i}").put(basename, { testModel(basename, testEnv) })
+            if (testOption == "salt-model") {
+                stage("test-nodes") {
+                    def partitions = common.partitionList(contextFileList, PARALLEL_NODE_GROUP_SIZE.toInteger())
+                    def buildSteps = [:]
+                    for (int i = 0; i < partitions.size(); i++) {
+                        def partition = partitions[i]
+                        buildSteps.put("partition-${i}", new HashMap<String,org.jenkinsci.plugins.workflow.cps.CpsClosure2>())
+                        for(int k = 0; k < partition.size; k++){
+                            def basename = sh(script: "basename ${partition[k]} .yml", returnStdout: true).trim()
+                            def testEnv = "${env.WORKSPACE}/model/${basename}"
+                            buildSteps.get("partition-${i}").put(basename, { testModel(basename, testEnv) })
+                        }
                     }
+                    common.serial(buildSteps)
                 }
-                common.serial(buildSteps)
             }
 
         } catch (Throwable e) {
