Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,72 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
assertEquals(0, runnerWithNullDatasetListSaved.datasetList!!.size)
}

@Test
fun `test createRunner and check parameterValues data`() {

logger.info(
"should create a new Runner and retrieve parameter varType from solution ignoring the one declared")
val newRunner =
makeRunner(
organizationSaved.id!!,
workspaceSaved.id!!,
solutionSaved.id!!,
"NewRunner",
mutableListOf(datasetSaved.id!!),
parametersValues =
mutableListOf(
RunnerRunTemplateParameterValue(
parameterId = "param1", value = "7", varType = "ignored_var_type")))
val newRunnerSaved =
runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, newRunner)

assertNotNull(newRunnerSaved.parametersValues)
assertTrue(newRunnerSaved.parametersValues!!.size == 1)
assertEquals("param1", newRunnerSaved.parametersValues!![0].parameterId)
assertEquals("7", newRunnerSaved.parametersValues!![0].value)
assertEquals("integer", newRunnerSaved.parametersValues!![0].varType)
}

@Test
fun `test updateRunner and check parameterValues data`() {

logger.info(
"should create a new Runner and retrieve parameter varType from solution ignoring the one declared")
val creationParameterValue =
RunnerRunTemplateParameterValue(
parameterId = "param1", value = "7", varType = "ignored_var_type")
val newRunner =
makeRunner(
organizationSaved.id!!,
workspaceSaved.id!!,
solutionSaved.id!!,
"NewRunner",
mutableListOf(datasetSaved.id!!),
parametersValues = mutableListOf(creationParameterValue))
val newRunnerSaved =
runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, newRunner)

assertNotNull(newRunnerSaved.parametersValues)
assertTrue(newRunnerSaved.parametersValues!!.size == 1)
assertEquals(creationParameterValue, newRunnerSaved.parametersValues!![0])

val newParameterValue =
RunnerRunTemplateParameterValue(
parameterId = "param1", value = "10", varType = "still_ignored_var_type")
val updateRunnerSaved =
runnerApiService.updateRunner(
organizationSaved.id!!,
workspaceSaved.id!!,
newRunnerSaved.id!!,
newRunnerSaved.apply { parametersValues = mutableListOf(newParameterValue) })

assertNotNull(updateRunnerSaved.parametersValues)
assertTrue(updateRunnerSaved.parametersValues!!.size == 1)
assertEquals("param1", updateRunnerSaved.parametersValues!![0].parameterId)
assertEquals("10", updateRunnerSaved.parametersValues!![0].value)
assertEquals("integer", updateRunnerSaved.parametersValues!![0].varType)
}

@Test
fun `test CRUD operations on Runner as Platform Admin`() {
every { getCurrentAccountIdentifier(any()) } returns "random_user_with_patform_admin_role"
Expand Down Expand Up @@ -844,6 +910,16 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
mutableListOf(
RunTemplateParameterGroup(
id = "testParameterGroups", parameters = mutableListOf("param1", "param2"))),
parameters =
mutableListOf(
RunTemplateParameter(
id = "param1",
maxValue = "10",
minValue = "0",
defaultValue = "5",
varType = "integer"),
RunTemplateParameter(id = "param2", varType = "%DATASET%"),
),
runTemplates =
mutableListOf(
RunTemplate(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ class RunnerService(
val excludeFields =
arrayOf("id", "ownerId", "organizationId", "workspaceId", "creationDate", "security")
this.runner.compareToAndMutateIfNeeded(runner, excludedFields = excludeFields)
consolidateParametersVarType()

// take newly added datasets and propagate existing ACL on it
this.runner.datasetList
Expand Down Expand Up @@ -236,6 +237,23 @@ class RunnerService(
val parameterValueList = this.runner.parametersValues ?: mutableListOf()
parameterValueList.addAll(inheritedParameterValues)
this.runner.parametersValues = parameterValueList
consolidateParametersVarType()
}
}

fun consolidateParametersVarType() {
val solutionParameters =
workspace
?.solution
?.solutionId
?.let { solutionApiService.findSolutionById(organization?.id!!, it) }
?.parameters

this.runner.parametersValues?.forEach { runnerParam ->
solutionParameters
?.find { it.id == runnerParam.parameterId }
?.varType
?.let { runnerParam.varType = it }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,7 @@ import com.cosmotech.scenario.domain.ScenarioRunTemplateParameterValue
import com.cosmotech.scenario.domain.ScenarioSecurity
import com.cosmotech.scenario.domain.ScenarioValidationStatus
import com.cosmotech.solution.SolutionApiServiceInterface
import com.cosmotech.solution.domain.Solution
import com.cosmotech.solution.domain.SolutionAccessControl
import com.cosmotech.solution.domain.SolutionSecurity
import com.cosmotech.solution.domain.*
import com.cosmotech.workspace.WorkspaceApiServiceInterface
import com.cosmotech.workspace.azure.IWorkspaceEventHubService
import com.cosmotech.workspace.azure.WorkspaceEventHubInfo
Expand Down Expand Up @@ -263,6 +261,164 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
assertTrue(scenarioListAfterDeleteAll.isEmpty())
}

@Test
fun `test createScenario without parameters`() {
every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin")

val scenarioWithoutParameters =
makeScenario(
organizationSaved.id!!,
workspaceSaved.id!!,
solutionSaved.id!!,
"ScenarioWithoutParameters",
mutableListOf(datasetSaved.id!!))

val scenarioWithoutParametersSaved =
scenarioApiService.createScenario(
organizationSaved.id!!, workspaceSaved.id!!, scenarioWithoutParameters)

assertNotNull(scenarioWithoutParametersSaved.parametersValues)
assertTrue(scenarioWithoutParametersSaved.parametersValues!!.size == 2)
assertEquals("param1", scenarioWithoutParametersSaved.parametersValues!![0].parameterId)
assertEquals("param1VarType", scenarioWithoutParametersSaved.parametersValues!![0].varType)
assertEquals("110", scenarioWithoutParametersSaved.parametersValues!![0].value)
assertEquals("param2", scenarioWithoutParametersSaved.parametersValues!![1].parameterId)
assertEquals("param2VarType", scenarioWithoutParametersSaved.parametersValues!![1].varType)
assertEquals("", scenarioWithoutParametersSaved.parametersValues!![1].value)
}

@Test
fun `test createScenario with parameters`() {
every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin")

val scenarioWithParameters =
makeScenario(
organizationSaved.id!!,
workspaceSaved.id!!,
solutionSaved.id!!,
"ScenarioWithParameters",
mutableListOf(datasetSaved.id!!),
parametersValues =
mutableListOf(
ScenarioRunTemplateParameterValue(
parameterId = "param1", value = "105", varType = "exclude_read_only_value"),
ScenarioRunTemplateParameterValue(
parameterId = "not_defined_parameter",
value = "105",
varType = "exclude_read_only_value")))

val scenarioWithParametersSaved =
scenarioApiService.createScenario(
organizationSaved.id!!, workspaceSaved.id!!, scenarioWithParameters)

assertNotNull(scenarioWithParametersSaved.parametersValues)
assertTrue(scenarioWithParametersSaved.parametersValues!!.size == 2)
assertEquals("param1", scenarioWithParametersSaved.parametersValues!![0].parameterId)
assertEquals("param1VarType", scenarioWithParametersSaved.parametersValues!![0].varType)
assertEquals("105", scenarioWithParametersSaved.parametersValues!![0].value)
assertEquals("param2", scenarioWithParametersSaved.parametersValues!![1].parameterId)
assertEquals("param2VarType", scenarioWithParametersSaved.parametersValues!![1].varType)
assertEquals("", scenarioWithParametersSaved.parametersValues!![1].value)
}

@Test
fun `test updateScenario with empty parameters`() {
every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin")

val scenarioWithoutParameters =
makeScenario(
organizationSaved.id!!,
workspaceSaved.id!!,
solutionSaved.id!!,
"ScenarioWithoutParameters",
mutableListOf(datasetSaved.id!!))

val scenarioWithoutParametersSaved =
scenarioApiService.createScenario(
organizationSaved.id!!, workspaceSaved.id!!, scenarioWithoutParameters)

val updatedScenarioWithoutParametersSaved =
scenarioApiService.updateScenario(
organizationSaved.id!!,
workspaceSaved.id!!,
scenarioWithoutParametersSaved.id!!,
scenarioWithoutParametersSaved.apply {
parametersValues =
mutableListOf(
ScenarioRunTemplateParameterValue(
parameterId = "param1",
value = "107",
varType = "exclude_read_only_value"),
ScenarioRunTemplateParameterValue(
parameterId = "not_defined_parameter",
value = "105",
varType = "exclude_read_only_value"))
})

assertNotNull(updatedScenarioWithoutParametersSaved.parametersValues)
assertTrue(updatedScenarioWithoutParametersSaved.parametersValues!!.size == 2)
assertEquals("param1", updatedScenarioWithoutParametersSaved.parametersValues!![0].parameterId)
assertEquals(
"param1VarType", updatedScenarioWithoutParametersSaved.parametersValues!![0].varType)
assertEquals("107", updatedScenarioWithoutParametersSaved.parametersValues!![0].value)
assertEquals("param2", updatedScenarioWithoutParametersSaved.parametersValues!![1].parameterId)
assertEquals(
"param2VarType", updatedScenarioWithoutParametersSaved.parametersValues!![1].varType)
assertEquals("", updatedScenarioWithoutParametersSaved.parametersValues!![1].value)
}

@Test
fun `test updateScenario with non-empty parameters`() {
every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin")

val scenarioWithParameters =
makeScenario(
organizationSaved.id!!,
workspaceSaved.id!!,
solutionSaved.id!!,
"ScenarioWithParameters",
mutableListOf(datasetSaved.id!!),
parametersValues =
mutableListOf(
ScenarioRunTemplateParameterValue(
parameterId = "param1", value = "100", varType = "exclude_read_only_value"),
ScenarioRunTemplateParameterValue(
parameterId = "param2",
value = "this_is_a_value",
varType = "exclude_read_only_value")))

val scenarioWithParametersSaved =
scenarioApiService.createScenario(
organizationSaved.id!!, workspaceSaved.id!!, scenarioWithParameters)

val updatedScenarioWithParametersSaved =
scenarioApiService.updateScenario(
organizationSaved.id!!,
workspaceSaved.id!!,
scenarioWithParametersSaved.id!!,
scenarioWithParametersSaved.apply {
parametersValues =
mutableListOf(
ScenarioRunTemplateParameterValue(
parameterId = "param1",
value = "107",
varType = "exclude_read_only_value"),
ScenarioRunTemplateParameterValue(
parameterId = "not_defined_parameter",
value = "105",
varType = "exclude_read_only_value"))
})

assertNotNull(updatedScenarioWithParametersSaved.parametersValues)
assertTrue(updatedScenarioWithParametersSaved.parametersValues!!.size == 2)
assertEquals("param1", updatedScenarioWithParametersSaved.parametersValues!![0].parameterId)
assertEquals("param1VarType", updatedScenarioWithParametersSaved.parametersValues!![0].varType)
assertEquals("107", updatedScenarioWithParametersSaved.parametersValues!![0].value)
assertEquals("param2", updatedScenarioWithParametersSaved.parametersValues!![1].parameterId)
assertEquals("param2VarType", updatedScenarioWithParametersSaved.parametersValues!![1].varType)
assertEquals("", updatedScenarioWithParametersSaved.parametersValues!![1].value)
}

@Test
fun `test find All Scenarios with different pagination params`() {
val numberOfScenarios = 20
Expand Down Expand Up @@ -391,9 +547,6 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
fun `test Scenario Parameter Values as User Admin`() {
every { getCurrentAuthenticatedRoles(any()) } returns listOf("Platform.Admin")

logger.info("should assert that the Scenario has no Parameter Values")
assertTrue(scenarioSaved.parametersValues!!.isEmpty())

logger.info("should add a Parameter Value and assert it has been added")
val params =
mutableListOf(
Expand Down Expand Up @@ -988,6 +1141,31 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
name = "My solution",
organizationId = organizationId,
ownerId = "ownerId",
runTemplates =
mutableListOf(
RunTemplate(
id = "runtemplateTest",
name = "runtemplateTest",
parameterGroups = mutableListOf("RTparametersGroup1"),
)),
parameterGroups =
mutableListOf(
RunTemplateParameterGroup(
id = "RTparametersGroup1", parameters = mutableListOf("param1", "param2"))),
parameters =
mutableListOf(
RunTemplateParameter(
id = "param1",
varType = "param1VarType",
defaultValue = "110",
maxValue = "120",
minValue = "100",
),
RunTemplateParameter(
id = "param2",
varType = "param2VarType",
),
),
security =
SolutionSecurity(
default = ROLE_NONE,
Expand Down Expand Up @@ -1048,18 +1226,21 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
parentId: String? = null,
userName: String = "roleName",
role: String = ROLE_USER,
validationStatus: ScenarioValidationStatus = ScenarioValidationStatus.Draft
validationStatus: ScenarioValidationStatus = ScenarioValidationStatus.Draft,
parametersValues: MutableList<ScenarioRunTemplateParameterValue>? = null
): Scenario {
return Scenario(
id = UUID.randomUUID().toString(),
name = name,
organizationId = organizationId,
workspaceId = workspaceId,
solutionId = solutionId,
runTemplateId = "runtemplateTest",
ownerId = "ownerId",
datasetList = datasetList,
parentId = parentId,
validationStatus = validationStatus,
parametersValues = parametersValues,
security =
ScenarioSecurity(
ROLE_NONE,
Expand Down
Loading