Skip to content

Commit

Permalink
Bug/fixtest (#13)
Browse files Browse the repository at this point in the history
* disabled parallel mode for tests
* Fixed ComponentsRegistryDSLTest#testProductTypes
* refactored setup/init/logging in EscrowConfigurationLoaderTest,BuildToolsResolverTests
* improved logging in EscrowConfigurationLoaderTest
* added EscrowBean#toString
* Improved logging of dsl loading
  • Loading branch information
pgorbachev committed Sep 4, 2023
1 parent fdb124a commit 4b4d349
Show file tree
Hide file tree
Showing 10 changed files with 138 additions and 72 deletions.
4 changes: 3 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,9 @@ configure(subprojects) {
test {
useJUnitPlatform()
systemProperties = [
'junit.jupiter.execution.parallel.enabled': true
//NOTE: when parallel.enabled = true EscrowConfigurationLoaderTest + BuildToolResolverTest
// can fail sporadically on GH
'junit.jupiter.execution.parallel.enabled': false
]
}

Expand Down
2 changes: 2 additions & 0 deletions component-resolver-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ dependencies {
implementation "org.codehaus.groovy.modules.http-builder:http-builder:0.7.1"
testImplementation "org.springframework:spring-test:4.1.2.RELEASE"
testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.21.0'
testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.7'
testImplementation "org.apache.logging.log4j:log4j-core:${project['log4j2.version']}"
}

sourceSets {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
package org.octopusden.octopus.escrow.configuration.loader

import groovy.transform.TypeChecked
import groovy.transform.TypeCheckingMode
import org.apache.commons.lang3.StringUtils
import org.apache.commons.lang3.Validate
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException
import org.apache.maven.artifact.versioning.VersionRange
import org.octopusden.octopus.components.registry.api.Component
import org.octopusden.octopus.components.registry.api.SubComponent
import org.octopusden.octopus.components.registry.api.VersionedComponentConfiguration
Expand Down Expand Up @@ -27,21 +35,18 @@ import org.octopusden.octopus.releng.dto.ComponentInfo
import org.octopusden.octopus.releng.dto.ComponentVersion
import org.octopusden.octopus.releng.dto.JiraComponent
import org.octopusden.releng.versions.ComponentVersionFormat
import groovy.transform.TypeChecked
import groovy.transform.TypeCheckingMode
import org.apache.commons.lang3.StringUtils
import org.apache.commons.lang3.Validate
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException
import org.apache.maven.artifact.versioning.VersionRange
import org.octopusden.releng.versions.NumericVersionFactory
import org.octopusden.releng.versions.VersionNames
import org.octopusden.releng.versions.VersionRangeFactory

import java.util.stream.Collectors

import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.*
import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.BRANCH
import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.REPOSITORY_TYPE
import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.SECURITY_GROUPS_READ
import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.TAG
import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.VCS_SETTINGS
import static org.octopusden.octopus.escrow.configuration.validation.GroovySlurperConfigValidator.VCS_URL

class EscrowConfigurationLoader {
private static final Logger LOG = LogManager.getLogger(EscrowConfigurationLoader.class)
Expand Down Expand Up @@ -135,7 +140,10 @@ class EscrowConfigurationLoader {

LOG.debug("Loading DSL")
def dslComponents = configLoader.loadDslDefinedComponents()
LOG.info("Loaded $dslComponents.size DSL components")

dslComponents.forEach {component ->
LOG.debug("processing dsl $component")
mergeGroovyAndDslComponent(component, fullConfig)
component.subComponents.forEach { name, subComponent -> mergeGroovyAndDslSubComponent(subComponent, fullConfig)}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.octopusden.octopus.escrow.resolvers

import groovy.transform.TypeChecked
import groovy.util.logging.Slf4j
import org.octopusden.octopus.components.registry.api.beans.PTCProductToolBean
import org.octopusden.octopus.components.registry.api.beans.PTKProductToolBean
import org.octopusden.octopus.components.registry.api.beans.ProductToolBean
Expand All @@ -11,9 +13,9 @@ import org.octopusden.octopus.escrow.configuration.model.EscrowConfiguration
import org.octopusden.octopus.escrow.dto.DistributionEntity
import org.octopusden.octopus.escrow.utilities.DistributionUtilities
import org.octopusden.octopus.releng.dto.ComponentVersion
import groovy.transform.TypeChecked

@TypeChecked
@Slf4j
class BuildToolsResolver implements IBuildToolsResolver {
private final EscrowConfiguration configuration

Expand Down
Original file line number Diff line number Diff line change
@@ -1,45 +1,51 @@
package org.octopusden.octopus.escrow.configuration.loader

import groovy.util.logging.Slf4j
import org.apache.maven.artifact.DefaultArtifact
import org.apache.maven.artifact.versioning.VersionRange
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.MethodSource
import org.octopusden.octopus.components.registry.api.beans.GitVersionControlSystemBean
import org.octopusden.octopus.components.registry.api.beans.PTKProductToolBean
import org.octopusden.octopus.components.registry.api.beans.OracleDatabaseToolBean
import org.octopusden.octopus.components.registry.api.beans.PTKProductToolBean
import org.octopusden.octopus.components.registry.api.enums.BuildSystemType
import org.octopusden.octopus.escrow.RepositoryType
import org.octopusden.octopus.escrow.configuration.model.EscrowConfiguration
import org.octopusden.octopus.escrow.configuration.model.EscrowModule
import org.octopusden.octopus.escrow.configuration.validation.util.VersionRangeHelper
import org.octopusden.octopus.escrow.resolvers.ModuleByArtifactResolver
import org.octopusden.octopus.releng.dto.ComponentVersion
import org.apache.maven.artifact.DefaultArtifact
import org.apache.maven.artifact.versioning.VersionRange
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.MethodSource
import org.octopusden.releng.versions.NumericVersionFactory

import java.nio.file.Paths
import java.util.stream.Stream

import static org.octopusden.octopus.escrow.TestConfigUtils.PRODUCT_TYPES
import static org.octopusden.octopus.escrow.TestConfigUtils.SUPPORTED_GROUP_IDS
import static org.octopusden.octopus.escrow.TestConfigUtils.SUPPORTED_SYSTEMS
import static org.assertj.core.api.AssertionsForClassTypes.assertThat
import static org.junit.jupiter.api.Assertions.assertEquals
import static org.junit.jupiter.api.Assertions.assertNotNull
import static org.junit.jupiter.api.Assertions.assertNull
import static org.junit.jupiter.api.Assertions.assertTrue
import static org.octopusden.octopus.escrow.TestConfigUtils.PRODUCT_TYPES
import static org.octopusden.octopus.escrow.TestConfigUtils.SUPPORTED_GROUP_IDS
import static org.octopusden.octopus.escrow.TestConfigUtils.SUPPORTED_SYSTEMS
import static org.octopusden.octopus.escrow.TestConfigUtils.VERSION_NAMES
import static org.octopusden.octopus.escrow.TestConfigUtils.VERSION_RANGE_FACTORY

@Slf4j
class EscrowConfigurationLoaderTest {

static EscrowConfiguration escrowConfiguration
EscrowConfiguration escrowConfiguration
private static EscrowConfigurationLoader escrowConfigurationLoader

static {
@BeforeAll
static void init() {
def aggregatorPath = Paths.get(EscrowConfigurationLoaderTest.class.getResource("/production/Aggregator.groovy").toURI())
EscrowConfigurationLoader escrowConfigurationLoader = new EscrowConfigurationLoader(
escrowConfigurationLoader = new EscrowConfigurationLoader(
new ConfigLoader(
ComponentRegistryInfo.createFromFileSystem(
aggregatorPath.getParent().toString(),
Expand All @@ -51,6 +57,10 @@ class EscrowConfigurationLoaderTest {
SUPPORTED_SYSTEMS,
VERSION_NAMES
)
}

@BeforeEach
void setUp() {
escrowConfiguration = escrowConfigurationLoader.loadFullConfiguration(Collections.emptyMap())
}

Expand Down Expand Up @@ -154,7 +164,7 @@ class EscrowConfigurationLoaderTest {
} else {
oracle.version = "11.2"
}
assertTrue(moduleConfiguration.buildConfiguration.buildTools.contains(oracle))
assertTrue(moduleConfiguration.buildConfiguration.buildTools.contains(oracle), "${moduleConfiguration.buildConfiguration.buildTools} 1sn't contain $oracle escrowModule=$escrowModule")
}
}

Expand All @@ -165,7 +175,8 @@ class EscrowConfigurationLoaderTest {
assertTrue(moduleConfiguration.escrow.gradle.includeTestConfigurations)
assertEquals("build", moduleConfiguration.escrow.buildTask)
} else {
assertNull(moduleConfiguration.escrow.buildTask)
log.info("moduleConfiguration=$moduleConfiguration")
assertNull(moduleConfiguration.escrow.buildTask, "${moduleConfiguration.escrow.buildTask} should be empty")
}
}
}
Expand All @@ -175,7 +186,8 @@ class EscrowConfigurationLoaderTest {
getEscrowConfiguration().escrowModules.get("monitoring").moduleConfigurations.forEach { moduleConfiguration ->
def kProduct = new PTKProductToolBean()
kProduct.version = "03.49"
assertTrue(moduleConfiguration.buildConfiguration.buildTools.contains(kProduct))
log.info("moduleConfiguration=$moduleConfiguration")
assertTrue(moduleConfiguration.buildConfiguration.buildTools.contains(kProduct), "${moduleConfiguration.buildConfiguration.buildTools} doesn't contain $kProduct moduleConfiguration=$moduleConfiguration")
}
}

Expand All @@ -194,9 +206,9 @@ class EscrowConfigurationLoaderTest {

@Test
void testEmptyProduct() {
getEscrowConfiguration().escrowModules.get("component_commons").moduleConfigurations.forEach { moduleConfiguration ->
escrowConfiguration.escrowModules.get("component_commons").moduleConfigurations.forEach { moduleConfiguration ->
def product = new PTKProductToolBean()
assertTrue(moduleConfiguration.buildConfiguration.buildTools.contains(product))
assertTrue(moduleConfiguration.buildConfiguration.buildTools.contains(product), "$moduleConfiguration.buildConfiguration.buildTools doesn't contain $product")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,34 +1,47 @@
package org.octopusden.octopus.escrow.resolvers

import groovy.transform.TypeChecked
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.octopusden.octopus.components.registry.api.beans.OracleDatabaseToolBean
import org.octopusden.octopus.components.registry.api.beans.PTCProductToolBean
import org.octopusden.octopus.components.registry.api.beans.PTKProductToolBean
import org.octopusden.octopus.components.registry.api.beans.OracleDatabaseToolBean
import org.octopusden.octopus.components.registry.api.distribution.entities.MavenArtifactDistributionEntity
import org.octopusden.octopus.components.registry.api.enums.ProductTypes
import org.octopusden.octopus.escrow.configuration.loader.ComponentRegistryInfo
import org.octopusden.octopus.escrow.configuration.loader.ConfigLoader
import org.octopusden.octopus.escrow.configuration.loader.EscrowConfigurationLoader
import org.octopusden.octopus.releng.dto.ComponentVersion
import groovy.transform.TypeChecked
import org.junit.jupiter.api.Test

import java.nio.file.Paths

import static org.junit.jupiter.api.Assertions.assertEquals
import static org.junit.jupiter.api.Assertions.assertFalse
import static org.junit.jupiter.api.Assertions.assertNotNull
import static org.junit.jupiter.api.Assertions.assertTrue
import static org.octopusden.octopus.escrow.TestConfigUtils.PRODUCT_TYPES
import static org.octopusden.octopus.escrow.TestConfigUtils.SUPPORTED_GROUP_IDS
import static org.octopusden.octopus.escrow.TestConfigUtils.SUPPORTED_SYSTEMS
import static org.junit.jupiter.api.Assertions.assertNotNull
import static org.junit.jupiter.api.Assertions.assertTrue
import static org.junit.jupiter.api.Assertions.assertFalse
import static org.junit.jupiter.api.Assertions.assertEquals
import static org.octopusden.octopus.escrow.TestConfigUtils.VERSION_NAMES

@TypeChecked
class BuildToolResolverTest {

static IBuildToolsResolver buildToolsResolver
private IBuildToolsResolver buildToolsResolver
private static EscrowConfigurationLoader escrowConfigurationLoader

@BeforeAll
static void initBeforeClass() {
escrowConfigurationLoader = initEscrowConfigurationLoader()
}

@BeforeEach
void setUp() {
buildToolsResolver = initBuildToolResolver(escrowConfigurationLoader)
}

static {
private static EscrowConfigurationLoader initEscrowConfigurationLoader() {
def aggregatorPath = Paths.get(EscrowConfigurationLoaderTest.class.getResource("/production/Aggregator.groovy").toURI())
EscrowConfigurationLoader escrowConfigurationLoader = new EscrowConfigurationLoader(
new ConfigLoader(
Expand All @@ -43,7 +56,11 @@ class BuildToolResolverTest {
SUPPORTED_SYSTEMS,
VERSION_NAMES
)
buildToolsResolver = new BuildToolsResolver(escrowConfigurationLoader.loadFullConfiguration(Collections.emptyMap()))
escrowConfigurationLoader
}

private static BuildToolsResolver initBuildToolResolver(EscrowConfigurationLoader escrowConfigurationLoader) {
new BuildToolsResolver(escrowConfigurationLoader.loadFullConfiguration(Collections.emptyMap()))
}

@Test
Expand All @@ -59,7 +76,7 @@ class BuildToolResolverTest {
def tools = buildToolsResolver.getComponentBuildTools(ComponentVersion.create("app", "1.6.1"))
def oracle = new OracleDatabaseToolBean()
oracle.version = "11.2"
assertTrue(tools.contains(oracle))
assertTrue(tools.contains(oracle), "$tools doesn't contain $oracle")
def ptk = new PTKProductToolBean()
ptk.version = "03.49"
assertTrue(tools.contains(ptk))
Expand All @@ -70,7 +87,7 @@ class BuildToolResolverTest {
def tools = buildToolsResolver.getComponentBuildTools(ComponentVersion.create("app", "1.6.1"))
def ptk = new PTKProductToolBean()
ptk.version = "03.49"
assertTrue(tools.contains(ptk))
assertTrue(tools.contains(ptk), "$tools doesn't contain $ptk")

tools = buildToolsResolver.getComponentBuildTools(ComponentVersion.create("app", "1.6.1"), "03.50.30.45")
ptk.version = "03.50.30.45"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,20 @@ import org.octopusden.octopus.components.registry.api.build.Build
import org.octopusden.octopus.components.registry.api.build.BuildSystem
import org.octopusden.octopus.components.registry.api.build.tools.BuildTool
import org.octopusden.octopus.components.registry.api.build.tools.databases.DatabaseTool
import org.octopusden.octopus.components.registry.api.build.tools.products.ProductTool
import org.octopusden.octopus.components.registry.api.build.tools.databases.OracleDatabaseTool
import org.octopusden.octopus.components.registry.api.build.tools.oracle.OdbcTool
import org.octopusden.octopus.components.registry.api.build.tools.products.PTCProductTool
import org.octopusden.octopus.components.registry.api.build.tools.products.PTDDbProductTool
import org.octopusden.octopus.components.registry.api.build.tools.products.PTDProductTool
import org.octopusden.octopus.components.registry.api.build.tools.products.PTKProductTool
import org.octopusden.octopus.components.registry.api.build.tools.products.ProductTool
import org.octopusden.octopus.components.registry.api.distribution.entities.MavenArtifactDistributionEntity
import org.octopusden.octopus.components.registry.api.enums.*
import org.octopusden.octopus.components.registry.api.enums.BuildSystemType
import org.octopusden.octopus.components.registry.api.enums.BuildToolTypes
import org.octopusden.octopus.components.registry.api.enums.DatabaseTypes
import org.octopusden.octopus.components.registry.api.enums.OracleDatabaseEditions
import org.octopusden.octopus.components.registry.api.enums.ProductTypes
import org.octopusden.octopus.components.registry.api.enums.VersionControlSystemType
import org.octopusden.octopus.components.registry.api.escrow.Escrow
import org.octopusden.octopus.components.registry.api.escrow.GradleBuild
import org.octopusden.octopus.components.registry.api.model.Dependencies
Expand All @@ -30,14 +35,6 @@ import org.octopusden.octopus.components.registry.api.vcs.MultiplyVersionControl
import org.octopusden.octopus.components.registry.api.vcs.VersionControlSystem
import java.util.*
import java.util.regex.Pattern
import org.octopusden.octopus.components.registry.api.enums.BuildSystemType
import org.octopusden.octopus.components.registry.api.enums.BuildToolTypes
import org.octopusden.octopus.components.registry.api.enums.DatabaseTypes
import org.octopusden.octopus.components.registry.api.enums.OracleDatabaseEditions
import org.octopusden.octopus.components.registry.api.enums.ProductTypes
import org.octopusden.octopus.components.registry.api.enums.VersionControlSystemType
import kotlin.collections.ArrayList
import kotlin.collections.HashMap

open class OdbcToolBean:
OdbcTool {
Expand Down Expand Up @@ -88,6 +85,11 @@ open class ProductToolBean(private val type: ProductTypes, private var settingsP
result = 31 * result + (version?.hashCode() ?: 0)
return result
}

override fun toString(): String {
return "ProductToolBean(type=$type, settingsProperty='$settingsProperty', version=$version)"
}

}

open class PTCProductToolBean: ProductToolBean(ProductTypes.PT_C, "uscschema"),
Expand Down Expand Up @@ -159,6 +161,10 @@ class OracleDatabaseToolBean: DatabaseToolBean(DatabaseTypes.ORACLE, "db"),
result = 31 * result + (edition?.hashCode() ?: 0)
return result
}

override fun toString(): String {
return "OracleDatabaseToolBean(edition=$edition)"
}
}

open class GradleBuildBean: GradleBuild {
Expand Down Expand Up @@ -217,6 +223,11 @@ open class EscrowBean: Escrow {
fun setReusable(reusable: Boolean) {
this.reusable = reusable
}

override fun toString(): String {
return "EscrowBean(buildTask=$buildTask, gradle=$gradle, providedDependencies=$providedDependencies, diskSpaceRequirement=$diskSpaceRequirement, additionalSources=$additionalSources, reusable=$reusable)"
}

}

open class BuildBean: Build {
Expand Down Expand Up @@ -314,6 +325,9 @@ open class ComponentBean: SubComponentBean(),
}

override fun getSubComponents(): MutableMap<String, SubComponentBean> = subComponents
override fun toString(): String {
return "Component(productType=$productType, subComponents=$subComponents, displayName=$displayName)"
}
}

@JsonTypeName("mavenDistribution")
Expand Down
Loading

0 comments on commit 4b4d349

Please sign in to comment.