From 45496c70d7b90d4da5cda0aa21b862de01f4929a Mon Sep 17 00:00:00 2001
From: Nicolas Voirol <voirol.nicolas@gmail.com>
Date: Fri, 29 Apr 2016 09:39:05 +0200
Subject: [PATCH] Attempt at reducing native-z3 parallelism during tests

---
 .larabot.conf                                     |  1 +
 build.sbt                                         | 12 ++++++++++--
 .../purescala/PureScalaVerificationSuite.scala    | 15 ++++++++-------
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/.larabot.conf b/.larabot.conf
index 099fbc1f0..0458c9d97 100644
--- a/.larabot.conf
+++ b/.larabot.conf
@@ -2,6 +2,7 @@ commands = [
     "sbt -batch -Dparallel=10 test"
     "sbt -batch -Dparallel=10 integration:test"
     "sbt -batch -Dparallel=10 regression:test"
+    "sbt -batch -Dparallel=10 native:test"
     "sbt -batch -Dparallel=10 genc:test"
     "sbt -batch -Dparallel=10 isabelle:test"
 ]
diff --git a/build.sbt b/build.sbt
index 5d7cdbeb5..e5dd61402 100644
--- a/build.sbt
+++ b/build.sbt
@@ -148,12 +148,19 @@ lazy val IntegrTest = config("integration") extend(Test)
 testOptions in IntegrTest := Seq(Tests.Argument("-oDF"), Tests.Filter(_ startsWith "leon.integration."))
 
 
+def regressionFilter(name: String, native: Boolean = false): Boolean = name.startsWith("leon.regression") && (name.endsWith("NativeZ3") == native)
 
 // Regression Tests
 lazy val RegressionTest = config("regression") extend(Test)
 
-testOptions in RegressionTest := Seq(Tests.Argument("-oDF"), Tests.Filter(_ startsWith "leon.regression."))
+testOptions in RegressionTest := Seq(Tests.Argument("-oDF"), Tests.Filter(regressionFilter(_)))
 
+// Regression Tests that heavily depend on native Z3
+lazy val NativeZ3RegressionTest = config("native") extend(Test)
+
+testOptions in NativeZ3RegressionTest := Seq(Tests.Argument("-oDF"), Tests.Filter(regressionFilter(_, native = true)))
+
+parallelExecution in NativeZ3RegressionTest := false
 
 
 // Isabelle Tests
@@ -179,9 +186,10 @@ lazy val bonsai      = ghProject("git://github.com/colder/bonsai.git",     "10ea
 lazy val scalaSmtlib = ghProject("git://github.com/regb/scala-smtlib.git", "57834acfe2e3bc36862be52e4d99829bb8ff0ca7")
 
 lazy val root = (project in file(".")).
-  configs(RegressionTest, IsabelleTest, GenCTest, IntegrTest).
+  configs(RegressionTest, NativeZ3RegressionTest, IsabelleTest, GenCTest, IntegrTest).
   dependsOn(bonsai).
   dependsOn(scalaSmtlib).
+  settings(inConfig(NativeZ3RegressionTest)(Defaults.testTasks ++ testSettings): _*).
   settings(inConfig(RegressionTest)(Defaults.testTasks ++ testSettings): _*).
   settings(inConfig(IntegrTest)(Defaults.testTasks ++ testSettings): _*).
   settings(inConfig(IsabelleTest)(Defaults.testTasks ++ testSettings): _*).
diff --git a/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala b/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala
index ff1fcd53b..d2a1215f9 100644
--- a/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala
+++ b/src/test/scala/leon/regression/verification/purescala/PureScalaVerificationSuite.scala
@@ -32,13 +32,13 @@ trait PureScalaValidSuite extends PureScalaVerificationSuite {
   override def testAll() = testValid()
 }
 
-class PureScalaValidSuite1 extends PureScalaValidSuite {
+class PureScalaValidSuiteLuckyNativeZ3 extends PureScalaValidSuite {
   val optionVariants = List(opts(0))
 }
-class PureScalaValidSuite2 extends PureScalaValidSuite {
+class PureScalaValidSuiteCodeGenNativeZ3 extends PureScalaValidSuite {
   val optionVariants = List(opts(1))
 }
-class PureScalaValidSuite3 extends PureScalaValidSuite { // tests verification with --codegen parameter
+class PureScalaValidSuiteEnumNativeZ3 extends PureScalaValidSuite {
   val optionVariants = List(opts(2))
   override val ignored = Seq("valid/Predicate.scala","valid/TraceInductTacticTest.scala")
 }
@@ -53,10 +53,14 @@ trait PureScalaInvalidSuite extends PureScalaVerificationSuite {
   override def testAll() = testInvalid()
 }
 
-class PureScalaInvalidSuiteFairZ3 extends PureScalaInvalidSuite {
+class PureScalaInvalidSuiteNativeZ3 extends PureScalaInvalidSuite {
   val optionVariants = opts.take(3)
 }
 
+class PureScalaInvalidSuiteZ3 extends PureScalaInvalidSuite {
+  val optionVariants = isZ3Available.option(opts(3)).toList
+}
+
 class PureScalaInvalidSuiteCVC4 extends PureScalaInvalidSuite {
   val optionVariants = isCVC4Available.option(opts.last).toList
   override val ignored = List(
@@ -66,6 +70,3 @@ class PureScalaInvalidSuiteCVC4 extends PureScalaInvalidSuite {
   )
 }
 
-class PureScalaInvalidSuiteZ3 extends PureScalaInvalidSuite {
-  val optionVariants = isZ3Available.option(opts(3)).toList
-}
-- 
GitLab