Skip to content

Commit bca3b26

Browse files
committed
Completes the test for combining sub-tracking files
1 parent 83a5125 commit bca3b26

File tree

10 files changed

+84
-3
lines changed

10 files changed

+84
-3
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
process_id,code_block_name,position,timestamp
2+
1723811,X,0,1745449609.7528222
3+
1723811,X,1,1745449613.5325918
4+
1723811,X,0,1745449613.5606213
5+
1723811,X,1,1745449617.3617816
6+
1723811,X,0,1745449617.3804042
7+
1723811,X,1,1745449621.187976
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
process_id,code_block_name,position,timestamp
2+
1723814,X,0,1745449609.756739
3+
1723814,X,1,1745449613.5322783
4+
1723814,X,0,1745449613.5696628
5+
1723814,X,1,1745449617.3296978
6+
1723814,X,0,1745449617.347492
7+
1723814,X,1,1745449621.1066897
Binary file not shown.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
process_id,code_block_name,position,timestamp
2+
1723815,X,0,1745449609.7629318
3+
1723815,X,1,1745449613.3849857
4+
1723815,X,0,1745449613.403655
5+
1723815,X,1,1745449617.1585994
6+
1723815,X,0,1745449617.1770504
7+
1723815,X,1,1745449620.8635588
8+
1723815,X,0,1745449620.8831315
9+
1723815,X,1,1745449624.4956949
Binary file not shown.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
process_id,code_block_name,position,timestamp
2+
1723727,Y,0,1745449624.6481984
3+
1723727,Y,1,1745449626.4954815
4+
1723727,tmp.py:9,0,1745449626.5598955
5+
1723727,tmp.py:9,1,1745449627.653375
6+
1723727,tmp.py:38,0,1745449627.6730132
7+
1723727,tmp.py:38,1,1745449628.7713823
8+
1723727,tmp.py:38,0,1745449628.7894087
9+
1723727,tmp.py:38,1,1745449629.898063
10+
1723727,tmp.py:38,0,1745449629.9163494
11+
1723727,tmp.py:38,1,1745449631.0465028
12+
1723727,tmp.py:38,0,1745449631.0629628
13+
1723727,tmp.py:38,1,1745449632.1779408
14+
1723727,tmp.py:38,0,1745449632.1962223
15+
1723727,tmp.py:38,1,1745449633.2969272
16+
1723727,tmp.py:38,0,1745449633.3154583
17+
1723727,tmp.py:38,1,1745449634.4144106
18+
1723727,tmp.py:38,0,1745449634.4333444
19+
1723727,tmp.py:38,1,1745449635.5694306
20+
1723727,tmp.py:38,0,1745449635.6578789
21+
1723727,tmp.py:38,1,1745449636.7815094
22+
1723727,tmp.py:38,0,1745449636.799852
23+
1723727,tmp.py:38,1,1745449637.9716456
24+
1723727,tmp.py:38,0,1745449637.9889736
25+
1723727,tmp.py:38,1,1745449639.195562
Binary file not shown.

tests/test_cli.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,11 @@ def test_analyze(mocker, format_: str | None, output: str | None):
154154
'tests/data/sub-tracking-results/files-to-combine/1723811.sub-tracking.sqlite',
155155
'tests/data/sub-tracking-results/files-to-combine/1723814.sub-tracking.sqlite',
156156
'tests/data/sub-tracking-results/files-to-combine/1723815.sub-tracking.sqlite',
157-
'tests/data/sub-tracking-results/files-to-combine/main.sub-tracking.sqlite'
157+
'tests/data/sub-tracking-results/files-to-combine/main.sub-tracking.sqlite',
158+
'tests/data/sub-tracking-results/files-to-combine/1723811.sub-tracking.csv',
159+
'tests/data/sub-tracking-results/files-to-combine/1723814.sub-tracking.csv',
160+
'tests/data/sub-tracking-results/files-to-combine/1723815.sub-tracking.csv',
161+
'tests/data/sub-tracking-results/files-to-combine/main.sub-tracking.csv'
158162
]
159163
)
160164
]

tests/test_sub_tracker.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import pytest as pt
22
import json
3+
import os
4+
import pandas as pd
5+
import sqlalchemy as sqlalc
36
import deepdiff as deepd
47
import gpu_tracker as gput
58
import utils
@@ -21,7 +24,7 @@ def test_sub_tracker(mocker, code_block_name: str | None, sub_tracking_file: str
2124
getpid_mock = mocker.patch('gpu_tracker.sub_tracker.os.getpid', side_effect=[1234] * n_iterations)
2225
time_mock = mocker.patch(
2326
'gpu_tracker.sub_tracker.time', time=mocker.MagicMock(side_effect=range(n_iterations * 2)))
24-
default_code_block_end = 'test_sub_tracker.py:26'
27+
default_code_block_end = 'test_sub_tracker.py:29'
2528
for _ in range(n_iterations):
2629
with gput.SubTracker(code_block_name=code_block_name, sub_tracking_file=sub_tracking_file) as sub_tracker:
2730
if code_block_name is None:
@@ -93,7 +96,7 @@ def get_format(request):
9396
yield request.param
9497

9598

96-
def test_analysis(format_):
99+
def test_analysis(format_: str):
97100
folder = 'tests/data/sub-tracking-results'
98101
tracking_file = f'{folder}/tracking.{format_}'
99102
sub_tracking_file = f'{folder}/sub-tracking.{format_}'
@@ -106,3 +109,29 @@ def test_analysis(format_):
106109
with open(f'{folder}/results.txt', 'r') as file:
107110
expected_str_results = file.read()
108111
assert expected_str_results == str(actual_results)
112+
113+
114+
def test_combine(format_: str):
115+
folder = 'tests/data/sub-tracking-results'
116+
files = [f'{folder}/files-to-combine/{name}' for name in os.listdir(f'{folder}/files-to-combine') if name.endswith(format_)]
117+
with pt.raises(ValueError) as error:
118+
wrong_extension = "csv" if format_ == "sqlite" else "sqlite"
119+
invalid_file = f'wrong-extension.{wrong_extension}'
120+
analyzer = gput.SubTrackingAnalyzer(None, invalid_file)
121+
analyzer.combine_sub_tracking_files(files)
122+
assert str(error.value) == f'File {files[0]} does not end with the same extension as {invalid_file}. Must end in ".{wrong_extension}".'
123+
sub_tracking_file = f'combined.{format_}'
124+
analyzer = gput.SubTrackingAnalyzer(None, sub_tracking_file)
125+
analyzer.combine_sub_tracking_files(files)
126+
expected_path = f'{folder}/sub-tracking.{format_}'
127+
if format_ == 'csv':
128+
expected_results = pd.read_csv(expected_path)
129+
actual_results = pd.read_csv(sub_tracking_file)
130+
else:
131+
expected_results = pd.read_sql('data', sqlalc.create_engine(f'sqlite:///{expected_path}'))
132+
actual_results = pd.read_sql('data', sqlalc.create_engine(f'sqlite:///{sub_tracking_file}'))
133+
pd.testing.assert_frame_equal(expected_results, actual_results, atol=1e-10, rtol=1e-10)
134+
with pt.raises(ValueError) as error:
135+
analyzer.combine_sub_tracking_files(files)
136+
assert str(error.value) == f'Cannot create sub-tracking file {sub_tracking_file}. File already exists.'
137+
os.remove(sub_tracking_file)

0 commit comments

Comments
 (0)