mirror of
https://github.com/corda/corda.git
synced 2024-12-30 01:39:04 +00:00
b29713d7b9
ENT-6947: Implement interning for SecureHash, CordaX500Name, PublicKey, AsbtractParty and SignatureAttachmentConstraint, including automatic detection of internable types off companion objects in AMQP & Kyro deserialization. In some cases, add new factory methods to companion objects, and make main code base use them. Performance tested in performance cluster with no negative impact visible (so default concurrency setting seems okay). Testing suggests 5-6x memory saving for tokens in TokensSDK in memory selector. Should see approx. 1 million tokens per GB or better (1.5 million for the tokens we tested with).
189 lines
5.7 KiB
Groovy
189 lines
5.7 KiB
Groovy
import static org.gradle.api.JavaVersion.VERSION_1_8
|
|
|
|
apply plugin: 'kotlin'
|
|
apply plugin: 'kotlin-jpa'
|
|
apply plugin: 'net.corda.plugins.quasar-utils'
|
|
apply plugin: 'net.corda.plugins.publish-utils'
|
|
apply plugin: 'net.corda.plugins.api-scanner'
|
|
apply plugin: 'com.jfrog.artifactory'
|
|
|
|
description 'Corda core'
|
|
|
|
// required by DJVM and Avian JVM (for running inside the SGX enclave) which only supports Java 8.
|
|
targetCompatibility = VERSION_1_8
|
|
|
|
sourceSets {
|
|
obfuscator
|
|
}
|
|
|
|
configurations {
|
|
integrationTestCompile.extendsFrom testCompile
|
|
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
|
|
|
|
smokeTestCompile.extendsFrom compile
|
|
smokeTestRuntimeOnly.extendsFrom runtimeOnly
|
|
}
|
|
|
|
dependencies {
|
|
|
|
obfuscatorImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
|
|
|
testImplementation sourceSets.obfuscator.output
|
|
testImplementation "org.junit.jupiter:junit-jupiter-api:${junit_jupiter_version}"
|
|
testImplementation "junit:junit:$junit_version"
|
|
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:${junit_vintage_version}"
|
|
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junit_jupiter_version}"
|
|
testRuntimeOnly "org.junit.platform:junit-platform-launcher:${junit_platform_version}"
|
|
|
|
testCompile "commons-fileupload:commons-fileupload:$fileupload_version"
|
|
|
|
// Guava: Google test library (collections test suite)
|
|
testCompile "com.google.guava:guava-testlib:$guava_version"
|
|
|
|
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
|
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
|
|
testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
|
|
|
|
// Hamkrest, for fluent, composable matchers
|
|
testCompile "com.natpryce:hamkrest:$hamkrest_version"
|
|
|
|
// Thread safety annotations
|
|
compile "com.google.code.findbugs:jsr305:$jsr305_version"
|
|
|
|
// SLF4J: commons-logging bindings for a SLF4J back end
|
|
compile "org.slf4j:jcl-over-slf4j:$slf4j_version"
|
|
compile "org.slf4j:slf4j-api:$slf4j_version"
|
|
|
|
// AssertJ: for fluent assertions for testing
|
|
testCompile "org.assertj:assertj-core:${assertj_version}"
|
|
|
|
// Guava: Google utilities library.
|
|
compile "com.google.guava:guava:$guava_version"
|
|
|
|
// For caches rather than guava
|
|
compile "com.github.ben-manes.caffeine:caffeine:$caffeine_version"
|
|
|
|
// RxJava: observable streams of events.
|
|
compile "io.reactivex:rxjava:$rxjava_version"
|
|
|
|
compile "org.apache.commons:commons-lang3:$commons_lang_version"
|
|
|
|
// Java ed25519 implementation. See https://github.com/str4d/ed25519-java/
|
|
compile "net.i2p.crypto:eddsa:$eddsa_version"
|
|
|
|
// Bouncy castle support needed for X509 certificate manipulation
|
|
compile "org.bouncycastle:bcprov-jdk15on:${bouncycastle_version}"
|
|
compile "org.bouncycastle:bcpkix-jdk15on:${bouncycastle_version}"
|
|
|
|
// JPA 2.2 annotations.
|
|
compile "javax.persistence:javax.persistence-api:2.2"
|
|
|
|
// required to use @Type annotation
|
|
compile "org.hibernate:hibernate-core:$hibernate_version"
|
|
|
|
// FastThreadLocal
|
|
compile "io.netty:netty-common:$netty_version"
|
|
|
|
compile group: "io.github.classgraph", name: "classgraph", version: class_graph_version
|
|
|
|
testCompile "org.ow2.asm:asm:$asm_version"
|
|
|
|
// JDK11: required by Quasar at run-time
|
|
testRuntimeOnly "com.esotericsoftware:kryo:$kryo_version"
|
|
|
|
testCompile "com.nhaarman:mockito-kotlin:$mockito_kotlin_version"
|
|
testCompile "org.mockito:mockito-core:$mockito_version"
|
|
testCompile "org.assertj:assertj-core:$assertj_version"
|
|
testCompile "com.natpryce:hamkrest:$hamkrest_version"
|
|
testCompile 'org.hamcrest:hamcrest-library:2.1'
|
|
|
|
}
|
|
|
|
// TODO Consider moving it to quasar-utils in the future (introduced with PR-1388)
|
|
task copyQuasarJar(type: Copy) {
|
|
from configurations.quasar
|
|
into "$project.rootProject.projectDir/lib"
|
|
rename { filename -> "quasar.jar"}
|
|
}
|
|
|
|
jar {
|
|
finalizedBy(copyQuasarJar)
|
|
archiveBaseName = 'corda-core'
|
|
archiveClassifier = ''
|
|
}
|
|
|
|
configurations {
|
|
testArtifacts.extendsFrom testRuntimeClasspath
|
|
}
|
|
|
|
|
|
processTestResources {
|
|
inputs.files(jar)
|
|
into("zip") {
|
|
from(jar) {
|
|
rename { "core.jar" }
|
|
}
|
|
}
|
|
}
|
|
|
|
test {
|
|
maxParallelForks = (System.env.CORDA_CORE_TESTING_FORKS == null) ? 1 : "$System.env.CORDA_CORE_TESTING_FORKS".toInteger()
|
|
}
|
|
|
|
task testJar(type: Jar) {
|
|
classifier "tests"
|
|
from sourceSets.test.output
|
|
}
|
|
|
|
// quasar exclusions upon agent code instrumentation at run-time
|
|
quasar {
|
|
excludePackages.addAll(
|
|
"antlr**",
|
|
"com.codahale**",
|
|
"com.fasterxml.**",
|
|
"com.github.benmanes.caffeine.**",
|
|
"com.google.**",
|
|
"com.lmax.**",
|
|
"com.zaxxer.**",
|
|
"net.bytebuddy**",
|
|
"io.github.classgraph**",
|
|
"io.netty*",
|
|
"liquibase**",
|
|
"net.i2p.crypto.**",
|
|
"nonapi.io.github.classgraph.**",
|
|
"org.apiguardian.**",
|
|
"org.bouncycastle**",
|
|
"org.codehaus.**",
|
|
"org.h2**",
|
|
"org.hibernate**",
|
|
"org.jboss.**",
|
|
"org.objenesis**",
|
|
"org.w3c.**",
|
|
"org.xml**",
|
|
"org.yaml**",
|
|
"rx**")
|
|
}
|
|
|
|
artifacts {
|
|
testArtifacts testJar
|
|
publish testJar
|
|
}
|
|
|
|
scanApi {
|
|
excludeClasses = [
|
|
// Kotlin should probably have declared this class as "synthetic".
|
|
"net.corda.core.Utils\$toFuture\$1\$subscription\$1"
|
|
]
|
|
}
|
|
|
|
publish {
|
|
name jar.baseName
|
|
}
|
|
|
|
tasks.register("writeTestResources", JavaExec) {
|
|
classpath sourceSets.obfuscator.output
|
|
classpath sourceSets.obfuscator.runtimeClasspath
|
|
main 'net.corda.core.internal.utilities.TestResourceWriter'
|
|
args new File(sourceSets.test.resources.srcDirs.first(), "zip").toString()
|
|
}
|