Skip to content

Commit 87c6194

Browse files
committed
Merge branch 'main' into task/GSK-1343
2 parents a70b89a + 938d0a2 commit 87c6194

52 files changed

Lines changed: 2413 additions & 1023 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

backend/src/main/java/ai/giskard/domain/ml/SuiteTestExecution.java

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import ai.giskard.domain.BaseEntity;
44
import ai.giskard.utils.SimpleJSONStringAttributeConverter;
55
import ai.giskard.web.dto.ml.TestResultMessageDTO;
6+
import ai.giskard.worker.FuncArgument;
67
import ai.giskard.worker.SingleTestResult;
78
import com.fasterxml.jackson.annotation.JsonIgnore;
9+
import com.fasterxml.jackson.databind.ObjectMapper;
810
import lombok.Getter;
911
import lombok.NoArgsConstructor;
1012
import lombok.Setter;
@@ -34,6 +36,10 @@ public class SuiteTestExecution extends BaseEntity {
3436
@Convert(converter = SimpleJSONStringAttributeConverter.class)
3537
private Map<String, String> inputs;
3638

39+
@Column(columnDefinition = "VARCHAR")
40+
@Convert(converter = SimpleJSONStringAttributeConverter.class)
41+
private Map<String, String> arguments;
42+
3743
@Column(columnDefinition = "VARCHAR")
3844
@Convert(converter = SimpleJSONStringAttributeConverter.class)
3945
private List<TestResultMessageDTO> messages;
@@ -74,7 +80,8 @@ public class SuiteTestExecution extends BaseEntity {
7480

7581
public SuiteTestExecution(SuiteTest test,
7682
TestSuiteExecution execution,
77-
SingleTestResult message) {
83+
SingleTestResult message,
84+
List<FuncArgument> arguments) {
7885
this.test = test;
7986
this.execution = execution;
8087
this.missingCount = message.getMissingCount();
@@ -95,6 +102,54 @@ public SuiteTestExecution(SuiteTest test,
95102
msg -> new TestResultMessageDTO(msg.getType(), msg.getText())).toList();
96103
this.inputs = test.getFunctionInputs().stream()
97104
.collect(Collectors.toMap(FunctionInput::getName, FunctionInput::getValue));
105+
this.arguments = arguments.stream()
106+
.collect(Collectors.toMap(FuncArgument::getName, this::getFuncArgValue));
98107
}
99108

109+
private String getFuncArgValue(FuncArgument funcArgument) {
110+
String result = "";
111+
switch (funcArgument.getArgumentCase()) {
112+
case MODEL:
113+
result = funcArgument.getModel().getId();
114+
break;
115+
case DATASET:
116+
result = funcArgument.getDataset().getId();
117+
break;
118+
case SLICINGFUNCTION:
119+
result = funcArgument.getSlicingFunction().getId();
120+
break;
121+
case TRANSFORMATIONFUNCTION:
122+
result = funcArgument.getTransformationFunction().getId();
123+
break;
124+
case KWARGS:
125+
// Not sure how to handle this cleanly yet.
126+
break;
127+
case ARGUMENT_NOT_SET:
128+
break;
129+
case BOOL:
130+
result = String.valueOf(funcArgument.getBool());
131+
break;
132+
case FLOAT:
133+
result = String.valueOf(funcArgument.getFloat());
134+
break;
135+
case INT:
136+
result = String.valueOf(funcArgument.getInt());
137+
break;
138+
case STR:
139+
result = funcArgument.getStr();
140+
break;
141+
}
142+
143+
144+
Map<String, String> args = funcArgument.getArgsList().stream()
145+
.collect(Collectors.toMap(FuncArgument::getName, this::getFuncArgValue));
146+
147+
Map<String, Object> json = Map.of(
148+
"value", result,
149+
"args", args
150+
);
151+
152+
// return json as a json
153+
return new ObjectMapper().valueToTree(json).toString();
154+
}
100155
}

backend/src/main/java/ai/giskard/service/TestArgumentService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ public FuncArgument buildTestArgument(String inputName, String inputValue, Strin
7272
}
7373

7474
argumentBuilder.setNone(false);
75+
if (inputType == null) {
76+
throw new IllegalArgumentException("Empty input type for input `%s`".formatted(inputName));
77+
}
7578

7679
switch (inputType) {
7780
case "Dataset" -> argumentBuilder.setDataset(buildArtifactRef(projectKey, inputValue).setSample(sample));

backend/src/main/java/ai/giskard/service/TestSuiteExecutionService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,11 @@ public void executeScheduledTestSuite(TestSuiteExecution execution,
7171

7272
try (MLWorkerClient client = mlWorkerService.createClient(suite.getProject().isUsingInternalWorker())) {
7373
TestSuiteResultMessage testSuiteResultMessage = client.getBlockingStub().runTestSuite(builder.build());
74-
7574
execution.setResult(getResult(testSuiteResultMessage));
7675
execution.setResults(testSuiteResultMessage.getResultsList().stream()
7776
.map(identifierSingleTestResult ->
7877
new SuiteTestExecution(tests.get(identifierSingleTestResult.getId()), execution,
79-
identifierSingleTestResult.getResult()))
78+
identifierSingleTestResult.getResult(), identifierSingleTestResult.getArgumentsList()))
8079
.collect(Collectors.toList()));
8180
execution.setLogs(testSuiteResultMessage.getLogs());
8281
} catch (Exception e) {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package ai.giskard.web.dto;
2+
3+
import ai.giskard.worker.ArtifactRef;
4+
import com.dataiku.j2ts.annotations.UIModel;
5+
import lombok.Getter;
6+
import lombok.Setter;
7+
8+
@Getter
9+
@Setter
10+
@UIModel
11+
public class ArtifactRefDTO {
12+
private String id;
13+
private String projectKey;
14+
15+
public ArtifactRefDTO(ArtifactRef artifactRef) {
16+
this.id = artifactRef.getId();
17+
this.projectKey = artifactRef.getProjectKey();
18+
}
19+
}

backend/src/main/java/ai/giskard/web/dto/RunAdhocTestRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ public class RunAdhocTestRequest {
1515
private Long projectId;
1616
private String testUuid;
1717
private List<FunctionInputDTO> inputs;
18+
private boolean debug;
1819
}

backend/src/main/java/ai/giskard/web/dto/ml/SingleTestResultDTO.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class SingleTestResultDTO {
2626
private Double unexpectedPercentTotal;
2727
private Double unexpectedPercentNonmissing;
2828
private float metric;
29+
private String outputDfUuid;
2930

3031
public SingleTestResultDTO(SingleTestResult message) {
3132
this.missingCount = message.getMissingCount();
@@ -42,5 +43,6 @@ public SingleTestResultDTO(SingleTestResult message) {
4243
this.referenceSlicesSize = message.getReferenceSlicesSizeList();
4344
this.messages = message.getMessagesList().stream().map(
4445
msg -> new TestResultMessageDTO(msg.getType(), msg.getText())).toList();
46+
this.outputDfUuid = message.getOutputDfId();
4547
}
4648
}

backend/src/main/java/ai/giskard/web/dto/ml/SuiteTestExecutionDTO.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class SuiteTestExecutionDTO {
1818

1919
private SuiteTestDTO test;
2020
private Map<String, String> inputs;
21+
private Map<String, String> arguments;
2122
private List<TestResultMessageDTO> messages;
2223
private List<Integer> actualSlicesSize;
2324
private List<Integer> referenceSlicesSize;

backend/src/main/java/ai/giskard/web/rest/controllers/testing/TestController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public TestTemplateExecutionResultDTO runAdHocTest(@RequestBody RunAdhocTestRequ
5656
giskardMapper.fromDTO(input).getParams(), sample));
5757
}
5858

59+
builder.setDebug(request.isDebug());
60+
5961
TestResultMessage testResultMessage = client.getBlockingStub().runAdHocTest(builder.build());
6062
TestTemplateExecutionResultDTO res = new TestTemplateExecutionResultDTO(testFunction.getUuid());
6163
res.setResult(testResultMessage);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
2+
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
5+
<changeSet author="hugoviallon (generated)" id="1684925264375-3">
6+
<addColumn tableName="suite_test_execution">
7+
<column name="arguments" type="VARCHAR"/>
8+
</addColumn>
9+
</changeSet>
10+
</databaseChangeLog>

backend/src/main/resources/config/liquibase/master.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414
<property name="uuidType" value="uuid" dbms="h2, postgresql"/>
1515
<property name="datetimeType" value="datetime(6)" dbms="mysql, mariadb"/>
1616
<property name="datetimeType" value="datetime" dbms="oracle, mssql, postgresql, h2"/>
17-
<include file="config/liquibase/changelog/initial-v2.xml" relativeToChangelogFile="false" />
17+
<include file="config/liquibase/changelog/initial-v2.xml" relativeToChangelogFile="false"/>
1818
<include file="config/liquibase/changelog/20230419181155_changelog.xml"
19-
relativeToChangelogFile="false" />
19+
relativeToChangelogFile="false"/>
2020
<include file="config/liquibase/changelog/20230424155350_changelog.xml" relativeToChangelogFile="false"/>
2121
<include file="config/liquibase/changelog/20230427154655_changelog.xml" relativeToChangelogFile="false"/>
2222
<include file="config/liquibase/changelog/20230503092614_changelog.xml" relativeToChangelogFile="false"/>
2323
<include file="config/liquibase/changelog/20230504173249_changelog.xml" relativeToChangelogFile="false"/>
2424
<include file="config/liquibase/changelog/20230522131655_changelog.xml" relativeToChangelogFile="false"/>
2525
<include file="config/liquibase/changelog/20230531151413_changelog.xml" relativeToChangelogFile="false"/>
2626
<include file="config/liquibase/changelog/20230531185842_changelog.xml" relativeToChangelogFile="false"/>
27+
<include file="config/liquibase/changelog/20230524124740_changelog.xml" relativeToChangelogFile="false"/>
2728
<include file="config/liquibase/changelog/20230614134137_changelog.xml" relativeToChangelogFile="false"/>
2829
<include file="config/liquibase/changelog/20230622130823_changelog.xml" relativeToChangelogFile="false"/>
2930
<include file="config/liquibase/changelog/20230705162357_changelog.xml" relativeToChangelogFile="false"/>

0 commit comments

Comments
 (0)