Test for queued task size
[lttng-ci.git] / dsl / kernel-lttng-modules.seed.groovy
index cda7973ead1754e0d2fd1ed5811a211bec04ce61..b551e16ee3d72bff54c279acfadb517fa8422cd6 100644 (file)
@@ -88,12 +88,12 @@ class BasicVersion implements Comparable<BasicVersion> {
 }
 
 def kernelTagCutOff = new BasicVersion("2.6.36", "")
-def modulesBranches = ["master"]
+def modulesBranches = ["master", "stable-2.5", "stable-2.6"]
 
 //def modulesBranches = ["master","stable-2.5","stable-2.6", "stable-2.4"]
 
 def linuxURL = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"
-def modulesURL = "git://git.lttng.org/lttng-modules.git"
+def modulesURL = "https://github.com/lttng/lttng-modules.git"
 
 // Linux specific variable
 String linuxCheckoutTo = "linux-source"
@@ -234,7 +234,7 @@ if ( result.exitValue() == 0 ) {
                             }
                         }
                         steps {
-                            copyArtifacts("${jobName}/arch=\$arch", "linux-artifact/**", '', false, false) {
+                            copyArtifacts("${jobName}/arch=\$arch,label=kernel", "linux-artifact/**", '', false, false) {
                                 latestSuccessful(true) // Latest successful build
                             }
                             shell(readFileFromWorkspace('lttng-modules/lttng-modules-dsl-master.sh'))
@@ -251,8 +251,10 @@ import hudson.model.*
 import hudson.AbortException
 import hudson.console.HyperlinkNote
 import java.util.concurrent.CancellationException
+import java.util.Random
 
 
+Random random = new Random()
 def jobs = hudson.model.Hudson.instance.items
 def fail = false
 def jobStartWith = "dsl-kernel-"
@@ -286,13 +288,17 @@ hudson.model.Hudson.instance.nodes.each { node ->
 println "Nb of live kernel enabled build node "+ kernelEnabledNode
 
 def ongoingBuild = []
+def queueInstance = Jenkins.instance.queue
+
 
 while (toBuild.size() != 0) {
        if(ongoingBuild.size() <= (kernelEnabledNode.intdiv(2))) {
                def job = toBuild.pop()
                ongoingBuild.push(job.scheduleBuild2(0))
                println "\\t trigering" + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName)
+               println "Debug: currenlty queued task" + queueInstance.items.size()
        } else {
+               Thread.sleep(random.nextInt(120000))
                ongoingBuild.removeAll{ it.isCancelled() || it.isDone() }
        }
 }
@@ -306,41 +312,47 @@ import hudson.model.*
 import hudson.AbortException
 import hudson.console.HyperlinkNote
 import java.util.concurrent.CancellationException
+import java.util.Random
 
 
+Random random = new Random()
 def jobs = hudson.model.Hudson.instance.items
 def fail = false
 def jobStartWith = "JOBPREFIX"
+def toBuild = []
+def counter = 0
 
 def anotherBuild
 jobs.each { job ->
-  def jobName = job.getName()
-  if (jobName.startsWith(jobStartWith)) {
-    def lastBuild = job.getLastBuild()
-    if (lastBuild == null) {
-      try {
-        def future = job.scheduleBuild2(0, new Cause.UpstreamCause(build))
-        println "\\tWaiting for the completion of " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName)
-        anotherBuild = future.get()
-      } catch (CancellationException x) {
-        throw new AbortException("\${job.fullDisplayName} aborted.")
-      }
-      println HyperlinkNote.encodeTo('/' + anotherBuild.url, anotherBuild.fullDisplayName) + " completed. Result was " + anotherBuild.result
-
-      build.result = anotherBuild.result
-      if (anotherBuild.result != Result.SUCCESS && anotherBuild.result != Result.UNSTABLE) {
-        // We abort this build right here and now.
-        fail = true
-        println("Build Failed")
-      }
-    } else {
-      println("\\tAlready built")
-    }
-  }
+       def jobName = job.getName()
+       if (jobName.startsWith(jobStartWith)) {
+               counter = counter + 1
+               toBuild.push(job)
+       }
+}
+
+// Get valid node
+def kernelEnabledNode = 0
+hudson.model.Hudson.instance.nodes.each { node ->
+       if (node.getLabelString().contains("kernel")){
+               kernelEnabledNode++
+       }
+}
+
+def ongoingBuild = []
+while (toBuild.size() != 0) {
+       if(ongoingBuild.size() <= (kernelEnabledNode.intdiv(2))) {
+               def job = toBuild.pop()
+               ongoingBuild.push(job.scheduleBuild2(0))
+               println "\\t trigering " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName)
+       } else {
+               Thread.sleep(random.nextInt(60000))
+               ongoingBuild.removeAll{ it.isCancelled() || it.isDone() }
+       }
 }
 
 if (fail){
-  throw new AbortException("Some job failed")
+       throw new AbortException("Some job failed")
 }
 """
     if (isJenkinsInstance) {
This page took 0.023641 seconds and 4 git commands to generate.