An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client https://wiki.hyperledger.org/display/besu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
besu/consensus/qbft/build.gradle

171 lines
6.6 KiB

/*
* Copyright ConsenSys AG.
*
* 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.
*
* SPDX-License-Identifier: Apache-2.0
*/
apply plugin: 'java-library'
jar {
archiveBaseName = 'besu-qbft'
manifest {
attributes(
'Specification-Title': archiveBaseName,
'Specification-Version': project.version,
'Implementation-Title': archiveBaseName,
'Implementation-Version': calculateVersion()
)
}
}
sourceSets {
referenceTest {
java {
compileClasspath += main.output
runtimeClasspath += main.output
srcDir file('src/reference-test/java')
}
resources { srcDir file('src/reference-test/resources') }
}
}
task referenceTests(type: Test, dependsOn: ["compileTestJava"]) {
group = "verification"
description = "Runs the Besu QBFT reference tests"
jvmArgs = [
'--add-opens',
'java.base/java.util=ALL-UNNAMED',
'--add-opens',
'java.base/java.util.concurrent=ALL-UNNAMED'
]
testClassesDirs = sourceSets.referenceTest.output.classesDirs
classpath = sourceSets.referenceTest.runtimeClasspath
outputs.upToDateWhen { false }
}
dependencies {
implementation project(':config')
implementation project(':consensus:common')
implementation project(':crypto')
implementation project(':datatypes')
implementation project(':ethereum:api')
implementation project(':ethereum:blockcreation')
implementation project(':ethereum:core')
implementation project(':ethereum:eth')
implementation project(':ethereum:p2p')
implementation project(':ethereum:rlp')
implementation project(':evm')
implementation project(':pki')
implementation project(':services:kvstore')
implementation 'com.google.guava:guava'
implementation 'io.vertx:vertx-core'
Vert.x upgrade (with tests) (#3135) * compile issues sorted, some tests failing Signed-off-by: Justin Florentine <justin+github@florentine.us> * closing runnerBehind closes the vertx shared with runnerAhead, which now throws an exception Signed-off-by: Justin Florentine <justin+github@florentine.us> * checkpoint when 4/5 websocket login tests pass Signed-off-by: Justin Florentine <justin+github@florentine.us> * exp moved to attribute from principal Signed-off-by: Justin Florentine <justin+github@florentine.us> * fixed more tests Signed-off-by: Justin Florentine <justin+github@florentine.us> * fixed more tests Signed-off-by: Justin Florentine <justin+github@florentine.us> * exception handling test improvement Signed-off-by: Justin Florentine <justin+github@florentine.us> * exception handling test improvement Signed-off-by: Justin Florentine <justin+github@florentine.us> * static renamed Signed-off-by: Justin Florentine <justin+github@florentine.us> * We want old implementation of the host() Newly vertex handles the forward headers and modifies host(). In the process vert.x loses track of port from Host header in case the port was not a string. Signed-off-by: Jiri Peinlich <jiri.peinlich@gmail.com> * adding dependency on jackson-databind for tests Signed-off-by: Jiri Peinlich <jiri.peinlich@gmail.com> * making sure changes are spotless Signed-off-by: Jiri Peinlich <jiri.peinlich@gmail.com> * Dealing with regression Signed-off-by: Jiri Peinlich <jiri.peinlich@gmail.com> * fixing last failing vert.x test hopefully Signed-off-by: Jiri Peinlich <jiri.peinlich@gmail.com> * removed commented out code Signed-off-by: Justin Florentine <justin+github@florentine.us> * reverts debugging adjustment Signed-off-by: Justin Florentine <justin+github@florentine.us> * removed commented out code Signed-off-by: Justin Florentine <justin+github@florentine.us> * minor whitespace cleanup Signed-off-by: Justin Florentine <justin+github@florentine.us> * (internal) Refactor 'onchain' to 'flexible' where applicable (#3075) * CLI option name change Signed-off-by: Frank Li <b439988l@gmail.com> * refactor privacyparameters.java and add deprecation warning Signed-off-by: Frank Li <b439988l@gmail.com> * more refactoring Signed-off-by: Frank Li <b439988l@gmail.com> * add to everything.toml Signed-off-by: Frank Li <b439988l@gmail.com> * bugs Signed-off-by: Frank Li <b439988l@gmail.com> * more missing variable names Signed-off-by: Frank Li <b439988l@gmail.com> * more classes Signed-off-by: Frank Li <b439988l@gmail.com> * more classes Signed-off-by: Frank Li <b439988l@gmail.com> * fix compile error Signed-off-by: Frank Li <b439988l@gmail.com> * add new test to invalidate passing both commands Signed-off-by: Frank Li <b439988l@gmail.com> * more refactoring + more tests Signed-off-by: Frank Li <b439988l@gmail.com> * new batch Signed-off-by: Frank Li <b439988l@gmail.com> * final batch? Signed-off-by: Frank Li <b439988l@gmail.com> * failing unit test Signed-off-by: Frank Li <b439988l@gmail.com> * revert incorrect refactoring back to onchain Signed-off-by: Frank Li <b439988l@gmail.com> * fix unit test Signed-off-by: Frank Li <b439988l@gmail.com> * comment Signed-off-by: Frank Li <b439988l@gmail.com> * comment Signed-off-by: Frank Li <b439988l@gmail.com> * support both privx methods Signed-off-by: Frank Li <b439988l@gmail.com> * add to changelog Signed-off-by: Frank Li <b439988l@gmail.com> * address comment Signed-off-by: Frank Li <b439988l@gmail.com> * add plugin privacy Signed-off-by: Frank Li <b439988l@gmail.com> Signed-off-by: Justin Florentine <justin+github@florentine.us> * checkpoint when 4/5 websocket login tests pass Signed-off-by: Justin Florentine <justin+github@florentine.us> * trying to figure out how to decouple this test Signed-off-by: Justin Florentine <justin+github@florentine.us> * spotless Signed-off-by: Justin Florentine <justin+github@florentine.us> * removes Orion from integration test Signed-off-by: Justin Florentine <justin+github@florentine.us> * spotless Signed-off-by: Justin Florentine <justin+github@florentine.us> * Add jackson dependency to merge module Signed-off-by: Diego López León <dieguitoll@gmail.com> * Migrate JWTAuthOptions creations for public keys Signed-off-by: Diego López León <dieguitoll@gmail.com> * Check http client response status Signed-off-by: Diego López León <dieguitoll@gmail.com> * Replace Orian with Tessera in tests Signed-off-by: Diego López León <dieguitoll@gmail.com> * Change Tessera expected error messages in tests Signed-off-by: Diego López León <dieguitoll@gmail.com> * Change executor of integrationTests to allow spanning Docker processes Signed-off-by: Diego López León <dieguitoll@gmail.com> Co-authored-by: Justin Florentine <justin+github@florentine.us> Co-authored-by: Jiri Peinlich <jiri.peinlich@gmail.com> Co-authored-by: Frank Li <39414003+frankisawesome@users.noreply.github.com> Co-authored-by: Sally MacFarlane <sally.macfarlane@consensys.net>
3 years ago
implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation 'org.apache.tuweni:tuweni-bytes'
implementation 'org.apache.tuweni:tuweni-units'
implementation 'org.web3j:abi'
integrationTestImplementation project(path: ':config', configuration: 'testSupportArtifacts')
integrationTestImplementation project(path: ':ethereum:core', configuration: 'testSupportArtifacts')
testImplementation project(path: ':crypto', configuration: 'testSupportArtifacts')
testImplementation project(path: ':config', configuration: 'testSupportArtifacts')
testImplementation project(path: ':consensus:common', configuration: 'testArtifacts')
testImplementation project(path: ':consensus:common', configuration: 'testSupportArtifacts')
testImplementation project(':ethereum:core')
testImplementation project(path: ':ethereum:core', configuration: 'testSupportArtifacts')
testImplementation project(':crypto')
testImplementation project(':evm')
testImplementation project(':metrics:core')
testImplementation project(':testutil')
testImplementation 'junit:junit'
testImplementation 'org.assertj:assertj-core'
testImplementation 'org.awaitility:awaitility'
testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation 'org.mockito:mockito-core'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
integrationTestImplementation project(':crypto')
integrationTestImplementation project(path: ':crypto', configuration: 'testSupportArtifacts')
integrationTestImplementation project(path: ':consensus:common', configuration: 'testSupportArtifacts')
integrationTestImplementation project(':evm')
integrationTestImplementation project(':metrics:core')
integrationTestImplementation project(':testutil')
integrationTestImplementation 'org.assertj:assertj-core'
integrationTestImplementation 'org.junit.jupiter:junit-jupiter-api'
integrationTestImplementation 'org.mockito:mockito-core'
integrationTestImplementation 'org.mockito:mockito-junit-jupiter'
integrationTestRuntimeOnly 'org.junit.jupiter:junit-jupiter'
referenceTestImplementation 'junit:junit'
referenceTestImplementation 'com.google.guava:guava'
referenceTestImplementation 'org.assertj:assertj-core'
referenceTestImplementation 'org.mockito:mockito-core'
referenceTestImplementation 'com.fasterxml.jackson.core:jackson-databind'
referenceTestImplementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
referenceTestImplementation 'org.apache.tuweni:tuweni-bytes'
referenceTestImplementation project(':crypto')
referenceTestImplementation project(path: ':crypto', configuration: 'testSupportArtifacts')
referenceTestImplementation project(':consensus:common')
referenceTestImplementation project(':datatypes')
referenceTestImplementation project(':ethereum:core')
referenceTestImplementation project(':ethereum:rlp')
referenceTestImplementation project(':config')
referenceTestImplementation project(':testutil')
testSupportImplementation 'org.mockito:mockito-core'
}
task ('validateReferenceTestSubmodule') {
description = "Checks that the reference tests submodule is not accidentally changed"
doLast {
def result = new ByteArrayOutputStream()
def expectedHash = 'c0077a14e0d773e239ba944f371ea640df8b1b60'
def submodulePath = java.nio.file.Path.of("${rootProject.projectDir}", "consensus/qbft/src/reference-test/resources").toAbsolutePath()
try {
exec {
commandLine 'git', 'submodule', 'status', submodulePath
standardOutput = result
errorOutput = result
}
} catch (Exception ignore) {
// Ignore it. We want to fail in a friendly fashion if they don't have git installed.
// The CI servers have git and that is the only critical place for this failure
expectedHash = ''
}
if (!result.toString().contains(expectedHash)) {
throw new GradleException("""For the QBFT Reference Tests the git commit did not match what was expected.
If this is a deliberate change where you are updating the reference tests
then update "expectedHash" in `consensus/qbft/build.gradle` as the
commit hash for this task.
Expected hash : ${expectedHash}
Full git output : ${result}
If this is accidental you can correct the reference test versions with the
following commands:
pushd ${submodulePath}
git checkout ${expectedHash}
cd ..
git add resources
popd""")
}
}
}
processResources.dependsOn('validateReferenceTestSubmodule')