catchError {
    def ok = true

    stage('Test') {
        def n = params.COUNT.toInteger()
        for (i = 0; i < n; i++) {
            try {
                build(job: "jepsen-test", parameters: [
                    string(name: 'TITLE', value: params.TITLE),
                    string(name: 'TARBALL_URL', value: params.TARBALL_URL),
                    string(name: 'TIME_LIMIT', value: params.TIME_LIMIT),
                    string(name: 'CONCURRENCY', value: params.CONCURRENCY),
                    string(name: 'NEMESIS', value: params.NEMESIS),
                    string(name: 'NEMESIS_INTERVAL', value: params.NEMESIS_INTERVAL),
                    string(name: 'READ_LOCK', value: params.READ_LOCK),
                    string(name: 'INIT_SQL', value: params.INIT_SQL),

                    string(name: 'WORKLOAD', value: params.WORKLOAD),
                    string(name: 'TXN_MODE', value: params.TXN_MODE),
                    string(name: 'ISOLATION', value: params.ISOLATION),

                    booleanParam(name: 'UPDATE_IN_PLACE', value: params.UPDATE_IN_PLACE),
                    booleanParam(name: 'FOLLOWER_READ', value: params.FOLLOWER_READ),
                    booleanParam(name: 'USE_INDEX', value: params.USE_INDEX),
                    booleanParam(name: 'FORCE_REINSTALL', value: params.FORCE_REINSTALL),

                    string(name: 'TIDB_CONFIG', value: params.TIDB_CONFIG),
                    string(name: 'TIKV_CONFIG', value: params.TIKV_CONFIG),
                    string(name: 'PD_CONFIG', value: params.PD_CONFIG),

                    string(name: 'EXTRA_ARGS', value: params.EXTRA_ARGS),
                    string(name: 'RAW_ARGS', value: params.RAW_ARGS),

                    string(name: 'IMAGE', value: params.IMAGE),
                    booleanParam(name: 'REPORT', value: params.REPORT),
                    booleanParam(name: 'ALWAYS_ARCHIVE_STORE', value: params.ALWAYS_ARCHIVE_STORE),
                ])
            } catch (e) {
                if (params.FAILFAST) {
                    throw e
                }
                echo("Error: $e")
                ok = false
            }
        }
    }

    stage('Check') { assert ok }

}
