Skip to content

Commit 123fa87

Browse files
author
Min Shi
committed
extend data and add assertions
1 parent 3548ad7 commit 123fa87

File tree

3 files changed

+65
-21
lines changed
  • src/promptflow/tests

3 files changed

+65
-21
lines changed

src/promptflow/tests/sdk_cli_test/e2etests/test_cli.py

+50-21
Original file line numberDiff line numberDiff line change
@@ -2091,8 +2091,13 @@ def test_flow_run_resume_from(self, capfd, local_client) -> None:
20912091
"--name",
20922092
run_id,
20932093
)
2094-
out, _ = capfd.readouterr()
2095-
assert "Completed" in out
2094+
original_run = local_client.runs.get(name=run_id)
2095+
assert original_run.status == "Completed"
2096+
2097+
output_path = os.path.join(original_run.properties["output_path"], "flow_outputs", "output.jsonl")
2098+
with open(output_path, "r") as file:
2099+
original_output = [json.loads(line) for line in file]
2100+
original_success_count = len(original_output)
20962101

20972102
new_run_id = str(uuid.uuid4())
20982103
display_name = "test"
@@ -2110,12 +2115,22 @@ def test_flow_run_resume_from(self, capfd, local_client) -> None:
21102115
"tags.A=A",
21112116
"tags.B=B",
21122117
)
2113-
run = local_client.runs.get(name=new_run_id)
2114-
assert run.name == new_run_id
2115-
assert run.display_name == display_name
2116-
assert run.description == description
2117-
assert run.tags == {"A": "A", "B": "B"}
2118-
assert run._resume_from == run_id
2118+
resume_run = local_client.runs.get(name=new_run_id)
2119+
output_path = os.path.join(resume_run.properties["output_path"], "flow_outputs", "output.jsonl")
2120+
with open(output_path, "r") as file:
2121+
resume_output = [json.loads(line) for line in file]
2122+
assert resume_run.name == new_run_id
2123+
assert resume_run.display_name == display_name
2124+
assert resume_run.description == description
2125+
assert resume_run.tags == {"A": "A", "B": "B"}
2126+
assert resume_run._resume_from == run_id
2127+
2128+
# assert new run resume from the original run
2129+
log_path = os.path.join(resume_run.properties["output_path"], "logs.txt")
2130+
with open(log_path, "r") as file:
2131+
log_text = file.read()
2132+
assert f"Skipped the execution of {original_success_count} existing results." in log_text
2133+
assert len(resume_output) > len(original_output)
21192134

21202135
def test_flow_run_resume_partially_failed_run(self, capfd, local_client) -> None:
21212136
run_id = str(uuid.uuid4())
@@ -2160,7 +2175,7 @@ def get_successful_lines(output_path):
21602175
)
21612176
run_id = new_run_id
21622177

2163-
def test_flow_run_resume_from_token(self, capfd, local_client) -> None:
2178+
def test_flow_run_resume_with_token(self, local_client) -> None:
21642179
run_id = str(uuid.uuid4())
21652180
# fetch std out
21662181
run_pf_command(
@@ -2175,9 +2190,12 @@ def test_flow_run_resume_from_token(self, capfd, local_client) -> None:
21752190
"--name",
21762191
run_id,
21772192
)
2178-
out, _ = capfd.readouterr()
2179-
assert "Completed" in out
21802193
original_run = local_client.runs.get(name=run_id)
2194+
assert original_run.status == "Completed"
2195+
output_path = os.path.join(original_run.properties["output_path"], "flow_outputs", "output.jsonl")
2196+
with open(output_path, "r") as file:
2197+
original_output = [json.loads(line) for line in file]
2198+
original_success_count = len(original_output)
21812199

21822200
new_run_id = str(uuid.uuid4())
21832201
display_name = "test"
@@ -2196,17 +2214,27 @@ def test_flow_run_resume_from_token(self, capfd, local_client) -> None:
21962214
"tags.B=B",
21972215
)
21982216
resume_run = local_client.runs.get(name=new_run_id)
2217+
output_path = os.path.join(resume_run.properties["output_path"], "flow_outputs", "output.jsonl")
2218+
with open(output_path, "r") as file:
2219+
resume_output = [json.loads(line) for line in file]
21992220
assert resume_run.name == new_run_id
22002221
assert resume_run.display_name == display_name
22012222
assert resume_run.description == description
22022223
assert resume_run.tags == {"A": "A", "B": "B"}
22032224
assert resume_run._resume_from == run_id
2225+
2226+
# assert new run resume from the original run
2227+
log_path = os.path.join(resume_run.properties["output_path"], "logs.txt")
2228+
with open(log_path, "r") as file:
2229+
log_text = file.read()
2230+
assert f"Skipped the execution of {original_success_count} existing results." in log_text
2231+
assert len(resume_output) > len(original_output)
22042232
assert (
22052233
original_run.properties["system_metrics"]["total_tokens"]
2206-
<= resume_run.properties["system_metrics"]["total_tokens"]
2234+
< resume_run.properties["system_metrics"]["total_tokens"]
22072235
)
22082236

2209-
def test_flow_run_resume_from_image_aggregation(self, capfd, local_client) -> None:
2237+
def test_flow_run_resume_with_image_aggregation(self, capfd, local_client) -> None:
22102238
run_id = str(uuid.uuid4())
22112239
# fetch std out
22122240
run_pf_command(
@@ -2221,12 +2249,12 @@ def test_flow_run_resume_from_image_aggregation(self, capfd, local_client) -> No
22212249
"--name",
22222250
run_id,
22232251
)
2224-
out, _ = capfd.readouterr()
2225-
assert "Completed" in out
22262252
original_run = local_client.runs.get(name=run_id)
2253+
assert original_run.status == "Completed"
22272254
output_path = os.path.join(original_run.properties["output_path"], "flow_outputs", "output.jsonl")
22282255
with open(output_path, "r") as file:
22292256
original_output = [json.loads(line) for line in file]
2257+
original_success_count = len(original_output)
22302258

22312259
new_run_id = str(uuid.uuid4())
22322260
display_name = "test"
@@ -2246,15 +2274,16 @@ def test_flow_run_resume_from_image_aggregation(self, capfd, local_client) -> No
22462274
)
22472275
resume_run = local_client.runs.get(name=new_run_id)
22482276
output_path = os.path.join(resume_run.properties["output_path"], "flow_outputs", "output.jsonl")
2249-
22502277
with open(output_path, "r") as file:
22512278
resume_output = [json.loads(line) for line in file]
22522279

2253-
# assert original_output in resume_output
2254-
original_output_line_numbers = {line["line_number"] for line in original_output}
2255-
resume_output_line_numbers = {line["line_number"] for line in resume_output}
2256-
assert original_output_line_numbers.issubset(resume_output_line_numbers)
2257-
assert len(resume_output) >= len(original_output)
2280+
# assert new run resume from the original run
2281+
log_path = os.path.join(resume_run.properties["output_path"], "logs.txt")
2282+
with open(log_path, "r") as file:
2283+
log_text = file.read()
2284+
assert f"Skipped the execution of {original_success_count} existing results." in log_text
2285+
assert len(resume_output) > len(original_output)
2286+
22582287
assert resume_run.name == new_run_id
22592288
assert resume_run.display_name == display_name
22602289
assert resume_run.description == description

src/promptflow/tests/test_configs/flows/eval_flow_with_image_resume_random_fail/data.jsonl

+6
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,10 @@
66
{"input_image": {"data:image/png;path": "logo.png"}}
77
{"input_image": {"data:image/jpg;path": "logo.gif"}}
88
{"input_image": {"data:image/png;path": "logo.jpg"}}
9+
{"input_image": {"data:image/png;path": "logo.png"}}
10+
{"input_image": {"data:image/jpg;path": "logo.gif"}}
11+
{"input_image": {"data:image/png;path": "logo.jpg"}}
12+
{"input_image": {"data:image/png;path": "logo.png"}}
13+
{"input_image": {"data:image/jpg;path": "logo.gif"}}
14+
{"input_image": {"data:image/png;path": "logo.jpg"}}
915
{"input_image": {"data:image/png;path": "logo.png"}}

src/promptflow/tests/test_configs/flows/web_classification_random_fail/data.jsonl

+9
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,13 @@
66
{"url": "https://play.google.com/store/apps/details?id=com.twitter.android", "answer": "App", "evidence": "Both"}
77
{"url": "https://www.youtube.com/watch?v=kYqRtjDBci8", "answer": "Channel", "evidence": "Both"}
88
{"url": "https://arxiv.org/abs/2307.04767", "answer": "Academic", "evidence": "Both"}
9+
{"url": "https://play.google.com/store/apps/details?id=com.twitter.android", "answer": "App", "evidence": "Both"}
10+
{"url": "https://www.youtube.com/watch?v=kYqRtjDBci8", "answer": "Channel", "evidence": "Both"}
11+
{"url": "https://arxiv.org/abs/2307.04767", "answer": "Academic", "evidence": "Both"}
12+
{"url": "https://play.google.com/store/apps/details?id=com.twitter.android", "answer": "App", "evidence": "Both"}
13+
{"url": "https://www.youtube.com/watch?v=kYqRtjDBci8", "answer": "Channel", "evidence": "Both"}
14+
{"url": "https://arxiv.org/abs/2307.04767", "answer": "Academic", "evidence": "Both"}
15+
{"url": "https://play.google.com/store/apps/details?id=com.twitter.android", "answer": "App", "evidence": "Both"}
16+
{"url": "https://www.youtube.com/watch?v=kYqRtjDBci8", "answer": "Channel", "evidence": "Both"}
17+
{"url": "https://arxiv.org/abs/2307.04767", "answer": "Academic", "evidence": "Both"}
918
{"url": "https://play.google.com/store/apps/details?id=com.twitter.android", "answer": "App", "evidence": "Both"}

0 commit comments

Comments
 (0)