diff --git a/Makefile b/Makefile
index 9ff4ba7..9de0553 100644
--- a/Makefile
+++ b/Makefile
@@ -48,7 +48,7 @@
 	docker push ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG}
 
 docker-run: # @HELP Run the container locally (intended for development purposes: DOCKER_RUN_ARGS="-pon 2 -onu 2" make docker-run)
-	docker run -p 50070:50070 -p 50060:50060 --privileged --rm --name bbsim ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG} /app/bbsim ${DOCKER_RUN_ARGS}
+	docker run -d -p 50070:50070 -p 50060:50060 --privileged --rm --name bbsim ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG} /app/bbsim ${DOCKER_RUN_ARGS}
 
 .PHONY: docs
 docs: # @HELP Generate docs and serve them in the browser
diff --git a/tests/bbr.groovy b/tests/bbr.groovy
new file mode 100644
index 0000000..205ea82
--- /dev/null
+++ b/tests/bbr.groovy
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ pipeline {
+
+  /* no label, executor is determined by JJB */
+  agent {
+    label "${params.executorNode}"
+  }
+
+  stages {
+    stage('Build BBSim') {
+      steps {
+        sh """
+          make docker-build
+        """
+      }
+    }
+    stage('Build BBR') {
+      steps {
+        sh """
+          make build-bbr
+        """
+      }
+    }
+    stage('64 ONUs (16 ONU x 4 PONs)') {
+      steps {
+        timeout(1) {
+          sh """
+            DOCKER_RUN_ARGS="-pon 4 -onu 16" make docker-run
+            ./bbr -pon 4 -onu 16 2>&1 | tee bbr_16_4.logs
+            docker logs bbsim 2>&1 | tee bbsim_16_4.logs
+          """
+        }
+      }
+    }
+    stage('128 ONUs (32 ONU x 4 PONs)') {
+      steps {
+        timeout(1) {
+          sh """
+            docker rm -f bbsim
+            DOCKER_RUN_ARGS="-pon 4 -onu 32" make docker-run
+            ./bbr -pon 4 -onu 32 2>&1 | tee bbr_32_4.logs
+            docker logs bbsim 2>&1 | tee bbsim_32_4.logs
+          """
+        }
+      }
+    }
+    stage('256 ONUs (32 ONU x 8 PONs)') {
+      steps {
+        timeout(1) {
+          sh """
+            docker rm -f bbsim
+            DOCKER_RUN_ARGS="-pon 8 -onu 32" make docker-run
+            ./bbr -pon 8 -onu 32 2>&1 | tee bbr_32_8.logs
+            docker logs bbsim 2>&1 | tee bbsim_32_8.logs
+          """
+        }
+      }
+    }
+    post {
+      always {
+         archiveArtifacts artifacts: '*.logs'
+         step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "teo@opennetworking.org", sendToIndividuals: false])
+      }
+      failure {
+        sh '''
+        docker logs bbsim 2>&1 | tee bbsim_failed.logs
+        docker cp bbsim:/app/dhcp.logs dhcp_failed.logs
+        docker cp bbsim:/var/lib/dhcp/dhcpd.leases dhcpd_leases_failed.logs
+        docker cp bbsim:/app/tcpdump.logs tcpdump_failed.logs
+        docker exec bbsim bbsimctl onu list > onu_list.logs
+        '''
+      }
+    }
+  }
+}
