From 8c4dd7087660c66e3263933af0038d45b6888d9f Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 9 Jan 2023 09:22:56 +0000 Subject: [PATCH 01/16] draft changes --- build.gradle | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 37aa88b30..3c767812f 100644 --- a/build.gradle +++ b/build.gradle @@ -207,7 +207,8 @@ allprojects { annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion implementation group: 'org.projectlombok', name: 'lombok', version: lombokVersion testImplementation group: 'org.projectlombok', name: 'lombok', version: lombokVersion - + testImplementation 'junit:junit:4.13' + testImplementation 'io.rest-assured:rest-assured:4.3.0' testImplementation ("org.springframework.boot:spring-boot-starter-test:${springBootVersion}"){ exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } @@ -512,7 +513,8 @@ subprojects { subproject -> environment("AZURE_APPLICATIONINSIGHTS_INSTRUMENTATIONKEY", "some-key") generateCucumberReports.enabled = false useJUnit() - + useJUnitPlatform() + testLogging { events "passed", "skipped", "failed" } From 96ba018717095d67af124019b70ffc075fc34cba Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 13 Feb 2023 09:26:54 +0000 Subject: [PATCH 02/16] Update build.gradle --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 3c767812f..8740aa4c6 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,7 @@ plugins { id "com.jfrog.bintray" version "1.8.5" apply false id "info.solidsoft.pitest" version '1.5.1' apply(false) id "org.jetbrains.gradle.plugin.idea-ext" version "0.7" + id "info.solidsoft.pitest" version '1.5.1' } group = 'uk.gov.hmcts.civil.sdt' From be40611d1923c05c3a2226dc47b8977a46f5bda1 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 13 Feb 2023 09:29:34 +0000 Subject: [PATCH 03/16] Update build.gradle --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 8740aa4c6..8c1e46861 100644 --- a/build.gradle +++ b/build.gradle @@ -449,6 +449,8 @@ subprojects { subproject -> property "sonar.sources", "src" property "sonar.tests", "src" property "sonar.test.inclusions", "**/unit-test/**,**/integ-test/**" + property "sonar.pitest.mode", "reuseReport" + property "sonar.pitest.reportsDirectory", "build/reports/pitest" } } From fba92de1c63a7aadf2ac4fba8afd2b6386b2e27b Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 13 Feb 2023 09:37:39 +0000 Subject: [PATCH 04/16] Update build.gradle --- build.gradle | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/build.gradle b/build.gradle index 8c1e46861..d226a40c2 100644 --- a/build.gradle +++ b/build.gradle @@ -441,6 +441,10 @@ subprojects { subproject -> tests to fail when running under openJDK 11.0.17 and above. This dependency can be removed when the bug is fixed. */ testImplementation group: 'xerces', name: 'xercesImpl', version: '2.12.2' + + compile group: 'org.pitest', name: 'pitest', version: versions.pitest + compile 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.4.6' + compile 'org.codehaus.sonar-plugins:sonar-pitest-plugin:0.5' } sonarqube { @@ -453,6 +457,12 @@ subprojects { subproject -> property "sonar.pitest.reportsDirectory", "build/reports/pitest" } } + + def versions = [ + pitest : '1.5.1', + gradlePitest : '1.3.0', + sonarPitest : '0.5' +] // from https://github.com/junit-team/junit5/issues/1024' afterEvaluate { @@ -671,3 +681,23 @@ cucumberReports { outputDir = file("${rootDir}/target/cucumber") reports = files("${rootDir}/target/cucumber.json") } + +pitest { + targetClasses = [] + excludedClasses = [] + enableDefaultIncrementalAnalysis = true + historyInputLocation = 'build/reports/pitest/fastermutationtesting' + historyOutputLocation = 'build/reports/pitest/fastermutationtestingoutput' + threads = 15 + testSourceSets = [sourceSets.test] + mainSourceSets = [sourceSets.main] + fileExtensionsToFilter.addAll('xml', 'json') + outputFormats = ['XML', 'HTML', 'CSV'] + mutationThreshold = 0 + coverageThreshold = 0 + maxMutationsPerClass = 15 + jvmArgs = ['-Xms1G', '-Xmx3G'] + timestampedReports = false + failWhenNoMutations = false + detectInlinedCode = true +} From 4839da71653b49f8e3e1dde320f84fe12b6a3213 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 13 Feb 2023 10:28:06 +0000 Subject: [PATCH 05/16] Update build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d226a40c2..814b02815 100644 --- a/build.gradle +++ b/build.gradle @@ -683,7 +683,7 @@ cucumberReports { } pitest { - targetClasses = [] + targetClasses = ['uk.gov.moj.sdt.validators.*'] excludedClasses = [] enableDefaultIncrementalAnalysis = true historyInputLocation = 'build/reports/pitest/fastermutationtesting' From fec9480c468c8e5f60099f310c7ec882bea00676 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 13 Feb 2023 10:29:33 +0000 Subject: [PATCH 06/16] Update Jenkinsfile_CNP --- Jenkinsfile_CNP | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile_CNP b/Jenkinsfile_CNP index 5ae4b93eb..20610fa33 100644 --- a/Jenkinsfile_CNP +++ b/Jenkinsfile_CNP @@ -10,4 +10,5 @@ withPipeline(type, product, component) { enableAksStagingDeployment() disableLegacyDeployment() nonServiceApp() + enableMutationTest() } From 15969a8fcd7304bd7616aafc2160ca1f4a167e24 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 09:18:27 +0000 Subject: [PATCH 07/16] Update build.gradle --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index e3f371c9f..9bdade107 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,6 @@ plugins { id 'org.sonarqube' version '3.4.0.2513' id 'uk.gov.hmcts.java' version '0.12.27' id "com.jfrog.bintray" version "1.8.5" apply false - id "info.solidsoft.pitest" version '1.5.1' apply(false) id "org.jetbrains.gradle.plugin.idea-ext" version "0.7" id "info.solidsoft.pitest" version '1.5.1' } From baf4a7b1a4b2c8adf2fb80e9b5575350187482f9 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 09:22:59 +0000 Subject: [PATCH 08/16] Update build.gradle --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 9bdade107..3c3b83c35 100644 --- a/build.gradle +++ b/build.gradle @@ -466,7 +466,6 @@ subprojects { subproject -> tests to fail when running under openJDK 11.0.17 and above. This dependency can be removed when the bug is fixed. */ testImplementation group: 'xerces', name: 'xercesImpl', version: '2.12.2' - compile group: 'org.pitest', name: 'pitest', version: versions.pitest compile 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.4.6' compile 'org.codehaus.sonar-plugins:sonar-pitest-plugin:0.5' From 319121e5fba2b18b75edb8fe7243ad971f549ce7 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 10:48:18 +0000 Subject: [PATCH 09/16] Update build.gradle --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 3c3b83c35..844919a47 100644 --- a/build.gradle +++ b/build.gradle @@ -466,9 +466,9 @@ subprojects { subproject -> tests to fail when running under openJDK 11.0.17 and above. This dependency can be removed when the bug is fixed. */ testImplementation group: 'xerces', name: 'xercesImpl', version: '2.12.2' - compile group: 'org.pitest', name: 'pitest', version: versions.pitest - compile 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.4.6' - compile 'org.codehaus.sonar-plugins:sonar-pitest-plugin:0.5' + testImplementation group: 'org.pitest', name: 'pitest', version: versions.pitest + testImplementation group: 'info.solidsoft.gradle.pitest', name: 'gradle-pitest-plugin', version: '1.4.6' + testImplementation group: 'org.codehaus.sonar-plugins', name: 'sonar-pitest-plugin', version: '0.5' } sonarqube { From cae46779ba87d0ca47c47b5b3f4061e465352737 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 10:49:10 +0000 Subject: [PATCH 10/16] Update build.gradle --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 844919a47..a12f413a2 100644 --- a/build.gradle +++ b/build.gradle @@ -455,7 +455,6 @@ subprojects { subproject -> exclude group: 'junit', module: 'junit' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - testImplementation group: 'info.solidsoft.gradle.pitest', name: 'gradle-pitest-plugin', version: '1.4.0' testImplementation group: 'org.easymock', name: 'easymock', version: '5.0.1' testImplementation group: 'org.jdom', name: 'jdom2', version: '2.0.6.1' testImplementation group: 'org.dbunit', name: 'dbunit', version: '2.7.3' From ff9ef045998b39c953be3ad42cbfc6fd83f50589 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 11:45:45 +0000 Subject: [PATCH 11/16] Update build.gradle --- build.gradle | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index a12f413a2..de6609352 100644 --- a/build.gradle +++ b/build.gradle @@ -372,6 +372,12 @@ subprojects { subproject -> } } } + + def versions = [ + pitest : '1.5.1', + gradlePitest : '1.3.0', + sonarPitest : '0.5' + ] dependencies { // Add azure service bus @@ -480,12 +486,6 @@ subprojects { subproject -> property "sonar.pitest.reportsDirectory", "build/reports/pitest" } } - - def versions = [ - pitest : '1.5.1', - gradlePitest : '1.3.0', - sonarPitest : '0.5' -] // from https://github.com/junit-team/junit5/issues/1024' afterEvaluate { From 4a3fe958f095bced3fa925b018233a6787b92ca5 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 12:11:49 +0000 Subject: [PATCH 12/16] Update suppressions.xml --- config/owasp/suppressions.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/owasp/suppressions.xml b/config/owasp/suppressions.xml index d74f0a304..361231963 100644 --- a/config/owasp/suppressions.xml +++ b/config/owasp/suppressions.xml @@ -19,6 +19,7 @@ CVE-2018-10237 CVE-2016-3094 CVE-2022-45143 + CVE-2022-40152 CVE-2022-46363 CVE-2022-46364 @@ -26,6 +27,7 @@ CVE-2018-10237 CVE-2016-3094 CVE-2022-45143 + CVE-2022-40152 From f4d958f81232ef155c6724a40476897029c84297 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Feb 2023 12:33:23 +0000 Subject: [PATCH 13/16] Update Jenkinsfile_CNP --- Jenkinsfile_CNP | 1 - 1 file changed, 1 deletion(-) diff --git a/Jenkinsfile_CNP b/Jenkinsfile_CNP index 20610fa33..938809af2 100644 --- a/Jenkinsfile_CNP +++ b/Jenkinsfile_CNP @@ -9,6 +9,5 @@ def component = "sdt" withPipeline(type, product, component) { enableAksStagingDeployment() disableLegacyDeployment() - nonServiceApp() enableMutationTest() } From 4689dd49ce3d4de5050b89dfd6fe5ce8cb64f818 Mon Sep 17 00:00:00 2001 From: ridoutp Date: Mon, 13 Mar 2023 16:53:17 +0000 Subject: [PATCH 14/16] SDT-78: Updated mutation test settings - Changed mutation (pitest) test settings in main build.gradle file. Moved pitest task inside subprojects section. Classes to scan are now defined in module build.gradle files. - Added pitest section to module build.gradle files to specify classes and test classes to scan. - Removed testImplementations from module build.gradle files that weren't required. These were causing issues with mutation test class scanning where the same package path was in more than one module. - Removed pitest apply plugin command from module build.gradle files. This is now being applied in main build.gradle subprojects section. - Tidied up LoggingContextTest class. Changed getNextLoggingIdTest() as it was failing during mutation test due to multiple threads changing logging id. --- build.gradle | 56 ++++++++----------- consumers/build.gradle | 18 ++---- dao-api/build.gradle | 10 ++-- dao/build.gradle | 11 ++-- domain/build.gradle | 9 ++- handlers-api/build.gradle | 14 ++--- handlers/build.gradle | 20 ++----- interceptors/build.gradle | 14 ++--- producers-api/build.gradle | 6 +- producers-commissioning/build.gradle | 2 - producers/build.gradle | 16 ++---- sdt-consumer-sample/build.gradle | 2 - services-api/build.gradle | 10 ++-- services/build.gradle | 20 ++----- transformers/build.gradle | 12 ++-- utils/build.gradle | 7 ++- .../sdt/utils/logging/LoggingContextTest.java | 39 ++++++------- validators/build.gradle | 14 ++--- 18 files changed, 117 insertions(+), 163 deletions(-) diff --git a/build.gradle b/build.gradle index 78c2efe34..f0e877a16 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ plugins { id 'uk.gov.hmcts.java' version '0.12.27' id "com.jfrog.bintray" version "1.8.5" apply false id "org.jetbrains.gradle.plugin.idea-ext" version "0.7" - id "info.solidsoft.pitest" version '1.5.1' + id "info.solidsoft.pitest" version '1.5.1' apply false } group = 'uk.gov.hmcts.civil.sdt' @@ -315,6 +315,7 @@ subprojects { subproject -> apply plugin: 'io.spring.dependency-management' apply plugin: 'jacoco' apply plugin: 'uk.gov.hmcts.java' + apply plugin: 'info.solidsoft.pitest' sourceSets { unitTest { @@ -371,12 +372,6 @@ subprojects { subproject -> } } } - - def versions = [ - pitest : '1.5.1', - gradlePitest : '1.3.0', - sonarPitest : '0.5' - ] dependencies { // Add azure service bus @@ -470,11 +465,10 @@ subprojects { subproject -> tests to fail when running under openJDK 11.0.17 and above. This dependency can be removed when the bug is fixed. */ testImplementation group: 'xerces', name: 'xercesImpl', version: '2.12.2' - testImplementation group: 'org.pitest', name: 'pitest', version: versions.pitest - testImplementation group: 'info.solidsoft.gradle.pitest', name: 'gradle-pitest-plugin', version: '1.4.6' + testImplementation group: 'org.codehaus.sonar-plugins', name: 'sonar-pitest-plugin', version: '0.5' } - + sonarqube { properties { property "sonar.sources", "src" @@ -548,8 +542,7 @@ subprojects { subproject -> environment("AZURE_APPLICATIONINSIGHTS_INSTRUMENTATIONKEY", "some-key") generateCucumberReports.enabled = false useJUnit() - useJUnitPlatform() - + testLogging { events "passed", "skipped", "failed" } @@ -596,6 +589,25 @@ subprojects { subproject -> test.finalizedBy jacocoTestReport check.dependsOn jacocoTestReport + + pitest { + // Note: targetClasses and targetTests are defined in each module's build.gradle file + enableDefaultIncrementalAnalysis = true + historyInputLocation = 'build/reports/pitest/fastermutationtesting' + historyOutputLocation = 'build/reports/pitest/fastermutationtestingoutput' + threads = 15 + testSourceSets = [sourceSets.unitTest] + fileExtensionsToFilter.addAll('xml', 'json') + outputFormats = ['XML', 'HTML', 'CSV'] + mutationThreshold = 0 + coverageThreshold = 0 + maxMutationsPerClass = 15 + jvmArgs = ['-Xms1G', '-Xmx3G'] + timestampedReports = false + failWhenNoMutations = false + detectInlinedCode = true + junit5PluginVersion = '0.14' + } } // end::subprojects[] @@ -731,23 +743,3 @@ cucumberReports { outputDir = file("${rootDir}/target/cucumber") reports = files("${rootDir}/target/cucumber.json") } - -pitest { - targetClasses = ['uk.gov.moj.sdt.validators.*'] - excludedClasses = [] - enableDefaultIncrementalAnalysis = true - historyInputLocation = 'build/reports/pitest/fastermutationtesting' - historyOutputLocation = 'build/reports/pitest/fastermutationtestingoutput' - threads = 15 - testSourceSets = [sourceSets.test] - mainSourceSets = [sourceSets.main] - fileExtensionsToFilter.addAll('xml', 'json') - outputFormats = ['XML', 'HTML', 'CSV'] - mutationThreshold = 0 - coverageThreshold = 0 - maxMutationsPerClass = 15 - jvmArgs = ['-Xms1G', '-Xmx3G'] - timestampedReports = false - failWhenNoMutations = false - detectInlinedCode = true -} diff --git a/consumers/build.gradle b/consumers/build.gradle index 1a273653b..d2942584f 100644 --- a/consumers/build.gradle +++ b/consumers/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-consumers' @@ -16,18 +14,9 @@ dependencies { implementation project(':producers') implementation project(':transformers') implementation project(':utils') - testImplementation project(':interceptors').sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.unitTest.output - testImplementation project(":producers-api").sourceSets.unitTest.output - testImplementation project(":producers").sourceSets.unitTest.output - testImplementation project(":transformers").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(':interceptors').sourceSets.integTest.output - testImplementation project(":domain").sourceSets.integTest.output - testImplementation project(":producers-api").sourceSets.integTest.output - testImplementation project(":producers").sourceSets.integTest.output - testImplementation project(":transformers").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -38,3 +27,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.consumers.*'] + targetTests = ['uk.gov.moj.sdt.consumers.*'] +} diff --git a/dao-api/build.gradle b/dao-api/build.gradle index e1c40bcee..cd708a6ad 100644 --- a/dao-api/build.gradle +++ b/dao-api/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-dao-api' @@ -12,10 +10,9 @@ dependencyCheck { dependencies { implementation project(':domain') implementation project(':utils') - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -30,3 +27,8 @@ tasks.withType(Test) { sonarqube { skipProject = true } + +pitest { + targetClasses = ['uk.gov.moj.sdt.dao.api.*'] + targetTests = ['uk.gov.moj.sdt.dao.api.*'] +} diff --git a/dao/build.gradle b/dao/build.gradle index 21171f06a..d2705ddcd 100644 --- a/dao/build.gradle +++ b/dao/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-dao' @@ -13,12 +11,9 @@ dependencies { implementation project(':dao-api') implementation project(':domain') implementation project(':utils') - testImplementation project(":dao-api").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":dao-api").sourceSets.integTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -30,3 +25,7 @@ tasks.withType(Test) { useJUnitPlatform() } +pitest { + targetClasses = ['uk.gov.moj.sdt.dao.*'] + targetTests = ['uk.gov.moj.sdt.dao.*'] +} diff --git a/domain/build.gradle b/domain/build.gradle index 14fdc7c1c..dacb5aaec 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -1,8 +1,6 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true - archiveBaseName = 'civil-sdt-domin' + archiveBaseName = 'civil-sdt-domain' } dependencyCheck { @@ -22,3 +20,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.domain.*'] + targetTests = ['uk.gov.moj.sdt.domain.*'] +} diff --git a/handlers-api/build.gradle b/handlers-api/build.gradle index bd1de0b0f..c5f907885 100644 --- a/handlers-api/build.gradle +++ b/handlers-api/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-handlers-api' @@ -14,15 +12,10 @@ dependencies { implementation project(":utils") implementation project(":producers-api") implementation project(":validators") - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":producers-api").sourceSets.unitTest.output - testImplementation project(":validators").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output - testImplementation project(":producers-api").sourceSets.integTest.output - testImplementation project(":validators").sourceSets.integTest.output } bootJar { @@ -32,3 +25,8 @@ bootJar { sonarqube { skipProject = true } + +pitest { + targetClasses = ['uk.gov.moj.sdt.handlers.*'] + targetTests = ['uk.gov.moj.sdt.handlers.*'] +} diff --git a/handlers/build.gradle b/handlers/build.gradle index f55fc515a..265325a14 100644 --- a/handlers/build.gradle +++ b/handlers/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-handlers' @@ -17,21 +15,10 @@ dependencies { implementation project(':services-api') implementation project(':transformers') implementation project(':validators') - testImplementation project(":domain").sourceSets.unitTest.output - testImplementation project(":handlers-api").sourceSets.unitTest.output - testImplementation project(":producers-api").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(':services-api').sourceSets.unitTest.output - testImplementation project(':transformers').sourceSets.unitTest.output - testImplementation project(':validators').sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.integTest.output - testImplementation project(":handlers-api").sourceSets.integTest.output - testImplementation project(":producers-api").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output - testImplementation project(':services-api').sourceSets.integTest.output - testImplementation project(':transformers').sourceSets.integTest.output - testImplementation project(':validators').sourceSets.integTest.output } bootJar { @@ -41,3 +28,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.handlers.*'] + targetTests = ['uk.gov.moj.sdt.handlers.*'] +} diff --git a/interceptors/build.gradle b/interceptors/build.gradle index 1091f99e2..8d5e06129 100644 --- a/interceptors/build.gradle +++ b/interceptors/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-interceptors' @@ -14,14 +12,9 @@ dependencies { implementation project(':dao-api') implementation project(':domain') implementation project(':utils') - testImplementation project(":dao").sourceSets.unitTest.output - testImplementation project(":dao-api").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":dao").sourceSets.integTest.output - testImplementation project(":dao-api").sourceSets.integTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -32,3 +25,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.interceptors.*'] + targetTests = ['uk.gov.moj.sdt.interceptors.*'] +} diff --git a/producers-api/build.gradle b/producers-api/build.gradle index c813f8b91..c6b28db0b 100644 --- a/producers-api/build.gradle +++ b/producers-api/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - sourceSets.main.java.srcDirs += "src-gen/main/java" jar { @@ -14,10 +12,9 @@ dependencyCheck { dependencies { implementation project(':domain') implementation project(':utils') - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -82,4 +79,3 @@ task targetAppInternalEndpointWsdl2Java(type: JavaExec) { compileJava.dependsOn 'sdtEndPointWsdl2Java' compileJava.dependsOn 'sdtInternalEndpointWsdl2Java' compileJava.dependsOn 'targetAppInternalEndpointWsdl2Java' - diff --git a/producers-commissioning/build.gradle b/producers-commissioning/build.gradle index 22271a90b..1f93743a3 100644 --- a/producers-commissioning/build.gradle +++ b/producers-commissioning/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - dependencyCheck { suppressionFile = "${rootDir}/config/owasp/suppressions.xml" } diff --git a/producers/build.gradle b/producers/build.gradle index b6e95ed02..7e67d3353 100644 --- a/producers/build.gradle +++ b/producers/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-producers' @@ -15,17 +13,10 @@ dependencies { implementation project(':utils') implementation project(':producers-api') implementation project(':handlers-api') - testImplementation project(":handlers").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(':producers-api').sourceSets.unitTest.output - testImplementation project(":handlers-api").sourceSets.unitTest.output - testImplementation project(":handlers").sourceSets.integTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output - testImplementation project(':producers-api').sourceSets.integTest.output - testImplementation project(":handlers-api").sourceSets.integTest.output } bootJar { @@ -35,3 +26,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.producers.*'] + targetTests = ['uk.gov.moj.sdt.producers.*'] +} diff --git a/sdt-consumer-sample/build.gradle b/sdt-consumer-sample/build.gradle index 5a8774cf1..49759c2e0 100644 --- a/sdt-consumer-sample/build.gradle +++ b/sdt-consumer-sample/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - dependencyCheck { suppressionFile = "${rootDir}/config/owasp/suppressions.xml" } diff --git a/services-api/build.gradle b/services-api/build.gradle index 675091365..fbb9ad9de 100644 --- a/services-api/build.gradle +++ b/services-api/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-services-api' @@ -12,10 +10,9 @@ dependencyCheck { dependencies { implementation project(':domain') implementation project(':utils') - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -30,3 +27,8 @@ tasks.withType(Test) { sonarqube { skipProject = true } + +pitest { + targetClasses = ['uk.gov.moj.sdt.services.*'] + targetTests = ['uk.gov.moj.sdt.services.*'] +} diff --git a/services/build.gradle b/services/build.gradle index 2913fd194..613d2c0ad 100644 --- a/services/build.gradle +++ b/services/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-services' @@ -18,23 +16,12 @@ dependencies { implementation project(':services-api') implementation project(':utils') implementation project(':validators') - testImplementation project(":consumers").sourceSets.unitTest.output - testImplementation project(":dao").sourceSets.unitTest.output - testImplementation project(":dao-api").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.unitTest.output - testImplementation project(":interceptors").sourceSets.unitTest.output - testImplementation project(":services-api").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":validators").sourceSets.unitTest.output testImplementation project(":consumers").sourceSets.integTest.output testImplementation project(":dao").sourceSets.integTest.output - testImplementation project(":dao-api").sourceSets.integTest.output - testImplementation project(":domain").sourceSets.integTest.output - testImplementation project(":interceptors").sourceSets.integTest.output - testImplementation project(":services-api").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output - testImplementation project(":validators").sourceSets.integTest.output } bootJar { @@ -44,3 +31,8 @@ bootJar { tasks.withType(Test) { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.services.*'] + targetTests = ['uk.gov.moj.sdt.services.*'] +} diff --git a/transformers/build.gradle b/transformers/build.gradle index 6336a72d9..95b297336 100644 --- a/transformers/build.gradle +++ b/transformers/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-transformers' @@ -13,12 +11,9 @@ dependencies { implementation project(':domain') implementation project(':producers-api') implementation project(':utils') - testImplementation project(":domain").sourceSets.unitTest.output - testImplementation project(":producers-api").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.integTest.output - testImplementation project(":producers-api").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -29,3 +24,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.transformers.*'] + targetTests = ['uk.gov.moj.sdt.transformers.*'] +} diff --git a/utils/build.gradle b/utils/build.gradle index 308a82bcb..25cb5afdf 100644 --- a/utils/build.gradle +++ b/utils/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-utils' @@ -16,3 +14,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.utils.*'] + targetTests = ['uk.gov.moj.sdt.utils.*'] +} diff --git a/utils/src/unit-test/java/uk/gov/moj/sdt/utils/logging/LoggingContextTest.java b/utils/src/unit-test/java/uk/gov/moj/sdt/utils/logging/LoggingContextTest.java index e2f655322..9e3617adf 100644 --- a/utils/src/unit-test/java/uk/gov/moj/sdt/utils/logging/LoggingContextTest.java +++ b/utils/src/unit-test/java/uk/gov/moj/sdt/utils/logging/LoggingContextTest.java @@ -30,28 +30,24 @@ * $LastChangedBy: $ */ package uk.gov.moj.sdt.utils.logging; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - +import uk.gov.moj.sdt.utils.AbstractSdtUnitTestBase; +import uk.gov.moj.sdt.utils.logging.api.ILoggingContext; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import uk.gov.moj.sdt.utils.logging.api.ILoggingContext; +import static org.junit.jupiter.api.Assertions.assertTrue; -class LoggingContextTest { +class LoggingContextTest extends AbstractSdtUnitTestBase { ILoggingContext loggingContext; - @BeforeEach - public void setUpLocalTests() { + @Override + public void setUpLocalTests() { loggingContext = new LoggingContext(); - } - @Test - void setMinorLoggingIdTest(){ + void setMinorLoggingIdTest() { //given @@ -62,7 +58,7 @@ void setMinorLoggingIdTest(){ } @Test - void setMajorLoggingIdTest(){ + void setMajorLoggingIdTest() { //given @@ -73,7 +69,7 @@ void setMajorLoggingIdTest(){ } @Test - void getLoggingIdTest(){ + void getLoggingIdTest() { //given @@ -85,7 +81,7 @@ void getLoggingIdTest(){ } @Test - void getLoggingMajorIdOnlyTest(){ + void getLoggingMajorIdOnlyTest() { //given //when @@ -96,15 +92,12 @@ void getLoggingMajorIdOnlyTest(){ } @Test - void getNextLoggingIdTest(){ + void getNextLoggingIdTest() { - //given - - //when - loggingContext.setMinorLoggingId(1L); - loggingContext.setMajorLoggingId(2L); - - //then - assertEquals(1L, LoggingContext.getNextLoggingId()); + // Threads created by mutation tests cause the static logging id to be incremented more than once. To + // prevent "Test will only pass if mutated" error during mutation test just check that logging id is + // incremented by getNextLoggingId() rather than the value returned being equal to an expected value. + long loggingId = LoggingContext.getNextLoggingId(); + assertTrue(LoggingContext.getNextLoggingId() > loggingId, "LoggingId should have been incremented"); } } diff --git a/validators/build.gradle b/validators/build.gradle index 4b7737091..cf3d8423f 100644 --- a/validators/build.gradle +++ b/validators/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'info.solidsoft.pitest' - jar { enabled = true archiveBaseName = 'civil-sdt-validators' @@ -14,14 +12,9 @@ dependencies { implementation project(':dao-api') implementation project(':domain') implementation project(':utils') - testImplementation project(":dao").sourceSets.unitTest.output - testImplementation project(":dao-api").sourceSets.unitTest.output - testImplementation project(":domain").sourceSets.unitTest.output + testImplementation project(":utils").sourceSets.unitTest.output - testImplementation project(":dao").sourceSets.integTest.output - testImplementation project(":dao-api").sourceSets.integTest.output - testImplementation project(":domain").sourceSets.integTest.output testImplementation project(":utils").sourceSets.integTest.output } @@ -32,3 +25,8 @@ bootJar { test { useJUnitPlatform() } + +pitest { + targetClasses = ['uk.gov.moj.sdt.validators.*'] + targetTests = ['uk.gov.moj.sdt.validators.*'] +} From d41ba7c375a7aa867b634700316f7ed09c9d672f Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Mon, 13 Mar 2023 21:00:25 +0000 Subject: [PATCH 15/16] Update suppressions.xml --- config/owasp/suppressions.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/owasp/suppressions.xml b/config/owasp/suppressions.xml index 4376c0f28..a5d4cc078 100644 --- a/config/owasp/suppressions.xml +++ b/config/owasp/suppressions.xml @@ -5,7 +5,9 @@ From 4375575bf388dd366ea3ddf387b65ed96f4a17c9 Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Tue, 14 Mar 2023 12:26:03 +0000 Subject: [PATCH 16/16] Update Jenkinsfile_CNP --- Jenkinsfile_CNP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile_CNP b/Jenkinsfile_CNP index 938809af2..5ae4b93eb 100644 --- a/Jenkinsfile_CNP +++ b/Jenkinsfile_CNP @@ -9,5 +9,5 @@ def component = "sdt" withPipeline(type, product, component) { enableAksStagingDeployment() disableLegacyDeployment() - enableMutationTest() + nonServiceApp() }