diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eb5237c..19ed883 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,6 +43,7 @@ code_quality: - /^.*hotfix.*$/ tests&build: + image: $CI_REGISTRY/integrator/devops/openjdk-17-slim-docker:d837de0d extends: - .test-gradle script: @@ -55,17 +56,19 @@ tests&build: <<: *artifacts tests&build_for_maven_central: + image: $CI_REGISTRY/integrator/devops/openjdk-17-slim-docker:d837de0d extends: - .test-gradle script: - cat $we_maven_central_gpg | base64 --decode > "$(pwd)/we_maven_central.gpg" - ./gradlew --no-parallel -PsonaTypeMavenUser=$SONATYPE_USER -PsonaTypeMavenPassword=$SONATYPE_PASSWORD -Psigning.keyId=$SIGN_KEY_ID -Psigning.password=$SIGN_PASSWORD -Psigning.secretKeyRingFile="$(pwd)/we_maven_central.gpg" version check build publish - - ./gradlew -PsonaTypeMavenUser=$SONATYPE_USER -PsonaTypeMavenPassword=$SONATYPE_PASSWORD closeAndReleaseRepository + - ./gradlew -PsonaTypeMavenUser=$SONATYPE_USER -PsonaTypeMavenPassword=$SONATYPE_PASSWORD closeAndReleaseStagingRepository only: - master <<: *artifacts tests-mr: + image: $CI_REGISTRY/integrator/devops/openjdk-17-slim-docker:d837de0d extends: - .test-mr-gradle script: @@ -78,4 +81,4 @@ tests-mr: - git merge origin/$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME - ./gradlew -PweMavenUser=$MAVEN_USER -PweMavenPassword=$MAVEN_PASSWORD check build - docker images --format "{{json . }}" --no-trunc > images.json - <<: *artifacts + <<: *artifacts diff --git a/build.gradle.kts b/build.gradle.kts index b585900..552f46e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,11 +4,12 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +val detektVersion: String by project + val kotlinVersion: String by project val kotlinCoroutinesVersion: String by project val reactorVersion: String by project val springBootVersion: String by project -val springCloudVersion: String by project val jacocoToolVersion: String by project val logbackVersion: String by project val javaxAnnotationApiVersion: String by project @@ -21,7 +22,6 @@ val protobufVersion: String by project val junitPlatformLauncherVersion: String by project val mockkVersion: String by project val springMockkVersion: String by project -val wireMockVersion: String by project val ktorVersion: String by project @@ -37,13 +37,11 @@ val sonaTypeBasePath: String by project val gitHubProject: String by project val githubUrl: String by project -val feignVersion: String by project val jacksonModuleKotlin: String by project val weNodeClientVersion: String by project val weSdkSpringVersion: String by project -val shedlockProviderJdbcTemplateVersion: String by project -val shedlockSpringVersion: String by project +val shedlockVersion: String by project val micrometerCoreVersion: String by project val testContainersVersion: String by project val postgresVersion: String by project @@ -59,12 +57,11 @@ plugins { kotlin("jvm") apply false `maven-publish` signing - id("io.codearte.nexus-staging") + id("io.github.gradle-nexus.publish-plugin") kotlin("plugin.spring") apply false id("org.springframework.boot") apply false id("io.spring.dependency-management") apply false - id("io.gitlab.arturbosch.detekt") apply false - id("org.jlleitschuh.gradle.ktlint") apply false + id("io.gitlab.arturbosch.detekt") id("com.palantir.git-version") apply false id("com.gorylenko.gradle-git-properties") apply false id("fr.brouillard.oss.gradle.jgitver") @@ -72,10 +69,17 @@ plugins { id("jacoco") } -nexusStaging { - serverUrl = "$sonaTypeBasePath/service/local/" - username = sonaTypeMavenUser - password = sonaTypeMavenPassword +if (sonaTypeMavenUser != null && sonaTypeMavenUser != null) { + nexusPublishing { + repositories { + sonatype { + nexusUrl.set(uri("$sonaTypeBasePath/service/local/")) + snapshotRepositoryUrl.set(uri("$sonaTypeBasePath/content/repositories/snapshots/")) + username.set(sonaTypeMavenUser) + password.set(sonaTypeMavenPassword) + } + } + } } jgitver { @@ -158,17 +162,19 @@ configure( apply(plugin = "kotlin") apply(plugin = "signing") apply(plugin = "io.gitlab.arturbosch.detekt") - apply(plugin = "org.jlleitschuh.gradle.ktlint") apply(plugin = "jacoco") apply(plugin = "org.jetbrains.dokka") - val jacocoCoverageFile = "$buildDir/jacocoReports/test/jacocoTestReport.xml" + dependencies { + detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:$detektVersion") + } + val jacocoCoverageFile = layout.buildDirectory.file("jacocoReports/test/jacocoTestReport.xml").get().asFile tasks.withType { reports { xml.apply { required.set(true) - outputLocation.set(file(jacocoCoverageFile)) + outputLocation.set(jacocoCoverageFile) } } } @@ -198,6 +204,23 @@ configure( buildUponDefaultConfig = true } + tasks.register("detektFormat") { + description = "Runs detekt with auto-correct to format the code." + group = "formatting" + autoCorrect = true + exclude("resources/") + exclude("build/") + config.setFrom(detektConfigFilePath) + setSource( + files( + "src/main/java", + "src/test/java", + "src/main/kotlin", + "src/test/kotlin", + ) + ) + } + val sourcesJar by tasks.creating(Jar::class) { group = JavaBasePlugin.DOCUMENTATION_GROUP description = "Assembles sources JAR" @@ -273,11 +296,10 @@ configure( the().apply { imports { - mavenBom("org.springframework.boot:spring-boot-dependencies:$springBootVersion") - mavenBom("org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion") mavenBom("org.springframework.boot:spring-boot-dependencies:$springBootVersion") { bomProperty("kotlin.version", kotlinVersion) } + mavenBom("net.javacrumbs.shedlock:shedlock-bom:$shedlockVersion") mavenBom("com.wavesenterprise:we-node-client-bom:$weNodeClientVersion") mavenBom("com.wavesenterprise:we-sdk-spring-bom:$weSdkSpringVersion") mavenBom("org.jetbrains.kotlinx:kotlinx-coroutines-bom:$kotlinCoroutinesVersion") @@ -286,12 +308,10 @@ configure( dependency("com.wavesenterprise:we-flyway-starter:$weFlywayStarterVersion") dependency("com.frimastudio:slf4j-kotlin-extensions:$sl4jKotlinExtVersion") - dependency("net.javacrumbs.shedlock:shedlock-provider-jdbc-template:$shedlockProviderJdbcTemplateVersion") - dependency("net.javacrumbs.shedlock:shedlock-spring:$shedlockSpringVersion") dependency("io.micrometer:micrometer-core:$micrometerCoreVersion") dependency("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion") dependency("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") - dependency("com.vladmihalcea:hibernate-types-52:$hibernateTypesVersion") + dependency("io.hypersistence:hypersistence-utils-hibernate-63:$hibernateTypesVersion") dependency("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") dependency("javax.annotation:javax.annotation-api:$javaxAnnotationApiVersion") @@ -312,12 +332,12 @@ configure( tasks.withType().configureEach { kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") - jvmTarget = JavaVersion.VERSION_1_8.toString() + jvmTarget = JavaVersion.VERSION_17.toString() } } jacoco { toolVersion = jacocoToolVersion - reportsDirectory.set(file("$buildDir/jacocoReports")) + reportsDirectory.set(layout.buildDirectory.dir("jacocoReports").get().asFile) } } diff --git a/gradle.properties b/gradle.properties index 0cce451..319fd2b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,51 +6,46 @@ org.gradle.parallel=true org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # Build plugins -gradleDependencyManagementVersion=1.0.8.RELEASE -detektVersion=1.19.0 -ktlintVersion=10.2.1 -gitPropertiesVersion=2.2.2 -palantirGitVersion=0.12.2 -jacocoToolVersion=0.8.7 +gradleDependencyManagementVersion=1.1.5 +detektVersion=1.23.6 +gitPropertiesVersion=2.4.1 +palantirGitVersion=3.1.0 +jacocoToolVersion=0.8.12 jGitVerVersion=0.9.1 -dokkaVersion=1.6.21 -nexusStagingVersion=0.30.0 +dokkaVersion=1.9.20 +nexusPublishVersion=2.0.0 # Core infrastructure libs versions -kotlinVersion=1.6.21 -springBootVersion=2.6.7 -springCloudVersion=2021.0.2 -logbackVersion=1.2.11 +kotlinVersion=1.9.23 +springBootVersion=3.3.0 +logbackVersion=1.5.6 javaxAnnotationApiVersion=1.3.2 # Testing junitPlatformLauncherVersion=1.6.2 -mockkVersion=1.12.3 -springMockkVersion=3.1.1 +mockkVersion=1.13.11 +springMockkVersion=4.0.2 kotlinModuleVersion=2.13.2 -weNodeClientVersion=1.4.1 -weSdkSpringVersion=1.0.5 -weFlywayStarterVersion=1.1.0 -feignVersion=11.9 +weNodeClientVersion=2.0.0 +weSdkSpringVersion=2.0.0 +weFlywayStarterVersion=2.0.0 jacksonModuleKotlin=2.13.3 -junitVersion=5.3.2 -junitBom=5.2.0 +junitBom=5.10.2 assertjVersion=3.20.2 -hibernateTypesVersion=2.9.10 +hibernateTypesVersion=3.8.0 caffeineCacheVersion=2.9.3 -kotlinCoroutinesVersion=1.6.0 +kotlinCoroutinesVersion=1.8.1 -shedlockProviderJdbcTemplateVersion=4.2.0 -shedlockSpringVersion=4.2.0 +shedlockVersion=5.13.0 micrometerCoreVersion=1.3.2 -jacksonVersion=2.13.3 -testContainersVersion=1.19.0 +jacksonVersion=2.17.1 +testContainersVersion=1.19.8 jsonUnitAssertJVersion=2.11.1 awaitilityVersion=3.1.6 -postgresVersion=42.3.3 -flywayVersion=8.5.1 +postgresVersion=42.7.3 +flywayVersion=10.10.0 sl4jKotlinExtVersion=2.0.0 weMavenBasePath=https://artifacts.wavesenterprise.com/repository/ diff --git a/gradle/detekt-config.yml b/gradle/detekt-config.yml index 50bad5a..bc0a31c 100644 --- a/gradle/detekt-config.yml +++ b/gradle/detekt-config.yml @@ -1,55 +1,100 @@ build: - maxIssues: 100 + maxIssues: 50 + excludeCorrectable: false weights: # complexity: 2 # LongParameterList: 1 # style: 1 # comments: 1 +config: + validation: true + warningsAsErrors: false + checkExhaustiveness: false + # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]' + excludes: '' + processors: active: true exclude: + - 'DetektProgressListener' + # - 'KtFileCountProcessor' + # - 'PackageCountProcessor' + # - 'ClassCountProcessor' # - 'FunctionCountProcessor' # - 'PropertyCountProcessor' - # - 'ClassCountProcessor' - # - 'PackageCountProcessor' - # - 'KtFileCountProcessor' + # - 'ProjectComplexityProcessor' + # - 'ProjectCognitiveComplexityProcessor' + # - 'ProjectLLOCProcessor' + # - 'ProjectCLOCProcessor' + # - 'ProjectLOCProcessor' + # - 'ProjectSLOCProcessor' + # - 'LicenseHeaderLoaderExtension' console-reports: active: true exclude: - # - 'ProjectStatisticsReport' - # - 'ComplexityReport' - # - 'NotificationReport' - # - 'FindingsReport' - # - 'BuildFailureReport' + - 'ProjectStatisticsReport' + - 'ComplexityReport' + - 'NotificationReport' + - 'FindingsReport' + - 'FileBasedFindingsReport' + # - 'LiteFindingsReport' + +output-reports: + active: true + exclude: + # - 'TxtOutputReport' + # - 'XmlOutputReport' + # - 'HtmlOutputReport' + # - 'MdOutputReport' + # - 'SarifOutputReport' comments: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + AbsentOrWrongFileLicense: + active: false + licenseTemplateFile: 'license.template' + licenseTemplateIsRegex: false CommentOverPrivateFunction: active: false CommentOverPrivateProperty: active: false + DeprecatedBlockTag: + active: false EndOfSentenceFormat: active: false - endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!:]$) + endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)' + KDocReferencesNonPublicProperty: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] + OutdatedDocumentation: + active: false + matchTypeParameters: true + matchDeclarationsOrder: true + allowParamOnConstructorProperties: false UndocumentedPublicClass: active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] searchInNestedClass: true searchInInnerClass: true searchInInnerObject: true searchInInnerInterface: true + searchInProtectedClass: false UndocumentedPublicFunction: active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] + searchProtectedFunction: false + UndocumentedPublicProperty: + active: false + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] + searchProtectedProperty: false complexity: active: true + CognitiveComplexMethod: + active: false + threshold: 15 ComplexCondition: active: true threshold: 4 @@ -57,14 +102,27 @@ complexity: active: false threshold: 10 includeStaticDeclarations: false - ComplexMethod: + includePrivateDeclarations: false + ignoreOverloaded: false + CyclomaticComplexMethod: active: true - threshold: 10 + threshold: 15 ignoreSingleWhenExpression: false ignoreSimpleWhenEntries: false + ignoreNestingFunctions: false + nestingFunctions: + - 'also' + - 'apply' + - 'forEach' + - 'isNotNull' + - 'ifNull' + - 'let' + - 'run' + - 'use' + - 'with' LabeledExpression: active: false - # ignoredLabels: "" + ignoredLabels: [] LargeClass: active: true threshold: 600 @@ -73,49 +131,77 @@ complexity: threshold: 60 LongParameterList: active: true - functionThreshold: 7 + functionThreshold: 6 constructorThreshold: 7 ignoreDefaultParameters: false + ignoreDataClasses: true + ignoreAnnotatedParameter: [] MethodOverloading: active: false threshold: 6 + NamedArguments: + active: false + threshold: 3 + ignoreArgumentsMatchingNames: false NestedBlockDepth: active: true threshold: 4 + NestedScopeFunctions: + active: false + threshold: 1 + functions: + - 'kotlin.apply' + - 'kotlin.run' + - 'kotlin.with' + - 'kotlin.let' + - 'kotlin.also' + ReplaceSafeCallChainWithRun: + active: false StringLiteralDuplication: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] threshold: 3 ignoreAnnotation: true excludeStringsWithLessThan5Characters: true ignoreStringsRegex: '$^' TooManyFunctions: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] thresholdInFiles: 11 thresholdInClasses: 11 - thresholdInInterfaces: 15 + thresholdInInterfaces: 11 thresholdInObjects: 11 thresholdInEnums: 11 ignoreDeprecated: false ignorePrivate: false ignoreOverridden: false +coroutines: + active: true + GlobalCoroutineUsage: + active: false + InjectDispatcher: + active: true + dispatcherNames: + - 'IO' + - 'Default' + - 'Unconfined' + RedundantSuspendModifier: + active: true + SleepInsteadOfDelay: + active: true + SuspendFunSwallowedCancellation: + active: false + SuspendFunWithCoroutineScopeReceiver: + active: false + SuspendFunWithFlowReturnType: + active: true + empty-blocks: active: true EmptyCatchBlock: active: true - allowedExceptionNameRegex: "^(_|(ignore|expected).*)" + allowedExceptionNameRegex: '_|(ignore|expected).*' EmptyClassBlock: active: true EmptyDefaultConstructor: @@ -139,6 +225,8 @@ empty-blocks: active: true EmptySecondaryConstructor: active: true + EmptyTryBlock: + active: true EmptyWhenBlock: active: true EmptyWhileBlock: @@ -147,530 +235,817 @@ empty-blocks: exceptions: active: true ExceptionRaisedInUnexpectedLocation: - active: false + active: true methodNames: - - toString - - hashCode - - equals - - finalize + - 'equals' + - 'finalize' + - 'hashCode' + - 'toString' InstanceOfCheckForException: - active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] NotImplementedDeclaration: active: false - PrintStackTrace: + ObjectExtendsThrowable: active: false + PrintStackTrace: + active: true RethrowCaughtException: - active: false + active: true ReturnFromFinally: - active: false + active: true + ignoreLabeled: false SwallowedException: - active: false + active: true ignoredExceptionTypes: - - InterruptedException - - NumberFormatException - - ParseException - - MalformedURLException + - 'InterruptedException' + - 'MalformedURLException' + - 'NumberFormatException' + - 'ParseException' + allowedExceptionNameRegex: '_|(ignore|expected).*' ThrowingExceptionFromFinally: - active: false + active: true ThrowingExceptionInMain: active: false ThrowingExceptionsWithoutMessageOrCause: - active: false + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] exceptions: - - IllegalArgumentException - - IllegalStateException - - IOException + - 'ArrayIndexOutOfBoundsException' + - 'Exception' + - 'IllegalArgumentException' + - 'IllegalMonitorStateException' + - 'IllegalStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' ThrowingNewInstanceOfSameException: - active: false + active: true TooGenericExceptionCaught: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] exceptionNames: - - ArrayIndexOutOfBoundsException - - Error - - Exception - - IllegalMonitorStateException - - NullPointerException - - IndexOutOfBoundsException - - RuntimeException - - Throwable - allowedExceptionNameRegex: "^(_|(ignore|expected).*)" + - 'ArrayIndexOutOfBoundsException' + - 'Error' + - 'Exception' + - 'IllegalMonitorStateException' + - 'IndexOutOfBoundsException' + - 'NullPointerException' + - 'RuntimeException' + - 'Throwable' + allowedExceptionNameRegex: '_|(ignore|expected).*' TooGenericExceptionThrown: active: true exceptionNames: - - Error - - Exception - - Throwable - - RuntimeException - -formatting: - active: true - android: false - autoCorrect: true - ChainWrapping: - active: true - autoCorrect: true - CommentSpacing: - active: true - autoCorrect: true - Filename: - active: true - FinalNewline: - active: true - autoCorrect: true - ImportOrdering: - active: false - Indentation: - active: true - autoCorrect: true - indentSize: 4 - continuationIndentSize: 4 - MaximumLineLength: - active: true - maxLineLength: 120 - ModifierOrdering: - active: true - autoCorrect: true - NoBlankLineBeforeRbrace: - active: true - autoCorrect: true - NoConsecutiveBlankLines: - active: true - autoCorrect: true - NoEmptyClassBody: - active: true - autoCorrect: true - NoLineBreakAfterElse: - active: true - autoCorrect: true - NoLineBreakBeforeAssignment: - active: true - autoCorrect: true - NoMultipleSpaces: - active: true - autoCorrect: true - NoSemicolons: - active: true - autoCorrect: true - NoTrailingSpaces: - active: true - autoCorrect: true - NoUnitReturn: - active: true - autoCorrect: true - NoUnusedImports: - active: true - autoCorrect: true - NoWildcardImports: - active: true - autoCorrect: true - PackageName: - active: true - autoCorrect: true - ParameterListWrapping: - active: true - autoCorrect: true - indentSize: 4 - SpacingAroundColon: - active: true - autoCorrect: true - SpacingAroundComma: - active: true - autoCorrect: true - SpacingAroundCurly: - active: true - autoCorrect: true - SpacingAroundKeyword: - active: true - autoCorrect: true - SpacingAroundOperators: - active: true - autoCorrect: true - SpacingAroundParens: - active: true - autoCorrect: true - SpacingAroundRangeOperator: - active: true - autoCorrect: true - StringTemplate: - active: true - autoCorrect: true + - 'Error' + - 'Exception' + - 'RuntimeException' + - 'Throwable' naming: active: true + BooleanPropertyNaming: + active: false + allowedPattern: '^(is|has|are)' ClassNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - classPattern: '[A-Z$][a-zA-Z0-9$]*' + classPattern: '[A-Z][a-zA-Z0-9]*' ConstructorParameterNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" parameterPattern: '[a-z][A-Za-z0-9]*' privateParameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' EnumNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - enumEntryPattern: '^[A-Z][_a-zA-Z0-9]*' + enumEntryPattern: '[A-Z][_a-zA-Z0-9]*' ForbiddenClassName: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - # forbiddenName: '' + forbiddenName: [] FunctionMaxLength: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" maximumFunctionNameLength: 30 FunctionMinLength: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" minimumFunctionNameLength: 3 FunctionNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - functionPattern: '^([a-z$][a-zA-Z$0-9]*)|(`.*`)$' + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] + functionPattern: '[a-z][a-zA-Z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true FunctionParameterNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" parameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true InvalidPackageDeclaration: - active: false + active: true rootPackage: '' + requireRootInDeclaration: false + LambdaParameterNaming: + active: false + parameterPattern: '[a-z][A-Za-z0-9]*|_' MatchingDeclarationName: active: true + mustBeFirst: true MemberNameEqualsClassName: - active: false + active: true ignoreOverridden: true + NoNameShadowing: + active: true + NonBooleanPropertyPrefixedWithIs: + active: false ObjectPropertyNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" constantPattern: '[A-Za-z][_A-Za-z0-9]*' propertyPattern: '[A-Za-z][_A-Za-z0-9]*' privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*' PackageNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - packagePattern: '^[a-z]+(\.[a-z][A-Za-z0-9]*)*$' + packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*' TopLevelPropertyNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" constantPattern: '[A-Z][_A-Z0-9]*' propertyPattern: '[A-Za-z][_A-Za-z0-9]*' privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*' VariableMaxLength: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" maximumVariableNameLength: 64 VariableMinLength: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" minimumVariableNameLength: 1 VariableNaming: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" variablePattern: '[a-z][A-Za-z0-9]*' privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true performance: active: true ArrayPrimitive: + active: true + CouldBeSequence: active: false + threshold: 3 ForEachOnRange: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] SpreadOperator: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] + UnnecessaryPartOfBinaryExpression: + active: false UnnecessaryTemporaryInstantiation: active: true potential-bugs: active: true - DuplicateCaseInWhenExpression: + AvoidReferentialEquality: active: true - EqualsAlwaysReturnsTrueOrFalse: + forbiddenTypePatterns: + - 'kotlin.String' + CastNullableToNonNullableType: + active: false + CastToNullableType: + active: false + Deprecation: + active: false + DontDowncastCollectionTypes: active: false + DoubleMutabilityForCollection: + active: true + mutableTypes: + - 'kotlin.collections.MutableList' + - 'kotlin.collections.MutableMap' + - 'kotlin.collections.MutableSet' + - 'java.util.ArrayList' + - 'java.util.LinkedHashSet' + - 'java.util.HashSet' + - 'java.util.LinkedHashMap' + - 'java.util.HashMap' + ElseCaseInsteadOfExhaustiveWhen: + active: false + ignoredSubjectTypes: [] + EqualsAlwaysReturnsTrueOrFalse: + active: true EqualsWithHashCodeExist: active: true + ExitOutsideMain: + active: false ExplicitGarbageCollectionCall: active: true + HasPlatformType: + active: true + IgnoredReturnValue: + active: true + restrictToConfig: true + returnValueAnnotations: + - 'CheckResult' + - '*.CheckResult' + - 'CheckReturnValue' + - '*.CheckReturnValue' + ignoreReturnValueAnnotations: + - 'CanIgnoreReturnValue' + - '*.CanIgnoreReturnValue' + returnValueTypes: + - 'kotlin.sequences.Sequence' + - 'kotlinx.coroutines.flow.*Flow' + - 'java.util.stream.*Stream' + ignoreFunctionCall: [] + ImplicitDefaultLocale: + active: true + ImplicitUnitReturnType: + active: false + allowExplicitReturnType: true InvalidRange: - active: false + active: true IteratorHasNextCallsNextMethod: - active: false + active: true IteratorNotThrowingNoSuchElementException: - active: false + active: true LateinitUsage: active: false - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - excludeAnnotatedProperties: - ignoreOnClassesPattern: "" - MissingWhenCase: + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] + ignoreOnClassesPattern: '' + MapGetWithNotNullAssertionOperator: + active: true + MissingPackageDeclaration: + active: false + excludes: ['**/*.kts'] + NullCheckOnMutableProperty: + active: false + NullableToStringCall: + active: false + PropertyUsedBeforeDeclaration: active: false UnconditionalJumpStatementInLoop: active: false + UnnecessaryNotNullCheck: + active: false + UnnecessaryNotNullOperator: + active: true + UnnecessarySafeCall: + active: true + UnreachableCatchBlock: + active: true UnreachableCode: active: true UnsafeCallOnNullableType: - active: false + active: true + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**'] UnsafeCast: - active: false + active: true + UnusedUnaryOperator: + active: true UselessPostfixExpression: - active: false + active: true WrongEqualsTypeParameter: - active: false + active: true style: active: true + AlsoCouldBeApply: + active: false + BracesOnIfStatements: + active: false + singleLine: 'never' + multiLine: 'always' + BracesOnWhenStatements: + active: false + singleLine: 'necessary' + multiLine: 'consistent' + CanBeNonNullable: + active: false + CascadingCallWrapping: + active: false + includeElvis: true + ClassOrdering: + active: false CollapsibleIfStatements: active: false DataClassContainsFunctions: active: false - conversionFunctionPrefix: 'to' + conversionFunctionPrefix: + - 'to' + allowOperators: false DataClassShouldBeImmutable: active: false - EqualsNullCall: + DestructuringDeclarationWithTooManyEntries: + active: true + maxDestructuringEntries: 3 + DoubleNegativeLambda: active: false + negativeFunctions: + - reason: 'Use `takeIf` instead.' + value: 'takeUnless' + - reason: 'Use `all` instead.' + value: 'none' + negativeFunctionNameParts: + - 'not' + - 'non' + EqualsNullCall: + active: true EqualsOnSignatureLine: active: false - ExplicitItLambdaParameter: + ExplicitCollectionElementAccessMethod: active: false + ExplicitItLambdaParameter: + active: true ExpressionBodySyntax: active: false includeLineWrapping: false + ForbiddenAnnotation: + active: false + annotations: + - reason: 'it is a java annotation. Use `Suppress` instead.' + value: 'java.lang.SuppressWarnings' + - reason: 'it is a java annotation. Use `kotlin.Deprecated` instead.' + value: 'java.lang.Deprecated' + - reason: 'it is a java annotation. Use `kotlin.annotation.MustBeDocumented` instead.' + value: 'java.lang.annotation.Documented' + - reason: 'it is a java annotation. Use `kotlin.annotation.Target` instead.' + value: 'java.lang.annotation.Target' + - reason: 'it is a java annotation. Use `kotlin.annotation.Retention` instead.' + value: 'java.lang.annotation.Retention' + - reason: 'it is a java annotation. Use `kotlin.annotation.Repeatable` instead.' + value: 'java.lang.annotation.Repeatable' + - reason: 'Kotlin does not support @Inherited annotation, see https://youtrack.jetbrains.com/issue/KT-22265' + value: 'java.lang.annotation.Inherited' ForbiddenComment: active: true - values: - - TODO - - FIXME - - STOPSHIP + comments: + - reason: 'Forbidden FIXME todo marker in comment, please fix the problem.' + value: 'FIXME:' + - reason: 'Forbidden STOPSHIP todo marker in comment, please address the problem before shipping the code.' + value: 'STOPSHIP:' + - reason: 'Forbidden TODO todo marker in comment, please do the changes.' + value: 'TODO:' + allowedPatterns: '' ForbiddenImport: active: false - imports: - ForbiddenVoid: + imports: [] + forbiddenPatterns: '' + ForbiddenMethodCall: active: false + methods: + - reason: 'print does not allow you to configure the output stream. Use a logger instead.' + value: 'kotlin.io.print' + - reason: 'println does not allow you to configure the output stream. Use a logger instead.' + value: 'kotlin.io.println' + ForbiddenSuppress: + active: false + rules: [] + ForbiddenVoid: + active: true ignoreOverridden: false + ignoreUsageInGenerics: false FunctionOnlyReturningConstant: - active: false + active: true ignoreOverridableFunction: true - excludedFunctions: 'describeContents' + ignoreActualFunction: true + excludedFunctions: [] LoopWithTooManyJumpStatements: - active: false + active: true maxJumpCount: 1 MagicNumber: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" + excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts'] ignoreNumbers: - - "-1" - - "0" - - "1" - - "2" + - '-1' + - '0' + - '1' + - '2' ignoreHashCodeFunction: true ignorePropertyDeclaration: false + ignoreLocalVariableDeclaration: false ignoreConstantDeclaration: true ignoreCompanionObjectPropertyDeclaration: true ignoreAnnotation: false ignoreNamedArgument: true ignoreEnums: false ignoreRanges: false - MandatoryBracesIfStatements: + ignoreExtensionFunctions: true + MandatoryBracesLoops: active: false + MaxChainedCallsOnSameLine: + active: false + maxChainedCalls: 5 MaxLineLength: active: true maxLineLength: 120 excludePackageStatements: true excludeImportStatements: true excludeCommentStatements: false + excludeRawStrings: true MayBeConst: - active: false + active: true ModifierOrder: active: true - NestedClassesVisibility: + MultilineLambdaItParameter: active: false - NewLineAtEndOfFile: + MultilineRawStringIndentation: active: false + indentSize: 4 + trimmingMethods: + - 'trimIndent' + - 'trimMargin' + NestedClassesVisibility: + active: true + NewLineAtEndOfFile: + active: true NoTabs: active: false + NullableBooleanCheck: + active: false + ObjectLiteralToLambda: + active: true OptionalAbstractKeyword: active: true OptionalUnit: active: false - OptionalWhenBraces: - active: false PreferToOverPairSyntax: active: false ProtectedMemberInFinalClass: + active: true + RedundantExplicitType: active: false + RedundantHigherOrderMapUsage: + active: true RedundantVisibilityModifierRule: active: false ReturnCount: active: true - max: 3 - excludedFunctions: "equals" + max: 2 + excludedFunctions: + - 'equals' excludeLabeled: false excludeReturnFromLambda: true + excludeGuardClauses: false SafeCast: active: true SerialVersionUIDInSerializableClass: - active: false + active: true SpacingBetweenPackageAndImports: active: false + StringShouldBeRawString: + active: false + maxEscapedCharacterCount: 2 + ignoredCharacters: [] ThrowsCount: active: true max: 2 + excludeGuardClauses: false TrailingWhitespace: active: false + TrimMultilineRawString: + active: false + trimmingMethods: + - 'trimIndent' + - 'trimMargin' UnderscoresInNumericLiterals: active: false - acceptableDecimalLength: 5 + acceptableLength: 4 + allowNonStandardGrouping: false UnnecessaryAbstractClass: + active: true + UnnecessaryAnnotationUseSiteTarget: active: false - excludeAnnotatedClasses: - - dagger.Module UnnecessaryApply: + active: true + UnnecessaryBackticks: active: false + UnnecessaryBracesAroundTrailingLambda: + active: false + UnnecessaryFilter: + active: true UnnecessaryInheritance: + active: true + UnnecessaryInnerClass: active: false UnnecessaryLet: active: false UnnecessaryParentheses: active: false + allowForUnclearPrecedence: false UntilInsteadOfRangeTo: active: false UnusedImports: active: false + UnusedParameter: + active: true + allowedNames: 'ignored|expected' UnusedPrivateClass: - active: false + active: true UnusedPrivateMember: - active: false - allowedNames: "(_|ignored|expected|serialVersionUID)" + active: true + allowedNames: '' + UnusedPrivateProperty: + active: true + allowedNames: '_|ignored|expected|serialVersionUID' + UseAnyOrNoneInsteadOfFind: + active: true + UseArrayLiteralsInAnnotations: + active: true + UseCheckNotNull: + active: true UseCheckOrError: - active: false + active: true UseDataClass: active: false - excludeAnnotatedClasses: + allowVars: false + UseEmptyCounterpart: + active: false + UseIfEmptyOrIfBlank: + active: false + UseIfInsteadOfWhen: + active: false + ignoreWhenContainingVariableDeclaration: false + UseIsNullOrEmpty: + active: true + UseLet: + active: false + UseOrEmpty: + active: true UseRequire: + active: true + UseRequireNotNull: + active: true + UseSumOfInsteadOfFlatMapSize: active: false UselessCallOnNotNull: - active: false + active: true UtilityClassWithPublicConstructor: - active: false + active: true VarCouldBeVal: - active: false + active: true + ignoreLateinitVar: false WildcardImport: active: true - excludes: - - "**/test/**" - - "**/androidTest/**" - - "**/*.Test.kt" - - "**/*.Spec.kt" - - "**/*.Spek.kt" - excludeImports: - - java.util.* - - kotlinx.android.synthetic.* + +formatting: + active: true + android: false + autoCorrect: true + AnnotationOnSeparateLine: + active: true + autoCorrect: true + indentSize: 4 + AnnotationSpacing: + active: true + autoCorrect: true + ArgumentListWrapping: + active: true + autoCorrect: true + indentSize: 4 + maxLineLength: 120 + BlockCommentInitialStarAlignment: + active: true + autoCorrect: true + ChainWrapping: + active: true + autoCorrect: true + indentSize: 4 + ClassName: + active: false + CommentSpacing: + active: true + autoCorrect: true + CommentWrapping: + active: true + autoCorrect: true + indentSize: 4 + ContextReceiverMapping: + active: false + autoCorrect: true + maxLineLength: 120 + indentSize: 4 + DiscouragedCommentLocation: + active: false + autoCorrect: true + EnumEntryNameCase: + active: true + autoCorrect: true + EnumWrapping: + active: false + autoCorrect: true + indentSize: 4 + Filename: + active: true + FinalNewline: + active: true + autoCorrect: true + insertFinalNewLine: true + FunKeywordSpacing: + active: true + autoCorrect: true + FunctionName: + active: false + FunctionReturnTypeSpacing: + active: true + autoCorrect: true + maxLineLength: 120 + FunctionSignature: + active: false + autoCorrect: true + forceMultilineWhenParameterCountGreaterOrEqualThan: 2147483647 + functionBodyExpressionWrapping: 'default' + maxLineLength: 120 + indentSize: 4 + FunctionStartOfBodySpacing: + active: true + autoCorrect: true + FunctionTypeReferenceSpacing: + active: true + autoCorrect: true + IfElseBracing: + active: false + autoCorrect: true + indentSize: 4 + IfElseWrapping: + active: false + autoCorrect: true + indentSize: 4 + ImportOrdering: + active: true + autoCorrect: true + layout: '*,java.**,javax.**,kotlin.**,^' + Indentation: + active: true + autoCorrect: true + indentSize: 4 + KdocWrapping: + active: true + autoCorrect: true + indentSize: 4 + MaximumLineLength: + active: true + maxLineLength: 120 + ignoreBackTickedIdentifier: false + ModifierListSpacing: + active: true + autoCorrect: true + ModifierOrdering: + active: true + autoCorrect: true + MultiLineIfElse: + active: true + autoCorrect: true + indentSize: 4 + MultilineExpressionWrapping: + active: false + autoCorrect: true + indentSize: 4 + NoBlankLineBeforeRbrace: + active: true + autoCorrect: true + NoBlankLineInList: + active: false + autoCorrect: true + NoBlankLinesInChainedMethodCalls: + active: true + autoCorrect: true + NoConsecutiveBlankLines: + active: true + autoCorrect: true + NoConsecutiveComments: + active: false + NoEmptyClassBody: + active: true + autoCorrect: true + NoEmptyFirstLineInClassBody: + active: false + autoCorrect: true + indentSize: 4 + NoEmptyFirstLineInMethodBlock: + active: true + autoCorrect: true + NoLineBreakAfterElse: + active: true + autoCorrect: true + NoLineBreakBeforeAssignment: + active: true + autoCorrect: true + NoMultipleSpaces: + active: true + autoCorrect: true + NoSemicolons: + active: true + autoCorrect: true + NoSingleLineBlockComment: + active: false + autoCorrect: true + indentSize: 4 + NoTrailingSpaces: + active: true + autoCorrect: true + NoUnitReturn: + active: true + autoCorrect: true + NoUnusedImports: + active: true + autoCorrect: true + NoWildcardImports: + active: true + packagesToUseImportOnDemandProperty: 'java.util.*,kotlinx.android.synthetic.**' + NullableTypeSpacing: + active: true + autoCorrect: true + PackageName: + active: true + autoCorrect: true + ParameterListSpacing: + active: false + autoCorrect: true + ParameterListWrapping: + active: true + autoCorrect: true + maxLineLength: 120 + indentSize: 4 + ParameterWrapping: + active: true + autoCorrect: true + indentSize: 4 + maxLineLength: 120 + PropertyName: + active: false + PropertyWrapping: + active: true + autoCorrect: true + indentSize: 4 + maxLineLength: 120 + SpacingAroundAngleBrackets: + active: true + autoCorrect: true + SpacingAroundColon: + active: true + autoCorrect: true + SpacingAroundComma: + active: true + autoCorrect: true + SpacingAroundCurly: + active: true + autoCorrect: true + SpacingAroundDot: + active: true + autoCorrect: true + SpacingAroundDoubleColon: + active: true + autoCorrect: true + SpacingAroundKeyword: + active: true + autoCorrect: true + SpacingAroundOperators: + active: true + autoCorrect: true + SpacingAroundParens: + active: true + autoCorrect: true + SpacingAroundRangeOperator: + active: true + autoCorrect: true + SpacingAroundUnaryOperator: + active: true + autoCorrect: true + SpacingBetweenDeclarationsWithAnnotations: + active: true + autoCorrect: true + SpacingBetweenDeclarationsWithComments: + active: true + autoCorrect: true + SpacingBetweenFunctionNameAndOpeningParenthesis: + active: true + autoCorrect: true + StringTemplate: + active: true + autoCorrect: true + StringTemplateIndent: + active: false + autoCorrect: true + indentSize: 4 + TrailingCommaOnCallSite: + active: true + autoCorrect: true + useTrailingCommaOnCallSite: true + TrailingCommaOnDeclarationSite: + active: true + autoCorrect: true + useTrailingCommaOnDeclarationSite: true + TryCatchFinallySpacing: + active: false + autoCorrect: true + indentSize: 4 + TypeArgumentListSpacing: + active: false + autoCorrect: true + indentSize: 4 + TypeParameterListSpacing: + active: false + autoCorrect: true + indentSize: 4 + UnnecessaryParenthesesBeforeTrailingLambda: + active: true + autoCorrect: true + Wrapping: + active: true + autoCorrect: true + indentSize: 4 + maxLineLength: 120 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7454180..afba109 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a2..2617362 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787..65dcd68 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 107acd3..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/settings.gradle.kts b/settings.gradle.kts index 4195f24..32746c8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,12 +3,11 @@ pluginManagement { val springBootVersion: String by settings val gradleDependencyManagementVersion: String by settings val detektVersion: String by settings - val ktlintVersion: String by settings val gitPropertiesVersion: String by settings val palantirGitVersion: String by settings val jGitVerVersion: String by settings val dokkaVersion: String by settings - val nexusStagingVersion: String by settings + val nexusPublishVersion: String by settings plugins { kotlin("jvm") version kotlinVersion apply false @@ -18,13 +17,12 @@ pluginManagement { id("org.springframework.boot") version springBootVersion apply false id("io.spring.dependency-management") version gradleDependencyManagementVersion apply false id("io.gitlab.arturbosch.detekt") version detektVersion apply false - id("org.jlleitschuh.gradle.ktlint") version ktlintVersion apply false id("com.palantir.git-version") version palantirGitVersion apply false id("com.gorylenko.gradle-git-properties") version gitPropertiesVersion apply false id("jacoco") id("fr.brouillard.oss.gradle.jgitver") version jGitVerVersion id("org.jetbrains.dokka") version dokkaVersion - id("io.codearte.nexus-staging") version nexusStagingVersion + id("io.github.gradle-nexus.publish-plugin") version nexusPublishVersion } repositories { diff --git a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnJpaMode.kt b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnJpaMode.kt index 004c963..280b355 100644 --- a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnJpaMode.kt +++ b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnJpaMode.kt @@ -4,7 +4,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty @Target( AnnotationTarget.CLASS, - AnnotationTarget.ANNOTATION_CLASS + AnnotationTarget.ANNOTATION_CLASS, ) @Retention(AnnotationRetention.RUNTIME) @ConditionalOnProperty( diff --git a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnTracker.kt b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnTracker.kt index 3f9a0a6..d0bf5dd 100644 --- a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnTracker.kt +++ b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/conditional/ConditionalOnTracker.kt @@ -4,7 +4,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty @Target( AnnotationTarget.CLASS, - AnnotationTarget.ANNOTATION_CLASS + AnnotationTarget.ANNOTATION_CLASS, ) @Retention(AnnotationRetention.RUNTIME) @ConditionalOnProperty( diff --git a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/EntityManager.kt b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/EntityManager.kt index ffe1570..a454c37 100644 --- a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/EntityManager.kt +++ b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/EntityManager.kt @@ -1,6 +1,6 @@ package com.wavesenterprise.sdk.tx.observer.common.jpa.util -import javax.persistence.EntityManager +import jakarta.persistence.EntityManager fun EntityManager.flushAndClear() { flush() diff --git a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/JpaUtils.kt b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/JpaUtils.kt index b3a1dfe..e41e490 100644 --- a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/JpaUtils.kt +++ b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/jpa/util/JpaUtils.kt @@ -1,14 +1,15 @@ package com.wavesenterprise.sdk.tx.observer.common.jpa.util -import javax.persistence.criteria.CriteriaBuilder -import javax.persistence.criteria.Predicate -import javax.persistence.criteria.Root -import javax.persistence.metamodel.SingularAttribute +import jakarta.persistence.criteria.CriteriaBuilder +import jakarta.persistence.criteria.Predicate +import jakarta.persistence.criteria.Root +import jakarta.persistence.metamodel.SingularAttribute const val TX_OBSERVER_SCHEMA_NAME = "tx_observer" const val TX_TRACKER_SCHEMA_NAME = "tx_tracker" const val JSONB_TYPE: String = "jsonb" +@Suppress("VariableNaming") fun Collection.toIn( root: Root, cb: CriteriaBuilder, diff --git a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/tx/executor/TxExecutorImpl.kt b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/tx/executor/TxExecutorImpl.kt index a488c22..b9b143b 100644 --- a/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/tx/executor/TxExecutorImpl.kt +++ b/we-tx-observer-common-components/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/common/tx/executor/TxExecutorImpl.kt @@ -38,17 +38,23 @@ open class TxExecutorImpl( timeout: Int? = null, block: () -> T, ): T = with(transactionTemplate) { - if (propagationBehavior != null) + if (propagationBehavior != null) { this.propagationBehavior = propagationBehavior - if (isolationLevel != null) + } + if (isolationLevel != null) { this.isolationLevel = isolationLevel - if (timeout != null) + } + if (timeout != null) { this.timeout = timeout + } val executionResult = execute { ExecutionResult(block()) } - return if (executionResult != null) executionResult.value - else throw NoResultTransactionException("No result for execute") + return if (executionResult != null) { + executionResult.value + } else { + throw NoResultTransactionException("No result for execute") + } } companion object { diff --git a/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/exceptions.kt b/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/Exceptions.kt similarity index 97% rename from we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/exceptions.kt rename to we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/Exceptions.kt index 13c7863..6038be9 100644 --- a/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/exceptions.kt +++ b/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/Exceptions.kt @@ -5,7 +5,6 @@ open class BlockListenerException(message: String, cause: Throwable) : RuntimeEx class BlockListenerHandlerException(message: String, cause: Throwable) : BlockListenerException(message, cause) class BlockListenerSingleTxHandlerException( - txId: String, message: String, cause: Throwable, ) : BlockListenerException(message, cause) diff --git a/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/MessageFilter.kt b/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/MessageFilter.kt index e53eb8e..45a9f67 100644 --- a/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/MessageFilter.kt +++ b/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/MessageFilter.kt @@ -6,7 +6,7 @@ package com.wavesenterprise.sdk.tx.observer.api.privacy * @see com.wavesenterprise.sdk.tx.observer.api.privacy.MessageFilter */ annotation class MessageFilters( - vararg val filters: MessageFilter = [] + vararg val filters: MessageFilter = [], ) /** diff --git a/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/PrivateDataEvent.kt b/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/PrivateDataEvent.kt index 9fa8838..9577142 100644 --- a/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/PrivateDataEvent.kt +++ b/we-tx-observer-module/we-tx-observer-api/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/api/privacy/PrivateDataEvent.kt @@ -24,7 +24,7 @@ data class PrivateDataEvent private constructor( meta: JsonNode?, policyName: String, createPolicyTx: CreatePolicyTx, - policyDataHashTx: PolicyDataHashTx + policyDataHashTx: PolicyDataHashTx, ) : this( payloadInitializer = { throw NoPayloadException() }, meta = meta, diff --git a/we-tx-observer-module/we-tx-observer-core-spring/build.gradle.kts b/we-tx-observer-module/we-tx-observer-core-spring/build.gradle.kts index 2ff6362..42d96e3 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/build.gradle.kts +++ b/we-tx-observer-module/we-tx-observer-core-spring/build.gradle.kts @@ -16,9 +16,9 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") - implementation("com.vladmihalcea:hibernate-types-52:$hibernateTypesVersion") + implementation("io.hypersistence:hypersistence-utils-hibernate-63") implementation("com.github.ben-manes.caffeine:caffeine") - kapt("org.hibernate:hibernate-jpamodelgen") + kapt("org.hibernate.orm:hibernate-jpamodelgen") implementation("com.frimastudio:slf4j-kotlin-extensions") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core") diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/component/CachingTxEnqueuePredicate.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/component/CachingTxEnqueuePredicate.kt index f043b13..8a567f3 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/component/CachingTxEnqueuePredicate.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/component/CachingTxEnqueuePredicate.kt @@ -15,7 +15,7 @@ class CachingTxEnqueuePredicate( private val predicateTtlCache = CaffeineLoadingCache( Caffeine.newBuilder() .expireAfterWrite(cacheDuration) - .build() + .build(), ) override fun isEnqueued(tx: Tx): Boolean = diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/AppContextPollingTxSubscriber.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/AppContextPollingTxSubscriber.kt index a2f6624..c8efe11 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/AppContextPollingTxSubscriber.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/AppContextPollingTxSubscriber.kt @@ -62,7 +62,7 @@ open class AppContextPollingTxSubscriber( logger.info( "Polled $it transactions from persistent queue for partition with ID = $partitionId. " + "Last tx position and blockHeight - " + - "(${lastReadTx.positionInBlock}, ${lastReadTx.blockHeight})" + "(${lastReadTx.positionInBlock}, ${lastReadTx.blockHeight})", ) } } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/EnqueueingBlockSubscriber.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/EnqueueingBlockSubscriber.kt index c2ce8b4..5545073 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/EnqueueingBlockSubscriber.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/EnqueueingBlockSubscriber.kt @@ -18,6 +18,7 @@ import com.wavesenterprise.sdk.tx.observer.domain.EnqueuedTxStatus import com.wavesenterprise.sdk.tx.observer.jpa.repository.EnqueuedTxJpaRepository import org.springframework.transaction.annotation.Transactional +@Suppress("LongParameterList") open class EnqueueingBlockSubscriber( val enqueuedTxJpaRepository: EnqueuedTxJpaRepository, val txQueuePartitionResolveService: TxQueuePartitionResolveService, @@ -40,14 +41,14 @@ open class EnqueueingBlockSubscriber( positionInBlock = positionInBlock, positionInAtomic = 0, tx = txInfo.tx, - atomicTx = null - ) + atomicTx = null, + ), ) + (txInfo.tx as AtomicTx).txs.withIndex().map { (positionInAtomic, txInAtomic) -> TxWithPositionInfo( positionInBlock = positionInBlock, positionInAtomic = positionInAtomic + 1, tx = txInAtomic, - atomicTx = txInfo.tx as AtomicTx + atomicTx = txInfo.tx as AtomicTx, ) } } else { @@ -55,8 +56,8 @@ open class EnqueueingBlockSubscriber( TxWithPositionInfo( positionInBlock = positionInBlock, tx = txInfo.tx, - atomicTx = null - ) + atomicTx = null, + ), ) } }.also { logicalTxs -> @@ -79,11 +80,11 @@ open class EnqueueingBlockSubscriber( val positionInBlock: Int, val positionInAtomic: Int? = null, val tx: Tx, - val atomicTx: AtomicTx? + val atomicTx: AtomicTx?, ) private fun TxWithPositionInfo.toEnqueuedTx( - blockHeight: Long + blockHeight: Long, ): EnqueuedTx = EnqueuedTx( partition = txQueuePartitionResolveService.resolveTxQueuePartition(tx), id = tx.id.asBase58String(), @@ -95,6 +96,6 @@ open class EnqueueingBlockSubscriber( blockHeight = blockHeight, txTimestamp = tx.timestamp.toDateTimeFromUTCBlockChain(), txType = tx.type().code, - available = tx.type().code != TxType.POLICY_DATA_HASH.code + available = tx.type().code != TxType.POLICY_DATA_HASH.code, ) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PersistingRollbackSubscriber.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PersistingRollbackSubscriber.kt index 1d4e949..0f36fae 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PersistingRollbackSubscriber.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PersistingRollbackSubscriber.kt @@ -12,8 +12,8 @@ class PersistingRollbackSubscriber( rollbackInfoRepository.save( RollbackInfo( toHeight = weRollbackInfo.toHeight.value, - toBlockSignature = weRollbackInfo.toBlockSignature.asBase58String() - ) + toBlockSignature = weRollbackInfo.toBlockSignature.asBase58String(), + ), ) } } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PrivacyAvailabilityChecker.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PrivacyAvailabilityChecker.kt index 7d8fc97..fa5e359 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PrivacyAvailabilityChecker.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/PrivacyAvailabilityChecker.kt @@ -16,6 +16,7 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.transaction.annotation.Transactional +@Suppress("LongParameterList") open class PrivacyAvailabilityChecker( val enqueuedTxJpaRepository: EnqueuedTxJpaRepository, val privateContentResolver: PrivateContentResolver, @@ -40,7 +41,7 @@ open class PrivacyAvailabilityChecker( val recentCandidates = getRecentCandidates(candidateCount, oldCandidates) logger.debug( "Got ${oldCandidates.size} old candidates and ${recentCandidates.size} " + - "recent candidates for privacy check" + "recent candidates for privacy check", ) sequenceOf(oldCandidates, recentCandidates) .flatten() @@ -50,7 +51,8 @@ open class PrivacyAvailabilityChecker( it.available = privateContentResolver.isAvailable(policyDataHashTx.toDomain()) } catch (ex: Exception) { logger.error( - "Error while resolving private content for 114 TX with ID = ${policyDataHashTx.id}", ex + "Error while resolving private content for 114 TX with ID = ${policyDataHashTx.id}", + ex, ) } }.filter { @@ -67,7 +69,7 @@ open class PrivacyAvailabilityChecker( private fun getRecentCandidates(candidateCount: Long, oldCandidates: List): List { val offset = offsetProvider.provideOffset( - candidateCount.toInt() - oldCandidates.size - properties.limitForRecent + candidateCount.toInt() - oldCandidates.size - properties.limitForRecent, ) logger.trace("Searching for recent candidates with offset = $offset and limit = ${properties.limitForRecent}") return enqueuedTxJpaRepository.findRecentCheckPrivacyAvailabilityCandidates( diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledForkResolver.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledForkResolver.kt index e2ddd24..e77f254 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledForkResolver.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledForkResolver.kt @@ -58,7 +58,9 @@ open class ScheduledForkResolver( val txInfoOptional = txService.txInfo(TxId.fromBase58(enqueuedTx.id)) if (!txInfoOptional.isPresent) { run { - logger.error("No transaction info in node for TX with ID = ${enqueuedTx.id}. Marking it as CANCELLED_FORKED") + logger.error( + "No transaction info in node for TX with ID = ${enqueuedTx.id}. Marking it as CANCELLED_FORKED", + ) enqueuedTx.apply { status = EnqueuedTxStatus.CANCELLED_FORKED } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledTxQueueCleaner.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledTxQueueCleaner.kt index f88e395..ef585ec 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledTxQueueCleaner.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/ScheduledTxQueueCleaner.kt @@ -28,7 +28,7 @@ open class ScheduledTxQueueCleaner( val deletedCount = enqueuedTxJpaRepository.deleteAllReadWithBlockHeightBefore( blockHeight = blockHeightLimit, - limit = queueCleanerConfig.deleteBatchSize + limit = queueCleanerConfig.deleteBatchSize, ) totalDeleted += deletedCount } while (deletedCount > 0) diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/BlocksLoaderImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/BlocksLoaderImpl.kt index a09923f..ad26df7 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/BlocksLoaderImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/BlocksLoaderImpl.kt @@ -39,7 +39,7 @@ open class BlocksLoaderImpl( blocksService.blockSequence(fromHeight, lastBlock.height.value).also { logger.debug("Blocks from height $fromHeight to ${lastBlock.height} downloaded") }, - hasMoreBlocks || iterator.hasNext() + hasMoreBlocks || iterator.hasNext(), ) } } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/ScheduledBlockInfoSynchronizer.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/ScheduledBlockInfoSynchronizer.kt index bde44e9..42ad973 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/ScheduledBlockInfoSynchronizer.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/ScheduledBlockInfoSynchronizer.kt @@ -53,14 +53,14 @@ open class ScheduledBlockInfoSynchronizer( try { syncedToHeight = sync( syncedToHeight, - nodeHeight + nodeHeight, ) logger.debug("Synced to height $syncedToHeight") } catch (ex: ObjectOptimisticLockingFailureException) { logger.debug( "Sync failed [startHeight = '$startHeight', " + "nodeHeight = '$nodeHeight']", - ex + ex, ) } } @@ -69,13 +69,13 @@ open class ScheduledBlockInfoSynchronizer( private fun sync(observerHeight: Long, nodeHeight: Long): Long { val syncToHeight = min( observerHeight + txObserverConfig.blockHeightWindow, - nodeHeight + OFFSET + nodeHeight + OFFSET, ) logger.debug("Syncing to height $syncToHeight") val newHeight = txExecutor.requiresNew { sourceExecutor.execute( blockHeightLowerBound = observerHeight, - blockHeightUpperBound = syncToHeight + blockHeightUpperBound = syncToHeight, ).also { newHeight -> syncInfoService.syncedTo(newHeight) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/SourceExecutorImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/SourceExecutorImpl.kt index eb806a2..8c03b5b 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/SourceExecutorImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/poller/SourceExecutorImpl.kt @@ -15,7 +15,7 @@ class SourceExecutorImpl( override fun execute(blockHeightLowerBound: Long, blockHeightUpperBound: Long): Long { val (blocksAtHeightRange, moreBlocksExists) = blocksLoader.download( fromHeight = blockHeightLowerBound, - tryToHeight = blockHeightUpperBound + tryToHeight = blockHeightUpperBound, ) val nextBlockHeight = when { blocksAtHeightRange.isEmpty() -> blockHeightLowerBound @@ -29,7 +29,7 @@ class SourceExecutorImpl( for (blocksAtHeightDto in blocksAtHeightRange) { logger.debug( "current block height = ${blocksAtHeightDto.height}; " + - "tx count in block = ${blocksAtHeightDto.transactionCount} " + "tx count in block = ${blocksAtHeightDto.transactionCount} ", ) blockSubscribers.forEach { diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/EventSubscriber.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/EventSubscriber.kt index 3d16c19..ce42c4b 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/EventSubscriber.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/EventSubscriber.kt @@ -25,6 +25,7 @@ import org.slf4j.info import org.slf4j.lazyLogger import org.slf4j.warn +@Suppress("LongParameterList") class EventSubscriber( private val syncInfoService: SyncInfoService, private val weBlockchainEventServices: List, @@ -78,17 +79,18 @@ class EventSubscriber( while (true) { try { val syncInfo = txExecutor.requiresNew { - if (forkDetected) + if (forkDetected) { syncInfoService.syncInfoOnFork().also { forkDetected = false } - else + } else { syncInfoService.syncInfo() + } } with(syncInfo) { syncState.change( height = observerHeight.value, - prevBlockSignature = prevBlockSignature?.asBase58String() + prevBlockSignature = prevBlockSignature?.asBase58String(), ) } with(syncState) { @@ -102,7 +104,7 @@ class EventSubscriber( }.use { events -> handleEvents( events = events, - strategy = eventHandlingStrategyFactory.create(height = height) + strategy = eventHandlingStrategyFactory.create(height = height), ) } } @@ -115,7 +117,7 @@ class EventSubscriber( private fun handleEvents( events: BlockchainEventsIterator, - strategy: EventHandlingStrategy + strategy: EventHandlingStrategy, ) { for (event in events) { log.debug { "Received event $event" } @@ -135,12 +137,13 @@ class EventSubscriber( } } val lastSyncedBlockInfo = syncedBlockInfos.lastOrNull() - if (lastSyncedBlockInfo != null) + if (lastSyncedBlockInfo != null) { syncedTo( height = lastSyncedBlockInfo.height.value + 1, prevBlockSignature = lastSyncedBlockInfo.signature.asBase58String(), - syncedBlocks = syncedBlockInfos + syncedBlocks = syncedBlockInfos, ) + } } } is HandleRollback -> with(action) { @@ -150,7 +153,7 @@ class EventSubscriber( } syncedTo( height = weRollbackInfo.toHeight.value + 1, - prevBlockSignature = weRollbackInfo.toBlockSignature.asBase58String() + prevBlockSignature = weRollbackInfo.toBlockSignature.asBase58String(), ) } } @@ -160,17 +163,17 @@ class EventSubscriber( private fun syncedTo( height: Long, prevBlockSignature: String, - syncedBlocks: List = emptyList() + syncedBlocks: List = emptyList(), ) { syncInfoService.syncedTo( height = height, prevBlockSignature = prevBlockSignature, expectedCurrentHeight = syncState.height, - syncedBlocks = syncedBlocks + syncedBlocks = syncedBlocks, ) syncState.change( height = height, - prevBlockSignature = prevBlockSignature + prevBlockSignature = prevBlockSignature, ) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/HandleRollbackFactoryImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/HandleRollbackFactoryImpl.kt index a4a1d03..4d32561 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/HandleRollbackFactoryImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/HandleRollbackFactoryImpl.kt @@ -21,8 +21,8 @@ class HandleRollbackFactoryImpl( height = blocksService.blockById(event.returnToBlockSignature).height.value HandleRollback( event.toWeRollbackInfo( - toHeight = Height(height) - ) + toHeight = Height(height), + ), ) } finally { log.warn { "Rollback event signature = ${event.returnToBlockSignature}, height: $height" } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/logUtil.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/LogUtil.kt similarity index 100% rename from we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/logUtil.kt rename to we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/LogUtil.kt diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/AppendedBlockHistoryBufferImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/AppendedBlockHistoryBufferImpl.kt index 8648c2e..0dc88be 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/AppendedBlockHistoryBufferImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/AppendedBlockHistoryBufferImpl.kt @@ -27,7 +27,8 @@ class AppendedBlockHistoryBufferImpl( } private fun canStore(appendedBlockHistory: BlockchainEvent.AppendedBlockHistory): Boolean = - buffer.size == 0 || buffer.size != maxCount && bytesSize + appendedBlockHistory.blockSize.bytesCount <= maxSizeBytes + buffer.size == 0 || buffer.size != maxCount && + bytesSize + appendedBlockHistory.blockSize.bytesCount <= maxSizeBytes override fun clear(): List = buffer.also { diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/BlockAppendedEventHandlingStrategy.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/BlockAppendedEventHandlingStrategy.kt index 70d5b40..e767bbc 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/BlockAppendedEventHandlingStrategy.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/BlockAppendedEventHandlingStrategy.kt @@ -31,10 +31,11 @@ class BlockAppendedEventHandlingStrategy( override fun actionsOn(event: BlockchainEvent): List = when (event) { is BlockchainEvent.AppendedBlockHistory -> { - if (appendedBlockHistoryBuffer.store(event)) + if (appendedBlockHistoryBuffer.store(event)) { emptyList() - else + } else { listOf((appendedBlockHistoryBuffer.clear() + event).toHandleBlocks()) + } } is BlockchainEvent.BlockAppended -> { val blockAppendedWeBlockInfo = event.toWeBlockInfo(txsFromMicroBlocks) @@ -44,8 +45,9 @@ class BlockAppendedEventHandlingStrategy( listOf( HandleBlocks( weBlockInfos = appendedBlockHistoryList.map { it.toWeBlockInfo() } + blockAppendedWeBlockInfo, - syncedBlockInfos = appendedBlockHistoryList.map { it.toSyncedBlockInfo() } + event.toSyncedBlockInfo() - ) + syncedBlockInfos = + appendedBlockHistoryList.map { it.toSyncedBlockInfo() } + event.toSyncedBlockInfo(), + ), ) } is BlockchainEvent.MicroBlockAppended -> { @@ -61,7 +63,7 @@ class BlockAppendedEventHandlingStrategy( clearTxsFromMicroBlocks() listOf( appendedBlockHistoryBuffer.clearAndBuildHandleBlocks(), - handleRollbackFactory.create(event) + handleRollbackFactory.create(event), ) } } @@ -78,11 +80,12 @@ class BlockAppendedEventHandlingStrategy( blockAppended.txIds.asSequence() .mapNotNull { id -> txsFromMicroBlocks[id.asBase58String()].also { tx: Tx? -> - if (tx == null) + if (tx == null) { log.warn { "Tx with id $id was not received in MicroBlock" + ", BlockAppended [signature = '$signature', height = '$height']" } + } } } .map { tx -> @@ -97,7 +100,8 @@ class BlockAppendedEventHandlingStrategy( get() = blockAppended.signature } - private fun BlockchainEvent.BlockAppended.toWeBlockInfo(txsFromMicroBlocks: MutableMap): WeBlockInfo = - BlockAppendedWeBlockInfo(this, txsFromMicroBlocks) + private fun BlockchainEvent.BlockAppended.toWeBlockInfo( + txsFromMicroBlocks: MutableMap, + ): WeBlockInfo = BlockAppendedWeBlockInfo(this, txsFromMicroBlocks) } } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/EventHandlingStrategy.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/EventHandlingStrategy.kt index d757e86..7755345 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/EventHandlingStrategy.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/EventHandlingStrategy.kt @@ -19,14 +19,14 @@ sealed class Action { syncedBlockInfo: SyncedBlockInfo? = null, ) : this( listOf(weBlockInfo), - syncedBlockInfo?.let(::listOf) ?: emptyList() + syncedBlockInfo?.let(::listOf) ?: emptyList(), ) constructor( weBlockInfos: Sequence, syncedBlockInfos: Sequence = emptySequence(), ) : this( weBlockInfos.toList(), - syncedBlockInfos.toList() + syncedBlockInfos.toList(), ) } class HandleRollback(val weRollbackInfo: WeRollbackInfo) : Action() diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/extensions.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/Extensions.kt similarity index 91% rename from we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/extensions.kt rename to we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/Extensions.kt index 837b890..d3fc17e 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/extensions.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/Extensions.kt @@ -10,5 +10,5 @@ fun AppendedBlockHistoryBuffer.clearAndBuildHandleBlocks(): HandleBlocks = fun List.toHandleBlocks(): HandleBlocks = HandleBlocks( weBlockInfos = map { it.toWeBlockInfo() }, - syncedBlockInfos = map { it.toSyncedBlockInfo() } + syncedBlockInfos = map { it.toSyncedBlockInfo() }, ) diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/MicroBlockEventHandlingStrategy.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/MicroBlockEventHandlingStrategy.kt index fff6467..3367b8a 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/MicroBlockEventHandlingStrategy.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/subscriber/strategy/MicroBlockEventHandlingStrategy.kt @@ -33,11 +33,13 @@ class MicroBlockEventHandlingStrategy( when (event) { is BlockchainEvent.AppendedBlockHistory -> { height = event.height.value + 1 - if (appendedBlockHistoryBuffer.store(event)) + if (appendedBlockHistoryBuffer.store(event)) { emptyList() - else + } else { listOf((appendedBlockHistoryBuffer.clear() + event).toHandleBlocks()) + } } + is BlockchainEvent.BlockAppended -> { height = event.height.value + 1 log.logIgnoredTxs(event.txIds.map { it.asBase58String() }, txsFromMicroBlocks) @@ -46,31 +48,37 @@ class MicroBlockEventHandlingStrategy( listOf( HandleBlocks( weBlockInfos = appendedBlockHistoryList.map { it.toWeBlockInfo() }, - syncedBlockInfos = appendedBlockHistoryList.map { it.toSyncedBlockInfo() } + event.toSyncedBlockInfo(), - ) + syncedBlockInfos = + appendedBlockHistoryList.map { it.toSyncedBlockInfo() } + event.toSyncedBlockInfo(), + ), ) } + is BlockchainEvent.MicroBlockAppended -> { val appendedBlockHistoryList = appendedBlockHistoryBuffer.clear() listOf( HandleBlocks( - weBlockInfos = appendedBlockHistoryList.map { it.toWeBlockInfo() } + event.toWeBlockInfo(Height(height)).also { - event.txs.forEach { tx -> - txsFromMicroBlocks.compute(tx.id.asBase58String()) { id, txInMap -> - if (txInMap != null) log.warn { "Got already received tx with id $id" } - tx + weBlockInfos = + appendedBlockHistoryList + .map { it.toWeBlockInfo() } + event.toWeBlockInfo(Height(height)) + .also { + event.txs.forEach { tx -> + txsFromMicroBlocks.compute(tx.id.asBase58String()) { id, txInMap -> + if (txInMap != null) log.warn { "Got already received tx with id $id" } + tx + } } - } - }, - syncedBlockInfos = appendedBlockHistoryList.map { it.toSyncedBlockInfo() } - ) + }, + syncedBlockInfos = appendedBlockHistoryList.map { it.toSyncedBlockInfo() }, + ), ) } + is BlockchainEvent.RollbackCompleted -> listOf( appendedBlockHistoryBuffer.clearAndBuildHandleBlocks(), handleRollbackFactory.create(event).also { height = it.weRollbackInfo.toHeight.value - } + }, ) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/BlockHistoryServiceImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/BlockHistoryServiceImpl.kt index a520c4d..d43d716 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/BlockHistoryServiceImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/BlockHistoryServiceImpl.kt @@ -31,10 +31,11 @@ open class BlockHistoryServiceImpl( override fun saveBlocks(blocks: List) { val relevantSyncedBlockInfos = - if (blocks.size <= historyDepth) + if (blocks.size <= historyDepth) { blocks - else + } else { blocks.sortedBy { it.height.value }.takeLast(historyDepth) + } blockHistoryRepository.saveAll( relevantSyncedBlockInfos.map { syncedBlockInfo -> with(syncedBlockInfo) { @@ -44,14 +45,14 @@ open class BlockHistoryServiceImpl( timestamp = timestamp.toDateTimeFromUTCBlockChain(), ) } - } + }, ) } override fun list(pageable: Pageable): Page = blockHistoryRepository.findAll( { _, _, _ -> null }, - pageable + pageable, ) override fun clean(observerHeight: Long) { @@ -79,13 +80,16 @@ open class BlockHistoryServiceImpl( BlockHistory::height, mapping( BlockHistory::signature, - toSet() - ) - ) + toSet(), + ), + ), ) } - return if (blockSignaturesFromRepoByHeight.isEmpty()) BlockSearchResult.NotFound(lastCheckedHeight = observerHeight) - else { + return if (blockSignaturesFromRepoByHeight.isEmpty()) { + BlockSearchResult.NotFound( + lastCheckedHeight = observerHeight, + ) + } else { val blockSignaturesFromNode = BlockSignaturesFromNode( fromHeight = heights.last, toHeight = heights.first, @@ -101,8 +105,9 @@ open class BlockHistoryServiceImpl( signature in repoSignatures } ?: false } - if (firstCommonBlockInfo == null) BlockSearchResult.NotFound(Height.fromLong(heights.last)) - else { + if (firstCommonBlockInfo == null) { + BlockSearchResult.NotFound(Height.fromLong(heights.last)) + } else { val (signature, height) = firstCommonBlockInfo BlockSearchResult.Found( signature = Signature.fromBase58(signature), diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/consts.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/Consts.kt similarity index 100% rename from we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/consts.kt rename to we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/Consts.kt diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/ExpectedHeightMismatchException.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/ExpectedHeightMismatchException.kt index eaf5675..c31c2f7 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/ExpectedHeightMismatchException.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/ExpectedHeightMismatchException.kt @@ -1,9 +1,9 @@ package com.wavesenterprise.sdk.tx.observer.core.spring.executor.syncinfo -import javax.persistence.OptimisticLockException +import jakarta.persistence.OptimisticLockException class ExpectedHeightMismatchException( - expectedCurrentHeight: Long + expectedCurrentHeight: Long, ) : OptimisticLockException( - "Expected to update a row, but updated none. Expected currentHeight $expectedCurrentHeight" + "Expected to update a row, but updated none. Expected currentHeight $expectedCurrentHeight", ) diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoService.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoService.kt index 081a1a0..c8ad947 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoService.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoService.kt @@ -7,7 +7,7 @@ interface SyncInfoService { fun syncedTo( height: Long, prevBlockSignature: String? = null, - syncedBlocks: List = emptyList() + syncedBlocks: List = emptyList(), ) fun syncedTo( diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoServiceImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoServiceImpl.kt index 8fc8969..8297a10 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoServiceImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/executor/syncinfo/SyncInfoServiceImpl.kt @@ -16,6 +16,7 @@ import org.slf4j.lazyLogger import org.slf4j.warn import java.lang.Long.max +@Suppress("LongParameterList", "TooManyFunctions") class SyncInfoServiceImpl( private val blockHeightJpaRepository: BlockHeightJpaRepository, private val blockHeightResetRepository: BlockHeightResetRepository, @@ -30,7 +31,7 @@ class SyncInfoServiceImpl( ) : SyncInfoService { data class SyncHistoryProperties( val enabled: Boolean, - val fromHeight: Long + val fromHeight: Long, ) private val log by lazyLogger(SyncInfoServiceImpl::class) @@ -42,7 +43,7 @@ class SyncInfoServiceImpl( syncHistory.enabled -> syncHistory.fromHeight else -> blocksService.blockHeight().value }, - ) + ), ) private val observerHeight: Long @@ -91,10 +92,11 @@ class SyncInfoServiceImpl( val heightUpdated = resetToNodeHeightIfNecessary() val prevBlockSignatureUpdated = fillPrevBlockSignature() val updated = heightUpdated || prevBlockSignatureUpdated - return if (updated) + return if (updated) { blockHeightJpaRepository.save(this) - else + } else { this + } } override fun syncInfoOnFork(): SyncInfo = @@ -110,7 +112,7 @@ class SyncInfoServiceImpl( } setBlockInfo( height = blockSearchResult.height.value + 1, - prevBlockSignature = blockSearchResult.signature.asBase58String() + prevBlockSignature = blockSearchResult.signature.asBase58String(), ) } is NotFound -> { @@ -123,7 +125,7 @@ class SyncInfoServiceImpl( } setBlockInfo( height = height, - prevBlockSignature = prevBlockSignature(height)?.asBase58String() + prevBlockSignature = prevBlockSignature(height)?.asBase58String(), ) } }, @@ -132,7 +134,7 @@ class SyncInfoServiceImpl( private fun syncInfo( blockHeightInfo: BlockHeightInfo, - nodeHeight: Height + nodeHeight: Height, ): SyncInfo = blockHeightInfo.toSyncInfo(nodeHeight).also { syncInfo -> blockHistoryService.clean(syncInfo.observerHeight.value) @@ -148,7 +150,7 @@ class SyncInfoServiceImpl( private fun updateMetrics( nodeHeight: Height, - observerHeight: Height + observerHeight: Height, ) { nodeHeightMetric.metricValue = nodeHeight.value observerHeightMetric.metricValue = observerHeight.value @@ -167,7 +169,7 @@ class SyncInfoServiceImpl( blockInfoSingleRecord.apply { this.currentHeight = height this.prevBlockSignature = prevBlockSignature - } + }, ) override fun syncedTo(height: Long, prevBlockSignature: String?, syncedBlocks: List) { @@ -182,7 +184,7 @@ class SyncInfoServiceImpl( height: Long, prevBlockSignature: String?, expectedCurrentHeight: Long, - syncedBlocks: List + syncedBlocks: List, ) { doSyncedTo( height = height, @@ -196,7 +198,7 @@ class SyncInfoServiceImpl( height: Long, prevBlockSignature: String?, expectedCurrentHeight: Long? = null, - syncedBlocks: List + syncedBlocks: List, ) { checkHeight(height) log.debug { @@ -209,7 +211,7 @@ class SyncInfoServiceImpl( id = blockInfoSingleRecord.id, currentHeight = height, prevBlockSignature = prevBlockSignature, - expectedCurrentHeight = expectedCurrentHeight + expectedCurrentHeight = expectedCurrentHeight, ).also { rowsUpdated -> if (rowsUpdated == 0) throw ExpectedHeightMismatchException(expectedCurrentHeight) } @@ -242,7 +244,7 @@ class SyncInfoServiceImpl( private class SyncInfoAdapter( private val blockHeightInfo: BlockHeightInfo, - override val nodeHeight: Height + override val nodeHeight: Height, ) : SyncInfo { override val observerHeight: Height get() = Height.fromLong(blockHeightInfo.currentHeight) diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/lock/LockServiceImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/lock/LockServiceImpl.kt index b54ac35..fc53781 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/lock/LockServiceImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/lock/LockServiceImpl.kt @@ -16,10 +16,11 @@ class LockServiceImpl( log.debug { "Trying to create row for lock: $key" } txExecutor.requiresNew { lockRepository.create(key).also { insertedCount -> - if (insertedCount > 0) + if (insertedCount > 0) { log.info { "Lock row created for key: $key" } - else + } else { log.debug { "Lock row already exists for key: $key" } + } } } log.debug { "Trying to acquire lock for key: $key" } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/AbstractPrivateContentResolver.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/AbstractPrivateContentResolver.kt index 7489829..ac40ba2 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/AbstractPrivateContentResolver.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/AbstractPrivateContentResolver.kt @@ -10,8 +10,8 @@ import com.wavesenterprise.sdk.node.domain.privacy.PolicyItemRequest import com.wavesenterprise.sdk.node.domain.tx.CreatePolicyTx import com.wavesenterprise.sdk.node.domain.tx.PolicyDataHashTx import com.wavesenterprise.sdk.tx.observer.api.privacy.PrivateContentResolver -import org.springframework.util.Base64Utils import java.lang.reflect.Type +import java.util.Base64 abstract class AbstractPrivateContentResolver( private val nodeBlockingServiceFactory: NodeBlockingServiceFactory, @@ -35,8 +35,8 @@ abstract class AbstractPrivateContentResolver( PolicyItemRequest( policyId = tx.policyId, dataHash = tx.dataHash, - ) - ).orElseGet(null) + ), + ).orElseGet(null), ) { "No info about item with policyId=${tx.policyId} and dataHash=${tx.dataHash} in privacy" } @@ -47,12 +47,12 @@ abstract class AbstractPrivateContentResolver( PolicyItemRequest( policyId = tx.policyId, dataHash = tx.dataHash, - ) - ).orElseGet(null) + ), + ).orElseGet(null), ) { "No data for item with policyId=${tx.policyId} and dataHash=${tx.dataHash} in privacy" } - return Base64Utils.decode(data.bytes) + return Base64.getDecoder().decode(data.bytes) } protected fun mapPayload(bytes: ByteArray, type: Type): Any { diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerHandlerBuilder.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerHandlerBuilder.kt index 70d65eb..18a057c 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerHandlerBuilder.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerHandlerBuilder.kt @@ -96,7 +96,7 @@ class BlockListenerHandlerBuilder( private fun wrapSingleTxInvocation( method: Method, methodInvocation: () -> Unit, - tx: Tx + tx: Tx, ) = try { methodInvocation.invoke() } catch (ex: ReflectiveOperationException) { @@ -104,7 +104,6 @@ class BlockListenerHandlerBuilder( val methodName = method.toGenericString() logger.error("Error invoking handler for method $methodName on TX with ID = '${tx.id}'", causeException) throw BlockListenerSingleTxHandlerException( - txId = tx.id.asBase58String(), message = "Error invoking handler for method $methodName", cause = causeException, ) @@ -133,18 +132,6 @@ class BlockListenerHandlerBuilder( is DataValue.StringDataValue -> value } - private fun test(dataValue: DataValue, type: Type): Any = - when (dataValue) { - is DataValue.IntegerDataValue -> dataValue.value - is DataValue.BooleanDataValue -> dataValue.value - is DataValue.BinaryDataValue -> dataValue.value - is DataValue.StringDataValue -> { - val typeFactory: TypeFactory = objectMapper.typeFactory - val javaType: JavaType = typeFactory.constructType(type) - objectMapper.readValue(dataValue.value, javaType) - } - } - private fun ExecutedContractTx.contractId(): String = when (val tx = tx) { is CallContractTx -> tx.contractId.asBase58String() diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerMethodCallback.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerMethodCallback.kt index cab4058..8ea2070 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerMethodCallback.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerMethodCallback.kt @@ -28,8 +28,8 @@ class BlockListenerMethodCallback( beanInstance = beanInstance, privateContentResolverProvider = privateContentResolverProvider, objectMapper = objectMapper, - ).buildHandlerForMethod(method) - ) + ).buildHandlerForMethod(method), + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerPredicateBuilder.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerPredicateBuilder.kt index 71928b8..49b2e9d 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerPredicateBuilder.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/BlockListenerPredicateBuilder.kt @@ -49,6 +49,7 @@ import java.lang.reflect.Method import java.lang.reflect.Parameter import java.util.EnumSet +@Suppress("TooManyFunctions") class BlockListenerPredicateBuilder( private val beanFactoryResolver: BeanFactoryResolver, private val privateContentResolverProvider: ObjectProvider, @@ -68,7 +69,7 @@ class BlockListenerPredicateBuilder( PrivateDataEvent::class.java.isAssignableFrom(methodArgType) -> buildDataEventPredicate(method) Tx::class.java.isAssignableFrom(methodArgType) -> getTxTypePredicate(methodArgType) else -> throw IllegalArgumentException( - "TxListener annotated method can have arguments only of type Tx, KeyEvent or PrivateDataEvent" + "TxListener annotated method can have arguments only of type Tx, KeyEvent or PrivateDataEvent", ) } val expressionPredicate = buildExpressionPredicate(annotation) @@ -173,8 +174,11 @@ class BlockListenerPredicateBuilder( ) messageFilters.forEach { - require(it.metaKey.isNotBlank() && it.metaKeyValue.isNotBlank() || it.metaKeyValueRegExp.isNotBlank()) { - "MetaKey and one of the metaKeyValue or metaKeyValueRegExp properties should be specified for MessageFilter" + require( + it.metaKey.isNotBlank() && it.metaKeyValue.isNotBlank() || it.metaKeyValueRegExp.isNotBlank(), + ) { + "MetaKey and one of the metaKeyValue or metaKeyValueRegExp" + + " properties should be specified for MessageFilter" } } return messageFilters @@ -197,6 +201,7 @@ class BlockListenerPredicateBuilder( ((tx as ExecutedContractTx).tx.type() in txTypeCodes) } } + else -> { { it.type() in txTypeCodes } } @@ -204,6 +209,7 @@ class BlockListenerPredicateBuilder( } } + @Suppress("CyclomaticComplexMethod") private fun getAllowedTxTypes(clazz: Class<*>): EnumSet = if (Tx::class.java.isAssignableFrom(clazz)) { // todo match with jsonSubTypes from Tx @@ -231,6 +237,7 @@ class BlockListenerPredicateBuilder( UpdateContractTx::class.java.isAssignableFrom(clazz) -> EnumSet.of(TxType.UPDATE_CONTRACT) GenesisRegisterNodeTx::class.java.isAssignableFrom(clazz) -> EnumSet.of(TxType.GENESIS_REGISTER_NODE) + RegisterNodeTx::class.java.isAssignableFrom(clazz) -> EnumSet.of(TxType.REGISTER_NODE) else -> EnumSet.noneOf(TxType::class.java) } @@ -243,9 +250,11 @@ class BlockListenerPredicateBuilder( CreateContractTx::class.java.isAssignableFrom(clazz) -> { EnumSet.of(TxType.CREATE_CONTRACT) } + CallContractTx::class.java.isAssignableFrom(clazz) -> { EnumSet.of(TxType.CALL_CONTRACT) } + else -> { EnumSet.of(TxType.CALL_CONTRACT, TxType.CREATE_CONTRACT) } @@ -254,8 +263,7 @@ class BlockListenerPredicateBuilder( private fun validateAndGetKeyFilter(methodParameter: Parameter): KeyFilter { val keyFilter = methodParameter.getAnnotation(KeyFilter::class.java) - ?: throw - IllegalArgumentException("VsKeyEvent typed method arguments should be annotated with @KeyFilter") + ?: throw IllegalArgumentException("VsKeyEvent typed method arguments should be annotated with @KeyFilter") require(keyFilter.keyPrefix.isNotBlank() || keyFilter.keyRegexp.isNotBlank()) { "One of the keyRegexp or keyPrefix properties should be specified for KeyFilter" } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/SubscriberBeanProducerMethodCallback.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/SubscriberBeanProducerMethodCallback.kt index 70d77d9..a2b4866 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/SubscriberBeanProducerMethodCallback.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/method/callback/SubscriberBeanProducerMethodCallback.kt @@ -14,7 +14,7 @@ abstract class SubscriberBeanProducerMethodCallback( val subscriber = buildSubscriber(method) beanFactory.registerSingleton( "${beanName}_${method.declaringClass.name}_${method.name}", - subscriber + subscriber, ) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/metrics/ScheduledMetricsCollector.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/metrics/ScheduledMetricsCollector.kt index d54f669..621e8fd 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/metrics/ScheduledMetricsCollector.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/metrics/ScheduledMetricsCollector.kt @@ -6,6 +6,7 @@ import com.wavesenterprise.sdk.tx.observer.jpa.repository.TxQueuePartitionJpaRep import org.slf4j.Logger import org.slf4j.LoggerFactory +@Suppress("LongParameterList") open class ScheduledMetricsCollector( val enqueuedTxJpaRepository: EnqueuedTxJpaRepository, val txQueuePartitionJpaRepository: TxQueuePartitionJpaRepository, diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/PartitionHandlerJpa.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/PartitionHandlerJpa.kt index 1353ac6..a2be7b7 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/PartitionHandlerJpa.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/PartitionHandlerJpa.kt @@ -30,7 +30,7 @@ open class PartitionHandlerJpa( } else { logger.debug( "Partition $partitionId was not paused because tx has already became available." + - " TX ID = $pausedOnTxId" + " TX ID = $pausedOnTxId", ) } } @@ -45,7 +45,7 @@ open class PartitionHandlerJpa( if (partitionJpaRepository.resetPausedTxId(partitionId, txId) == 0) { logger.warn( "Partition with ID = $partitionId was not reset by tx with ID = $txId" + - " as it is paused on other tx" + " as it is paused on other tx", ) } else { logger.debug("Partition with ID = $partitionId has been successfully resumed by tx with ID = $txId") diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/TxQueuePartitionResolveServiceImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/TxQueuePartitionResolveServiceImpl.kt index c3a092b..f7f731e 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/TxQueuePartitionResolveServiceImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/partition/TxQueuePartitionResolveServiceImpl.kt @@ -22,7 +22,7 @@ open class TxQueuePartitionResolveServiceImpl( TxQueuePartition( id = partitionId, priority = 0, - ) + ), ) }.also { logger.debug("Resolved partitionId = ${it.id} for TX with ID = ${tx.id}") diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/EnqueuedTxController.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/EnqueuedTxController.kt index fdf2360..e811bd4 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/EnqueuedTxController.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/EnqueuedTxController.kt @@ -46,7 +46,7 @@ class EnqueuedTxController( @PatchMapping("/{txId}") fun patchTxInQueue( @PathVariable txId: String, - @RequestBody patchTxApiDto: PatchTxApiDto + @RequestBody patchTxApiDto: PatchTxApiDto, ): EnqueuedTxApiDto = txQueueService.changeTxStatusInQueue(txId, patchTxApiDto).toApiDto() @DeleteMapping("/{txId}") diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/mapper.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/Mapper.kt similarity index 90% rename from we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/mapper.kt rename to we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/Mapper.kt index 5e89b14..4b119a9 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/mapper.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/Mapper.kt @@ -15,11 +15,11 @@ import com.wavesenterprise.sdk.tx.observer.domain.EnqueuedTx_ import com.wavesenterprise.sdk.tx.observer.domain.RollbackInfo import com.wavesenterprise.sdk.tx.observer.domain.TxQueuePartition import com.wavesenterprise.sdk.tx.observer.domain.TxQueuePartition_ +import jakarta.persistence.criteria.CriteriaBuilder +import jakarta.persistence.criteria.CriteriaQuery +import jakarta.persistence.criteria.Predicate +import jakarta.persistence.criteria.Root import org.springframework.data.jpa.domain.Specification -import javax.persistence.criteria.CriteriaBuilder -import javax.persistence.criteria.CriteriaQuery -import javax.persistence.criteria.Predicate -import javax.persistence.criteria.Root fun EnqueuedTx.toApiDto(): EnqueuedTxApiDto = EnqueuedTxApiDto( id = id, @@ -35,8 +35,9 @@ fun EnqueuedTx.toApiDto(): EnqueuedTxApiDto = EnqueuedTxApiDto( fun EnqueuedTxSearchRequest.toSpecification() = Specification { root: Root, - _: CriteriaQuery<*>, - cb: CriteriaBuilder -> + _: CriteriaQuery<*>, + cb: CriteriaBuilder, + -> val predicates = mutableListOf() status?.let { @@ -48,7 +49,7 @@ fun EnqueuedTxSearchRequest.toSpecification() = partitionId?.let { predicates += cb.equal( root.join(EnqueuedTx_.partition).get(TxQueuePartition_.id), - it + it, ) } available?.let { @@ -76,8 +77,9 @@ fun TxQueuePartition.toApiDto(): TxQueuePartitionApiDto = TxQueuePartitionApiDto fun TxQueuePartitionSearchRequest.toSpecification() = Specification { root: Root, - cq: CriteriaQuery<*>, - cb: CriteriaBuilder -> + cq: CriteriaQuery<*>, + cb: CriteriaBuilder, + -> val predicates = mutableListOf() priority?.let { @@ -102,7 +104,7 @@ fun TxQueuePartitionSearchRequest.toSpecification() = subQuery.select(subRoot).where( joinPredicate, - cb.equal(subRoot.get(EnqueuedTx_.status), EnqueuedTxStatus.NEW) + cb.equal(subRoot.get(EnqueuedTx_.status), EnqueuedTxStatus.NEW), ) val newEnqueuedTxExist = cb.exists(subQuery) predicates += if (it) { @@ -120,7 +122,11 @@ fun TxQueuePartitionSearchRequest.toSpecification() = } } -fun PriorityComparisonOperator.toPredicate(root: Root, cb: CriteriaBuilder, priority: Int): Predicate { +fun PriorityComparisonOperator.toPredicate( + root: Root, + cb: CriteriaBuilder, + priority: Int, +): Predicate { return when (this) { PriorityComparisonOperator.EQ -> cb.equal(root.get(TxQueuePartition_.priority), priority) PriorityComparisonOperator.NE -> cb.notEqual(root.get(TxQueuePartition_.priority), priority) diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/ObserverController.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/ObserverController.kt index 08b0b82..328c9f9 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/ObserverController.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/ObserverController.kt @@ -29,9 +29,9 @@ class ObserverController( } @GetMapping("/status") - fun status(pageable: Pageable): ObserverStatusApiDto = + fun status(): ObserverStatusApiDto = ObserverStatusApiDto( - totalRollbackCount = rollbackInfoService.count() + totalRollbackCount = rollbackInfoService.count(), ) @GetMapping("/rollback") diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/TxQueuePartitionController.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/TxQueuePartitionController.kt index 22462cd..6dbf0b7 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/TxQueuePartitionController.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/TxQueuePartitionController.kt @@ -23,11 +23,14 @@ class TxQueuePartitionController( @GetMapping("/{partitionId}") fun getPartitionById(@PathVariable partitionId: String) = txQueuePartitionJpaRepository.findByIdOrNull(partitionId) - ?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Partition with ID = $partitionId not found in tx-observer queue") + ?: throw ResponseStatusException( + HttpStatus.NOT_FOUND, + "Partition with ID = $partitionId not found in tx-observer queue", + ) @GetMapping("/status") fun status() = TxQueuePartitionStatusApiDto( txQueuePartitionJpaRepository.countErrorPartitions(), - txQueuePartitionJpaRepository.count() + txQueuePartitionJpaRepository.count(), ) } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/dto/PriorityComparisonOperator.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/dto/PriorityComparisonOperator.kt index a165890..d4817a2 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/dto/PriorityComparisonOperator.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/dto/PriorityComparisonOperator.kt @@ -7,5 +7,4 @@ enum class PriorityComparisonOperator { LE, GT, GE, - ; } diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/RollbackInfoServiceImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/RollbackInfoServiceImpl.kt index 19c1ab6..44a9c19 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/RollbackInfoServiceImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/RollbackInfoServiceImpl.kt @@ -11,7 +11,7 @@ class RollbackInfoServiceImpl( override fun list(pageable: Pageable): Page = rollbackInfoRepository.findAll( { _, _, _ -> null }, - pageable + pageable, ) override fun count(): Long = diff --git a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/TxQueueStatusServiceImpl.kt b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/TxQueueStatusServiceImpl.kt index 47e1fe3..da6d975 100644 --- a/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/TxQueueStatusServiceImpl.kt +++ b/we-tx-observer-module/we-tx-observer-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/core/spring/web/service/TxQueueStatusServiceImpl.kt @@ -51,8 +51,8 @@ open class TxQueueStatusServiceImpl( queueSize = queueSize, privacyStatusApiDto = PrivacyStatusApiDto( totalNewPolicyDataHashes = enqueuedTxJpaRepository.countPolicyDataHashes(), - notAvailableCount = enqueuedTxJpaRepository.countNotAvailablePolicyDataHashes() - ) + notAvailableCount = enqueuedTxJpaRepository.countNotAvailablePolicyDataHashes(), + ), ) } @@ -82,7 +82,7 @@ open class TxQueueStatusServiceImpl( override val txList: List = listOf(transactionInfo) override val signature: Signature = Signature("fake_signature_for_put".toByteArray()) override val txCount: Long = 1 - } + }, ) return requireNotNull(enqueuedTxJpaRepository.findByIdOrNull(txId.asBase58String())) { @@ -97,12 +97,12 @@ open class TxQueueStatusServiceImpl( val enqueuedTx = enqueuedTxJpaRepository.findByIdOrNull(txId) ?: throw ResponseStatusException( HttpStatus.NOT_FOUND, - "TX with ID = $txId not found in tx-observer queue" + "TX with ID = $txId not found in tx-observer queue", ) return enqueuedTxJpaRepository.save( enqueuedTx.apply { status = patchTxDto.status - } + }, ) } @@ -114,7 +114,9 @@ open class TxQueueStatusServiceImpl( @Transactional override fun postponeErrors(): Int { return enqueuedTxJpaRepository.setStatusForTxWithStatusEqualsAndPartitionPriorityLowerThan( - EnqueuedTxStatus.POSTPONED, EnqueuedTxStatus.NEW, -errorPriorityOffset + EnqueuedTxStatus.POSTPONED, + EnqueuedTxStatus.NEW, + -errorPriorityOffset, ) } } diff --git a/we-tx-observer-module/we-tx-observer-domain/build.gradle.kts b/we-tx-observer-module/we-tx-observer-domain/build.gradle.kts index a9fc70c..291bca8 100644 --- a/we-tx-observer-module/we-tx-observer-domain/build.gradle.kts +++ b/we-tx-observer-module/we-tx-observer-domain/build.gradle.kts @@ -10,7 +10,7 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("com.fasterxml.jackson.core:jackson-databind") - implementation("com.vladmihalcea:hibernate-types-52") + implementation("io.hypersistence:hypersistence-utils-hibernate-63") - kapt("org.hibernate:hibernate-jpamodelgen") + kapt("org.hibernate.orm:hibernate-jpamodelgen") } diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightInfo.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightInfo.kt index 276b49a..7063151 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightInfo.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightInfo.kt @@ -1,16 +1,16 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.Id +import jakarta.persistence.Table +import jakarta.persistence.Version import org.hibernate.annotations.SQLInsert import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.Id -import javax.persistence.Table -import javax.persistence.Version @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) @@ -20,7 +20,7 @@ import javax.persistence.Version insert into $TX_OBSERVER_SCHEMA_NAME.block_height_info (created_timestamp, current_height, prev_block_signature, update_timestamp, version, id) values (?, ?, ?, ?, ?, ?) on conflict do nothing -""" +""", ) data class BlockHeightInfo( @Id diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightReset.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightReset.kt index 29a49e9..cc51314 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightReset.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHeightReset.kt @@ -1,9 +1,9 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME -import javax.persistence.Entity -import javax.persistence.Id -import javax.persistence.Table +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHistory.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHistory.kt index 46c1b0b..8ddd25b 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHistory.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/BlockHistory.kt @@ -1,18 +1,18 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.GeneratedValue +import jakarta.persistence.Id +import jakarta.persistence.Table import org.hibernate.annotations.SQLDelete import org.hibernate.annotations.SQLInsert -import org.hibernate.annotations.Where +import org.hibernate.annotations.SQLRestriction import org.springframework.data.annotation.CreatedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime import java.util.UUID -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.GeneratedValue -import javax.persistence.Id -import javax.persistence.Table @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) @@ -22,10 +22,10 @@ import javax.persistence.Table insert into $TX_OBSERVER_SCHEMA_NAME.block_history (created_timestamp, deleted, height, signature, timestamp, id) values (?, ?, ?, ?, ?, ?) on conflict do nothing -""" +""", ) @SQLDelete(sql = "update $TX_OBSERVER_SCHEMA_NAME.block_history set deleted = true where id=?") -@Where(clause = "deleted = false") +@SQLRestriction("deleted = false") data class BlockHistory( @Id @GeneratedValue diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTx.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTx.kt index c0a21cd..08a40e6 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTx.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTx.kt @@ -1,36 +1,30 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.fasterxml.jackson.databind.JsonNode -import com.vladmihalcea.hibernate.type.json.JsonBinaryType -import com.wavesenterprise.sdk.tx.observer.common.jpa.util.JSONB_TYPE import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME +import io.hypersistence.utils.hibernate.type.json.JsonType +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import org.hibernate.annotations.Type -import org.hibernate.annotations.TypeDef -import org.hibernate.annotations.TypeDefs import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) @EntityListeners(AuditingEntityListener::class) -@TypeDefs( - TypeDef(name = JSONB_TYPE, typeClass = JsonBinaryType::class) -) data class EnqueuedTx( @Id var id: String, - @Type(type = JSONB_TYPE) + @Type(JsonType::class) var body: JsonNode, val txType: Int, diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTxStatus.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTxStatus.kt index 5e7250c..e133f7b 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTxStatus.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/EnqueuedTxStatus.kt @@ -5,5 +5,4 @@ enum class EnqueuedTxStatus { READ, POSTPONED, CANCELLED_FORKED, - ; } diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/Lock.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/Lock.kt index 374fc30..74a9c5b 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/Lock.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/Lock.kt @@ -1,9 +1,9 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME -import javax.persistence.Entity -import javax.persistence.Id -import javax.persistence.Table +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/RollbackInfo.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/RollbackInfo.kt index 837c658..9247341 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/RollbackInfo.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/RollbackInfo.kt @@ -1,15 +1,15 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.GeneratedValue +import jakarta.persistence.Id +import jakarta.persistence.Table import org.springframework.data.annotation.CreatedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime import java.util.UUID -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.GeneratedValue -import javax.persistence.Id -import javax.persistence.Table @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) diff --git a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/TxQueuePartition.kt b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/TxQueuePartition.kt index 0bf326b..1ade91d 100644 --- a/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/TxQueuePartition.kt +++ b/we-tx-observer-module/we-tx-observer-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/domain/TxQueuePartition.kt @@ -1,14 +1,14 @@ package com.wavesenterprise.sdk.tx.observer.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.Id +import jakarta.persistence.Table import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.Id -import javax.persistence.Table @Entity @Table(schema = TX_OBSERVER_SCHEMA_NAME) diff --git a/we-tx-observer-module/we-tx-observer-jpa/build.gradle.kts b/we-tx-observer-module/we-tx-observer-jpa/build.gradle.kts index 29bb5ed..11eb2a7 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/build.gradle.kts +++ b/we-tx-observer-module/we-tx-observer-jpa/build.gradle.kts @@ -16,7 +16,7 @@ dependencies { implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("com.fasterxml.jackson.core:jackson-databind") - implementation("com.vladmihalcea:hibernate-types-52") + implementation("io.hypersistence:hypersistence-utils-hibernate-63") testImplementation("org.postgresql:postgresql") testImplementation("org.testcontainers:postgresql") @@ -24,5 +24,5 @@ dependencies { testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("com.wavesenterprise:we-node-domain-test") - kapt("org.hibernate:hibernate-jpamodelgen") // Generate JPA Static Metamodel + kapt("org.hibernate.orm:hibernate-jpamodelgen") // Generate JPA Static Metamodel } diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/TxObserverJpaAutoConfig.kt b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/TxObserverJpaAutoConfig.kt index 78c8db8..19d4af0 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/TxObserverJpaAutoConfig.kt +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/TxObserverJpaAutoConfig.kt @@ -20,7 +20,7 @@ import org.springframework.core.Ordered basePackageClasses = [ BlockHeightInfo::class, BlockHeightJpaRepository::class, - ] + ], ) @AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE) @AutoConfigureBefore(JpaRepositoriesAutoConfiguration::class, HibernateJpaAutoConfiguration::class) diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHeightJpaRepository.kt b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHeightJpaRepository.kt index 9844337..dd43457 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHeightJpaRepository.kt +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHeightJpaRepository.kt @@ -17,7 +17,7 @@ interface BlockHeightJpaRepository : JpaRepository { where id = :id and currentHeight = :expectedCurrentHeight - """ + """, ) @Modifying fun update(id: String, currentHeight: Long, prevBlockSignature: String?, expectedCurrentHeight: Long): Int diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHistoryRepository.kt b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHistoryRepository.kt index 728c35d..382b39c 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHistoryRepository.kt +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/BlockHistoryRepository.kt @@ -26,7 +26,7 @@ interface BlockHistoryRepository : CrudRepository, JpaSpec delete from $TX_OBSERVER_SCHEMA_NAME.block_history where deleted = true """, - nativeQuery = true + nativeQuery = true, ) @Transactional @Modifying diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/EnqueuedTxJpaRepository.kt b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/EnqueuedTxJpaRepository.kt index 905d53c..e7c32fc 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/EnqueuedTxJpaRepository.kt +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/EnqueuedTxJpaRepository.kt @@ -3,6 +3,7 @@ package com.wavesenterprise.sdk.tx.observer.jpa.repository import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_OBSERVER_SCHEMA_NAME import com.wavesenterprise.sdk.tx.observer.domain.EnqueuedTx import com.wavesenterprise.sdk.tx.observer.domain.EnqueuedTxStatus +import jakarta.persistence.LockModeType import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.domain.Specification @@ -14,8 +15,8 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Propagation import org.springframework.transaction.annotation.Transactional -import javax.persistence.LockModeType +@Suppress("TooManyFunctions") @Repository interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecificationExecutor { @@ -23,7 +24,7 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif value = """ select count(*) from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx tx where tx.status = :#{#enqueuedTxStatus.name()} """, - nativeQuery = true + nativeQuery = true, ) fun countByStatus(enqueuedTxStatus: EnqueuedTxStatus): Long @@ -42,12 +43,12 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif where tx.status = :#{#enqueuedTxStatus.name()} and tx.partition_id = :partitionId order by tx.block_height, tx.position_in_block, tx.position_in_atomic for update skip locked """, - nativeQuery = true + nativeQuery = true, ) fun findActualEnqueuedTxForPartition( enqueuedTxStatus: EnqueuedTxStatus, partitionId: String, - pageable: Pageable + pageable: Pageable, ): Page fun findAllByStatusAndBlockHeightBeforeOrderByBlockHeight( @@ -75,7 +76,7 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif order by tx.tx_timestamp limit :limit for update skip locked """, - nativeQuery = true + nativeQuery = true, ) fun findOldCheckPrivacyAvailabilityCandidates( offset: Int, @@ -102,7 +103,7 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif order by tx.tx_timestamp desc offset :offset limit :limit for update skip locked """, - nativeQuery = true + nativeQuery = true, ) fun findRecentCheckPrivacyAvailabilityCandidates( alreadySelectedIds: Set, @@ -115,9 +116,16 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif @Transactional(propagation = Propagation.REQUIRES_NEW) @Query( - """delete from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx where id in - (select id from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx where status = :enqueuedTxStatus and block_height < :blockHeight limit :limit)""", - nativeQuery = true + """ + delete from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx + where id in ( + select id + from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx + where status = :enqueuedTxStatus + and block_height < :blockHeight limit :limit + ) + """, + nativeQuery = true, ) @Modifying fun deleteAllReadWithBlockHeightBefore( @@ -126,7 +134,10 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif limit: Long, ): Int - @Query("""delete from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx where block_height >= :blockHeight""", nativeQuery = true) + @Query( + """delete from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx where block_height >= :blockHeight""", + nativeQuery = true, + ) @Modifying fun cleanAllWithBlockHeightMoreThan(blockHeight: Long): Int @@ -135,7 +146,7 @@ interface EnqueuedTxJpaRepository : JpaRepository, JpaSpecif @Query( """update EnqueuedTx set status = :newStatus where status = :oldStatus - and partition.id in (select p.id from TxQueuePartition p where p.priority < :priority)""" + and partition.id in (select p.id from TxQueuePartition p where p.priority < :priority)""", ) @Modifying fun setStatusForTxWithStatusEqualsAndPartitionPriorityLowerThan( diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/LockRepository.kt b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/LockRepository.kt index 96a7307..663d2d0 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/LockRepository.kt +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/LockRepository.kt @@ -19,7 +19,7 @@ interface LockRepository : SpringDataRepository { (:name) on conflict do nothing """, - nativeQuery = true + nativeQuery = true, ) @Modifying fun create(name: String): Int @@ -30,7 +30,7 @@ interface LockRepository : SpringDataRepository { where name = :name for update skip locked """, - nativeQuery = true + nativeQuery = true, ) fun acquire(name: String): Lock? } diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/TxQueuePartitionJpaRepository.kt b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/TxQueuePartitionJpaRepository.kt index a7b9818..cfea0ae 100644 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/TxQueuePartitionJpaRepository.kt +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/jpa/repository/TxQueuePartitionJpaRepository.kt @@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Query import org.springframework.stereotype.Repository import org.springframework.transaction.annotation.Transactional +@Suppress("TooManyFunctions") @Repository interface TxQueuePartitionJpaRepository : JpaRepository, @@ -33,7 +34,7 @@ interface TxQueuePartitionJpaRepository : for update of tqp skip locked limit 1 """, - nativeQuery = true + nativeQuery = true, ) fun findAndLockLatestPartition(): String? @@ -62,7 +63,7 @@ interface TxQueuePartitionJpaRepository : where tqp.paused_on_tx_id is null order by tqp.priority desc, etx.tx_timestamp """, - nativeQuery = true + nativeQuery = true, ) fun findActualPartitions(): List @@ -72,7 +73,7 @@ interface TxQueuePartitionJpaRepository : set priority = 0 where id = :partitionId """, - nativeQuery = true + nativeQuery = true, ) @Modifying fun updateSuccessTxHandle(partitionId: String) @@ -84,7 +85,7 @@ interface TxQueuePartitionJpaRepository : where id = :partitionId and not (select available from $TX_OBSERVER_SCHEMA_NAME.enqueued_tx where id = :pausedOnTxId) """, - nativeQuery = true + nativeQuery = true, ) @Modifying fun updatePausedTxId(partitionId: String, pausedOnTxId: String): Int @@ -95,7 +96,7 @@ interface TxQueuePartitionJpaRepository : set paused_on_tx_id = null where id = :partitionId and paused_on_tx_id = :pausedOnTxId """, - nativeQuery = true + nativeQuery = true, ) @Modifying fun resetPausedTxId(partitionId: String, pausedOnTxId: String): Int @@ -106,7 +107,7 @@ interface TxQueuePartitionJpaRepository : set priority = (priority - 1) where id = :partitionId """, - nativeQuery = true + nativeQuery = true, ) @Modifying fun updateErrorTxHandle(partitionId: String) @@ -120,7 +121,7 @@ interface TxQueuePartitionJpaRepository : and etx.partition_id = p.id) and p.paused_on_tx_id is null; """, - nativeQuery = true + nativeQuery = true, ) fun countErrorPartitions(): Long @@ -132,7 +133,7 @@ interface TxQueuePartitionJpaRepository : where etx.status = 'NEW' and etx.partition_id = p.id) """, - nativeQuery = true + nativeQuery = true, ) fun countStuckPartitions(): Long @@ -142,7 +143,7 @@ interface TxQueuePartitionJpaRepository : and not exists (select etx.id from EnqueuedTx etx where etx.status = 'NEW' and etx.id = p.pausedOnTxId) - """ + """, ) @Modifying fun clearPausedOnTxIds(): Int diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/resources/META-INF/spring.factories b/we-tx-observer-module/we-tx-observer-jpa/src/main/resources/META-INF/spring.factories deleted file mode 100644 index d8b22b3..0000000 --- a/we-tx-observer-module/we-tx-observer-jpa/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.wavesenterprise.sdk.tx.observer.jpa.TxObserverJpaAutoConfig \ No newline at end of file diff --git a/we-tx-observer-module/we-tx-observer-jpa/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/we-tx-observer-module/we-tx-observer-jpa/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8932b96 --- /dev/null +++ b/we-tx-observer-module/we-tx-observer-jpa/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.wavesenterprise.sdk.tx.observer.jpa.TxObserverJpaAutoConfig \ No newline at end of file diff --git a/we-tx-observer-module/we-tx-observer-starter/build.gradle.kts b/we-tx-observer-module/we-tx-observer-starter/build.gradle.kts index 3a8660d..ca63923 100644 --- a/we-tx-observer-module/we-tx-observer-starter/build.gradle.kts +++ b/we-tx-observer-module/we-tx-observer-starter/build.gradle.kts @@ -13,6 +13,7 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.flywaydb:flyway-core") + implementation("org.flywaydb:flyway-database-postgresql") implementation("com.wavesenterprise:we-flyway-starter") implementation("com.wavesenterprise:we-node-client-blocking-client") @@ -34,7 +35,6 @@ dependencies { testImplementation("org.postgresql:postgresql") testImplementation("org.testcontainers:postgresql") - testImplementation("org.flywaydb:flyway-core") testImplementation("com.wavesenterprise:we-node-domain-test") testImplementation("net.javacrumbs.json-unit:json-unit-assertj") testImplementation("org.springframework.boot:spring-boot-starter-test") diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/BlockInfoSynchronizerConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/BlockInfoSynchronizerConfig.kt index 1804e73..3831183 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/BlockInfoSynchronizerConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/BlockInfoSynchronizerConfig.kt @@ -38,10 +38,10 @@ import org.springframework.context.annotation.Import TxObserverJpaConfig::class, SyncInfoConfig::class, PollerBlockSourceConfiguration::class, - SubscriberBlockSourceConfiguration::class + SubscriberBlockSourceConfiguration::class, ) @EnableConfigurationProperties( - TxEnqueuedPredicateProperties::class + TxEnqueuedPredicateProperties::class, ) @SuppressWarnings("TooManyFunctions") class BlockInfoSynchronizerConfig( diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/MetricsCollectorConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/MetricsCollectorConfig.kt index efa5f69..7454619 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/MetricsCollectorConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/MetricsCollectorConfig.kt @@ -19,7 +19,7 @@ import org.springframework.context.annotation.Import @Configuration @Import( TxObserverJpaConfig::class, - BlockInfoSynchronizerConfig::class + BlockInfoSynchronizerConfig::class, ) @EnableConfigurationProperties(MetricsCollectorProperties::class) class MetricsCollectorConfig { @@ -38,6 +38,7 @@ class MetricsCollectorConfig { fun totalPartitionCountMetric() = MetricContainerData(metricName = TOTAL_PARTITION_COUNT) + @Suppress("LongParameterList") @Bean fun metricsCollector( enqueuedTxJpaRepository: EnqueuedTxJpaRepository, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PartitionHandlerConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PartitionHandlerConfig.kt index 28214be..586bc34 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PartitionHandlerConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PartitionHandlerConfig.kt @@ -40,7 +40,7 @@ class PartitionHandlerConfig { ): PartitionHandler = MetricPartitionHandler( partitionHandlerJpa, handledTxMetricsContainer, - partitionFailureMetricsContainer + partitionFailureMetricsContainer, ) @Bean diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PrivacyAvailabilityCheckConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PrivacyAvailabilityCheckConfig.kt index ef5cef1..5b8cb67 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PrivacyAvailabilityCheckConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/PrivacyAvailabilityCheckConfig.kt @@ -40,6 +40,7 @@ class PrivacyAvailabilityCheckConfig { privacyAvailabilityChecker = privacyAvailabilityChecker, ) + @Suppress("LongParameterList") @Bean fun privacyAvailabilityChecker( enqueuedTxJpaRepository: EnqueuedTxJpaRepository, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerAdapter.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerAdapter.kt index 936d83b..8a94de7 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerAdapter.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerAdapter.kt @@ -7,6 +7,7 @@ import com.wavesenterprise.sdk.tx.observer.api.privacy.PrivateContentResolver open class TxObserverConfigurerAdapter : TxObserverConfigurer { override fun partitionResolver(): TxQueuePartitionResolver? = null + @Suppress("EmptyFunctionBlock") override fun configure(predicateConfigurer: TxObserverConfigurer.TxEnqueuePredicateConfigurer) {} override fun privateContentResolver(): PrivateContentResolver? = null diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerBuilder.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerBuilder.kt index fe245fa..a6b8034 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerBuilder.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerBuilder.kt @@ -63,7 +63,7 @@ class TxObserverConfigurerBuilder { class TxEnqueuePredicatesHolder( private val txEnqueuePredicates: MutableList = mutableListOf(), - private val txTypes: MutableSet = mutableSetOf() + private val txTypes: MutableSet = mutableSetOf(), ) { val predicates: List get() = txEnqueuePredicates @@ -79,7 +79,7 @@ class TxObserverConfigurerBuilder { object : TxEnqueuePredicate { override fun isEnqueued(tx: Tx): Boolean = predicate(tx) - } + }, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerDsl.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerDsl.kt index 1912e06..88391ff 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerDsl.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverConfigurerDsl.kt @@ -74,7 +74,7 @@ internal class TxEnqueuePredicateContextImpl : TxEnqueuePredicateContext { object : TxEnqueuePredicate { override fun isEnqueued(tx: Tx): Boolean = predicate(tx) - } + }, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverEnablerConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverEnablerConfig.kt index b702474..7c68e75 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverEnablerConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverEnablerConfig.kt @@ -42,7 +42,7 @@ class TxObserverEnablerConfig { txEnqueuePredicates.add( object : TxEnqueuePredicate { override fun isEnqueued(tx: Tx): Boolean = predicate(tx) - } + }, ) } @@ -78,7 +78,7 @@ class TxObserverEnablerConfig { val predicates = predicateConfigurer.predicates val types = predicateConfigurer.types AndTxEnqueuePredicate( - predicates + typeEnqueuedPredicate(types, txEnqueuedPredicateProperties) + predicates + typeEnqueuedPredicate(types, txEnqueuedPredicateProperties), ) } @@ -88,13 +88,13 @@ class TxObserverEnablerConfig { ) = when { configuredTypes.isNotEmpty() -> { listOf( - TxTypeEnqueuedPredicate(configuredTypes) + TxTypeEnqueuedPredicate(configuredTypes), ) } txEnqueuedPredicateProperties.txTypes.isNotEmpty() -> listOf( TxTypeEnqueuedPredicate( - txEnqueuedPredicateProperties.txTypes.map { TxType.fromInt(it) } - ) + txEnqueuedPredicateProperties.txTypes.map { TxType.fromInt(it) }, + ), ) else -> emptyList() } @@ -118,6 +118,6 @@ class TxObserverEnablerConfig { nodeBlockingServiceFactory = nodeBlockingServiceFactory, objectMapper = txObserverConfigurer?.objectMapper() ?: objectMapper - ?: error("Object mapper must be configured or be present in spring context") + ?: error("Object mapper must be configured or be present in spring context"), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverLockConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverLockConfig.kt index 22689b9..897b610 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverLockConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverLockConfig.kt @@ -16,7 +16,6 @@ import javax.sql.DataSource havingValue = "true", matchIfMissing = true, ) - @EnableSchedulerLock( interceptMode = EnableSchedulerLock.InterceptMode.PROXY_SCHEDULER, defaultLockAtMostFor = "PT1M", diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverSchedulerConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverSchedulerConfig.kt index 447cf6d..6da5cbb 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverSchedulerConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxObserverSchedulerConfig.kt @@ -33,6 +33,7 @@ import org.springframework.scheduling.support.ScheduledMethodRunnable import kotlin.reflect.KFunction import kotlin.reflect.jvm.javaMethod +@Suppress("TooManyFunctions") @Configuration @Profile("!test") @Import( @@ -112,7 +113,7 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { poolSize = listOf( txObserverSchedulerProperties.poolSize, privacyAvailabilityCheckProperties.threadCount, - partitionPollerProperties.threadCount + partitionPollerProperties.threadCount, ).sum() setThreadNamePrefix("tx-observer-pool-") initialize() @@ -124,10 +125,12 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { addBlockInfoSynchronizer() addEventSubscriber() addBlockHistoryCleaner() - if (partitionPollerProperties.enabled) + if (partitionPollerProperties.enabled) { initPartitionPoller() - if (privacyAvailabilityCheckProperties.enabled) + } + if (privacyAvailabilityCheckProperties.enabled) { initPrivacyChecker() + } addScheduledForkResolver() addQueueCleaner() addScheduledMetricsCollector() @@ -137,59 +140,64 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { } private fun ScheduledTaskRegistrar.addScheduledMetricsCollector() { - if (metricsCollectorProperties.enabled) + if (metricsCollectorProperties.enabled) { addFixedDelayTask( scheduledMethodRunnable( scheduledMetricsCollector, - ScheduledMetricsCollector::metricsCollector + ScheduledMetricsCollector::metricsCollector, ), - metricsCollectorProperties.fixedDelay.toMillis() + metricsCollectorProperties.fixedDelay, ) + } } private fun ScheduledTaskRegistrar.addQueueCleaner() { - if (queueCleanerProperties.enabled) + if (queueCleanerProperties.enabled) { addCronTask( scheduledMethodRunnable( scheduledTxQueueCleaner, - ScheduledTxQueueCleaner::cleanReadEnqueuedTx + ScheduledTxQueueCleaner::cleanReadEnqueuedTx, ), - queueCleanerProperties.cleanCronExpression + queueCleanerProperties.cleanCronExpression, ) + } } private fun ScheduledTaskRegistrar.addScheduledForkResolver() { - if (forkResolverProperties.enabled) + if (forkResolverProperties.enabled) { addFixedDelayTask( scheduledMethodRunnable( scheduledForkResolver, - ScheduledForkResolver::resolveForkedTx + ScheduledForkResolver::resolveForkedTx, ), - forkResolverProperties.fixedDelay.toMillis() + forkResolverProperties.fixedDelay, ) + } } private fun ScheduledTaskRegistrar.addBlockHistoryCleaner() { - if (txObserverProperties.enabled) + if (txObserverProperties.enabled) { addFixedDelayTask( scheduledMethodRunnable( blockHistoryCleaner, - BlockHistoryCleaner::clean + BlockHistoryCleaner::clean, ), - txObserverProperties.blockHistoryCleanDelay.toMillis() + txObserverProperties.blockHistoryCleanDelay, ) + } } private fun ScheduledTaskRegistrar.addEventSubscriber() { eventSubscriber?.let { eventSubscriber -> - if (txObserverProperties.enabled) + if (txObserverProperties.enabled) { addFixedDelayTask( scheduledMethodRunnable( eventSubscriber, - EventSubscriber::subscribe + EventSubscriber::subscribe, ), - txObserverProperties.fixedDelay.toMillis() + txObserverProperties.fixedDelay, ) + } } } @@ -198,9 +206,9 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { addFixedDelayTask( scheduledMethodRunnable( scheduledBlockInfoSynchronizer, - ScheduledBlockInfoSynchronizer::syncNodeBlockInfo + ScheduledBlockInfoSynchronizer::syncNodeBlockInfo, ), - txObserverProperties.fixedDelay.toMillis() + txObserverProperties.fixedDelay, ) } } @@ -210,9 +218,9 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { addFixedDelayTask( scheduledMethodRunnable( scheduledPrivacyChecker, - ScheduledPrivacyChecker::checkPrivacyAvailabilityWhileTheyExist + ScheduledPrivacyChecker::checkPrivacyAvailabilityWhileTheyExist, ), - privacyAvailabilityCheckProperties.fixedDelay.toMillis() + privacyAvailabilityCheckProperties.fixedDelay, ) } } @@ -222,9 +230,9 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { addFixedDelayTask( scheduledMethodRunnable( scheduledPartitionPoller, - ScheduledPartitionPoller::pollWhileHavingActivePartitions + ScheduledPartitionPoller::pollWhileHavingActivePartitions, ), - partitionPollerProperties.fixedDelay.toMillis() + partitionPollerProperties.fixedDelay, ) } } @@ -234,9 +242,9 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { addFixedDelayTask( scheduledMethodRunnable( scheduledPartitionPausedOnTxIdCleaner, - ScheduledPartitionPausedOnTxIdCleaner::clear + ScheduledPartitionPausedOnTxIdCleaner::clear, ), - partitionPausedOnTxIdCleanerProperties.fixedDelay.toMillis() + partitionPausedOnTxIdCleanerProperties.fixedDelay, ) } } @@ -246,9 +254,9 @@ class TxObserverSchedulerConfig : SchedulingConfigurer { addFixedDelayTask( scheduledMethodRunnable( scheduledPartitionCleaner, - ScheduledPartitionCleaner::cleanEmptyPartitions + ScheduledPartitionCleaner::cleanEmptyPartitions, ), - partitionCleanerProperties.fixedDelay.toMillis() + partitionCleanerProperties.fixedDelay, ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxQueueConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxQueueConfig.kt index 0919126..42af1bb 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxQueueConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/TxQueueConfig.kt @@ -43,9 +43,9 @@ import org.springframework.context.annotation.Import EnqueuedTxController::class, ObserverController::class, TxQueuePartitionController::class, - ] - ) - ] + ], + ), + ], ) @EnableConfigurationProperties( TxObserverProperties::class, @@ -55,12 +55,12 @@ class TxQueueConfig { @Autowired lateinit var nodeBlockingServiceFactory: NodeBlockingServiceFactory + @Suppress("LongParameterList") @Bean fun txQueueService( syncInfoService: SyncInfoService, enqueuedTxJpaRepository: EnqueuedTxJpaRepository, blockHeightResetRepository: BlockHeightResetRepository, - txQueuePartitionResolveService: TxQueuePartitionResolveService, @Qualifier("enqueueingBlockSubscriber") enqueueingBlockSubscriber: BlockSubscriber, txObserverProperties: TxObserverProperties, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/blockSourceMode.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/BlockSourceMode.kt similarity index 100% rename from we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/blockSourceMode.kt rename to we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/BlockSourceMode.kt diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/subscriber/SubscriberBlockSourceConfiguration.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/subscriber/SubscriberBlockSourceConfiguration.kt index 485d8ad..7bac437 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/subscriber/SubscriberBlockSourceConfiguration.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/subscriber/SubscriberBlockSourceConfiguration.kt @@ -27,14 +27,15 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration +@Suppress("LongParameterList") @Configuration @ConditionalOnProperty( prefix = "tx-observer", name = [BLOCK_SOURCE_MODE], - havingValue = "subscriber" + havingValue = "subscriber", ) @EnableConfigurationProperties( - SubscriberProperties::class + SubscriberProperties::class, ) @AutoConfigureAfter(NodeBlockingServiceFactoryAutoConfiguration::class) class SubscriberBlockSourceConfiguration( @@ -49,7 +50,7 @@ class SubscriberBlockSourceConfiguration( ) { @Bean fun eventSubscriber( - eventHandlingStrategyFactory: EventHandlingStrategyFactory + eventHandlingStrategyFactory: EventHandlingStrategyFactory, ): EventSubscriber = EventSubscriber( syncInfoService = syncInfoService, @@ -63,7 +64,7 @@ class SubscriberBlockSourceConfiguration( port = grpc.port, keepAliveTime = grpc.keepAliveTime, keepAliveWithoutCalls = grpc.keepAliveWithoutCalls, - ) + ), ).blockchainEventsService() }, eventHandlingStrategyFactory = eventHandlingStrategyFactory, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/syncinfo/SyncInfoConfig.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/syncinfo/SyncInfoConfig.kt index 0db83f0..fe5e3da 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/syncinfo/SyncInfoConfig.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/executor/syncinfo/SyncInfoConfig.kt @@ -21,7 +21,7 @@ import org.springframework.context.annotation.Configuration @Configuration @EnableConfigurationProperties( - TxObserverProperties::class + TxObserverProperties::class, ) class SyncInfoConfig( private val blocksService: BlocksService, @@ -46,12 +46,12 @@ class SyncInfoConfig( blocksService = blocksService, syncHistory = SyncInfoServiceImpl.SyncHistoryProperties( enabled = txObserverProperties.syncHistory, - fromHeight = txObserverProperties.activationHeight + fromHeight = txObserverProperties.activationHeight, ), autoResetHeight = txObserverProperties.autoResetHeight, forkNotResolvedHeightDrop = txObserverProperties.forkNotResolvedHeightDrop, nodeHeightMetric = nodeHeightMetric, - observerHeightMetric = observerHeightMetric + observerHeightMetric = observerHeightMetric, ) @Bean diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/ForkResolverProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/ForkResolverProperties.kt index 23f6b55..4f8748e 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/ForkResolverProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/ForkResolverProperties.kt @@ -2,14 +2,12 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.ForkResolverConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import org.springframework.boot.convert.DurationUnit import java.time.Duration import java.time.temporal.ChronoUnit @ConfigurationProperties("tx-observer.fork-resolver") -@ConstructorBinding data class ForkResolverProperties( @DefaultValue("true") override var enabled: Boolean, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/MetricsCollectorProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/MetricsCollectorProperties.kt index 31294e6..d013fea 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/MetricsCollectorProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/MetricsCollectorProperties.kt @@ -2,14 +2,12 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.MetricsCollectorConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import org.springframework.boot.convert.DurationUnit import java.time.Duration import java.time.temporal.ChronoUnit @ConfigurationProperties("tx-observer.metrics-collector") -@ConstructorBinding data class MetricsCollectorProperties( @DefaultValue("true") override var enabled: Boolean, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionCleanerProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionCleanerProperties.kt index 32bcd46..d7245bb 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionCleanerProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionCleanerProperties.kt @@ -2,12 +2,10 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.PartitionCleanerConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import java.time.Duration @ConfigurationProperties("tx-observer.partition-cleaner") -@ConstructorBinding data class PartitionCleanerProperties( @DefaultValue("true") override var enabled: Boolean, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPausedOnTxIdCleanerProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPausedOnTxIdCleanerProperties.kt index b705f39..c841982 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPausedOnTxIdCleanerProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPausedOnTxIdCleanerProperties.kt @@ -2,17 +2,15 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.PartitionPausedOnTxIdCleanerConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import org.springframework.boot.convert.DurationUnit import java.time.Duration import java.time.temporal.ChronoUnit @ConfigurationProperties("tx-observer.partition-paused-on-tx-id-cleaner") -@ConstructorBinding data class PartitionPausedOnTxIdCleanerProperties( @DefaultValue("true") override var enabled: Boolean, @DurationUnit(ChronoUnit.MILLIS) @DefaultValue("5m") - override var fixedDelay: Duration + override var fixedDelay: Duration, ) : PartitionPausedOnTxIdCleanerConfig diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPollerProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPollerProperties.kt index e15c240..ad3a05e 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPollerProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PartitionPollerProperties.kt @@ -2,12 +2,10 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.PartitionPollerConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import java.time.Duration @ConfigurationProperties("tx-observer.partition-poller") -@ConstructorBinding data class PartitionPollerProperties( @DefaultValue("true") override var enabled: Boolean, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PrivacyAvailabilityCheckProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PrivacyAvailabilityCheckProperties.kt index 9c323e0..430faa1 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PrivacyAvailabilityCheckProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/PrivacyAvailabilityCheckProperties.kt @@ -2,14 +2,12 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.PrivacyAvailabilityCheckConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import org.springframework.boot.convert.DurationUnit import java.time.Duration import java.time.temporal.ChronoUnit @ConfigurationProperties("tx-observer.privacy-check") -@ConstructorBinding data class PrivacyAvailabilityCheckProperties( @DefaultValue("true") diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/QueueCleanerProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/QueueCleanerProperties.kt index e9582c6..24b6754 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/QueueCleanerProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/QueueCleanerProperties.kt @@ -2,11 +2,9 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.QueueCleanerConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue @ConfigurationProperties("tx-observer.queue-cleaner") -@ConstructorBinding data class QueueCleanerProperties( @DefaultValue("true") override var enabled: Boolean, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/SubscriberProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/SubscriberProperties.kt index 3047e49..fe96cfe 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/SubscriberProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/SubscriberProperties.kt @@ -3,13 +3,11 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.Strategy import com.wavesenterprise.sdk.tx.observer.core.spring.properties.SubscriberProps import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.convert.DataSizeUnit import org.springframework.util.unit.DataSize import org.springframework.util.unit.DataUnit @ConfigurationProperties("tx-observer.subscriber") -@ConstructorBinding data class SubscriberProperties( override val strategy: Strategy = Strategy.BLOCK_APPENDED, override val blockBuffer: BlockBuffer = BlockBuffer(), diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxEnqueuedPredicateProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxEnqueuedPredicateProperties.kt index 5f76867..e04a30f 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxEnqueuedPredicateProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxEnqueuedPredicateProperties.kt @@ -2,12 +2,10 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.TxEnqueuedPredicateConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import java.time.Duration @ConfigurationProperties("tx-observer.predicate") -@ConstructorBinding data class TxEnqueuedPredicateProperties( override var txTypes: List = listOf(), @DefaultValue("3m") diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverProperties.kt index 940af45..8c47d81 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverProperties.kt @@ -2,7 +2,6 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.TxObserverConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import org.springframework.boot.convert.DataSizeUnit import org.springframework.boot.convert.DurationUnit @@ -12,7 +11,6 @@ import java.time.Duration import java.time.temporal.ChronoUnit @ConfigurationProperties("tx-observer") -@ConstructorBinding data class TxObserverProperties( @DefaultValue("true") override var enabled: Boolean, diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverSchedulerProperties.kt b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverSchedulerProperties.kt index 0e68aac..db39986 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverSchedulerProperties.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/observer/starter/properties/TxObserverSchedulerProperties.kt @@ -2,10 +2,8 @@ package com.wavesenterprise.sdk.tx.observer.starter.properties import com.wavesenterprise.sdk.tx.observer.core.spring.properties.TxObserverSchedulerConfig import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding @ConfigurationProperties("tx-observer.scheduler") -@ConstructorBinding data class TxObserverSchedulerProperties( override var poolSize: Int = 5, ) : TxObserverSchedulerConfig diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/resources/META-INF/spring.factories b/we-tx-observer-module/we-tx-observer-starter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index c8684e6..0000000 --- a/we-tx-observer-module/we-tx-observer-starter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,3 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.wavesenterprise.sdk.tx.observer.starter.TxObserverStarterConfig,\ - com.wavesenterprise.sdk.tx.observer.starter.metrics.TxObserverMetricsAutoConfig \ No newline at end of file diff --git a/we-tx-observer-module/we-tx-observer-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/we-tx-observer-module/we-tx-observer-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..497f1a9 --- /dev/null +++ b/we-tx-observer-module/we-tx-observer-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.wavesenterprise.sdk.tx.observer.starter.TxObserverStarterConfig +com.wavesenterprise.sdk.tx.observer.starter.metrics.TxObserverMetricsAutoConfig \ No newline at end of file diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/annotation/EventListenerAnnotationProcessorTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/annotation/EventListenerAnnotationProcessorTest.kt index b5f1b25..93d6047 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/annotation/EventListenerAnnotationProcessorTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/annotation/EventListenerAnnotationProcessorTest.kt @@ -19,8 +19,8 @@ import org.springframework.test.context.ActiveProfiles classes = [ TxObserverStarterConfig::class, BlockListenerTestContextConfiguration::class, - NodeBlockingServiceFactoryMockConfiguration::class - ] + NodeBlockingServiceFactoryMockConfiguration::class, + ], ) // todo implement test slice @ActiveProfiles("test") diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionHandlerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionHandlerTest.kt index 4f4ac0b..7436eea 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionHandlerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionHandlerTest.kt @@ -30,7 +30,7 @@ import org.springframework.test.context.ContextConfiguration TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class PartitionHandlerTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionTxHandlerJpaTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionTxHandlerJpaTest.kt index dd1840e..81772d4 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionTxHandlerJpaTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/PartitionTxHandlerJpaTest.kt @@ -15,6 +15,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.TxObserverStarterConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull @@ -27,8 +29,6 @@ import org.springframework.data.repository.findByIdOrNull import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.transaction.TestTransaction -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest @ActiveProfiles("test") @@ -41,7 +41,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, TxObserverJpaConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class PartitionTxHandlerJpaTest { @@ -62,7 +62,7 @@ internal class PartitionTxHandlerJpaTest { fun `should decrease partition priority for error when reading partition`() { val samplePartition = TxQueuePartition( id = "partitionId", - priority = 0 + priority = 0, ) txQueuePartitionJpaRepository.saveAndFlush(samplePartition) TestTransaction.flagForCommit() @@ -80,7 +80,7 @@ internal class PartitionTxHandlerJpaTest { fun `should reset partition priority`() { val samplePartition = TxQueuePartition( id = "partitionId", - priority = -1 + priority = -1, ) txQueuePartitionJpaRepository.saveAndFlush(samplePartition) TestTransaction.flagForCommit() @@ -108,7 +108,7 @@ internal class PartitionTxHandlerJpaTest { tx = TestDataFactory.createContractTx(id = txId).toDto(), partition = samplePartition, available = false, - ) + ), ) TestTransaction.flagForCommit() TestTransaction.end() @@ -134,7 +134,7 @@ internal class PartitionTxHandlerJpaTest { tx = TestDataFactory.createContractTx(id = txId).toDto(), partition = samplePartition, available = true, - ) + ), ) TestTransaction.flagForCommit() TestTransaction.end() @@ -159,8 +159,8 @@ internal class PartitionTxHandlerJpaTest { enqueuedTx( status = EnqueuedTxStatus.NEW, tx = TestDataFactory.createContractTx(id = txId).toDto(), - partition = samplePartition - ) + partition = samplePartition, + ), ) TestTransaction.flagForCommit() TestTransaction.end() @@ -187,7 +187,7 @@ internal class PartitionTxHandlerJpaTest { status = EnqueuedTxStatus.NEW, tx = TestDataFactory.createContractTx(id = txId).toDto(), partition = samplePartition, - ) + ), ) TestTransaction.flagForCommit() TestTransaction.end() diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/TxTypeEnqueuedPredicateTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/TxTypeEnqueuedPredicateTest.kt index c51f795..9823ec6 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/TxTypeEnqueuedPredicateTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/component/TxTypeEnqueuedPredicateTest.kt @@ -18,7 +18,7 @@ class TxTypeEnqueuedPredicateTest { assertTrue( predicate.isEnqueued( tx = TestDataFactory.createContractTx(), - ) + ), ) } @@ -31,7 +31,7 @@ class TxTypeEnqueuedPredicateTest { assertTrue( predicate.isEnqueued( tx = TestDataFactory.createContractTx(), - ) + ), ) } @@ -44,7 +44,7 @@ class TxTypeEnqueuedPredicateTest { assertFalse( predicate.isEnqueued( tx = TestDataFactory.createContractTx(), - ) + ), ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/BlockListenerTestContextConfiguration.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/BlockListenerTestContextConfiguration.kt index 0e7fcc7..636b2cf 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/BlockListenerTestContextConfiguration.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/BlockListenerTestContextConfiguration.kt @@ -24,7 +24,7 @@ class BlockListenerTestContextConfiguration { BlockHeightInfo( currentHeight = 1L, prevBlockSignature = null, - ) + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/NodeBlockingServiceFactoryMockConfiguration.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/NodeBlockingServiceFactoryMockConfiguration.kt index f5569d8..9aa70a0 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/NodeBlockingServiceFactoryMockConfiguration.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/config/NodeBlockingServiceFactoryMockConfiguration.kt @@ -91,8 +91,8 @@ class NodeBlockingServiceFactoryMockConfiguration { DataEntry( key = DataKey("some_key"), value = DataValue.StringDataValue("fffff"), - ) - ) + ), + ), ) val senderAddress = TestDataFactory.address() @@ -132,7 +132,7 @@ class NodeBlockingServiceFactoryMockConfiguration { samplePolicyDataHashTx, sampleCreatePolicyTx, createContractTxInAtomicTx, - ) + ), ) val fileInfo = TestDataFactory.policyItemFileInfo() @@ -147,8 +147,8 @@ class NodeBlockingServiceFactoryMockConfiguration { DataEntry( key = DataKey("key1_adfdf"), value = DataValue.StringDataValue("fffff"), - ) - ) + ), + ), ) val createContractTxSimple = TestDataFactory.executedContractTx( @@ -157,8 +157,8 @@ class NodeBlockingServiceFactoryMockConfiguration { DataEntry( key = DataKey("key2_adfdf"), value = DataValue.StringDataValue("fffff"), - ) - ) + ), + ), ) val callContractTxSimple = TestDataFactory.executedContractTx( @@ -167,8 +167,8 @@ class NodeBlockingServiceFactoryMockConfiguration { DataEntry( key = DataKey("my_fav_object_string_"), value = DataValue.StringDataValue("my fav object new value"), - ) - ) + ), + ), ) val callContractTxDifferentValueTypes = TestDataFactory.executedContractTx( @@ -177,11 +177,11 @@ class NodeBlockingServiceFactoryMockConfiguration { results = listOf( DataEntry( key = DataKey("my_fav_key_int_"), - value = DataValue.IntegerDataValue(123123) + value = DataValue.IntegerDataValue(123123), ), DataEntry( key = DataKey("my_fav_object_bool_"), - value = DataValue.BooleanDataValue(true) + value = DataValue.BooleanDataValue(true), ), DataEntry( key = DataKey("my_fav_object_map_"), @@ -197,8 +197,8 @@ class NodeBlockingServiceFactoryMockConfiguration { } ] } - """.trimIndent() - ) + """.trimIndent(), + ), ), DataEntry( key = DataKey("my_fav_object_object_"), @@ -211,10 +211,10 @@ class NodeBlockingServiceFactoryMockConfiguration { "key": 1 } } - """.trimIndent() - ) + """.trimIndent(), + ), ), - ) + ), ) val callContractTxSeveralMatchingKeys = TestDataFactory.executedContractTx( @@ -223,17 +223,17 @@ class NodeBlockingServiceFactoryMockConfiguration { results = listOf( DataEntry( key = DataKey("my_fav_multi_key_string_0"), - value = DataValue.StringDataValue("123123") + value = DataValue.StringDataValue("123123"), ), DataEntry( key = DataKey("my_fav_multi_key_string_1"), - value = DataValue.StringDataValue("123123") + value = DataValue.StringDataValue("123123"), ), DataEntry( key = DataKey("my_fav_multi_key_string_2"), - value = DataValue.StringDataValue("123123") + value = DataValue.StringDataValue("123123"), ), - ) + ), ) val mockTxList = listOf( @@ -246,7 +246,7 @@ class NodeBlockingServiceFactoryMockConfiguration { createContractTxSimple, callContractTxSimple, callContractTxDifferentValueTypes, - callContractTxSeveralMatchingKeys + callContractTxSeveralMatchingKeys, ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerTest.kt index b39a504..f57ced1 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerTest.kt @@ -35,8 +35,8 @@ private const val PROPERTY_TX_TYPE_2 = 3 @DataJpaTest( properties = [ - "tx-observer.predicate.tx-types = $PROPERTY_TX_TYPE_1,$PROPERTY_TX_TYPE_2" - ] + "tx-observer.predicate.tx-types = $PROPERTY_TX_TYPE_1,$PROPERTY_TX_TYPE_2", + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -49,7 +49,7 @@ private const val PROPERTY_TX_TYPE_2 = 3 TxObserverJpaAutoConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class TxObserverEnabledConfigurerTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerWithBuilderTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerWithBuilderTest.kt index 471f8ae..9ff9055 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerWithBuilderTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledConfigurerWithBuilderTest.kt @@ -41,7 +41,7 @@ import org.springframework.test.context.ContextConfiguration TxObserverJpaAutoConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class TxObserverEnabledConfigurerWithBuilderTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledNoConfigurerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledNoConfigurerTest.kt index 036a15f..f2569c0 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledNoConfigurerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverEnabledNoConfigurerTest.kt @@ -33,8 +33,8 @@ private const val PROPERTY_TX_TYPE_2 = 3 @DataJpaTest( properties = [ - "tx-observer.predicate.tx-types = $PROPERTY_TX_TYPE_1,$PROPERTY_TX_TYPE_2" - ] + "tx-observer.predicate.tx-types = $PROPERTY_TX_TYPE_1,$PROPERTY_TX_TYPE_2", + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -47,7 +47,7 @@ private const val PROPERTY_TX_TYPE_2 = 3 TxObserverJpaAutoConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class TxObserverEnabledNoConfigurerTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverNotEnabledNoConfigurerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverNoConfigurerContextTest.kt similarity index 98% rename from we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverNotEnabledNoConfigurerTest.kt rename to we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverNoConfigurerContextTest.kt index 8e29816..3573141 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverNotEnabledNoConfigurerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/enabler/TxObserverNoConfigurerContextTest.kt @@ -29,8 +29,8 @@ private const val PROPERTY_TX_TYPE_2 = 3 @DataJpaTest( properties = [ - "tx-observer.predicate.tx-types = $PROPERTY_TX_TYPE_1,$PROPERTY_TX_TYPE_2" - ] + "tx-observer.predicate.tx-types = $PROPERTY_TX_TYPE_1,$PROPERTY_TX_TYPE_2", + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -42,7 +42,7 @@ private const val PROPERTY_TX_TYPE_2 = 3 TxObserverJpaAutoConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class TxObserverNoConfigurerContextTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/AppContextPollingTxTxSubscriberTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/AppContextPollingTxTxSubscriberTest.kt index c6ab9f2..27928d2 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/AppContextPollingTxTxSubscriberTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/AppContextPollingTxTxSubscriberTest.kt @@ -23,6 +23,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingS import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx import io.mockk.verify +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions.assertEquals @@ -37,8 +39,6 @@ import org.springframework.data.repository.findByIdOrNull import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.transaction.TestTransaction -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest @ActiveProfiles("test") @@ -51,7 +51,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class AppContextPollingTxTxSubscriberTest { @@ -76,7 +76,7 @@ internal class AppContextPollingTxTxSubscriberTest { private val samplePartition = TxQueuePartition( id = "partitionId", - priority = 0 + priority = 0, ) @BeforeEach @@ -95,7 +95,7 @@ internal class AppContextPollingTxTxSubscriberTest { tx = sampleCreateContractTx.copy(id = TxId.fromByteArray("$it-$it".toByteArray())).toDto(), positionInBlock = it, partition = samplePartition, - ) + ), ) } @@ -124,8 +124,8 @@ internal class AppContextPollingTxTxSubscriberTest { tx = sampleCreateContractTx.copy(id = TxId.fromByteArray("$it-$it".toByteArray())).toDto(), positionInBlock = it, partition = samplePartition, - status = EnqueuedTxStatus.NEW - ) + status = EnqueuedTxStatus.NEW, + ), ) } enqueuedTxJpaRepository.save( @@ -133,8 +133,8 @@ internal class AppContextPollingTxTxSubscriberTest { tx = sampleCreateContractTx.copy(id = TxId.fromByteArray("11-11".toByteArray())).toDto(), positionInBlock = 11, partition = samplePartition, - status = EnqueuedTxStatus.READ - ) + status = EnqueuedTxStatus.READ, + ), ) TestTransaction.flagForCommit() @@ -160,25 +160,25 @@ internal class AppContextPollingTxTxSubscriberTest { enqueuedTx( tx = firstReadTx, positionInBlock = i++, - partition = samplePartition + partition = samplePartition, ), enqueuedTx( tx = secondReadTx, positionInBlock = i++, - partition = samplePartition + partition = samplePartition, ), enqueuedTx( tx = notAvailablePdhTx, positionInBlock = i++, partition = samplePartition, - available = false + available = false, ), enqueuedTx( tx = notReadTxAfterNotAvailable, positionInBlock = i, - partition = samplePartition - ) - ) + partition = samplePartition, + ), + ), ) TestTransaction.flagForCommit() @@ -216,8 +216,8 @@ internal class AppContextPollingTxTxSubscriberTest { enqueuedTx( tx = notAvailableTx, partition = samplePartition, - available = false - ) + available = false, + ), ) TestTransaction.flagForCommit() diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/DefaultTxPartitionPollerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/DefaultTxPartitionPollerTest.kt index 96a518a..68ddbbc 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/DefaultTxPartitionPollerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/DefaultTxPartitionPollerTest.kt @@ -103,7 +103,7 @@ internal class DefaultTxPartitionPollerTest { @ParameterizedTest @MethodSource("exceptions") fun `should wrap with PartitionHandlingException for partitions with Exceptions`( - exception: Exception + exception: Exception, ) { val partitionId = "partId" every { txQueuePartitionJpaRepository.findAndLockLatestPartition() } returns partitionId @@ -148,7 +148,7 @@ internal class DefaultTxPartitionPollerTest { @JvmStatic fun exceptions() = setOf( BlockListenerException("bla bla", Exception()), - IllegalArgumentException() + IllegalArgumentException(), ).map { Arguments.of(it) }.stream() } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/EnqueueingBlockTxSubscriberTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/EnqueueingBlockTxSubscriberTest.kt index afbd96f..320d7cb 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/EnqueueingBlockTxSubscriberTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/EnqueueingBlockTxSubscriberTest.kt @@ -35,6 +35,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.bl import io.mockk.clearMocks import io.mockk.every import io.mockk.verify +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Assertions.assertNull @@ -49,8 +51,6 @@ import org.springframework.data.domain.Sort import org.springframework.data.repository.findByIdOrNull import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest(properties = ["tx-observer.default-partition-id = thatDefaultPartitionId"]) @ActiveProfiles("test") @@ -63,7 +63,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class EnqueueingBlockTxSubscriberTest { @@ -103,8 +103,8 @@ internal class EnqueueingBlockTxSubscriberTest { txQueuePartitionJpaRepository.deleteAll() } + // @Disabled @Test -// @Disabled fun `should handle txList by persisting not existent tx and resolving partitions`() { val first = samplePolicyDataHashTx.copy(id = TxId.fromByteArray("1_1".toByteArray())) val second = sampleCreateContractTx.copy(id = TxId.fromByteArray("1_2".toByteArray())) @@ -116,7 +116,7 @@ internal class EnqueueingBlockTxSubscriberTest { val partSecondId = "part2" val existingPart = TxQueuePartition( id = "existingPart3", - priority = -1 + priority = -1, ) txQueuePartitionJpaRepository.saveAndFlush(existingPart) every { txQueuePartitionResolver.resolvePartitionId(first) } returns partFirstId @@ -141,7 +141,7 @@ internal class EnqueueingBlockTxSubscriberTest { assertEquals(mockTxList.size - 1, allEnqueuedTxs.last().positionInBlock) assertEquals( mockTxList.first().timestamp.toDateTimeFromUTCBlockChain().nano, - allEnqueuedTxs.first().txTimestamp.nano + allEnqueuedTxs.first().txTimestamp.nano, ) verify(exactly = mockTxList.size) { txEnqueuedPredicate.isEnqueued(any()) } @@ -166,7 +166,7 @@ internal class EnqueueingBlockTxSubscriberTest { fun `should ignore existent txs`() { val mockTxList: List = listOf( TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("2_1".toByteArray())), - TestDataFactory.callContractTx(id = TxId.fromByteArray("2_2".toByteArray())) + TestDataFactory.callContractTx(id = TxId.fromByteArray("2_2".toByteArray())), ) every { txEnqueuedPredicate.isEnqueued(any()) } returns true @@ -215,6 +215,7 @@ internal class EnqueueingBlockTxSubscriberTest { assertEquals(defaultIdPartition, enqueuedTxWithDefaultPartition!!.partition) } + @Suppress("LongMethod") @Test fun `should handle atomic with flat mapping it and setting position in atomic`() { val commonSender = Address(randomBytesFromUUID()) @@ -283,7 +284,7 @@ internal class EnqueueingBlockTxSubscriberTest { assertEquals(mockTxList.size - 1, allEnqueuedTxs.last().positionInBlock) assertEquals( mockTxList.first().timestamp.toDateTimeFromUTCBlockChain().nano, - allEnqueuedTxs.first().txTimestamp.nano + allEnqueuedTxs.first().txTimestamp.nano, ) val txById = allEnqueuedTxs.associateBy { TxId.fromBase58(it.id) } txById.apply { @@ -325,6 +326,6 @@ internal class EnqueueingBlockTxSubscriberTest { transactions = txList, transactionCount = txList.size.toLong(), height = height, - ) + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ErrorHandlingTxPartitionPollerIntegrationTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ErrorHandlingTxPartitionPollerIntegrationTest.kt index b06cb9c..28a79c7 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ErrorHandlingTxPartitionPollerIntegrationTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ErrorHandlingTxPartitionPollerIntegrationTest.kt @@ -18,6 +18,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperC import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx import io.mockk.every import io.mockk.verify +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.params.ParameterizedTest @@ -31,8 +33,6 @@ import org.springframework.data.repository.findByIdOrNull import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.transaction.TestTransaction -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest(properties = ["tx-observer.default-partition-id = thatDefaultPartitionId"]) @ActiveProfiles("test") @@ -45,7 +45,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class ErrorHandlingTxPartitionPollerIntegrationTest { @@ -70,28 +70,28 @@ internal class ErrorHandlingTxPartitionPollerIntegrationTest { fun `should decrement priority of a partition with error`(ex: Exception) { val firstErrorPartition = TxQueuePartition( id = "firstErrorPartitionId", - priority = 0 + priority = 0, ) val secondOkPartition = firstErrorPartition.copy(id = "secondOkPartitionId") val thirdErrorPartition = firstErrorPartition.copy(id = "thirdErrorPartitionId") val partitions = listOf( firstErrorPartition, secondOkPartition, - thirdErrorPartition + thirdErrorPartition, ) txQueuePartitionJpaRepository.saveAll( - partitions + partitions, ) partitions.map { enqueuedTx( tx = TestDataFactory.createContractTx().toDto(), - partition = it + partition = it, ) }.also { enqueuedTxJpaRepository.saveAll(it) } val errorPartitions = listOf( firstErrorPartition, - thirdErrorPartition + thirdErrorPartition, ) errorPartitions.forEach { every { pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(partitionId = it.id) } throws ex @@ -132,7 +132,7 @@ internal class ErrorHandlingTxPartitionPollerIntegrationTest { @JvmStatic fun exceptions() = setOf( BlockListenerException("bla bla", Exception()), - IllegalArgumentException() + IllegalArgumentException(), ).map { Arguments.of(it) }.stream() } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PersistingRollbackTxSubscriberTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PersistingRollbackTxSubscriberTest.kt index 579459c..8767e27 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PersistingRollbackTxSubscriberTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PersistingRollbackTxSubscriberTest.kt @@ -42,8 +42,8 @@ class PersistingRollbackTxSubscriberTest { rollbackInfoRepository.save( RollbackInfo( toHeight = height, - toBlockSignature = signature - ) + toBlockSignature = signature, + ), ) } confirmVerified(weRollbackInfo, rollbackInfoRepository) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PrivacyAvailabilityCheckerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PrivacyAvailabilityCheckerTest.kt index dc7d110..92543ad 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PrivacyAvailabilityCheckerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/PrivacyAvailabilityCheckerTest.kt @@ -24,6 +24,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperC import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx import io.mockk.every import io.mockk.verify +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.awaitility.Awaitility.await import org.awaitility.Duration import org.junit.jupiter.api.AfterEach @@ -40,14 +42,12 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.transaction.TestTransaction -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest( properties = [ "tx-observer.privacy-check.limit-for-old = 2", - "tx-observer.privacy-check.limit-for-recent = 3" - ] + "tx-observer.privacy-check.limit-for-recent = 3", + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -58,7 +58,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class PrivacyAvailabilityCheckerTest { @@ -92,7 +92,7 @@ internal class PrivacyAvailabilityCheckerTest { private val samplePartition = TxQueuePartition( id = "partitionId", - priority = 0 + priority = 0, ) @BeforeEach @@ -113,8 +113,8 @@ internal class PrivacyAvailabilityCheckerTest { "1,0", "1,1", "1,2", "1,3", "1,4", "1,5", "1,6", "1,7", "2,0", "2,1", "2,2", "2,3", "2,4", "2,5", "2,6", "2,7", "3,0", "3,1", "3,2", "3,3", "3,4", "3,5", "3,6", "3,7", - "4,0", "4,1", "4,2", "4,3", "4,4", "4,5", "4,6", "4,7" - ] + "4,0", "4,1", "4,2", "4,3", "4,4", "4,5", "4,6", "4,7", + ], ) fun `should check availability for not available 114`(offsetForRecent: Int, offsetForOld: Int) { every { offsetProvider.provideOffset(any()) } returnsMany listOf(offsetForOld, offsetForRecent) @@ -125,16 +125,16 @@ internal class PrivacyAvailabilityCheckerTest { tx = TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("$it".toByteArray())).toDto(), positionInBlock = it, partition = samplePartition, - available = false - ) + available = false, + ), ) } enqueuedTxJpaRepository.save( enqueuedTx( tx = TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("11".toByteArray())).toDto(), positionInBlock = 11, - partition = samplePartition - ) + partition = samplePartition, + ), ) (1..3).onEach { val id = it + 10 @@ -142,8 +142,8 @@ internal class PrivacyAvailabilityCheckerTest { enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("$id".toByteArray())).toDto(), positionInBlock = it, - partition = samplePartition - ) + partition = samplePartition, + ), ) } em.flushAndClear() @@ -169,8 +169,8 @@ internal class PrivacyAvailabilityCheckerTest { tx = TestDataFactory.policyDataHashTx(id = txId).toDto(), positionInBlock = index, partition = samplePartition, - available = false - ) + available = false, + ), ) } TestTransaction.flagForCommit() @@ -181,14 +181,14 @@ internal class PrivacyAvailabilityCheckerTest { privateContentResolver.isAvailable( match { it.id in setOf(firstIdThatBecameAvailable, secondIdThatBecameAvailable) - } + }, ) } returns true every { privateContentResolver.isAvailable( match { it.id in setOf(firstIdThatBecameAvailable, secondIdThatBecameAvailable) - } + }, ) } returns true @@ -228,8 +228,8 @@ internal class PrivacyAvailabilityCheckerTest { tx = TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("$it".toByteArray())).toDto(), positionInBlock = it, partition = samplePartition, - available = false - ) + available = false, + ), ) } TestTransaction.flagForCommit() @@ -243,7 +243,7 @@ internal class PrivacyAvailabilityCheckerTest { verify { partitionHandler.resumePartitionForTx( partitionId = eq(samplePartition.id), - txId = capture(resumeOnTxCaptor) + txId = capture(resumeOnTxCaptor), ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledForkResolverTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledForkResolverTest.kt index 1a384c7..ff31370 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledForkResolverTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledForkResolverTest.kt @@ -42,7 +42,7 @@ import java.util.Optional properties = [ "tx-observer.fork-resolver.window = 2", "tx-observer.fork-resolver.height-offset = 1000", - ] + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -53,7 +53,7 @@ import java.util.Optional NodeBlockingServiceFactoryMockConfiguration::class, TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class ScheduledForkResolverTest { @@ -159,8 +159,8 @@ class ScheduledForkResolverTest { tx = TestDataFactory.callContractTx(id = TxId.fromByteArray(Util.randomBytesFromUUID())).toDto(), status = status, partition = NodeBlockingServiceFactoryMockConfiguration.mockPartition, - blockHeight = blockHeight - ) + blockHeight = blockHeight, + ), ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionCleanerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionCleanerTest.kt index 028a53d..d688da3 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionCleanerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionCleanerTest.kt @@ -12,6 +12,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.TxObserverStarterConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Assertions.assertTrue @@ -22,8 +24,6 @@ import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabas import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest @ActiveProfiles("test") @@ -36,7 +36,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class ScheduledPartitionCleanerTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionPausedOnTxIdCleanerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionPausedOnTxIdCleanerTest.kt index 0097044..b630cc3 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionPausedOnTxIdCleanerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledPartitionPausedOnTxIdCleanerTest.kt @@ -13,6 +13,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.TxObserverStarterConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Assertions.assertTrue @@ -23,8 +25,6 @@ import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabas import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest @ActiveProfiles("test") @@ -37,7 +37,7 @@ import javax.persistence.PersistenceContext TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class ScheduledPartitionPausedOnTxIdCleanerTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledTxQueueCleanerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledTxQueueCleanerTest.kt index 457dd1e..cf485a9 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledTxQueueCleanerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/ScheduledTxQueueCleanerTest.kt @@ -34,8 +34,8 @@ import org.springframework.test.context.transaction.TestTransaction properties = [ "tx-observer.queue-cleaner.archive-height-window = 50", "tx-observer.queue-cleaner.delete-batch-size = 1", - "tx-observer.queue-cleaner.cleanCronExpression = 0 0 0 * * ?" - ] + "tx-observer.queue-cleaner.cleanCronExpression = 0 0 0 * * ?", + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -46,7 +46,7 @@ import org.springframework.test.context.transaction.TestTransaction NodeBlockingServiceFactoryMockConfiguration::class, TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class ScheduledTxQueueCleanerTest { @@ -94,11 +94,11 @@ internal class ScheduledTxQueueCleanerTest { assertEquals(leftReadCount + leftNewCount, leftEnqueuedTx.size) assertEquals( leftReadCount, - leftEnqueuedTx.count { it.blockHeight == blockHeightToLeave && it.status == EnqueuedTxStatus.READ } + leftEnqueuedTx.count { it.blockHeight == blockHeightToLeave && it.status == EnqueuedTxStatus.READ }, ) assertEquals( leftNewCount, - leftEnqueuedTx.count { it.status == EnqueuedTxStatus.NEW } + leftEnqueuedTx.count { it.status == EnqueuedTxStatus.NEW }, ) } @@ -114,8 +114,8 @@ internal class ScheduledTxQueueCleanerTest { tx = TestDataFactory.callContractTx(id = TxId.fromByteArray(Util.randomBytesFromUUID())).toDto(), status = status, partition = mockPartition, - blockHeight = blockHeight - ) + blockHeight = blockHeight, + ), ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/blockinfo/SyncInfoServiceTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/blockinfo/SyncInfoServiceTest.kt index 382bd33..146239f 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/blockinfo/SyncInfoServiceTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/blockinfo/SyncInfoServiceTest.kt @@ -62,7 +62,7 @@ class SyncInfoServiceTest { val signature = Signature.fromByteArray("VJFGHc".toByteArray()) every { blockHeightJpaRepository.findAll() } returns emptyList() every { blocksService.blockAtHeight(activationHeight - 1) } returns blockAtHeight( - signature = signature + signature = signature, ) val syncInfo = syncInfo(activationHeight = activationHeight) @@ -103,11 +103,11 @@ class SyncInfoServiceTest { every { blockHeightJpaRepository.findAll() } returns listOf( BlockHeightInfo( currentHeight = nodeHeight + 1, - prevBlockSignature = "yDgpD7gu" - ) + prevBlockSignature = "yDgpD7gu", + ), ) every { blocksService.blockAtHeight(nodeHeight - 1) } returns blockAtHeight( - signature = signature + signature = signature, ) val syncInfo = syncInfo(nodeHeight = nodeHeight, autoResetHeight = true) @@ -124,8 +124,8 @@ class SyncInfoServiceTest { every { blockHeightJpaRepository.findAll() } returns listOf( BlockHeightInfo( currentHeight = observerHeight, - prevBlockSignature = signature.asBase58String() - ) + prevBlockSignature = signature.asBase58String(), + ), ) every { blocksService.blockAtHeight(nodeHeight) } returns blockAtHeight() @@ -167,11 +167,11 @@ class SyncInfoServiceTest { blocksService = blocksService, syncHistory = SyncInfoServiceImpl.SyncHistoryProperties( enabled = syncHistory, - fromHeight = activationHeight + fromHeight = activationHeight, ), autoResetHeight = autoResetHeight, forkNotResolvedHeightDrop = forkNotResolvedHeightDrop, nodeHeightMetric = nodeHeightMetric, - observerHeightMetric = observerHeightMetric + observerHeightMetric = observerHeightMetric, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/BlocksLoaderTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/BlocksLoaderTest.kt index e72ecd0..8256515 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/BlocksLoaderTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/BlocksLoaderTest.kt @@ -79,9 +79,9 @@ class BlocksLoaderTest { (from until to + 1).map { blockHeaders( blockSize = blockSize, - height = Height.fromLong(it) + height = Height.fromLong(it), ) - } + }, ) } @@ -90,9 +90,9 @@ class BlocksLoaderTest { .thenReturn( (from until to + 1).map { blockAtHeight( - height = Height.fromLong(it) + height = Height.fromLong(it), ) - } + }, ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/ScheduledWeBlockInfoSynchronizerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/ScheduledWeBlockInfoSynchronizerTest.kt index cec3d95..f155637 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/ScheduledWeBlockInfoSynchronizerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/ScheduledWeBlockInfoSynchronizerTest.kt @@ -50,7 +50,7 @@ internal class ScheduledWeBlockInfoSynchronizerTest { syncInfoService = syncInfoService, enqueuedTxJpaRepository = enqueuedTxJpaRepository, txObserverConfig = txObserverProperties, - txExecutor = TxExecutorStub + txExecutor = TxExecutorStub, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/SourceExecutorImplTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/SourceExecutorImplTest.kt index 10e46b4..5f9729d 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/SourceExecutorImplTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/poller/SourceExecutorImplTest.kt @@ -61,18 +61,18 @@ class SourceExecutorImplTest { val executor = SourceExecutorImpl( blockSubscribers = listOf(mockSubscriber), - blocksLoader = blocksLoader + blocksLoader = blocksLoader, ) val newCurrentHeight = executor.execute( blockHeightLowerBound = currentBlockHeight, - blockHeightUpperBound = blockHeightWindow + currentBlockHeight + blockHeightUpperBound = blockHeightWindow + currentBlockHeight, ) assertEquals(currentBlockHeight + blockHeightWindow - 1, newCurrentHeight) verify(exactly = 1) { blocksLoader.download( fromHeight = currentBlockHeight, - tryToHeight = currentBlockHeight + blockHeightWindow + tryToHeight = currentBlockHeight + blockHeightWindow, ) } @@ -91,7 +91,7 @@ class SourceExecutorImplTest { val executor = SourceExecutorImpl( blockSubscribers = listOf(mockSubscriber), - blocksLoader = blocksLoader + blocksLoader = blocksLoader, ) val upperBound = toBlock + 5 val newHeight = executor.execute(fromBlock, upperBound) @@ -109,15 +109,15 @@ class SourceExecutorImplTest { signature = Signature.fromByteArray("signature_$height".toByteArray()), height = Height(height), transactions = listOf( - sampleCallContractTx.copy(id = TxId.fromByteArray("id_$height".toByteArray())) - ) + sampleCallContractTx.copy(id = TxId.fromByteArray("id_$height".toByteArray())), + ), ) }.toList() every { blocksLoader.download(any(), any()) } returns BlocksDownloadResult(blockHeightRange, false) val blockSubscriber: BlockSubscriber = mockk(relaxed = true) val executor = SourceExecutorImpl( blockSubscribers = listOf(blockSubscriber), - blocksLoader = blocksLoader + blocksLoader = blocksLoader, ) val newHeight = executor.execute(fromBlock, upperBound) assertEquals(upperBound, newHeight) @@ -139,7 +139,7 @@ class SourceExecutorImplTest { mockTxListForBlocksWithHeightRange(1, 1) val executor = SourceExecutorImpl( blockSubscribers = listOf(mockSubscriber), - blocksLoader = blocksLoader + blocksLoader = blocksLoader, ) executor.execute(1, 1) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/syncinfo/BlockHistoryServiceImplTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/syncinfo/BlockHistoryServiceImplTest.kt index 4394902..2c8eb44 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/syncinfo/BlockHistoryServiceImplTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/executor/syncinfo/BlockHistoryServiceImplTest.kt @@ -39,7 +39,7 @@ class BlockHistoryServiceImplTest { observerHeight = 50, historyDepth = 30, blockHeightWindow = 4, - expectedLatestCommonBlockHeight = 50 + expectedLatestCommonBlockHeight = 50, ) } @@ -49,7 +49,7 @@ class BlockHistoryServiceImplTest { observerHeight = 200, historyDepth = 10, blockHeightWindow = 3, - expectedLatestCommonBlockHeight = 190 + expectedLatestCommonBlockHeight = 190, ) } @@ -59,7 +59,7 @@ class BlockHistoryServiceImplTest { observerHeight = 150, historyDepth = 20, blockHeightWindow = 5, - expectedLatestCommonBlockHeight = 140 + expectedLatestCommonBlockHeight = 140, ) } @@ -73,8 +73,8 @@ class BlockHistoryServiceImplTest { Stream.builder().apply { add( blockHistory( - height = Random.nextLong(lastBlockHeight, observerHeight) - ) + height = Random.nextLong(lastBlockHeight, observerHeight), + ), ) }.build() } @@ -91,7 +91,7 @@ class BlockHistoryServiceImplTest { blockHistoryRepository = blockHistoryRepository, historyDepth = historyDepth, blocksService = blocksService, - blockWindowSize = blockHeightWindow + blockWindowSize = blockHeightWindow, ) val blockSearchResult = blockHistoryService.latestCommonBlockWithNode(Height(observerHeight)) @@ -100,12 +100,12 @@ class BlockHistoryServiceImplTest { verifySequence { blockHistoryRepository.findAllByHeightBetweenOrderByHeightDesc( fromHeight = lastBlockHeight, - toHeight = observerHeight + toHeight = observerHeight, ) for ((fromHeight, toHeight) in blockSeqRanges) { blocksService.blockHeadersSequence( fromHeight = fromHeight, - toHeight = toHeight + toHeight = toHeight, ) } } @@ -116,16 +116,16 @@ class BlockHistoryServiceImplTest { observerHeight: Long, historyDepth: Int, blockHeightWindow: Long, - expectedLatestCommonBlockHeight: Long + expectedLatestCommonBlockHeight: Long, ) { val lastBlockHeight = observerHeight - historyDepth val weBlocksApi: BlocksService = BlocksServiceStub( (lastBlockHeight..observerHeight).map { height -> blockAtHeight( signature = Signature.fromByteArray("signature_$height".toByteArray()), - height = Height(height) + height = Height(height), ) - } + }, ) val expectedLatestCommonBlock = weBlocksApi.blockAtHeight(expectedLatestCommonBlockHeight) @@ -136,13 +136,13 @@ class BlockHistoryServiceImplTest { with(weBlocksApi.blockAtHeight(height)) { blockHistory( signature = signature.asBase58String(), - height = height + height = height, ) } } + (expectedLatestCommonBlockHeight + 1..observerHeight).map { height -> blockHistory( signature = "fork_signature_$height", - height = height + height = height, ) } ).stream() @@ -152,7 +152,7 @@ class BlockHistoryServiceImplTest { blockHistoryRepository = blockHistoryRepository, historyDepth = historyDepth, blocksService = weBlocksApi, - blockWindowSize = blockHeightWindow + blockWindowSize = blockHeightWindow, ) val blockSearchResult = blockHistoryService.latestCommonBlockWithNode(Height(observerHeight)) @@ -160,20 +160,20 @@ class BlockHistoryServiceImplTest { assertThat(blockSearchResult).isEqualTo( BlockSearchResult.Found( signature = expectedLatestCommonBlock.signature, - height = expectedLatestCommonBlock.height - ) + height = expectedLatestCommonBlock.height, + ), ) } private class BlocksServiceStub private constructor( private val blockByHeight: Map, private val blockBySignature: Map, - private val blockHeight: Height + private val blockHeight: Height, ) : BlocksService { constructor(blocks: Iterable) : this( blocks.associateBy { it.height }, blocks.associateBy { it.signature }, - Height(blocks.maxOfOrNull { it.height.value } ?: 0) + Height(blocks.maxOfOrNull { it.height.value } ?: 0), ) override fun blockAtHeight(height: Long): BlockAtHeight = blockByHeight.getValue(Height(height)) @@ -237,7 +237,7 @@ class BlockHistoryServiceImplTest { poaConsensus = poaConsensus, posConsensus = posConsensus, timestamp = timestamp, - height = height + height = height, ) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/BlockHistoryRepositoryTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/BlockHistoryRepositoryTest.kt index 9014228..ba86ffd 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/BlockHistoryRepositoryTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/BlockHistoryRepositoryTest.kt @@ -24,7 +24,7 @@ import org.springframework.test.context.ContextConfiguration TxObserverJpaConfig::class, TxObserverJpaAutoConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) @EntityScan("com.wavesenterprise.sdk.tx.observer") @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @@ -40,10 +40,10 @@ class BlockHistoryRepositoryTest { fun `should delete blocks before given height`() { val threshold = 100L blockHistoryRepository.saveAll( - (90L until threshold).map { height -> blockHistory(height = height) } + (90L until threshold).map { height -> blockHistory(height = height) }, ) val blocksToIgnore = blockHistoryRepository.saveAll( - (threshold..110L).map { height -> blockHistory(height = height) } + (threshold..110L).map { height -> blockHistory(height = height) }, ) blockHistoryRepository.deleteAllByHeightBefore(threshold) @@ -60,6 +60,6 @@ class BlockHistoryRepositoryTest { blockHistoryRepository.save(blockHistory(signature = signature)) first } - assertThat(blockHistoryRepository.findAll()).containsExactly(expectedSavedEntity) + assertThat(blockHistoryRepository.findAll()).containsOnly(expectedSavedEntity) } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/EnqueuedTxJpaRepositoryTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/EnqueuedTxJpaRepositoryTest.kt index ff7ae5d..540c700 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/EnqueuedTxJpaRepositoryTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/EnqueuedTxJpaRepositoryTest.kt @@ -34,7 +34,7 @@ import org.springframework.test.context.transaction.TestTransaction NodeBlockingServiceFactoryMockConfiguration::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = Replace.NONE) internal class EnqueuedTxJpaRepositoryTest { @@ -61,8 +61,8 @@ internal class EnqueuedTxJpaRepositoryTest { tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_old_$it".toByteArray())).toDto(), positionInBlock = it, blockHeight = oldHeight, - partition = mockPartition - ) + partition = mockPartition, + ), ) } val newHeight = oldHeight + 1 @@ -73,8 +73,8 @@ internal class EnqueuedTxJpaRepositoryTest { tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_new_$it".toByteArray())).toDto(), positionInBlock = it, blockHeight = newHeight, - partition = mockPartition - ) + partition = mockPartition, + ), ) } TestTransaction.flagForCommit() diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/TxQueuePartitionJpaRepositoryTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/TxQueuePartitionJpaRepositoryTest.kt index 2e43651..7f0671e 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/TxQueuePartitionJpaRepositoryTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/jpa/TxQueuePartitionJpaRepositoryTest.kt @@ -17,6 +17,8 @@ import com.wavesenterprise.sdk.tx.observer.jpa.repository.TxQueuePartitionJpaRep import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration.Companion.mockPartition import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.hamcrest.CoreMatchers.`is` import org.hamcrest.MatcherAssert.assertThat import org.junit.jupiter.api.Assertions.assertEquals @@ -38,8 +40,6 @@ import java.time.OffsetDateTime import java.time.ZoneOffset import java.util.concurrent.CountDownLatch import java.util.stream.Stream -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest @ActiveProfiles("test") @@ -50,7 +50,7 @@ import javax.persistence.PersistenceContext TxObserverJpaConfig::class, NodeBlockingServiceFactoryMockConfiguration::class, FlywaySchemaConfiguration::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class TxQueuePartitionJpaRepositoryTest { @@ -76,14 +76,14 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxJpaRepository.save( enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_1".toByteArray())).toDto(), - partition = firstPartition - ) + partition = firstPartition, + ), ) enqueuedTxJpaRepository.save( enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_2".toByteArray())).toDto(), - partition = secondPartition - ) + partition = secondPartition, + ), ) flushAndClear() assertThat(txQueuePartitionJpaRepository.countStuckPartitions(), `is`(1L)) @@ -98,14 +98,14 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxJpaRepository.save( enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_1".toByteArray())).toDto(), - partition = firstPartition - ) + partition = firstPartition, + ), ) enqueuedTxJpaRepository.save( enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_2".toByteArray())).toDto(), - partition = secondPartition - ) + partition = secondPartition, + ), ) flushAndClear() @@ -116,7 +116,7 @@ internal class TxQueuePartitionJpaRepositoryTest { where p.paused_on_tx_id is null order by p.priority desc, etx.tx_timestamp """, - TxQueuePartition::class.java + TxQueuePartition::class.java, ) (findActualPartitionQuery.resultList as List).also { txQueuePartitionsList -> assertEquals(secondPartition.id, txQueuePartitionsList[0].id) @@ -132,8 +132,8 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(11, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ) val secondTxQueuePartition = partitionWithNewTx( id = "secondTxQueuePartitionId", @@ -141,8 +141,8 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(12, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ) val thirdTxQueuePartition = partitionWithNewTx( id = "thirdTxQueuePartitionId", @@ -150,13 +150,13 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(10, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ) setOf( firstTxQueuePartition, secondTxQueuePartition, - thirdTxQueuePartition + thirdTxQueuePartition, ).apply { map { it.first }.also { txQueuePartitionJpaRepository.saveAll(it) } map { it.second }.also { enqueuedTxJpaRepository.saveAll(it) } @@ -176,8 +176,8 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(11, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ) val secondTxQueuePartition = partitionWithNewTx( id = "secondTxQueuePartitionId", @@ -185,8 +185,8 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(12, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ) setOf( firstTxQueuePartition, @@ -234,7 +234,7 @@ internal class TxQueuePartitionJpaRepositoryTest { @MethodSource("foundPartitions") fun `should find specified partitions`( partition: TxQueuePartition, - enqueuedTx: EnqueuedTx + enqueuedTx: EnqueuedTx, ) { txQueuePartitionJpaRepository.saveAndFlush(partition) enqueuedTxJpaRepository.saveAndFlush(enqueuedTx) @@ -246,7 +246,7 @@ internal class TxQueuePartitionJpaRepositoryTest { @MethodSource("notFoundPartitions") fun `shouldn't find any of the specified partitions`( partition: TxQueuePartition, - enqueuedTx: EnqueuedTx? + enqueuedTx: EnqueuedTx?, ) { txQueuePartitionJpaRepository.saveAndFlush(partition) enqueuedTx?.also { enqueuedTxJpaRepository.saveAndFlush(enqueuedTx) } @@ -256,6 +256,7 @@ internal class TxQueuePartitionJpaRepositoryTest { companion object { + @Suppress("UnusedPrivateMember") @JvmStatic private fun foundPartitions(): Stream = setOf( @@ -265,8 +266,8 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(12, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ), partitionWithNewTx( id = "thirdTxQueuePartitionId", @@ -274,8 +275,8 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(10, 0, 0), - ZoneOffset.UTC - ) + ZoneOffset.UTC, + ), ), partitionWithNewTx( id = "forthTxQueuePartitionId", @@ -283,17 +284,18 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(14, 0, 0), - ZoneOffset.UTC - ) - ) + ZoneOffset.UTC, + ), + ), ).map { Arguments.of(it.first, it.second) }.stream() + @Suppress("UnusedPrivateMember") @JvmStatic private fun notFoundPartitions(): Stream = setOf( TxQueuePartition( id = "notFoundPartitionIdWithoutTx", - priority = 0 + priority = 0, ) to null, partitionWithNewTx( id = "actualButPausedPartitionId", @@ -302,26 +304,26 @@ internal class TxQueuePartitionJpaRepositoryTest { enqueuedTxTimestamp = OffsetDateTime.of( LocalDate.now(), LocalTime.of(11, 0, 0), - ZoneOffset.UTC - ) - ) + ZoneOffset.UTC, + ), + ), ).map { Arguments.of(it.first, it.second) }.stream() private fun partitionWithNewTx( id: String, priority: Int, pausedOnTxId: String? = null, - enqueuedTxTimestamp: OffsetDateTime + enqueuedTxTimestamp: OffsetDateTime, ): Pair { val partition = TxQueuePartition( id = id, priority = priority, - pausedOnTxId = pausedOnTxId + pausedOnTxId = pausedOnTxId, ) return partition to enqueuedTx( tx = TestDataFactory.createContractTx( id = TxId.fromByteArray(randomBytesFromUUID()), - timestamp = Timestamp(enqueuedTxTimestamp.toInstant().toEpochMilli()) + timestamp = Timestamp(enqueuedTxTimestamp.toInstant().toEpochMilli()), ).toDto(), partition = partition, ) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/AbstractListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/AbstractListenerTest.kt index cc306c0..4295c2f 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/AbstractListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/AbstractListenerTest.kt @@ -42,7 +42,7 @@ import org.springframework.test.context.ActiveProfiles TxObserverJpaAutoConfig::class, TxObserverStarterConfig::class, ], - properties = ["tx-observer.tx-poller.size = 100"] + properties = ["tx-observer.tx-poller.size = 100"], ) @ActiveProfiles("test") @MockBean(TransactionalRunner::class, PartitionHandler::class) @@ -95,7 +95,7 @@ abstract class AbstractListenerTest { enqueuedTxJpaRepository.findActualEnqueuedTxForPartition( enqueuedTxStatus = EnqueuedTxStatus.NEW, partitionId = mockPartitionId, - pageable = PageRequest.of(0, 100) + pageable = PageRequest.of(0, 100), ) } answers { PageImpl(enqueuedTxList) } } @@ -107,7 +107,7 @@ abstract class AbstractListenerTest { txs.map { enqueuedTx( tx = mapDto(it), - partition = NodeBlockingServiceFactoryMockConfiguration.mockPartition + partition = NodeBlockingServiceFactoryMockConfiguration.mockPartition, ) }.also { enqueuedTxList.addAll(it) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/BooleanValueKeyEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/BooleanValueKeyEventBlockListenerTest.kt index 8cc3cf3..f98e0bd 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/BooleanValueKeyEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/BooleanValueKeyEventBlockListenerTest.kt @@ -34,7 +34,7 @@ class BooleanValueKeyEventBlockListenerTest : AbstractListenerTest() { assertEquals(callContractTxDifferentValueTypes, booleanKeyEventCaptor.captured.tx) assertEquals( (callContractTxDifferentValueTypes.tx as CallContractTx).contractId.asBase58String(), - booleanKeyEventCaptor.captured.contractId + booleanKeyEventCaptor.captured.contractId, ) assertEquals("my_fav_object_bool_", booleanKeyEventCaptor.captured.key) } @@ -43,7 +43,7 @@ class BooleanValueKeyEventBlockListenerTest : AbstractListenerTest() { @TxListener fun handleEvent( @KeyFilter(keyPrefix = "my_fav_object_bool_") - keyEvent: KeyEvent + keyEvent: KeyEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/FilteredByPrefixKeyEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/FilteredByPrefixKeyEventBlockListenerTest.kt index 711546b..574e45e 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/FilteredByPrefixKeyEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/FilteredByPrefixKeyEventBlockListenerTest.kt @@ -37,13 +37,13 @@ class FilteredByPrefixKeyEventBlockListenerTest : AbstractListenerTest() { stringKeyEventCaptor.forEachIndexed { idx, keyEvent -> assertEquals( (callContractTxSeveralMatchingKeys.results[idx].value as DataValue.StringDataValue).value, - keyEvent.payload + keyEvent.payload, ) assertEquals(callContractTxSeveralMatchingKeys, keyEvent.tx) assertEquals(callContractTxSeveralMatchingKeys.results[idx].key.value, keyEvent.key) assertEquals( (callContractTxSeveralMatchingKeys.tx as CallContractTx).contractId.asBase58String(), - keyEvent.contractId + keyEvent.contractId, ) } } @@ -62,7 +62,7 @@ class FilteredByPrefixKeyEventBlockListenerTest : AbstractListenerTest() { @TxListener fun handleEvent( @KeyFilter(keyPrefix = "my_fav_multi_key_string_") - keyEvent: KeyEvent + keyEvent: KeyEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/IntValueKeyEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/IntValueKeyEventBlockListenerTest.kt index c996d43..2eb910c 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/IntValueKeyEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/IntValueKeyEventBlockListenerTest.kt @@ -34,7 +34,7 @@ class IntValueKeyEventBlockListenerTest : AbstractListenerTest() { assertEquals(callContractTxDifferentValueTypes, intKeyEventCaptor.captured.tx) assertEquals( (callContractTxDifferentValueTypes.tx as CallContractTx).contractId.asBase58String(), - intKeyEventCaptor.captured.contractId + intKeyEventCaptor.captured.contractId, ) assertEquals("my_fav_key_int_", intKeyEventCaptor.captured.key) } @@ -43,7 +43,7 @@ class IntValueKeyEventBlockListenerTest : AbstractListenerTest() { @TxListener fun handleEvent( @KeyFilter(keyPrefix = "my_fav_key_int_") - keyEvent: KeyEvent + keyEvent: KeyEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/MapValueKeyEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/MapValueKeyEventBlockListenerTest.kt index 38f45cf..75f8089 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/MapValueKeyEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/MapValueKeyEventBlockListenerTest.kt @@ -34,15 +34,15 @@ class MapValueKeyEventBlockListenerTest : AbstractListenerTest() { mapOf( "key_list" to listOf( mapOf("key_int_1" to 1), - mapOf("key_int_2" to 2) - ) + mapOf("key_int_2" to 2), + ), ), - mapKeyEventCaptor.captured.payload + mapKeyEventCaptor.captured.payload, ) assertEquals(callContractTxDifferentValueTypes, mapKeyEventCaptor.captured.tx) assertEquals( (callContractTxDifferentValueTypes.tx as CallContractTx).contractId.asBase58String(), - mapKeyEventCaptor.captured.contractId + mapKeyEventCaptor.captured.contractId, ) assertEquals("my_fav_object_map_", mapKeyEventCaptor.captured.key) } @@ -51,7 +51,7 @@ class MapValueKeyEventBlockListenerTest : AbstractListenerTest() { @TxListener fun handleEvent( @KeyFilter(keyPrefix = "my_fav_object_map_") - keyEvent: KeyEvent>>> + keyEvent: KeyEvent>>>, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/ObjectValueKeyEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/ObjectValueKeyEventBlockListenerTest.kt index 8ca972c..3112612 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/ObjectValueKeyEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/ObjectValueKeyEventBlockListenerTest.kt @@ -33,12 +33,12 @@ class ObjectValueKeyEventBlockListenerTest : AbstractListenerTest() { verify { keyEventListener.handleEvent(keyEvent = capture(objectKeyEventCaptor)) } assertEquals( SimpleDataObject("string", 10, mapOf(Pair("key", 1))), - objectKeyEventCaptor.captured.payload + objectKeyEventCaptor.captured.payload, ) assertEquals(callContractTxDifferentValueTypes, objectKeyEventCaptor.captured.tx) assertEquals( (callContractTxDifferentValueTypes.tx as CallContractTx).contractId.asBase58String(), - objectKeyEventCaptor.captured.contractId + objectKeyEventCaptor.captured.contractId, ) assertEquals("my_fav_object_object_", objectKeyEventCaptor.captured.key) } @@ -47,7 +47,7 @@ class ObjectValueKeyEventBlockListenerTest : AbstractListenerTest() { @TxListener fun handleEvent( @KeyFilter(keyPrefix = "my_fav_object_object_") - keyEvent: KeyEvent + keyEvent: KeyEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/StringValueKeyEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/StringValueKeyEventBlockListenerTest.kt index 3bfb017..671f5ff 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/StringValueKeyEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/keyevent/StringValueKeyEventBlockListenerTest.kt @@ -34,7 +34,7 @@ class StringValueKeyEventBlockListenerTest : AbstractListenerTest() { assertEquals(callContractTxSimple, stringKeyEventCaptor.captured.tx) assertEquals( (callContractTxSimple.tx as CallContractTx).contractId.asBase58String(), - stringKeyEventCaptor.captured.contractId + stringKeyEventCaptor.captured.contractId, ) assertEquals("my_fav_object_string_", stringKeyEventCaptor.captured.key) } @@ -43,7 +43,7 @@ class StringValueKeyEventBlockListenerTest : AbstractListenerTest() { @TxListener fun handleEvent( @KeyFilter(keyPrefix = "my_fav_object_string_") - keyEvent: KeyEvent + keyEvent: KeyEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/AbstractPrivateEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/AbstractPrivateEventBlockListenerTest.kt index 0ac64f3..cf0e5f9 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/AbstractPrivateEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/AbstractPrivateEventBlockListenerTest.kt @@ -43,7 +43,7 @@ abstract class AbstractPrivateEventBlockListenerTest : AbstractListenerTest() { TxInfo( height = Height(1), tx = sampleCreatePolicyTx, - ) + ), ) every { @@ -51,7 +51,7 @@ abstract class AbstractPrivateEventBlockListenerTest : AbstractListenerTest() { request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of(privacyInfoResponse) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ByteArrayPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ByteArrayPrivateDataEventBlockListenerTest.kt index d8aed8d..45e86bd 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ByteArrayPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ByteArrayPrivateDataEventBlockListenerTest.kt @@ -18,7 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.TestConfiguration import org.springframework.context.annotation.Bean import org.springframework.test.context.ContextConfiguration -import org.springframework.util.Base64Utils +import java.util.Base64 import java.util.Optional @ContextConfiguration(classes = [ByteArrayPrivateDataEventBlockListenerTest.ListenerConfig::class]) @@ -39,16 +39,16 @@ class ByteArrayPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockList 32, -48, -70, -47, -126, -48, -66, 32, -48, -67, -48, -80, -48, -71, -48, - -76, -47, -111, -47, -126 + -76, -47, -111, -47, -126, ) every { privacyService.data( request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) - } returns Optional.of(Data(Base64Utils.encode(randomBytes))) + } returns Optional.of(Data(Base64.getEncoder().encode(randomBytes))) enqueue(samplePolicyDataHashTx) @@ -64,7 +64,7 @@ class ByteArrayPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockList interface ByteArrayPrivateDataEventListener { @TxListener fun handleEvent( - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMetaPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMetaPrivateDataEventBlockListenerTest.kt index 929b98e..f6944fd 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMetaPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMetaPrivateDataEventBlockListenerTest.kt @@ -34,14 +34,14 @@ class FilteredByMetaPrivateDataEventBlockListenerTest : AbstractPrivateEventBloc request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of( privacyInfoResponse.copy( info = fileInfo.copy( - comment = DataComment(objectMapper.writeValueAsString(mapOf("filter_key" to "desired_value"))) - ) - ) + comment = DataComment(objectMapper.writeValueAsString(mapOf("filter_key" to "desired_value"))), + ), + ), ) enqueue(samplePolicyDataHashTx) @@ -60,14 +60,14 @@ class FilteredByMetaPrivateDataEventBlockListenerTest : AbstractPrivateEventBloc request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of( privacyInfoResponse.copy( info = fileInfo.copy( - comment = DataComment(objectMapper.writeValueAsString(mapOf("filter_key" to "not_desired_value"))) - ) - ) + comment = DataComment(objectMapper.writeValueAsString(mapOf("filter_key" to "not_desired_value"))), + ), + ), ) enqueue(samplePolicyDataHashTx) @@ -84,7 +84,7 @@ class FilteredByMetaPrivateDataEventBlockListenerTest : AbstractPrivateEventBloc request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of(privacyInfoResponse) @@ -99,7 +99,7 @@ class FilteredByMetaPrivateDataEventBlockListenerTest : AbstractPrivateEventBloc @TxListener fun handleEvent( @MessageFilter(metaKey = "filter_key", metaKeyValue = "desired_value") - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest.kt index 16155aa..b245be3 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest.kt @@ -35,7 +35,7 @@ class FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest : AbstractPriv request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of( privacyInfoResponse.copy( @@ -45,12 +45,12 @@ class FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest : AbstractPriv mapOf( "filter_key_one" to "desired_value_one", "filter_key_two" to "desired_value_two", - "filter_key_three" to "desired_value_three" - ) - ) - ) - ) - ) + "filter_key_three" to "desired_value_three", + ), + ), + ), + ), + ), ) enqueue(samplePolicyDataHashTx) @@ -69,7 +69,7 @@ class FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest : AbstractPriv request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of( privacyInfoResponse.copy( @@ -79,12 +79,12 @@ class FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest : AbstractPriv mapOf( "filter_key_one" to "not_desired_value_one", "filter_key_two" to "not_desired_value_two", - "filter_key_three" to "not_desired_value_three" - ) - ) - ) - ) - ) + "filter_key_three" to "not_desired_value_three", + ), + ), + ), + ), + ), ) enqueue(samplePolicyDataHashTx) @@ -98,10 +98,10 @@ class FilteredByMultipleMetaKeysPrivateDataEventBlockListenerTest : AbstractPriv fun handleEvent( @MessageFilters( MessageFilter(metaKey = "filter_key_one", metaKeyValue = "desired_value_one"), - MessageFilter(metaKey = "filter_key_two", metaKeyValue = "desired_value_two") + MessageFilter(metaKey = "filter_key_two", metaKeyValue = "desired_value_two"), ) @MessageFilter(metaKey = "filter_key_three", metaKeyValue = "desired_value_three") - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByPolicyPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByPolicyPrivateDataEventBlockListenerTest.kt index a4a73ff..2aa9dca 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByPolicyPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/FilteredByPolicyPrivateDataEventBlockListenerTest.kt @@ -35,15 +35,15 @@ class FilteredByPolicyPrivateDataEventBlockListenerTest : AbstractPrivateEventBl request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of(privacyInfoResponse) every { txService.txInfo(samplePolicyDataHashTx.policyId.txId) } returns Optional.of( txInfo( - tx = sampleCreatePolicyTx.copy(policyName = PolicyName("policy_name_prefix_in_policy_name")) - ) + tx = sampleCreatePolicyTx.copy(policyName = PolicyName("policy_name_prefix_in_policy_name")), + ), ) enqueue(samplePolicyDataHashTx) @@ -62,7 +62,7 @@ class FilteredByPolicyPrivateDataEventBlockListenerTest : AbstractPrivateEventBl request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of(privacyInfoResponse) enqueue(samplePolicyDataHashTx) @@ -76,7 +76,7 @@ class FilteredByPolicyPrivateDataEventBlockListenerTest : AbstractPrivateEventBl @TxListener fun handleEvent( @PolicyFilter(namePrefix = "policy_name_prefix") - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/MapPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/MapPrivateDataEventBlockListenerTest.kt index 081f89a..fc74c7e 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/MapPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/MapPrivateDataEventBlockListenerTest.kt @@ -15,7 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.TestConfiguration import org.springframework.context.annotation.Bean import org.springframework.test.context.ContextConfiguration -import org.springframework.util.Base64Utils +import java.util.Base64 import java.util.Optional @ContextConfiguration(classes = [MapPrivateDataEventBlockListenerTest.ListenerConfig::class]) @@ -29,18 +29,18 @@ class MapPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListenerTe val randomMap = mapOf( "key_list" to listOf( mapOf("key_int_1" to 1), - mapOf("key_int_2" to 2) - ) + mapOf("key_int_2" to 2), + ), ) every { privacyService.data( request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) } returns Optional.of( - Data.fromByteArray(Base64Utils.encode(objectMapper.writeValueAsBytes(randomMap))) + Data.fromByteArray(Base64.getEncoder().encode(objectMapper.writeValueAsBytes(randomMap))), ) enqueue(samplePolicyDataHashTx) @@ -55,7 +55,7 @@ class MapPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListenerTe interface MapPrivateDataEventListener { @TxListener fun handleEvent( - privateDataEvent: PrivateDataEvent>>> + privateDataEvent: PrivateDataEvent>>>, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/NoValuePrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/NoValuePrivateDataEventBlockListenerTest.kt index 7c7916b..49c142a 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/NoValuePrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/NoValuePrivateDataEventBlockListenerTest.kt @@ -38,7 +38,7 @@ class NoValuePrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListen interface NothingPrivateDataEventListener { @TxListener fun handleEvent( - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ObjectPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ObjectPrivateDataEventBlockListenerTest.kt index 651d7ed..8862884 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ObjectPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/ObjectPrivateDataEventBlockListenerTest.kt @@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.TestConfiguration import org.springframework.context.annotation.Bean import org.springframework.test.context.ContextConfiguration -import org.springframework.util.Base64Utils +import java.util.Base64 import java.util.Optional @ContextConfiguration(classes = [ObjectPrivateDataEventBlockListenerTest.ListenerConfig::class]) @@ -33,9 +33,9 @@ class ObjectPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListene request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) - } returns Optional.of(Base64Utils.encode(objectMapper.writeValueAsBytes(randomObject)).data) + } returns Optional.of(Base64.getEncoder().encode(objectMapper.writeValueAsBytes(randomObject)).data) enqueue(samplePolicyDataHashTx) @@ -50,7 +50,7 @@ class ObjectPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListene interface ObjectPrivateDataEventListener { @TxListener fun handleEvent( - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/StringPrivateDataEventBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/StringPrivateDataEventBlockListenerTest.kt index c5ebd78..09739fa 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/StringPrivateDataEventBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/privacydataevent/StringPrivateDataEventBlockListenerTest.kt @@ -15,7 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.TestConfiguration import org.springframework.context.annotation.Bean import org.springframework.test.context.ContextConfiguration -import org.springframework.util.Base64Utils +import java.util.Base64 import java.util.Optional @ContextConfiguration(classes = [StringPrivateDataEventBlockListenerTest.ListenerConfig::class]) @@ -32,9 +32,9 @@ class StringPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListene request = PolicyItemRequest( policyId = samplePolicyDataHashTx.policyId, dataHash = samplePolicyDataHashTx.dataHash, - ) + ), ) - } returns Optional.of(Data.fromByteArray(Base64Utils.encode(randomString.toByteArray()))) + } returns Optional.of(Data.fromByteArray(Base64.getEncoder().encode(randomString.toByteArray()))) enqueue(samplePolicyDataHashTx) @@ -49,7 +49,7 @@ class StringPrivateDataEventBlockListenerTest : AbstractPrivateEventBlockListene interface StringPrivateDataEventListener { @TxListener fun handleEvent( - privateDataEvent: PrivateDataEvent + privateDataEvent: PrivateDataEvent, ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/AllTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/AllTxBlockListenerTest.kt index 7bf16e4..6a4783a 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/AllTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/AllTxBlockListenerTest.kt @@ -32,8 +32,8 @@ class AllTxBlockListenerTest : AbstractListenerTest() { assertThat( anyTxCaptor, containsInAnyOrder( - *(mockTxList).toTypedArray() - ) + *(mockTxList).toTypedArray(), + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/CreatePolicyTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/CreatePolicyTxBlockListenerTest.kt index b8f5ae9..94a4548 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/CreatePolicyTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/CreatePolicyTxBlockListenerTest.kt @@ -27,7 +27,7 @@ class CreatePolicyTxBlockListenerTest : AbstractListenerTest() { fun `should handle CreatePolicyTx`() { enqueue( sampleAtomicTx, - sampleCreatePolicyTx + sampleCreatePolicyTx, ) pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(mockPartitionId) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCallContractTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCallContractTxBlockListenerTest.kt index 8390f32..830debe 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCallContractTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCallContractTxBlockListenerTest.kt @@ -31,7 +31,7 @@ class ExecutedCallContractTxBlockListenerTest : AbstractListenerTest() { enqueue( callContractTxSimple, callContractTxDifferentValueTypes, - callContractTxSeveralMatchingKeys + callContractTxSeveralMatchingKeys, ) pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(mockPartitionId) @@ -45,8 +45,8 @@ class ExecutedCallContractTxBlockListenerTest : AbstractListenerTest() { containsInAnyOrder( callContractTxSimple, callContractTxDifferentValueTypes, - callContractTxSeveralMatchingKeys - ) + callContractTxSeveralMatchingKeys, + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCreateContractTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCreateContractTxBlockListenerTest.kt index afa85a0..a6e81d6 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCreateContractTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/ExecutedCreateContractTxBlockListenerTest.kt @@ -31,7 +31,7 @@ class ExecutedCreateContractTxBlockListenerTest : AbstractListenerTest() { enqueue( sampleAtomicTx, createContractTxSimple, - createContractTxWithImageToFilter + createContractTxWithImageToFilter, ) pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(mockPartitionId) @@ -43,8 +43,8 @@ class ExecutedCreateContractTxBlockListenerTest : AbstractListenerTest() { createExecutedContractTxCaptor, containsInAnyOrder( createContractTxSimple, - createContractTxWithImageToFilter - ) + createContractTxWithImageToFilter, + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/FilteredByExpressionTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/FilteredByExpressionTxBlockListenerTest.kt index 2312431..234d99a 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/FilteredByExpressionTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/FilteredByExpressionTxBlockListenerTest.kt @@ -51,7 +51,7 @@ class FilteredByExpressionTxBlockListenerTest : AbstractListenerTest() { " T(com.wavesenterprise.sdk.node.domain.tx.Tx).type(#this).code " + "&& T(com.wavesenterprise.sdk.node.domain.TxType).CREATE_CONTRACT.code ==" + " T(com.wavesenterprise.sdk.node.domain.tx.Tx).type(#this.tx).code " + - "&& 'image_to_filter' == tx.image.value" + "&& 'image_to_filter' == tx.image.value", ) fun handleTx(tx: Tx) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/PolicyDataHashTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/PolicyDataHashTxBlockListenerTest.kt index ea19d05..4beb40a 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/PolicyDataHashTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/PolicyDataHashTxBlockListenerTest.kt @@ -27,7 +27,7 @@ class PolicyDataHashTxBlockListenerTest : AbstractListenerTest() { fun `should handle PolicyDataHashTx`() { enqueue( sampleAtomicTx, - samplePolicyDataHashTx + samplePolicyDataHashTx, ) pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(mockPartitionId) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/WildcardExecutedContractTxBlockListenerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/WildcardExecutedContractTxBlockListenerTest.kt index ed69b6c..c1ea473 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/WildcardExecutedContractTxBlockListenerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/listener/tx/WildcardExecutedContractTxBlockListenerTest.kt @@ -36,7 +36,7 @@ class WildcardExecutedContractTxBlockListenerTest : AbstractListenerTest() { createContractTxWithImageToFilter, callContractTxSimple, callContractTxDifferentValueTypes, - callContractTxSeveralMatchingKeys + callContractTxSeveralMatchingKeys, ) pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(mockPartitionId) @@ -51,8 +51,8 @@ class WildcardExecutedContractTxBlockListenerTest : AbstractListenerTest() { createContractTxWithImageToFilter, callContractTxSimple, callContractTxDifferentValueTypes, - callContractTxSeveralMatchingKeys - ) + callContractTxSeveralMatchingKeys, + ), ) } @@ -66,7 +66,7 @@ class WildcardExecutedContractTxBlockListenerTest : AbstractListenerTest() { createContractTxWithImageToFilter - callContractTxSimple - callContractTxDifferentValueTypes - - callContractTxSeveralMatchingKeys + callContractTxSeveralMatchingKeys, ) pollingTxSubscriber.dequeuePartitionAndSendToSubscribers(mockPartitionId) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/lock/LockServiceTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/lock/LockServiceTest.kt index 27b2145..c4eade2 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/lock/LockServiceTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/lock/LockServiceTest.kt @@ -25,7 +25,7 @@ import java.util.concurrent.ForkJoinPool TxObserverJpaAutoConfig::class, LockConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class LockServiceTest { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/sample/TestBlockListeners.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/sample/TestBlockListeners.kt index e27e3b7..2b39cbb 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/sample/TestBlockListeners.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/sample/TestBlockListeners.kt @@ -12,7 +12,7 @@ import com.wavesenterprise.sdk.tx.observer.api.tx.TxListener import com.wavesenterprise.sdk.tx.observer.starter.observer.testObjects.SimpleDataObject class TestBlockListeners( - val mockedTestEventListeners: TestEventListeners + val mockedTestEventListeners: TestEventListeners, ) : TestEventListeners { @TxListener @@ -27,65 +27,64 @@ class TestBlockListeners( @TxListener override fun handleBlockEventForCallContractTxByArgumentType( - callExecutedContractTx: ExecutedContractTx + callExecutedContractTx: ExecutedContractTx, ) { mockedTestEventListeners.handleBlockEventForCallContractTxByArgumentType(callExecutedContractTx) } @TxListener override fun handleBlockEventForCreateContractTxByArgumentType( - createExecutedContractTx: ExecutedContractTx + createExecutedContractTx: ExecutedContractTx, ) { mockedTestEventListeners.handleBlockEventForCreateContractTxByArgumentType(createExecutedContractTx) } @TxListener override fun handleKeyEventWithStringValue( - @KeyFilter(keyPrefix = "my_fav_object_string") keyEvent: KeyEvent + @KeyFilter(keyPrefix = "my_fav_object_string") keyEvent: KeyEvent, ) { mockedTestEventListeners.handleKeyEventWithStringValue(keyEvent) } @TxListener override fun handleMultiKeyEventWithStringValue( - @KeyFilter(keyPrefix = "my_fav_multi_key_string") keyEvent: KeyEvent + @KeyFilter(keyPrefix = "my_fav_multi_key_string") keyEvent: KeyEvent, ) { mockedTestEventListeners.handleMultiKeyEventWithStringValue(keyEvent) } @TxListener override fun handleKeyEventWithIntegerValue( - @KeyFilter(keyPrefix = "my_fav_key_int_") keyEvent: KeyEvent + @KeyFilter(keyPrefix = "my_fav_key_int_") keyEvent: KeyEvent, ) { mockedTestEventListeners.handleKeyEventWithIntegerValue(keyEvent) } @TxListener override fun handleKeyEventWithBooleanValue( - @KeyFilter(keyPrefix = "my_fav_object_bool_") keyEvent: KeyEvent + @KeyFilter(keyPrefix = "my_fav_object_bool_") keyEvent: KeyEvent, ) { mockedTestEventListeners.handleKeyEventWithBooleanValue(keyEvent) } @TxListener override fun handleKeyEventWithMapValue( - @KeyFilter(keyPrefix = "my_fav_object_map_") keyEvent: KeyEvent>>> + @KeyFilter(keyPrefix = "my_fav_object_map_") keyEvent: KeyEvent>>>, ) { mockedTestEventListeners.handleKeyEventWithMapValue(keyEvent) } @TxListener override fun handleKeyEventWithObjectValue( - @KeyFilter(keyPrefix = "my_fav_object_object_") keyEvent: KeyEvent + @KeyFilter(keyPrefix = "my_fav_object_object_") keyEvent: KeyEvent, ) { mockedTestEventListeners.handleKeyEventWithObjectValue(keyEvent) } - @TxListener - ( + @TxListener( filterExpression = "T(com.wavesplatform.vst.node.dto.TransactionType).EXECUTED_CONTRACT.value == type " + "&& T(com.wavesplatform.vst.node.dto.TransactionType).CREATE_CONTRACT.value == tx.type " + - "&& 'image_to_filter' == tx.image" + "&& 'image_to_filter' == tx.image", ) override fun handleBlockEventForTxFilteredBySpEl(tx: Tx) { mockedTestEventListeners.handleBlockEventForTxFilteredBySpEl(tx) diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/ModelFactory.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/ModelFactory.kt index c89b0bb..473d058 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/ModelFactory.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/ModelFactory.kt @@ -1,3 +1,5 @@ +@file:Suppress("LongParameterList") + package com.wavesenterprise.sdk.tx.observer.starter.observer.util import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper @@ -23,6 +25,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingS import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration.Companion.sampleCreateContractTx import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration.Companion.sampleExecutedContractTx import java.time.OffsetDateTime +import java.time.ZoneOffset +import java.time.temporal.ChronoUnit import java.util.UUID object ModelFactory { @@ -33,7 +37,7 @@ object ModelFactory { blockHeight: Long = 1, partition: TxQueuePartition, status: EnqueuedTxStatus = EnqueuedTxStatus.NEW, - available: Boolean = true + available: Boolean = true, ) = EnqueuedTx( id = tx.id, body = jacksonObjectMapper().valueToTree(tx), @@ -45,7 +49,7 @@ object ModelFactory { partition = partition, available = available, positionInAtomic = 0, - atomicTxId = null + atomicTxId = null, ) fun blockAtHeight( @@ -75,7 +79,7 @@ object ModelFactory { poaConsensus = poaConsensus, posConsensus = posConsensus, timestamp = timestamp, - height = height + height = height, ) fun blockHeaders( @@ -101,18 +105,21 @@ object ModelFactory { poaConsensus = poaConsensus, posConsensus = posConsensus, timestamp = timestamp, - height = height + height = height, ) fun blockHistory( signature: String = UUID.randomUUID().toString(), height: Long = FIRST_BLOCK_HEIGHT, - timestamp: OffsetDateTime = OffsetDateTime.now() + timestamp: OffsetDateTime = OffsetDateTime + .now() + .truncatedTo(ChronoUnit.MILLIS) + .withOffsetSameInstant(ZoneOffset.UTC), ): BlockHistory = BlockHistory( signature = signature, height = height, - timestamp = timestamp + timestamp = timestamp, ) val txList: List = listOf( @@ -123,6 +130,6 @@ object ModelFactory { sampleExecutedContractTx.copy( id = TxId.fromByteArray("id1000".toByteArray()), tx = sampleCallContractTx.copy(id = TxId.fromByteArray("id1001".toByteArray())), - ) + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/TxSpElUtilsTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/TxSpElUtilsTest.kt index cf592fa..deb3ee8 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/TxSpElUtilsTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/util/TxSpElUtilsTest.kt @@ -32,9 +32,9 @@ internal class TxSpElUtilsTest { DataEntry( key = DataKey("key"), value = DataValue.StringDataValue("fffff"), - ) - ) - ) + ), + ), + ), ) @Test diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/EnqueuedTxControllerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/EnqueuedTxControllerTest.kt index 46734a3..5b8a80d 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/EnqueuedTxControllerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/EnqueuedTxControllerTest.kt @@ -15,6 +15,7 @@ import com.wavesenterprise.sdk.tx.observer.jpa.repository.TxQueuePartitionJpaRep import com.wavesenterprise.sdk.tx.observer.starter.TxObserverStarterConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingServiceFactoryMockConfiguration import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx +import jakarta.persistence.EntityManager import org.hamcrest.Matchers.hasSize import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -29,7 +30,6 @@ import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.get -import javax.persistence.EntityManager @WebMvcTest(controllers = [EnqueuedTxController::class]) @ActiveProfiles("test") @@ -41,7 +41,7 @@ import javax.persistence.EntityManager TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureMockMvc(addFilters = false) @AutoConfigureDataJpa @@ -72,32 +72,32 @@ internal class EnqueuedTxControllerTest { val partition = txQueuePartitionJpaRepository.save( TxQueuePartition( id = partitionId, - priority = 0 - ) + priority = 0, + ), ) var i = 0 listOf( enqueuedTx( tx = TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), - partition = partition + partition = partition, ), enqueuedTx( tx = TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), - partition = partition + partition = partition, ), enqueuedTx( tx = TestDataFactory.policyDataHashTx(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), partition = partition, - available = false + available = false, ), enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), - partition = partition + partition = partition, ), enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("$i".toByteArray())).toDto(), - partition = partition - ) + partition = partition, + ), ).onEach { enqueuedTxJpaRepository.save(it) } @@ -118,14 +118,14 @@ internal class EnqueuedTxControllerTest { val partition = txQueuePartitionJpaRepository.save( TxQueuePartition( id = partitionId, - priority = 0 - ) + priority = 0, + ), ) val anotherPartition = txQueuePartitionJpaRepository.save( TxQueuePartition( id = "another_partition_id", - priority = 0 - ) + priority = 0, + ), ) val enqueuedTxInPartitionCount = 4 @@ -135,8 +135,8 @@ internal class EnqueuedTxControllerTest { tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_$it".toByteArray())).toDto(), positionInBlock = it, blockHeight = 100, - partition = if (it < enqueuedTxInPartitionCount) partition else anotherPartition - ) + partition = if (it < enqueuedTxInPartitionCount) partition else anotherPartition, + ), ) } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/TxQueuePartitionControllerTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/TxQueuePartitionControllerTest.kt index 90aedf7..5775a7f 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/TxQueuePartitionControllerTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/TxQueuePartitionControllerTest.kt @@ -22,6 +22,7 @@ import org.hamcrest.Matchers.hasSize import org.hamcrest.Matchers.lessThan import org.hamcrest.Matchers.nullValue import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration @@ -46,7 +47,7 @@ import java.util.UUID TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureMockMvc(addFilters = false) @AutoConfigureDataJpa @@ -62,6 +63,18 @@ internal class TxQueuePartitionControllerTest { @Autowired lateinit var mockMvc: MockMvc + @BeforeEach + fun setUp() { + enqueuedTxJpaRepository.deleteAll() + txQueuePartitionJpaRepository.deleteAll() + } + + @AfterEach + fun tearDown() { + enqueuedTxJpaRepository.deleteAll() + txQueuePartitionJpaRepository.deleteAll() + } + @Test fun `get partitions should return filtered by priority equals`() { val filterPriority = 10 @@ -70,8 +83,8 @@ internal class TxQueuePartitionControllerTest { txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_$it", - priority = if (it < filterPartitionCount) filterPriority else 0 - ) + priority = if (it < filterPartitionCount) filterPriority else 0, + ), ) } @@ -93,8 +106,8 @@ internal class TxQueuePartitionControllerTest { txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_$it", - priority = if (it < filterPartitionCount) filterPriority - 1 else filterPriority + 1 - ) + priority = if (it < filterPartitionCount) filterPriority - 1 else filterPriority + 1, + ), ) } @@ -117,8 +130,8 @@ internal class TxQueuePartitionControllerTest { txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_$it", - priority = if (it < filterPartitionCount) filterPriority + 1 else filterPriority - 1 - ) + priority = if (it < filterPartitionCount) filterPriority + 1 else filterPriority - 1, + ), ) } @@ -141,16 +154,16 @@ internal class TxQueuePartitionControllerTest { val partition = txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_part_$it", - priority = 0 - ) + priority = 0, + ), ) enqueuedTxJpaRepository.save( enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("id_tx_$it".toByteArray())).toDto(), status = if (it < filterPartitionCount) filterByStatus else EnqueuedTxStatus.NEW, partition = partition, - positionInBlock = 0 - ) + positionInBlock = 0, + ), ) } @@ -170,14 +183,16 @@ internal class TxQueuePartitionControllerTest { txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_$num", - priority = 0 - ) + priority = 0, + ), ).takeIf { num < activePartitionCount }?.apply { enqueuedTxJpaRepository.save( enqueuedTx( - tx = TestDataFactory.callContractTx(id = TxId.fromByteArray("${UUID.randomUUID()}".toByteArray())).toDto(), - partition = this - ) + tx = TestDataFactory.callContractTx( + id = TxId.fromByteArray("${UUID.randomUUID()}".toByteArray()), + ).toDto(), + partition = this, + ), ) } } @@ -200,14 +215,16 @@ internal class TxQueuePartitionControllerTest { txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_$num", - priority = 0 - ) + priority = 0, + ), ).takeIf { num >= inactivePartitionCount }?.apply { enqueuedTxJpaRepository.save( enqueuedTx( - tx = TestDataFactory.callContractTx(id = TxId.fromByteArray("${UUID.randomUUID()}".toByteArray())).toDto(), - partition = this - ) + tx = TestDataFactory.callContractTx( + id = TxId.fromByteArray("${UUID.randomUUID()}".toByteArray()), + ).toDto(), + partition = this, + ), ) } } @@ -229,8 +246,8 @@ internal class TxQueuePartitionControllerTest { txQueuePartitionJpaRepository.save( TxQueuePartition( id = partitionId, - priority = 0 - ) + priority = 0, + ), ) mockMvc.get("/observer/partitions/{partitionId}", partitionId).andExpect { @@ -252,18 +269,21 @@ internal class TxQueuePartitionControllerTest { val errorPriority = -1 val errorPartitionCount = 8 val totalPartitionCount = 10 + (0 until totalPartitionCount).map { txQueuePartitionJpaRepository.save( TxQueuePartition( id = "id_$it", - priority = if (it < errorPartitionCount) errorPriority else 0 - ) + priority = if (it < errorPartitionCount) errorPriority else 0, + ), ).apply { enqueuedTxJpaRepository.save( enqueuedTx( - tx = TestDataFactory.callContractTx(id = TxId.fromByteArray("${UUID.randomUUID()}".toByteArray())).toDto(), - partition = this - ) + tx = TestDataFactory.callContractTx( + id = TxId.fromByteArray("${UUID.randomUUID()}".toByteArray()), + ).toDto(), + partition = this, + ), ) } } @@ -271,13 +291,11 @@ internal class TxQueuePartitionControllerTest { mockMvc.get("/observer/partitions/status").andExpect { status { isOk() } content { contentType(MediaType.APPLICATION_JSON) } - content { json("{\"errorPartitionCount\":$errorPartitionCount,\"totalPartitionCount\":$totalPartitionCount}") } + content { + json( + "{\"errorPartitionCount\":$errorPartitionCount,\"totalPartitionCount\":$totalPartitionCount}", + ) + } } } - - @AfterEach - fun setUp() { - enqueuedTxJpaRepository.deleteAll() - txQueuePartitionJpaRepository.deleteAll() - } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TransactionalRunner.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TransactionalRunner.kt index c91794b..27ee07a 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TransactionalRunner.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TransactionalRunner.kt @@ -1,10 +1,10 @@ package com.wavesenterprise.sdk.tx.observer.starter.observer.web.service +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.springframework.transaction.annotation.Propagation import org.springframework.transaction.annotation.Transactional import java.util.function.Consumer -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext open class TransactionalRunner { diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueServiceTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueServiceTest.kt index 2ed1220..66a595b 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueServiceTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueServiceTest.kt @@ -42,12 +42,12 @@ import org.springframework.test.context.transaction.TestTransaction TxObserverStarterConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class TxQueueServiceTest( @Value("\${tx-observer.error-priority-offset:100}") - private val errorPriorityOffset: Int + private val errorPriorityOffset: Int, ) { @Autowired @@ -64,9 +64,17 @@ internal class TxQueueServiceTest( @BeforeEach fun setUp() { + enqueuedTxJpaRepository.deleteAll() + txQueuePartitionJpaRepository.deleteAll() txQueuePartitionJpaRepository.saveAndFlush(mockPartition) } + @AfterEach + fun tearDown() { + enqueuedTxJpaRepository.deleteAll() + txQueuePartitionJpaRepository.deleteAll() + } + @Test fun `should save block height reset row`() { val resetToHeight = 100L @@ -85,8 +93,8 @@ internal class TxQueueServiceTest( val errorPartition = txQueuePartitionJpaRepository.saveAndFlush( TxQueuePartition( id = "errorPartId", - priority = -errorPriorityOffset - 1 - ) + priority = -errorPriorityOffset - 1, + ), ) val txCountError = 4 @@ -95,8 +103,8 @@ internal class TxQueueServiceTest( enqueuedTx( tx = TestDataFactory.createContractTx(id = TxId.fromByteArray("tx_$it".toByteArray())).toDto(), positionInBlock = it, - partition = if (it < txCountError) errorPartition else mockPartition - ) + partition = if (it < txCountError) errorPartition else mockPartition, + ), ) } @@ -109,22 +117,36 @@ internal class TxQueueServiceTest( val txs = enqueuedTxJpaRepository.findAll() assertAll( listOf { - assertEquals(txCountError, postponedCount, "Count of Tx with status POSTPONED must be equals $txCountError") + assertEquals( + txCountError, + postponedCount, + "Count of Tx with status POSTPONED must be equals $txCountError", + ) }.union( txs.map { if (it.partition.priority < -errorPriorityOffset) { - { assertEquals(EnqueuedTxStatus.POSTPONED, it.status, "Status of Tx ${it.id} in partition ${it.partition.id} with priority lower than -$errorPriorityOffset (actual ${it.partition.priority}) must be equals POSTPONED") } + { + assertEquals( + EnqueuedTxStatus.POSTPONED, + it.status, + "Status of Tx ${it.id} in partition ${it.partition.id}" + + " with priority lower than -$errorPriorityOffset" + + " (actual ${it.partition.priority}) must be equals POSTPONED", + ) + } } else { - { assertEquals(EnqueuedTxStatus.NEW, it.status, "Status of Tx ${it.id} in partition ${it.partition.id} with priority greater or equals -$errorPriorityOffset (actual ${it.partition.priority}) must be equals NEW") } + { + assertEquals( + EnqueuedTxStatus.NEW, + it.status, + "Status of Tx ${it.id} in partition ${it.partition.id}" + + " with priority greater or equals -$errorPriorityOffset" + + " (actual ${it.partition.priority}) must be equals NEW", + ) + } } - } - ) + }, + ), ) } - - @AfterEach - fun cleanup() { - enqueuedTxJpaRepository.deleteAll() - txQueuePartitionJpaRepository.deleteAll() - } } diff --git a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueStatusServiceImplTest.kt b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueStatusServiceImplTest.kt index ae436fd..f560256 100644 --- a/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueStatusServiceImplTest.kt +++ b/we-tx-observer-module/we-tx-observer-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/observer/starter/observer/web/service/TxQueueStatusServiceImplTest.kt @@ -31,6 +31,8 @@ import com.wavesenterprise.sdk.tx.observer.starter.observer.config.NodeBlockingS import com.wavesenterprise.sdk.tx.observer.starter.observer.config.ObjectMapperConfig import com.wavesenterprise.sdk.tx.observer.starter.observer.util.ModelFactory.enqueuedTx import io.mockk.every +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.BeforeEach @@ -43,8 +45,6 @@ import org.springframework.data.repository.findByIdOrNull import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import java.util.Optional -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest @ActiveProfiles("test") @@ -58,7 +58,7 @@ import javax.persistence.PersistenceContext BlockInfoSynchronizerConfig::class, FlywaySchemaConfiguration::class, TxObserverJpaConfig::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) internal class TxQueueStatusServiceImplTest { @@ -89,7 +89,7 @@ internal class TxQueueStatusServiceImplTest { private val samplePartition = TxQueuePartition( id = "partitionId", - priority = 0 + priority = 0, ) @BeforeEach @@ -103,26 +103,26 @@ internal class TxQueueStatusServiceImplTest { listOf( enqueuedTx( tx = sampleCreateContractTx.copy(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), - partition = samplePartition + partition = samplePartition, ), enqueuedTx( tx = sampleCreateContractTx.copy(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), - partition = samplePartition + partition = samplePartition, ), enqueuedTx( tx = samplePolicyDataHashTx.copy(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), - partition = samplePartition + partition = samplePartition, ), enqueuedTx( tx = samplePolicyDataHashTx.copy(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), partition = samplePartition, - available = false + available = false, ), enqueuedTx( tx = samplePolicyDataHashTx.copy(id = TxId.fromByteArray("${i++}".toByteArray())).toDto(), partition = samplePartition, - available = false - ) + available = false, + ), ).also { enqueuedTxJpaRepository.saveAll(it) } diff --git a/we-tx-tracker-module/we-tx-tracker-api/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/api/TxTracker.kt b/we-tx-tracker-module/we-tx-tracker-api/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/api/TxTracker.kt index 34bc83e..bc8cf89 100644 --- a/we-tx-tracker-module/we-tx-tracker-api/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/api/TxTracker.kt +++ b/we-tx-tracker-module/we-tx-tracker-api/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/api/TxTracker.kt @@ -12,6 +12,7 @@ import java.util.Optional /** * Service for tracking, managing and obtaining up-to-date information about necessary transactions. */ +@Suppress("TooManyFunctions") interface TxTracker { /** diff --git a/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/JpaTxTracker.kt b/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/JpaTxTracker.kt index 7bb3f9c..85354fe 100644 --- a/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/JpaTxTracker.kt +++ b/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/JpaTxTracker.kt @@ -33,6 +33,7 @@ import org.springframework.data.repository.findByIdOrNull import org.springframework.transaction.annotation.Transactional import java.util.Optional +@Suppress("TooManyFunctions") open class JpaTxTracker( val txTrackerJpaRepository: TxTrackerJpaRepository, val smartContractInfoJpaRepository: SmartContractInfoJpaRepository, @@ -52,7 +53,7 @@ open class JpaTxTracker( tx: Tx, meta: Map, businessObjectInfos: List, - userId: String? + userId: String?, ): TxTrackInfo = when (tx) { is CreateContractTx -> smartContractInfoJpaRepository.save( @@ -63,8 +64,9 @@ open class JpaTxTracker( imageHash = tx.imageHash.value, contractName = tx.contractName.value, version = tx.version.value, - ) + ), ) + is CallContractTx -> getSmartContractInfo(tx.contractId, tx.javaClass.simpleName) is DisableContractTx -> getSmartContractInfo(tx.contractId, tx.javaClass.simpleName) is UpdateContractTx -> getSmartContractInfo(tx.contractId, tx.javaClass.simpleName) @@ -78,8 +80,8 @@ open class JpaTxTracker( smartContractInfo = smartContractInfo, meta = meta, businessObjectInfos = businessObjectInfos, - userId = userId - ) + userId = userId, + ), ) } @@ -110,14 +112,17 @@ open class JpaTxTracker( types: List, pageRequest: PageRequest, ): List = txTrackerJpaRepository.findLastIdsByStatusAndTypeIn( - txTrackerStatus, types, pageRequest + txTrackerStatus, + types, + pageRequest, ).map { TxId.fromBase58(it) } override fun getTrackedTxsWithStatus( txTrackerStatus: TxTrackStatus, pageRequest: PageRequest, ): List = txTrackerJpaRepository.findLastBodiesByStatus( - txTrackerStatus, pageRequest + txTrackerStatus, + pageRequest, ).mapNotNull { body: JsonNode? -> body?.let { objectMapper.convertValue(it).toDomain() } } @@ -127,7 +132,7 @@ open class JpaTxTracker( ): Optional = txTrackerJpaRepository.findFirstByStatusNotAndBusinessObjectInfosContainsOrderByModifiedDesc( status = TxTrackStatus.SUCCESS, - businessObjectInfos = businessObjectInfoJpaRepository.getById(businessObjectId), + businessObjectInfos = businessObjectInfoJpaRepository.getReferenceById(businessObjectId), ) override fun getLastTrackedTxForBusinessObjectWithStatus( @@ -136,7 +141,7 @@ open class JpaTxTracker( ): Optional = txTrackerJpaRepository.findFirstByStatusAndBusinessObjectInfosContainsOrderByModifiedDesc( status = status, - businessObjectInfos = businessObjectInfoJpaRepository.getById(businessObjectId), + businessObjectInfos = businessObjectInfoJpaRepository.getReferenceById(businessObjectId), ) @Transactional @@ -186,7 +191,7 @@ open class JpaTxTracker( imageHash = it.imageHash.value, contractName = it.contractName.value, version = it.version.value, - ) + ), ) } } diff --git a/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/ScheduledTxTracker.kt b/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/ScheduledTxTracker.kt index 22bfa34..8d72a2a 100644 --- a/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/ScheduledTxTracker.kt +++ b/we-tx-tracker-module/we-tx-tracker-core-spring/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/core/spring/component/ScheduledTxTracker.kt @@ -31,7 +31,7 @@ open class ScheduledTxTracker( open fun trackPendingTx() { val trackedTxs = txTracker.getTrackedTxsWithStatus( txTrackerStatus = TxTrackStatus.PENDING, - pageRequest = PageRequest.of(0, txTrackerProperties.trackedTxPageRequestLimit) + pageRequest = PageRequest.of(0, txTrackerProperties.trackedTxPageRequestLimit), ) if (trackedTxs.isNotEmpty()) { val unconfirmedTxIds = txService.utxInfo() diff --git a/we-tx-tracker-module/we-tx-tracker-domain/build.gradle.kts b/we-tx-tracker-module/we-tx-tracker-domain/build.gradle.kts index 216a723..500ec19 100644 --- a/we-tx-tracker-module/we-tx-tracker-domain/build.gradle.kts +++ b/we-tx-tracker-module/we-tx-tracker-domain/build.gradle.kts @@ -10,11 +10,11 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("com.fasterxml.jackson.core:jackson-databind") - implementation("com.vladmihalcea:hibernate-types-52") + implementation("io.hypersistence:hypersistence-utils-hibernate-63") testImplementation("org.junit.jupiter:junit-jupiter-api") testImplementation("org.junit.jupiter:junit-jupiter-params") testImplementation("org.junit.jupiter:junit-jupiter-engine") - kapt("org.hibernate:hibernate-jpamodelgen") + kapt("org.hibernate.orm:hibernate-jpamodelgen") } diff --git a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfo.kt b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfo.kt index 27a08f8..7e286cb 100644 --- a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfo.kt +++ b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfo.kt @@ -1,15 +1,15 @@ package com.wavesenterprise.sdk.tx.tracker.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_TRACKER_SCHEMA_NAME +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.Id +import jakarta.persistence.OneToMany +import jakarta.persistence.Table import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.Id -import javax.persistence.OneToMany -import javax.persistence.Table @Entity @Table(schema = TX_TRACKER_SCHEMA_NAME) diff --git a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackBusinessObjectInfo.kt b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackBusinessObjectInfo.kt index 4463158..24264b0 100644 --- a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackBusinessObjectInfo.kt +++ b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackBusinessObjectInfo.kt @@ -1,17 +1,17 @@ package com.wavesenterprise.sdk.tx.tracker.domain import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_TRACKER_SCHEMA_NAME +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table import org.hibernate.annotations.SQLInsert -import javax.persistence.Entity -import javax.persistence.Id -import javax.persistence.Table @Entity @Table(schema = TX_TRACKER_SCHEMA_NAME) @SQLInsert( sql = """ insert into $TX_TRACKER_SCHEMA_NAME.tx_track_business_object_info (type, id) values (?, ?) on conflict do nothing -""" +""", ) data class TxTrackBusinessObjectInfo( @Id diff --git a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackInfo.kt b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackInfo.kt index 57cea67..75d7842 100644 --- a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackInfo.kt +++ b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackInfo.kt @@ -1,42 +1,37 @@ package com.wavesenterprise.sdk.tx.tracker.domain import com.fasterxml.jackson.databind.JsonNode -import com.vladmihalcea.hibernate.type.json.JsonBinaryType import com.wavesenterprise.sdk.tx.observer.common.jpa.util.JSONB_TYPE import com.wavesenterprise.sdk.tx.observer.common.jpa.util.TX_TRACKER_SCHEMA_NAME +import io.hypersistence.utils.hibernate.type.json.JsonType +import jakarta.persistence.CascadeType +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.EntityListeners +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.JoinTable +import jakarta.persistence.ManyToMany +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table import org.hibernate.annotations.SQLInsert import org.hibernate.annotations.Type -import org.hibernate.annotations.TypeDef -import org.hibernate.annotations.TypeDefs import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener import java.time.OffsetDateTime -import javax.persistence.CascadeType -import javax.persistence.Column -import javax.persistence.Entity -import javax.persistence.EntityListeners -import javax.persistence.EnumType -import javax.persistence.Enumerated -import javax.persistence.Id -import javax.persistence.JoinColumn -import javax.persistence.JoinTable -import javax.persistence.ManyToMany -import javax.persistence.ManyToOne -import javax.persistence.Table @Entity @Table(schema = TX_TRACKER_SCHEMA_NAME) @EntityListeners(AuditingEntityListener::class) -@TypeDefs( - TypeDef(name = JSONB_TYPE, typeClass = JsonBinaryType::class) -) @SQLInsert( sql = """ insert into $TX_TRACKER_SCHEMA_NAME.tx_track_info (body, created, errors, meta, modified, contract_id, status, type, user_id, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) on conflict do nothing -""" +""", ) data class TxTrackInfo( @Id @@ -51,14 +46,14 @@ data class TxTrackInfo( var type: Int, - @Type(type = JSONB_TYPE) + @Type(JsonType::class) @Column(columnDefinition = JSONB_TYPE) var body: JsonNode, - @Type(type = JSONB_TYPE) + @Type(JsonType::class) var errors: JsonNode? = null, - @Type(type = JSONB_TYPE) + @Type(JsonType::class) val meta: Map, @CreatedDate @@ -74,14 +69,14 @@ data class TxTrackInfo( CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, - CascadeType.DETACH - ] + CascadeType.DETACH, + ], ) @JoinTable( schema = TX_TRACKER_SCHEMA_NAME, name = "track_info_business_object_info", joinColumns = [JoinColumn(name = "track_info_id", nullable = false)], - inverseJoinColumns = [JoinColumn(name = "business_object_info_id", nullable = false)] + inverseJoinColumns = [JoinColumn(name = "business_object_info_id", nullable = false)], ) @SQLInsert( sql = """ @@ -91,7 +86,7 @@ data class TxTrackInfo( (track_info_id, business_object_info_id) values (?, ?) on conflict do nothing - """ + """, ) val businessObjectInfos: List = listOf(), ) diff --git a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackStatus.kt b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackStatus.kt index 38ad35c..5103966 100644 --- a/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackStatus.kt +++ b/we-tx-tracker-module/we-tx-tracker-domain/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/TxTrackStatus.kt @@ -5,5 +5,4 @@ enum class TxTrackStatus { SUCCESS, ERROR, FAILURE, - ; } diff --git a/we-tx-tracker-module/we-tx-tracker-domain/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfoTest.kt b/we-tx-tracker-module/we-tx-tracker-domain/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfoTest.kt index 5318bfe..f352538 100644 --- a/we-tx-tracker-module/we-tx-tracker-domain/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfoTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-domain/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/domain/SmartContractInfoTest.kt @@ -14,7 +14,7 @@ internal class SmartContractInfoTest { image = "image", version = 1, contractName = "bla", - sender = "123" + sender = "123", ) val txTrackInfo = TxTrackInfo( id = "id1", @@ -22,7 +22,7 @@ internal class SmartContractInfoTest { type = 1, body = TextNode("ff"), meta = mapOf(), - smartContractInfo = smartContractInfo + smartContractInfo = smartContractInfo, ) smartContractInfo.txTrackInfos += txTrackInfo assertDoesNotThrow { diff --git a/we-tx-tracker-module/we-tx-tracker-jpa/build.gradle.kts b/we-tx-tracker-module/we-tx-tracker-jpa/build.gradle.kts index c63aa71..781d5fc 100644 --- a/we-tx-tracker-module/we-tx-tracker-jpa/build.gradle.kts +++ b/we-tx-tracker-module/we-tx-tracker-jpa/build.gradle.kts @@ -8,10 +8,10 @@ dependencies { implementation(kotlin("stdlib")) implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("com.fasterxml.jackson.core:jackson-databind") - implementation("com.vladmihalcea:hibernate-types-52") + implementation("io.hypersistence:hypersistence-utils-hibernate-63") implementation(project(":we-tx-observer-common-components")) api(project(":we-tx-tracker-module:we-tx-tracker-domain")) implementation("com.wavesenterprise:we-flyway-starter") - kapt("org.hibernate:hibernate-jpamodelgen") // Generate JPA Static Metamodel + kapt("org.hibernate.orm:hibernate-jpamodelgen") // Generate JPA Static Metamodel } diff --git a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/TxTrackerJpaAutoConfig.kt b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/TxTrackerJpaAutoConfig.kt index 471439c..d3ebce5 100644 --- a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/TxTrackerJpaAutoConfig.kt +++ b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/TxTrackerJpaAutoConfig.kt @@ -22,7 +22,7 @@ import org.springframework.core.Ordered basePackageClasses = [ TxTrackInfo::class, TxTrackerJpaRepository::class, - ] + ], ) @AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE) @AutoConfigureBefore(JpaRepositoriesAutoConfiguration::class, HibernateJpaAutoConfiguration::class) diff --git a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/repository/TxTrackerJpaRepository.kt b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/repository/TxTrackerJpaRepository.kt index 0613ed3..f749911 100644 --- a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/repository/TxTrackerJpaRepository.kt +++ b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/jpa/repository/TxTrackerJpaRepository.kt @@ -21,7 +21,7 @@ interface TxTrackerJpaRepository : JpaRepository { value = """SELECT tti.id FROM TxTrackInfo tti WHERE tti.status = :status AND tti.type IN :types - ORDER BY tti.created """ + ORDER BY tti.created """, ) fun findLastIdsByStatusAndTypeIn( @Param("status") txTrackerStatus: TxTrackStatus, @@ -32,7 +32,7 @@ interface TxTrackerJpaRepository : JpaRepository { @Query( value = """SELECT tti.body FROM TxTrackInfo tti WHERE tti.status = :status - ORDER BY tti.created """ + ORDER BY tti.created """, ) fun findLastBodiesByStatus( @Param("status") txTrackerStatus: TxTrackStatus, diff --git a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/resources/META-INF/spring.factories b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/resources/META-INF/spring.factories deleted file mode 100644 index d10cb0f..0000000 --- a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.wavesenterprise.sdk.tx.tracker.jpa.TxTrackerJpaAutoConfig \ No newline at end of file diff --git a/we-tx-tracker-module/we-tx-tracker-jpa/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8f3d86b --- /dev/null +++ b/we-tx-tracker-module/we-tx-tracker-jpa/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.wavesenterprise.sdk.tx.tracker.jpa.TxTrackerJpaAutoConfig \ No newline at end of file diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/build.gradle.kts b/we-tx-tracker-module/we-tx-tracker-read-starter/build.gradle.kts index 0e4965a..58c89cc 100644 --- a/we-tx-tracker-module/we-tx-tracker-read-starter/build.gradle.kts +++ b/we-tx-tracker-module/we-tx-tracker-read-starter/build.gradle.kts @@ -13,6 +13,8 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.flywaydb:flyway-core") + implementation("org.flywaydb:flyway-database-postgresql") implementation("com.fasterxml.jackson.core:jackson-databind") diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadConfig.kt b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadConfig.kt index 2ca3e94..251d26c 100644 --- a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadConfig.kt +++ b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadConfig.kt @@ -20,10 +20,10 @@ import org.springframework.context.annotation.FilterType ComponentScan.Filter( type = FilterType.ASSIGNABLE_TYPE, classes = [ - TxTrackInfoController::class - ] - ) - ] + TxTrackInfoController::class, + ], + ), + ], ) @AutoConfigureAfter(TxTrackerReadJpaAutoConfig::class) class TxTrackerReadConfig { diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadJpaAutoConfig.kt b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadJpaAutoConfig.kt index 9a81a2d..66e9da1 100644 --- a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadJpaAutoConfig.kt +++ b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/TxTrackerReadJpaAutoConfig.kt @@ -18,7 +18,7 @@ import org.springframework.context.annotation.Configuration basePackageClasses = [ TxTrackInfo::class, TxTrackerReadJpaRepository::class, - ] + ], ) @AutoConfigureAfter(DataSourceAutoConfiguration::class) @AutoConfigureBefore(JpaRepositoriesAutoConfiguration::class, HibernateJpaAutoConfiguration::class) diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/web/Mapping.kt b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/web/Mapping.kt index 12251c9..e167376 100644 --- a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/web/Mapping.kt +++ b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/read/starter/web/Mapping.kt @@ -7,11 +7,11 @@ import com.wavesenterprise.sdk.tx.tracker.domain.TxTrackInfo import com.wavesenterprise.sdk.tx.tracker.domain.TxTrackInfo_ import com.wavesenterprise.sdk.tx.tracker.read.starter.web.dto.TxTrackInfoApiDto import com.wavesenterprise.sdk.tx.tracker.read.starter.web.dto.TxTrackInfoListRequest +import jakarta.persistence.criteria.CriteriaBuilder +import jakarta.persistence.criteria.CriteriaQuery +import jakarta.persistence.criteria.Predicate +import jakarta.persistence.criteria.Root import org.springframework.data.jpa.domain.Specification -import javax.persistence.criteria.CriteriaBuilder -import javax.persistence.criteria.CriteriaQuery -import javax.persistence.criteria.Predicate -import javax.persistence.criteria.Root fun TxTrackInfo.toApiDto() = TxTrackInfoApiDto( id = id, @@ -36,7 +36,7 @@ fun TxTrackInfoListRequest.toSpecification(): Specification = contractId?.let { predicates += cb.equal( root.join(TxTrackInfo_.smartContractInfo).get(SmartContractInfo_.id), - it + it, ) } status?.let { diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/resources/META-INF/spring.factories b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index ec4bc68..0000000 --- a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,3 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.wavesenterprise.sdk.tx.tracker.read.starter.TxTrackerReadConfig,\ - com.wavesenterprise.sdk.tx.tracker.read.starter.TxTrackerReadJpaAutoConfig diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..9667d46 --- /dev/null +++ b/we-tx-tracker-module/we-tx-tracker-read-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.wavesenterprise.sdk.tx.tracker.read.starter.TxTrackerReadConfig +com.wavesenterprise.sdk.tx.tracker.read.starter.TxTrackerReadJpaAutoConfig \ No newline at end of file diff --git a/we-tx-tracker-module/we-tx-tracker-read-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/TxTrackerReadAutoConfigTest.kt b/we-tx-tracker-module/we-tx-tracker-read-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/TxTrackerReadAutoConfigTest.kt index 792887e..21ffdb6 100644 --- a/we-tx-tracker-module/we-tx-tracker-read-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/TxTrackerReadAutoConfigTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-read-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/TxTrackerReadAutoConfigTest.kt @@ -4,6 +4,7 @@ import com.wavesenterprise.sdk.tx.tracker.api.TxTrackInfoService import com.wavesenterprise.sdk.tx.tracker.read.starter.TxTrackerReadJpaRepository import com.wavesenterprise.sdk.tx.tracker.read.starter.web.TxTrackInfoController import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.getBean import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.test.context.SpringBootTest @@ -11,12 +12,14 @@ import org.springframework.context.ApplicationContext import org.springframework.test.context.ActiveProfiles @SpringBootTest( - properties = ["tx-tracker.enabled = true"] + properties = ["tx-tracker.enabled = true"], ) @ActiveProfiles("test") -class TxTrackerReadAutoConfigTest( - private val applicationContext: ApplicationContext -) { +class TxTrackerReadAutoConfigTest { + + @Autowired + lateinit var applicationContext: ApplicationContext + @Test fun `context loads`() { } diff --git a/we-tx-tracker-module/we-tx-tracker-starter/build.gradle.kts b/we-tx-tracker-module/we-tx-tracker-starter/build.gradle.kts index 8f39e0f..01c15d0 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/build.gradle.kts +++ b/we-tx-tracker-module/we-tx-tracker-starter/build.gradle.kts @@ -13,6 +13,8 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.flywaydb:flyway-core") + implementation("org.flywaydb:flyway-database-postgresql") implementation("com.wavesenterprise:we-flyway-starter") implementation("com.wavesenterprise:we-node-client-blocking-client") @@ -35,7 +37,6 @@ dependencies { testImplementation("org.postgresql:postgresql") testImplementation("org.testcontainers:postgresql") - testImplementation("org.flywaydb:flyway-core") testImplementation("com.wavesenterprise:we-node-domain-test") testImplementation("net.javacrumbs.json-unit:json-unit-assertj") testImplementation("org.springframework.boot:spring-boot-starter-test") diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerSchedulerConfig.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerSchedulerConfig.kt index a885889..a10bfeb 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerSchedulerConfig.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerSchedulerConfig.kt @@ -21,7 +21,7 @@ class TxTrackerSchedulerConfig { @Bean fun txTrackerScheduler( - txTrackerProperties: TxTrackerProperties + txTrackerProperties: TxTrackerProperties, ) = ThreadPoolTaskScheduler().apply { scheduledTxTracker.let { scheduledTxTracker -> @@ -32,9 +32,9 @@ class TxTrackerSchedulerConfig { schedule( scheduledMethodRunnable( scheduledTxTracker, - ScheduledTxTracker::trackPendingTx + ScheduledTxTracker::trackPendingTx, ), - PeriodicTrigger(txTrackerProperties.fixedDelay.toMillis()), + PeriodicTrigger(txTrackerProperties.fixedDelay), ) } } diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/properties/TxTrackerProperties.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/properties/TxTrackerProperties.kt index da1dd06..8273311 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/properties/TxTrackerProperties.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/main/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/properties/TxTrackerProperties.kt @@ -2,14 +2,12 @@ package com.wavesenterprise.sdk.tx.tracker.starter.properties import com.wavesenterprise.sdk.tx.tracker.core.spring.properties.TxTrackerProps import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.boot.context.properties.ConstructorBinding import org.springframework.boot.context.properties.bind.DefaultValue import org.springframework.boot.convert.DurationUnit import java.time.Duration import java.time.temporal.ChronoUnit @ConfigurationProperties("tx-tracker") -@ConstructorBinding data class TxTrackerProperties( @DefaultValue("false") override var enabled: Boolean, diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/main/resources/META-INF/spring.factories b/we-tx-tracker-module/we-tx-tracker-starter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 9441e79..0000000 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.wavesenterprise.sdk.tx.tracker.starter.TxTrackerConfig \ No newline at end of file diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/we-tx-tracker-module/we-tx-tracker-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..6511c3f --- /dev/null +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.wavesenterprise.sdk.tx.tracker.starter.TxTrackerConfig \ No newline at end of file diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerContractTxStatusTest.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerContractTxStatusTest.kt index fb9aa13..526930c 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerContractTxStatusTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerContractTxStatusTest.kt @@ -19,6 +19,8 @@ import com.wavesenterprise.sdk.tx.tracker.jpa.TxTrackerJpaAutoConfig import com.wavesenterprise.sdk.tx.tracker.jpa.repository.BusinessObjectInfoJpaRepository import com.wavesenterprise.sdk.tx.tracker.jpa.repository.SmartContractInfoJpaRepository import com.wavesenterprise.sdk.tx.tracker.jpa.repository.TxTrackerJpaRepository +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull @@ -30,16 +32,14 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.transaction.TestTransaction -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest( properties = [ "tx-tracker.enabled = true", "tx-tracker.min-contract-tx-error-count = 2", "tx-tracker.min-contract-tx-failure-count = 2", - "tx-tracker.fail-on-recoverable-contract-tx-error = false" - ] + "tx-tracker.fail-on-recoverable-contract-tx-error = false", + ], ) @ActiveProfiles("test") @ContextConfiguration( @@ -48,7 +48,7 @@ import javax.persistence.PersistenceContext TxTrackerJpaAutoConfig::class, TxTrackerConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) // fixme should work without DataSourceAutoConfiguration (has in wired starters) // but fails on dataSource bean condition (consider ordering) @@ -105,7 +105,7 @@ internal class JpaTxTrackerContractTxStatusTest { contractTxStatus.copy( txId = txId, status = TxStatus.ERROR, - code = if (i <= 2) null else RECOVERABLE_ERROR_CODE + code = if (i <= 2) null else RECOVERABLE_ERROR_CODE, ) } @@ -126,7 +126,7 @@ internal class JpaTxTrackerContractTxStatusTest { val tx: Tx = createContractTx.copy(id = txId) val contractTxStatusList = listOf( contractTxStatus.copy(txId = txId, status = TxStatus.ERROR, code = FATAL_ERROR_CODE), - contractTxStatus.copy(txId = txId, status = TxStatus.FAILURE) + contractTxStatus.copy(txId = txId, status = TxStatus.FAILURE), ) txTracker.trackTx(tx) diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerTest.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerTest.kt index 86f9551..2f9911c 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/JpaTxTrackerTest.kt @@ -35,6 +35,8 @@ import com.wavesenterprise.sdk.tx.tracker.jpa.repository.SmartContractInfoJpaRep import com.wavesenterprise.sdk.tx.tracker.jpa.repository.TxTrackerJpaRepository import io.mockk.every import io.mockk.mockk +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext import net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals @@ -59,8 +61,6 @@ import org.springframework.transaction.TransactionDefinition import org.springframework.transaction.support.TransactionTemplate import java.util.Optional import java.util.concurrent.CountDownLatch -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext @DataJpaTest(properties = ["tx-tracker.enabled = true"]) @ActiveProfiles("test") @@ -71,7 +71,7 @@ import javax.persistence.PersistenceContext TxTrackerConfig::class, FlywaySchemaConfiguration::class, TxTrackerJpaConfig::class, - ] + ], ) // fixme should work without DataSourceAutoConfiguration (has in wired starters) // but fails on dataSource bean condition (consider ordering) @@ -216,14 +216,14 @@ internal class JpaTxTrackerTest { val businessObjectInfos = listOf(TxTrackBusinessObjectInfo("id", "OBJECT")) val txTrackInfoFirstInvocation = txTracker.trackTx( tx = txToBeTracked, - businessObjectInfos = businessObjectInfos + businessObjectInfos = businessObjectInfos, ) em.flushAndClear() val trackTxInfoSecondInvocation = txTracker.trackTx( tx = txToBeTracked, - businessObjectInfos = businessObjectInfos + businessObjectInfos = businessObjectInfos, ) em.flush() @@ -247,7 +247,7 @@ internal class JpaTxTrackerTest { val txTrackInfo = transactionTemplate.execute { txTracker.trackTx( tx = txToBeTracked, - businessObjectInfos = businessObjectInfos + businessObjectInfos = businessObjectInfos, ).also { em.flushAndClear() @@ -276,7 +276,7 @@ internal class JpaTxTrackerTest { val contractId = "some_not_existent_id" assertThrows( "No smartContractInfo for tracked CallContractTx " + - "(contractId = $contractId)" + "(contractId = $contractId)", ) { txTracker.trackTx(callContractTx.copy(contractId = ContractId.fromByteArray(contractId.toByteArray()))) } @@ -288,7 +288,7 @@ internal class JpaTxTrackerTest { val contractId = ContractId(TxId(randomBytesFromUUID())) val tx = callContractTx.copy( id = TxId(randomBytesFromUUID()), - contractId = contractId + contractId = contractId, ) every { txService.txInfo(contractId.txId) @@ -296,7 +296,7 @@ internal class JpaTxTrackerTest { TxInfo( height = mockk(), tx = createContractTx.copy(id = contractId.txId), - ) + ), ) txTracker.trackTx(tx) @@ -387,7 +387,7 @@ internal class JpaTxTrackerTest { txId = txId, message = "ddd", timestamp = Timestamp(1), - signature = Signature.fromByteArray("sign".toByteArray()) + signature = Signature.fromByteArray("sign".toByteArray()), ) val contractTxStatusList = (1..3) .map { contractTxStatusDto.copy(txId = TxId.fromByteArray("id$it".toByteArray())) } @@ -403,11 +403,12 @@ internal class JpaTxTrackerTest { assertEquals(TxTrackStatus.FAILURE, txTrackInfoForTx.status) assertNotNull(txTrackInfoForTx.errors) val jacksonJavaType = objectMapper.typeFactory.constructType( - object : TypeReference>() {} + object : TypeReference>() {}, ) val actualSavedTxStatusDtoList = objectMapper.readValue>( - objectMapper.treeAsTokens(txTrackInfoForTx.errors!!), jacksonJavaType + objectMapper.treeAsTokens(txTrackInfoForTx.errors!!), + jacksonJavaType, ) assertEquals(expectedTxStatusDtoMap.size, actualSavedTxStatusDtoList.size) actualSavedTxStatusDtoList.forEach { @@ -428,13 +429,13 @@ internal class JpaTxTrackerTest { txId = txId, message = "ddd", timestamp = Timestamp(1), - signature = Signature.fromByteArray("sign".toByteArray()) + signature = Signature.fromByteArray("sign".toByteArray()), ) val contractTxStatusDtoList = (1..4) .map { contractTxStatusDto.copy( txId = TxId.fromByteArray("id$it".toByteArray()), - status = if (it == 4) TxStatus.SUCCESS else TxStatus.ERROR + status = if (it == 4) TxStatus.SUCCESS else TxStatus.ERROR, ) } .toList() @@ -460,13 +461,13 @@ internal class JpaTxTrackerTest { txId = txId, message = "ddd", timestamp = Timestamp(1), - signature = Signature.fromByteArray("sign".toByteArray()) + signature = Signature.fromByteArray("sign".toByteArray()), ) val contractTxStatusDtoList = (1..2) .map { contractTxStatusDto.copy( txId = TxId.fromByteArray("id$it".toByteArray()), - status = if (it == 1) TxStatus.ERROR else TxStatus.FAILURE + status = if (it == 1) TxStatus.ERROR else TxStatus.FAILURE, ) } .toList() @@ -491,7 +492,7 @@ internal class JpaTxTrackerTest { val result = txTracker.getTrackedTxIdsWithStatusAndTypes( txTrackerStatus = TxTrackStatus.PENDING, types = listOf(TxType.CALL_CONTRACT.code, TxType.CREATE_CONTRACT.code), - pageRequest = PageRequest.of(0, 1000) + pageRequest = PageRequest.of(0, 1000), ) val txTrackInfoForCreate = em.find(TxTrackInfo::class.java, createContractTx.id.asBase58String()) @@ -520,7 +521,7 @@ internal class JpaTxTrackerTest { txTracker.trackTx( tx = createContractTx.copy(id = expectedTxId), - businessObjectInfos = listOf(businessObjectInfo) + businessObjectInfos = listOf(businessObjectInfo), ) em.flushAndClear() diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/ScheduledTxTrackerTest.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/ScheduledTxTrackerTest.kt index 877424b..bab17e5 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/ScheduledTxTrackerTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/ScheduledTxTrackerTest.kt @@ -84,7 +84,7 @@ internal class ScheduledTxTrackerTest { val mockedErrorList = listOf( TestDataFactory.contractTxStatus( status = TxStatus.FAILURE, - ) + ), ) mockTrackedTxs(txList) every { contractService.getContractTxStatus(any()) } returns mockedErrorList @@ -116,14 +116,14 @@ internal class ScheduledTxTrackerTest { fun `should set tx status to success when transactionInfo is present`() { val tx = TestDataFactory.createContractTx( id = TxId.fromBase58("C2HM9q3QzGSBydnCA4GMcf3cFnTaSuwaWXVtsCSTSmZW"), - timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()) + timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()), ) mockTrackedTxs(listOf(tx)) every { txService.txInfo(tx.id) } returns Optional.of( TxInfo( height = mockk(), tx = tx, - ) + ), ) scheduledTxTracker.trackPendingTx() verify { txService.utxInfo() } @@ -147,7 +147,7 @@ internal class ScheduledTxTrackerTest { fun `should set tx status to failure when timeout reached and no transactionInfo`() { val tx = TestDataFactory.createContractTx( id = TxId.fromBase58("C2HM9q3QzGSBydnCA4GMcf3cFnTaSuwaWXVtsCSTSmZW"), - timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()) + timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()), ) mockTrackedTxs(listOf(tx)) @@ -174,7 +174,7 @@ internal class ScheduledTxTrackerTest { fun `should set tx status to success when timeout reached but transactionInfo is present`() { val tx = TestDataFactory.createContractTx( id = TxId.fromBase58("C2HM9q3QzGSBydnCA4GMcf3cFnTaSuwaWXVtsCSTSmZW"), - timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()) + timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()), ) mockTrackedTxs(listOf(tx)) @@ -182,7 +182,7 @@ internal class ScheduledTxTrackerTest { TxInfo( height = mockk(), tx = tx, - ) + ), ) scheduledTxTracker.trackPendingTx() verify { txService.utxInfo() } @@ -220,7 +220,7 @@ internal class ScheduledTxTrackerTest { fun `should set status failure only for not contract tx when timeout reached`() { val tx = TestDataFactory.createPolicyTx( id = TxId.fromBase58("C2HM9q3QzGSBydnCA4GMcf3cFnTaSuwaWXVtsCSTSmZW"), - timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()) + timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()), ) mockTrackedTxs(listOf(tx)) every { txService.txInfo(tx.id) } returns Optional.empty() @@ -247,7 +247,7 @@ internal class ScheduledTxTrackerTest { fun `should not set status to tx in UTX atomic`() { val tx = TestDataFactory.createPolicyTx( id = TxId.fromBase58("C2HM9q3QzGSBydnCA4GMcf3cFnTaSuwaWXVtsCSTSmZW"), - timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()) + timestamp = Timestamp(Instant.now().minus(txTimeout + Duration.ofMinutes(1)).toEpochMilli()), ) mockTrackedTxs(listOf(tx)) @@ -269,7 +269,7 @@ internal class ScheduledTxTrackerTest { every { txTracker.getTrackedTxsWithStatus( TxTrackStatus.PENDING, - PageRequest.of(0, 1000) + PageRequest.of(0, 1000), ) } returns txList } diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerConfigTest.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerConfigTest.kt index 50e7781..5a705f8 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerConfigTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/TxTrackerConfigTest.kt @@ -26,8 +26,8 @@ import org.springframework.boot.test.context.SpringBootTest ], properties = [ "tx-tracker.enabled = true", - "debug=true" - ] + "debug=true", + ], ) internal class TxTrackerConfigTest { @@ -52,7 +52,9 @@ internal class TxTrackerConfigTest { val listToBeSentToSubscriber = sampleTxList.map { if (it is ExecutableTx) { TestDataFactory.executedContractTx(id = TxId.fromByteArray(Util.randomBytesFromUUID()), tx = it) - } else it + } else { + it + } }.toList() every { txTracker.existsInTracker(any()) diff --git a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/jpa/TxTrackerJpaRepositoryTest.kt b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/jpa/TxTrackerJpaRepositoryTest.kt index 6a5eee2..e4f3c43 100644 --- a/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/jpa/TxTrackerJpaRepositoryTest.kt +++ b/we-tx-tracker-module/we-tx-tracker-starter/src/test/kotlin/com/wavesenterprise/sdk/tx/tracker/starter/jpa/TxTrackerJpaRepositoryTest.kt @@ -10,6 +10,9 @@ import com.wavesenterprise.sdk.tx.tracker.domain.TxTrackInfo import com.wavesenterprise.sdk.tx.tracker.domain.TxTrackStatus import com.wavesenterprise.sdk.tx.tracker.jpa.TxTrackerJpaAutoConfig import com.wavesenterprise.sdk.tx.tracker.jpa.repository.TxTrackerJpaRepository +import jakarta.persistence.EntityManager +import jakarta.persistence.PersistenceContext +import jakarta.persistence.PersistenceException import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.core.Is.`is` import org.hibernate.exception.ConstraintViolationException @@ -23,9 +26,6 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration import java.util.UUID -import javax.persistence.EntityManager -import javax.persistence.PersistenceContext -import javax.persistence.PersistenceException @DataJpaTest(properties = ["tx-tracker.enabled = true"]) @ActiveProfiles("test") @@ -34,7 +34,7 @@ import javax.persistence.PersistenceException DataSourceAutoConfiguration::class, TxTrackerJpaAutoConfig::class, FlywaySchemaConfiguration::class, - ] + ], ) @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) class TxTrackerJpaRepositoryTest { @@ -54,14 +54,14 @@ class TxTrackerJpaRepositoryTest { @EnumSource( value = TxType::class, names = ["CREATE_CONTRACT", "CALL_CONTRACT", "DISABLE_CONTRACT", "UPDATE_CONTRACT"], - mode = EnumSource.Mode.INCLUDE + mode = EnumSource.Mode.INCLUDE, ) fun `should throw sql constraint violation when tx type is one of contract modification`(type: TxType) { assertThrows { txTrackerJpaRepository.save(buildTxTrackInfo(type = type)) em.flushAndClear() }.apply { - assertThat((cause as ConstraintViolationException).constraintName, `is`("contract_id_null_check")) + assertThat((this as ConstraintViolationException).constraintName, `is`("contract_id_null_check")) } } @@ -69,7 +69,7 @@ class TxTrackerJpaRepositoryTest { @EnumSource( value = TxType::class, names = ["CREATE_CONTRACT", "CALL_CONTRACT", "DISABLE_CONTRACT", "UPDATE_CONTRACT"], - mode = EnumSource.Mode.EXCLUDE + mode = EnumSource.Mode.EXCLUDE, ) fun `should doesn't throw exception when tx type is not contract modification`(type: TxType) { txTrackerJpaRepository.save(buildTxTrackInfo(type = type))