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 @@ -28,6 +28,7 @@ import com.cosmotech.dataset.domain.DatasetCreateRequest
import com.cosmotech.dataset.domain.DatasetPart
import com.cosmotech.dataset.domain.DatasetPartCreateRequest
import com.cosmotech.dataset.domain.DatasetPartTypeEnum
import com.cosmotech.dataset.domain.DatasetPartUpdateRequest
import com.cosmotech.organization.OrganizationApiServiceInterface
import com.cosmotech.organization.domain.Organization
import com.cosmotech.organization.domain.OrganizationAccessControl
Expand Down Expand Up @@ -89,6 +90,7 @@ class RunnerServiceIntegrationTest : CsmTestBase() {
val CONNECTED_READER_USER = "[email protected]"
val TEST_USER_MAIL = "[email protected]"
val CUSTOMERS_FILE_NAME = "customers.csv"
val CUSTOMERS_5_LINES_FILE_NAME = "customers_5_lines.csv"

private val logger = LoggerFactory.getLogger(RunnerServiceIntegrationTest::class.java)
private val defaultName = "[email protected]"
Expand Down Expand Up @@ -1007,7 +1009,7 @@ class RunnerServiceIntegrationTest : CsmTestBase() {
}

@Test
fun `test empty inherited parameters values`() {
fun `test empty inherited parameters values from parent`() {
val parentRunnerWithEmptyParams = makeRunnerCreateRequest(name = "parent")
val parentRunnerSaved =
runnerApiService.createRunner(
Expand Down Expand Up @@ -1040,6 +1042,210 @@ class RunnerServiceIntegrationTest : CsmTestBase() {
mutableListOf(runTemplateParameterValue1), childRunnerWithEmptyParamsSaved.parametersValues)
}

@Test
fun `test create runner with inherited DB dataset parameter from workspace solution`() {

solutionSaved =
solutionApiService.createSolution(
organizationSaved.id,
SolutionCreateRequest(
key = UUID.randomUUID().toString(),
name = "Solution with 1 default datasetPart parameter",
parameterGroups =
mutableListOf(
RunTemplateParameterGroupCreateRequest(
id = "defaultDatasetPartParameterGroup",
parameters = mutableListOf("datasetPartParam"))),
parameters =
mutableListOf(
RunTemplateParameterCreateRequest(
id = "datasetPartParam",
defaultValue = "this_value_is_ignored",
varType = DATASET_PART_VARTYPE_DB)),
runTemplates =
mutableListOf(
RunTemplateCreateRequest(
id = "runTemplateWithOneDatasetPartByDefault",
parameterGroups = mutableListOf("defaultDatasetPartParameterGroup"))),
repository = "repository",
version = "1.0.0"))
workspace =
WorkspaceCreateRequest(
key = "key",
name = "workspace",
solution = WorkspaceSolution(solutionSaved.id),
datasetCopy = false)
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace)

val customersFile = resourceLoader.getResource("classpath:/$CUSTOMERS_FILE_NAME").file
val customersInputStream = FileInputStream(customersFile)
val customersMultipartFile =
MockMultipartFile(
"file", CUSTOMERS_FILE_NAME, "text/csv", IOUtils.toByteArray(customersInputStream))
val workspaceDataset =
datasetApiService.createDataset(
organizationSaved.id,
workspaceSaved.id,
DatasetCreateRequest(
name = "runnerDataset",
parts =
mutableListOf(
DatasetPartCreateRequest(
name = "datasetPart1",
sourceName = CUSTOMERS_FILE_NAME,
type = DatasetPartTypeEnum.DB))),
arrayOf(customersMultipartFile))
workspaceSaved =
workspaceApiService.updateWorkspace(
organizationSaved.id,
workspaceSaved.id,
WorkspaceUpdateRequest(
solution =
WorkspaceSolution(
solutionId = solutionSaved.id,
datasetId = workspaceDataset.id,
defaultParameterValues =
mutableMapOf("datasetPartParam" to workspaceDataset.parts[0].id))))

val runner =
runnerApiService.createRunner(
organizationSaved.id,
workspaceSaved.id,
makeRunnerCreateRequest(runTemplateId = "runTemplateWithOneDatasetPartByDefault"))

val runnerDatasetId = runner.datasets.parameter
val runnerDataset =
datasetApiService.getDataset(organizationSaved.id, workspaceSaved.id, runnerDatasetId)
val inheritedRunnerDatasetPartContent =
datasetApiService.downloadDatasetPart(
organizationSaved.id, workspaceSaved.id, runnerDataset.id, runnerDataset.parts[0].id)
val expectedText = FileInputStream(customersFile).bufferedReader().use { it.readText() }
val retrievedText =
InputStreamResource(inheritedRunnerDatasetPartContent).inputStream.bufferedReader().use {
it.readText()
}
assertEquals(expectedText, retrievedText)
}

@Test
fun `test create runner with inherited DB dataset parameter from parent`() {

solutionSaved =
solutionApiService.createSolution(
organizationSaved.id,
SolutionCreateRequest(
key = UUID.randomUUID().toString(),
name = "Solution with 1 default datasetPart parameter",
parameterGroups =
mutableListOf(
RunTemplateParameterGroupCreateRequest(
id = "defaultDatasetPartParameterGroup",
parameters = mutableListOf("datasetPartParam"))),
parameters =
mutableListOf(
RunTemplateParameterCreateRequest(
id = "datasetPartParam",
defaultValue = "this_value_is_ignored",
varType = DATASET_PART_VARTYPE_DB)),
runTemplates =
mutableListOf(
RunTemplateCreateRequest(
id = "runTemplateWithOneDatasetPartByDefault",
parameterGroups = mutableListOf("defaultDatasetPartParameterGroup"))),
repository = "repository",
version = "1.0.0"))
workspace =
WorkspaceCreateRequest(
key = "key",
name = "workspace",
solution = WorkspaceSolution(solutionSaved.id),
datasetCopy = false)
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id, workspace)

val customersFile = resourceLoader.getResource("classpath:/$CUSTOMERS_FILE_NAME").file
val customersInputStream = FileInputStream(customersFile)
val customersMultipartFile =
MockMultipartFile(
"file", CUSTOMERS_FILE_NAME, "text/csv", IOUtils.toByteArray(customersInputStream))
val workspaceDataset =
datasetApiService.createDataset(
organizationSaved.id,
workspaceSaved.id,
DatasetCreateRequest(
name = "runnerDataset",
parts =
mutableListOf(
DatasetPartCreateRequest(
name = "datasetPart1",
sourceName = CUSTOMERS_FILE_NAME,
type = DatasetPartTypeEnum.DB))),
arrayOf(customersMultipartFile))
workspaceSaved =
workspaceApiService.updateWorkspace(
organizationSaved.id,
workspaceSaved.id,
WorkspaceUpdateRequest(
solution =
WorkspaceSolution(
solutionId = solutionSaved.id,
datasetId = workspaceDataset.id,
defaultParameterValues =
mutableMapOf("datasetPartParam" to workspaceDataset.parts[0].id))))

val runner =
runnerApiService.createRunner(
organizationSaved.id,
workspaceSaved.id,
makeRunnerCreateRequest(runTemplateId = "runTemplateWithOneDatasetPartByDefault"))

val runnerDatasetId = runner.datasets.parameter
val runnerDataset =
datasetApiService.getDataset(organizationSaved.id, workspaceSaved.id, runnerDatasetId)

val customers5File = resourceLoader.getResource("classpath:/$CUSTOMERS_5_LINES_FILE_NAME").file
val customers5InputStream = FileInputStream(customers5File)
val customers5MultipartFile =
MockMultipartFile(
"file",
CUSTOMERS_5_LINES_FILE_NAME,
"text/csv",
IOUtils.toByteArray(customers5InputStream))

val runnerDatasetPartId = runnerDataset.parts[0].id

datasetApiService.replaceDatasetPart(
organizationSaved.id,
workspaceSaved.id,
runnerDataset.id,
runnerDatasetPartId,
customers5MultipartFile,
DatasetPartUpdateRequest(sourceName = CUSTOMERS_5_LINES_FILE_NAME))

val childRunner =
runnerApiService.createRunner(
organizationSaved.id,
workspaceSaved.id,
makeRunnerCreateRequest(
runTemplateId = "runTemplateWithOneDatasetPartByDefault", parentId = runner.id))

val childRunnerDatasetId = childRunner.datasets.parameter
val childRunnerDataset =
datasetApiService.getDataset(organizationSaved.id, workspaceSaved.id, childRunnerDatasetId)

val childRunnerDatasetPartContent =
datasetApiService.downloadDatasetPart(
organizationSaved.id,
workspaceSaved.id,
childRunnerDataset.id,
childRunnerDataset.parts[0].id)
val expectedText = FileInputStream(customers5File).bufferedReader().use { it.readText() }
val retrievedText =
InputStreamResource(childRunnerDatasetPartContent).inputStream.bufferedReader().use {
it.readText()
}
assertEquals(expectedText, retrievedText)
}

@Test
fun `startRun send event`() {
val expectedRunId = "run-genid12345"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,12 @@ csm:
host: "localhost"
port: 5432
reader:
password: "password"
password: "cosmotech_api_reader_pass"
username: cosmotech_api_reader
writer:
password: "password"
password: "cosmotech_api_writer_pass"
username: cosmotech_api_writer
database: "test"
rbac:
enabled: true
s3:
Expand Down
2 changes: 1 addition & 1 deletion runner/src/integrationTest/resources/customers.csv
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ CUST006,FastFix Auto,Isabelle Dubois,Service Manager,42 Garage Loop,Montréal,QC
CUST007,Garden Glow Ltd,Ellie Tan,Product Specialist,180 Daisy St,Burnside,NSW,2135,Australia,02-8000-1122
CUST008,Evergreen Crafts,Jasper Lee,Owner,96 Willow Way,Lakeside,BC,V2V 4W1,Canada,604-800-9988
CUST009,Peak Fitness Inc,Monica Anders,Marketing Lead,311 Summit Ave,Cascade,WA,98101,USA,206-777-5544
CUST010,Silverline Media,Nikhil Ajay,Account Executive,845 Market Plaza,Redhill,ENG,RH1 6JT,UK,020-7123-4098
CUST010,Silverline Media,Nikhil Ajay,Account Executive,845 Market Plaza,Redhill,ENG,RH1 6JT,UK,020-7123-4098
6 changes: 6 additions & 0 deletions runner/src/integrationTest/resources/customers_5_lines.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
customerID,companyName,contactName,contactTitle,address,city,region,postalCode,country,phone
CUST001,Blueberry Tech,Alex Greenwood,CTO,1412 Pine St,Oakridge,CA,93561,USA,555-123-4560
CUST002,Riverbend Logistics,Taylor Morris,Operations Lead,89 North Ave,Greendale,NY,11105,USA,555-987-6521
CUST003,Sunrise Foods,Jordan Liu,Procurement Manager,220 Cherry Road,Springdale,TX,75010,USA,555-210-7895
CUST004,Skyline Textiles,Maria Petrova,Sales Director,501 Textile Lane,Newpark,FL,33012,USA,555-313-9240
CUST005,Crimson Solutions,Samuel Evans,CEO,77 Baker Blvd,Woodport,GA,30310,USA,555-825-2555
10 changes: 8 additions & 2 deletions runner/src/integrationTest/resources/init-db.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
CREATE USER readusertest WITH PASSWORD 'readusertest';
CREATE USER writeusertest WITH PASSWORD 'writeusertest';
CREATE ROLE cosmotech_api_reader WITH LOGIN PASSWORD 'cosmotech_api_reader_pass';
CREATE ROLE cosmotech_api_writer WITH LOGIN PASSWORD 'cosmotech_api_writer_pass';
CREATE ROLE cosmotech_api_admin WITH LOGIN PASSWORD 'cosmotech_api_admin_pass';

CREATE SCHEMA inputs AUTHORIZATION cosmotech_api_writer;
CREATE SCHEMA outputs AUTHORIZATION cosmotech_api_writer;
GRANT USAGE ON SCHEMA inputs TO cosmotech_api_reader;
GRANT USAGE ON SCHEMA outputs TO cosmotech_api_reader;