Skip to content

Commit 42460dc

Browse files
author
Suganth Sadaiyappan
committed
remove batching
1 parent c0dc98d commit 42460dc

File tree

8 files changed

+72
-170
lines changed

8 files changed

+72
-170
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from ._dataframe_utilities import get_results_dataframe
1+
from ._dataframe_utilities import convert_results_to_dataframe
22

33
# flake8: noqa

nisystemlink/clients/testmonitor/utilities/_client_utilities.py

Lines changed: 0 additions & 43 deletions
This file was deleted.

nisystemlink/clients/testmonitor/utilities/_constants.py

Lines changed: 0 additions & 2 deletions
This file was deleted.

nisystemlink/clients/testmonitor/utilities/_dataframe_utilities.py

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,10 @@
1-
from typing import List, Optional
1+
from typing import List
22

33
import pandas as pd
4-
from nisystemlink.clients.testmonitor._test_monitor_client import TestMonitorClient
5-
from nisystemlink.clients.testmonitor.models import (
6-
Result,
7-
ResultProjection,
8-
)
9-
from nisystemlink.clients.testmonitor.utilities._client_utilities import (
10-
__batch_query_results,
11-
)
4+
from nisystemlink.clients.testmonitor.models import Result
125

136

14-
def get_results_dataframe(
15-
client: TestMonitorClient,
16-
query_filter: str,
17-
column_projection: Optional[List[ResultProjection]] = None,
18-
) -> pd.DataFrame:
19-
"""Fetches test results and normalizes them into a Pandas DataFrame.
20-
21-
Args:
22-
client: The TestMonitorClient to use for the request.
23-
query_filter: The result query filter in Dynamic Linq format.
24-
column_projection: List of columns to retrieve when querying the results.
25-
Fields you do not specify are excluded. Returns all fields if no value is specified.
26-
27-
Returns:
28-
A Pandas DataFrame containing the results.
29-
30-
Raises:
31-
ApiException: If unable to communicate with the `/nitestmonitor` service
32-
or provided an invalid argument.
33-
"""
34-
queried_results = __batch_query_results(client, query_filter, column_projection)
35-
36-
results_dataframe = __normalize_results(queried_results)
37-
38-
return results_dataframe
39-
40-
41-
def __normalize_results(results: List[Result]) -> pd.DataFrame:
7+
def convert_results_to_dataframe(results: List[Result]) -> pd.DataFrame:
428
"""Normalizes the results into a Pandas DataFrame.
439
4410
Args:

tests/integration/testmonitor/test_testmonitor.py

Lines changed: 0 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import uuid
22
from typing import List
33

4-
import pandas as pd
54
import pytest
65
from nisystemlink.clients.core._http_configuration import HttpConfiguration
76
from nisystemlink.clients.testmonitor import TestMonitorClient
87
from nisystemlink.clients.testmonitor.models import (
98
CreateResultRequest,
109
CreateResultsPartialSuccess,
1110
Result,
12-
ResultProjection,
1311
Status,
1412
UpdateResultRequest,
1513
)
@@ -19,7 +17,6 @@
1917
QueryResultValuesRequest,
2018
ResultField,
2119
)
22-
from nisystemlink.clients.testmonitor.utilities import get_results_dataframe
2320

2421

2522
@pytest.fixture(scope="class")
@@ -394,92 +391,8 @@ def test__update_properties_append__properties_appended(
394391
)
395392
assert updated_result.properties[new_key] == new_properties[new_key]
396393

397-
def test__get_results_dataframe_without_column_projection__returns_complete_results_dataframe(
398-
self, client: TestMonitorClient, create_results, unique_identifier
399-
):
400-
create_results_request = CreateResultRequest(
401-
part_number=unique_identifier,
402-
program_name="Test Program",
403-
status=Status.PASSED(),
404-
)
405-
create_results([create_results_request, create_results_request])
406-
query_results_filter = f'partNumber="{unique_identifier}"'
407-
query_response: PagedResults = client.query_results(
408-
QueryResultsRequest(filter=query_results_filter)
409-
)
410-
expected_results_dataframe = self.__get_expected_results_dataframe(
411-
query_response.results
412-
)
413-
414-
results_dataframe = get_results_dataframe(
415-
client, query_filter=query_results_filter
416-
)
417-
418-
assert not results_dataframe.empty
419-
assert isinstance(results_dataframe, pd.DataFrame)
420-
assert len(results_dataframe) == 2
421-
assert len(results_dataframe.columns.tolist()) == 22
422-
assert results_dataframe.equals(expected_results_dataframe)
423-
424-
def test__get_results_dataframe_with_column_projection__returns_dataframe_with_projected_columns(
425-
self, client: TestMonitorClient, create_results, unique_identifier
426-
):
427-
create_results_request = CreateResultRequest(
428-
part_number=unique_identifier,
429-
program_name="Test Program",
430-
status=Status.PASSED(),
431-
)
432-
create_results([create_results_request, create_results_request])
433-
query_results_filter = f'partNumber="{unique_identifier}"'
434-
query_response: PagedResults = client.query_results(
435-
QueryResultsRequest(
436-
filter=query_results_filter,
437-
projection=[
438-
ResultProjection.PART_NUMBER,
439-
ResultProjection.PROGRAM_NAME,
440-
],
441-
)
442-
)
443-
expected_results_dataframe = self.__get_expected_results_dataframe(
444-
query_response.results
445-
)
446-
447-
results_dataframe = get_results_dataframe(
448-
client,
449-
query_filter=query_results_filter,
450-
column_projection=[
451-
ResultProjection.PART_NUMBER,
452-
ResultProjection.PROGRAM_NAME,
453-
],
454-
)
455-
456-
assert not results_dataframe.empty
457-
assert isinstance(results_dataframe, pd.DataFrame)
458-
assert len(results_dataframe) == 2
459-
assert len(results_dataframe.columns.tolist()) == 2
460-
assert results_dataframe.equals(expected_results_dataframe)
461-
462-
def test__get_results_dataframe_with_no_results__returns_empty_dataframe(
463-
self, client: TestMonitorClient, create_results, unique_identifier
464-
):
465-
invalid_part_number = unique_identifier
466-
467-
results_dataframe = get_results_dataframe(
468-
client, query_filter=f'partNumber="{invalid_part_number}"'
469-
)
470-
471-
assert isinstance(results_dataframe, pd.DataFrame)
472-
assert results_dataframe.empty
473-
474394
def __map_result_to_update_result_request(
475395
self, result: Result
476396
) -> UpdateResultRequest:
477397
result_dict = result.dict(exclude={"status_type_summary", "updated_at"})
478398
return UpdateResultRequest(**result_dict)
479-
480-
def __get_expected_results_dataframe(self, results: List[Result]) -> List[dict]:
481-
expected_results_dict = [result.dict(exclude_unset=True) for result in results]
482-
expected_results_dataframe = pd.json_normalize(expected_results_dict, sep=".")
483-
expected_results_dataframe.dropna(axis="columns", how="all", inplace=True)
484-
485-
return expected_results_dataframe

tests/unit/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# flake8: noqa

tests/unit/testmonitor/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# flake8: noqa
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import uuid
2+
from typing import List
3+
4+
import pandas as pd
5+
import pytest
6+
from nisystemlink.clients.testmonitor.models._result import Result
7+
from nisystemlink.clients.testmonitor.models._status import Status, StatusType
8+
from nisystemlink.clients.testmonitor.utilities._dataframe_utilities import convert_results_to_dataframe
9+
10+
11+
@pytest.fixture(scope="class")
12+
def results() -> List[Result]:
13+
"""Sample results for testing purposes."""
14+
results = [
15+
Result(
16+
status=Status(status_type=StatusType.PASSED),
17+
id=uuid.uuid1().hex,
18+
part_number=uuid.uuid1().hex,
19+
keywords=["keyword1", "keyword2"],
20+
properties={"property1": "value1", "property2": "value2"},
21+
),
22+
Result(
23+
status=Status(status_type=StatusType.PASSED),
24+
id=uuid.uuid1().hex,
25+
part_number=uuid.uuid1().hex,
26+
keywords=[],
27+
),
28+
Result(
29+
status=Status(status_type=StatusType.PASSED),
30+
id=uuid.uuid1().hex,
31+
part_number=uuid.uuid1().hex,
32+
properties={
33+
"property1": "value1",
34+
"property2": "value2",
35+
"property3": "value3",
36+
},
37+
),
38+
]
39+
40+
return results
41+
42+
43+
@pytest.mark.enterprise
44+
class TestTestmonitorDataframeUtilities:
45+
def test__convert_results_to_dataframe__returns_results_dataframe(self, results):
46+
expected_results_dict = []
47+
for result in results:
48+
expected_results_dict.append(result.dict(exclude_unset=True))
49+
expected_results_dataframe = pd.json_normalize(expected_results_dict, sep=".")
50+
expected_results_dataframe.dropna(axis="columns", how="all", inplace=True)
51+
52+
results_dataframe = convert_results_to_dataframe(results=results)
53+
54+
assert not results_dataframe.empty
55+
assert isinstance(results_dataframe, pd.DataFrame)
56+
assert len(results_dataframe) == 3
57+
assert len(results_dataframe.columns.tolist()) == 7
58+
assert results_dataframe.equals(expected_results_dataframe)
59+
60+
def test__convert_results_to_dataframe_with_no_results__returns_empty_dataframe(
61+
self,
62+
):
63+
results_dataframe = convert_results_to_dataframe(results=[])
64+
65+
assert isinstance(results_dataframe, pd.DataFrame)
66+
assert results_dataframe.empty

0 commit comments

Comments
 (0)