Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
28f0e7e
GSK-2418 Add a method to execute test suite and upload result to Hub …
kevinmessiaen Feb 26, 2024
f491472
GSK-2418 Date format identical to Hub one
kevinmessiaen Feb 26, 2024
b44b64b
GSK-2418 Updated DTO
kevinmessiaen Feb 26, 2024
d25c792
GSK-2418 Handle debugging
kevinmessiaen Feb 26, 2024
6cd6701
GSK-2418 Handle debugging
kevinmessiaen Feb 26, 2024
c664ad5
GSK-2418 Handle exception in test suite execution
kevinmessiaen Feb 26, 2024
f7fc6b6
GSK-2418 Made metric optional and added test for download and upload
kevinmessiaen Feb 26, 2024
5e9b3f7
GSK-2418 Updated test
kevinmessiaen Feb 26, 2024
551d273
GSK-2418 Added link to the ref doc
kevinmessiaen Feb 26, 2024
0d41cc1
GSK-2418 Added todo
kevinmessiaen Feb 27, 2024
12ec09e
GSK-2902 Cleanup TestResult information that are sent to the Hub
kevinmessiaen Feb 27, 2024
adc908a
Merge branch 'main' into GSK-2418
kevinmessiaen Feb 27, 2024
d0a1037
GSK-2902 Updated communication tests
kevinmessiaen Feb 27, 2024
bc11706
Merge branch 'main' into GSK-2418
Hartorn Feb 28, 2024
76802f8
Fix suite_id in _test_result_to_dto
Hartorn Feb 28, 2024
9a8eb2a
GSK-2418 Fixed uuid serialization
kevinmessiaen Feb 29, 2024
cad40be
GSK-2418 Added test
kevinmessiaen Feb 29, 2024
993c3a4
Merge branch 'main' into GSK-2418
kevinmessiaen Feb 29, 2024
4bc0ae7
Merge branch 'main' into GSK-2418
kevinmessiaen Mar 4, 2024
b75df1f
GSK-2418 Fixed issue when sending wrong id
kevinmessiaen Mar 4, 2024
b8170f2
GSK-2418 Fixed issue when sending wrong id
kevinmessiaen Mar 4, 2024
58a89d1
GSK-2418 Updated save suite execution method to send configuration
kevinmessiaen Mar 5, 2024
9eae182
GSK-2418 Fixed issue when test has error
kevinmessiaen Mar 5, 2024
74f82ab
GSK-2418 Fixed tests
kevinmessiaen Mar 5, 2024
020714d
Fix dto format
Hartorn Mar 5, 2024
c6e1511
Merge branch 'main' into GSK-2418
Hartorn Mar 5, 2024
c7eabb1
Merge branch 'main' into GSK-2418
Hartorn Mar 5, 2024
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
2 changes: 2 additions & 0 deletions docs/reference/suite/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ Test suite

.. autoclass:: giskard.core.suite.TestSuiteResult

.. automethod:: upload

.. autoclass:: giskard.core.test_result.TestResult
64 changes: 62 additions & 2 deletions giskard/client/dtos.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
from typing import Any, Dict, List, Optional

from enum import Enum

from pydantic import Field

from giskard.core.core import TestResultStatusEnum
from giskard.core.validation import ConfiguredBaseModel
from giskard.utils.artifacts import serialize_parameter


class TestInputDTO(ConfiguredBaseModel):
Expand All @@ -13,9 +17,16 @@ class TestInputDTO(ConfiguredBaseModel):
is_alias: bool = False
is_default_value: bool = False

@classmethod
def from_inputs_dict(cls, inputs: Dict[str, Any]) -> List["TestInputDTO"]:
return [
cls(name=name, value=str(serialize_parameter(value)), type=type(value).__qualname__)
for name, value in inputs.items()
]


class SuiteTestDTO(ConfiguredBaseModel):
id: int
id: Optional[int]
testUuid: str
functionInputs: Dict[str, TestInputDTO]
displayName: Optional[str] = None
Expand All @@ -28,6 +39,56 @@ class TestSuiteDTO(ConfiguredBaseModel):
function_inputs: List[TestInputDTO]


class TestSuiteExecutionResult(str, Enum):
IN_PROGRESS = "IN_PROGRESS"
CANCELLED = "CANCELLED"
PASSED = "PASSED"
FAILED = "FAILED"
ERROR = "ERROR"


class MLWorkerWSTestMessageType(str, Enum):
ERROR = "ERROR"
INFO = "INFO"


class TestResultMessageDTO(ConfiguredBaseModel):
type: MLWorkerWSTestMessageType
text: str


class SaveSuiteTestExecutionDetailsDTO(ConfiguredBaseModel):
inputs: Dict[str, List[str]]
outputs: List[str]
results: List[TestResultStatusEnum]
metadata: Dict[str, List[str]]


class SaveSuiteTestExecutionDTO(ConfiguredBaseModel):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a lot of data. Everything is needed ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything is saved into the Hub.

I agree that we don't use nor need all those information into the Hub. We might probably want to cleanup everything. (Both from Hub and programatic execution)

suiteTest: SuiteTestDTO
testUuid: str
displayName: str
inputs: Dict[str, str]
arguments: Dict[str, TestInputDTO]
messages: List[TestResultMessageDTO]
status: TestResultStatusEnum
metric: Optional[float]
metricName: str
failedIndexes: Dict[str, List[int]]
details: Optional[SaveSuiteTestExecutionDetailsDTO]


class SaveSuiteExecutionDTO(ConfiguredBaseModel):
suiteId: Optional[int]
label: str
inputs: List[TestInputDTO]
result: TestSuiteExecutionResult
message: str
results: List[SaveSuiteTestExecutionDTO]
executionDate: str
completionDate: str


class ServerInfo(ConfiguredBaseModel):
instanceId: Optional[str] = None
serverVersion: Optional[str] = None
Expand All @@ -51,7 +112,6 @@ class SuiteInfo(ConfiguredBaseModel):
# The following inputs are never used and are here only for
# coherence with backend
id: int
functionInputs: List
projectKey: str


Expand Down
12 changes: 11 additions & 1 deletion giskard/client/giskard_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,14 @@
from requests_toolbelt import sessions

import giskard
from giskard.client.dtos import DatasetMetaInfo, ModelMetaInfo, ServerInfo, SuiteInfo, TestSuiteDTO
from giskard.client.dtos import (
DatasetMetaInfo,
ModelMetaInfo,
SaveSuiteExecutionDTO,
ServerInfo,
SuiteInfo,
TestSuiteDTO,
)
from giskard.client.io_utils import GiskardJSONSerializer
from giskard.client.project import Project
from giskard.client.python_utils import warning
Expand Down Expand Up @@ -418,3 +425,6 @@ def save_test_suite(self, dto: TestSuiteDTO):

def update_test_suite(self, suite_id: int, dto: TestSuiteDTO):
return self._session.put(f"testing/project/{dto.project_key}/suite/{suite_id}", json=dto.dict()).json()

def save_test_suite_execution_result(self, project_key: str, dto: SaveSuiteExecutionDTO):
return self._session.post(f"testing/project/{project_key}/executions", json=dto.dict()).json()
6 changes: 6 additions & 0 deletions giskard/core/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -546,3 +546,9 @@ class ComparisonClauseDTO:
comparisonType: ComparisonType
columnDtype: str
value: Optional[str]


class TestResultStatusEnum(str, Enum):
ERROR = "ERROR"
PASSED = "PASSED"
FAILED = "FAILED"
Loading