[tests] adding a -long test flag to run long-running tests (closes #75)

This commit is contained in:
ChristianMct
2020-11-07 16:21:18 +01:00
committed by GitHub
parent f023ff529d
commit 0562af675b
9 changed files with 49 additions and 34 deletions

View File

@@ -7,4 +7,4 @@ go:
script:
- go build ./...
- make local
- make ci_test

View File

@@ -1,4 +1,4 @@
.DEFAULT_GOAL := local
.DEFAULT_GOAL := test
Coding/bin/Makefile.base:
git clone https://github.com/dedis/Coding
@@ -18,14 +18,14 @@ test_examples:
.PHONY: test_gotest
test_gotest:
go test -v -short -p=1 -timeout=0 ./utils ./ring ./bfv ./dbfv ./dckks
go test -v -short -p=1 -timeout=0 ./ckks -test-bootstrapping
go test -v -timeout=0 ./utils ./ring ./bfv ./dbfv ./dckks
go test -v -timeout=0 ./ckks -test-bootstrapping
.PHONY: test
test: test_fmt test_gotest test_examples
.PHONY: local
local: test_fmt test_lint test_gotest test_examples
.PHONY: ci_test
ci_test: test_fmt test_lint test_gotest test_examples
%: force Coding/bin/Makefile.base
@$(MAKE) -f Coding/bin/Makefile.base $@

View File

@@ -1,6 +1,7 @@
package bfv
import (
"flag"
"fmt"
"math/rand"
"testing"
@@ -13,6 +14,8 @@ import (
"github.com/ldsec/lattigo/v2/utils"
)
var flagLongTest = flag.Bool("long", false, "run the long test suite (all parameters). Overrides -short and requires -timeout=0.")
func testString(opname string, p *Parameters) string {
return fmt.Sprintf("%sLogN=%d/logQ=%d/alpha=%d/beta=%d", opname, p.logN, p.LogQP(), p.Alpha(), p.Beta())
}
@@ -42,12 +45,13 @@ func TestBFV(t *testing.T) {
rand.Seed(time.Now().UnixNano())
var defaultParams []*Parameters
var defaultParams = DefaultParams[PN12QP109 : PN12QP109+4] // the default test runs for ring degree N=2^12, 2^13, 2^14, 2^15
if testing.Short() {
defaultParams = DefaultParams[PN12QP109 : PN12QP109+3]
} else {
defaultParams = DefaultParams
defaultParams = DefaultParams[PN12QP109 : PN12QP109+2] // the short test suite runs for ring degree N=2^12, 2^13
}
if *flagLongTest {
defaultParams = DefaultParams // the long test suite runs for all default parameters
fmt.Println("bfv runing in long mode")
}
for _, p := range defaultParams {

View File

@@ -7,6 +7,11 @@ import (
)
func BenchmarkBootstrapp(b *testing.B) {
if !*testBootstrapping {
b.Skip("skipping bootstrapping test")
}
var err error
var testContext = new(testParams)
var btp *Bootstrapper

View File

@@ -41,7 +41,7 @@ func TestBootstrapp(t *testing.T) {
SineScale := math.Exp2(math.Round(math.Log2(float64(q))))
// Insecure params for fast testing only
if testing.Short() {
if !*flagLongTest {
params.logN = 14
params.logSlots = 13
}

View File

@@ -16,8 +16,10 @@ import (
"github.com/stretchr/testify/require"
)
var flagLongTest = flag.Bool("long", false, "run the long test suite (all parameters + secure bootstrapping). Overrides -short and requires -timeout=0.")
var printPrecisionStats = flag.Bool("print-precision", false, "print precision stats")
var testBootstrapping = flag.Bool("test-bootstrapping", false, "run the bootstrapping tests (memory intensive)")
var minPrec float64 = 15.0
func testString(testContext *testParams, opname string) string {
@@ -55,12 +57,12 @@ func TestCKKS(t *testing.T) {
var err error
var testContext = new(testParams)
var defaultParams []*Parameters
var defaultParams = DefaultParams[PN12QP109 : PN12QP109+4] // the default test runs for ring degree N=2^12, 2^13, 2^14, 2^15
if testing.Short() {
defaultParams = DefaultParams[PN12QP109 : PN12QP109+3]
} else {
defaultParams = DefaultParams
defaultParams = DefaultParams[PN12QP109 : PN12QP109+2] // the short test suite runs for ring degree N=2^12, 2^13
}
if *flagLongTest {
defaultParams = DefaultParams // the long test suite runs for all default parameters
}
for _, defaultParam := range defaultParams {
@@ -952,7 +954,6 @@ func testMarshaller(testContext *testParams, t *testing.T) {
t.Run("Marshaller/Ciphertext/", func(t *testing.T) {
t.Run(testString(testContext, "EndToEnd/"), func(t *testing.T) {
t.Parallel()
ciphertextWant := NewCiphertextRandom(testContext.prng, testContext.params, 2, testContext.params.MaxLevel(), testContext.params.Scale())
@@ -972,7 +973,6 @@ func testMarshaller(testContext *testParams, t *testing.T) {
})
t.Run(testString(testContext, "Minimal/"), func(t *testing.T) {
t.Parallel()
ciphertext := NewCiphertextRandom(testContext.prng, testContext.params, 0, testContext.params.MaxLevel(), testContext.params.Scale())

View File

@@ -1,6 +1,7 @@
package dbfv
import (
"flag"
"fmt"
"log"
"math/big"
@@ -12,6 +13,7 @@ import (
"github.com/stretchr/testify/require"
)
var flagLongTest = flag.Bool("long", false, "run the long test suite (all parameters). Overrides -short and requires -timeout=0.")
var parties uint64 = 3
func testString(opname string, parties uint64, params *bfv.Parameters) string {
@@ -48,14 +50,13 @@ func Test_DBFV(t *testing.T) {
var err error
var testCtx = new(testContext)
var defaultParams []*bfv.Parameters
var defaultParams = bfv.DefaultParams[bfv.PN12QP109 : bfv.PN12QP109+4] // the default test runs for ring degree N=2^12, 2^13, 2^14, 2^15
if testing.Short() {
defaultParams = bfv.DefaultParams[bfv.PN12QP109 : bfv.PN12QP109+3]
} else {
defaultParams = bfv.DefaultParams
defaultParams = bfv.DefaultParams[bfv.PN12QP109 : bfv.PN12QP109+2] // the short test runs for ring degree N=2^12, 2^13
}
if *flagLongTest {
defaultParams = bfv.DefaultParams // the long test suite runs for all default parameters
}
for _, p := range defaultParams {
if testCtx, err = gentestContext(p); err != nil {

View File

@@ -14,6 +14,7 @@ import (
"github.com/ldsec/lattigo/v2/utils"
)
var flagLongTest = flag.Bool("long", false, "run the long test suite (all parameters). Overrides -short and requires -timeout=0.")
var printPrecisionStats = flag.Bool("print-precision", false, "print precision stats")
var minPrec float64 = 15.0
var parties uint64 = 3
@@ -58,12 +59,12 @@ func TestDCKKS(t *testing.T) {
var err error
var testCtx = new(testContext)
var defaultParams []*ckks.Parameters
var defaultParams = ckks.DefaultParams[ckks.PN12QP109 : ckks.PN12QP109+4] // the default test runs for ring degree N=2^12, 2^13, 2^14, 2^15
if testing.Short() {
defaultParams = ckks.DefaultParams[ckks.PN12QP109 : ckks.PN12QP109+3]
} else {
defaultParams = ckks.DefaultParams
defaultParams = ckks.DefaultParams[ckks.PN12QP109 : ckks.PN12QP109+2] // the short test runs for ring degree N=2^12, 2^13
}
if *flagLongTest {
defaultParams = ckks.DefaultParams // the long test suite runs for all default parameters
}
for _, p := range defaultParams {

View File

@@ -1,6 +1,7 @@
package ring
import (
"flag"
"fmt"
"math/big"
"math/bits"
@@ -13,6 +14,8 @@ import (
"github.com/stretchr/testify/require"
)
var flagLongTest = flag.Bool("long", false, "run the long test suite (all parameters). Overrides -short and requires -timeout=0.")
var T = uint64(0x3ee0001)
var DefaultSigma = float64(3.2)
var DefaultBound = uint64(6 * DefaultSigma)
@@ -51,12 +54,13 @@ func TestRing(t *testing.T) {
rand.Seed(time.Now().UnixNano())
var err error
var defaultParams []*Parameters
var defaultParams = DefaultParams[0:4] // the default test
if testing.Short() {
defaultParams = DefaultParams[0:3]
} else {
defaultParams = DefaultParams
defaultParams = DefaultParams[0:2] // the short test suite
}
if *flagLongTest {
defaultParams = DefaultParams // the long test suite
}
testNewRing(t)