fix tests

This commit is contained in:
moririn2528
2023-09-08 15:23:05 +09:00
parent eb4cde2936
commit a29f25bfd8
6 changed files with 101 additions and 86 deletions
+9 -10
View File
@@ -8,7 +8,7 @@ from optuna import get_all_study_summaries
from optuna.study import StudyDirection
from optuna_dashboard._app import create_app
from optuna_dashboard._app import create_new_study
from optuna_dashboard._preferential_history import serialize_preference_histories
from optuna_dashboard._serializer import serialize_preference_history
from optuna_dashboard.preferential import create_study
from .wsgi_client import send_request
@@ -206,10 +206,9 @@ class APITestCase(TestCase):
def test_undo_redo_history(self) -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(storage=storage)
study = create_study(storage=storage, n_generate=3)
for _ in range(3):
trial = study.ask()
study.mark_comparison_ready(trial)
study.ask()
app = create_app(storage)
study_id = study._study._study_id
@@ -227,14 +226,14 @@ class APITestCase(TestCase):
content_type="application/json",
)
self.assertEqual(status, 204)
histories = serialize_preference_histories(storage.get_study_system_attrs(study_id))
histories = serialize_preference_history(storage.get_study_system_attrs(study_id))
assert len(histories) == 1
assert histories[0]["enabled"]
history_uuid = histories[0]["uuid"]
history_id = histories[0]["id"]
status, _, _ = send_request(
app,
f"/api/studies/{study_id}/preference/{history_uuid}",
f"/api/studies/{study_id}/preference/{history_id}",
"PUT",
body=json.dumps(
{
@@ -244,14 +243,14 @@ class APITestCase(TestCase):
content_type="application/json",
)
self.assertEqual(status, 204)
histories = serialize_preference_histories(storage.get_study_system_attrs(study_id))
histories = serialize_preference_history(storage.get_study_system_attrs(study_id))
assert len(histories) == 1
assert not histories[0]["enabled"]
assert len(study.get_preferences()) == 0
status, _, _ = send_request(
app,
f"/api/studies/{study_id}/preference/{history_uuid}",
f"/api/studies/{study_id}/preference/{history_id}",
"PUT",
body=json.dumps(
{
@@ -261,7 +260,7 @@ class APITestCase(TestCase):
content_type="application/json",
)
self.assertEqual(status, 204)
histories = serialize_preference_histories(storage.get_study_system_attrs(study_id))
histories = serialize_preference_history(storage.get_study_system_attrs(study_id))
assert len(histories) == 1
assert histories[0]["enabled"]
preferences = study.get_preferences()
+55 -58
View File
@@ -1,9 +1,13 @@
from __future__ import annotations
import json
from typing import Callable
from typing import TYPE_CHECKING
from optuna_dashboard._preferential_history import _SYSTEM_ATTR_PREFIX_HISTORY
from optuna_dashboard._preferential_history import NewHistory
from optuna_dashboard._preferential_history import report_history
from optuna_dashboard._preferential_history import switching_history
from optuna_dashboard._serializer import serialize_preference_history
from optuna_dashboard.preferential import create_study
from optuna_dashboard.preferential._system_attrs import _SYSTEM_ATTR_PREFIX_PREFERENCE
@@ -12,6 +16,10 @@ from .storage_supplier import parametrize_storages
from .storage_supplier import StorageSupplier
if TYPE_CHECKING:
from optuna_dashboard._preferential_history import History
@parametrize_storages
def test_report_and_get_choices(storage_supplier: Callable[[], StorageSupplier]) -> None:
with storage_supplier() as storage:
@@ -25,20 +33,12 @@ def test_report_and_get_choices(storage_supplier: Callable[[], StorageSupplier])
report_history(
study_id=study_id,
storage=storage,
input_data=NewHistory(
mode="ChooseWorst",
candidates=[0, 1, 2],
clicked=1,
),
input_data=NewHistory(mode="ChooseWorst", candidates=[0, 1, 2], clicked=1),
)
report_history(
study_id=study_id,
storage=storage,
input_data=NewHistory(
mode="ChooseWorst",
candidates=[0, 2, 3, 4],
clicked=0,
),
input_data=NewHistory(mode="ChooseWorst", candidates=[0, 2, 3, 4], clicked=0),
)
history = serialize_preference_history(storage.get_study_system_attrs(study_id))
sys_attrs = storage.get_study_system_attrs(study_id)
@@ -61,56 +61,53 @@ def test_report_and_get_choices(storage_supplier: Callable[[], StorageSupplier])
assert preferences[i][1] == worst
# TODO(moririn): Add tests for switching_history.
# @parametrize_storages
# def test_undo_redo_history(storage_supplier: Callable[[], StorageSupplier]) -> None:
# with storage_supplier() as storage:
# study = create_study(storage=storage, n_generate=5)
# for _ in range(5):
# trial = study.ask()
# trial.suggest_float("x", 0, 1)
@parametrize_storages
def test_undo_redo_history(storage_supplier: Callable[[], StorageSupplier]) -> None:
with storage_supplier() as storage:
study = create_study(storage=storage, n_generate=5)
for _ in range(5):
trial = study.ask()
trial.suggest_float("x", 0, 1)
# study_id = study._study._study_id
study_id = study._study._study_id
# history_uuid = report_history(
# study_id=study_id,
# storage=storage,
# input_data={
# "mode": "ChooseWorst",
# "candidates": [0, 1, 2],
# "clicked": 1,
# },
# )
# switching_history(study_id, storage, history_uuid, False)
# history = load_preference_history(history_uuid, storage.get_study_system_attrs(study_id))
# preference = get_preference(study_id, storage, history.preference_uuid)
# assert history.mode == "ChooseWorst"
# assert history.candidates == [0, 1, 2]
# assert history.clicked == 1
# assert len(history.evacuated_preference) == 2
# assert len(preference) == 0
def get_preferences_history(history_id: str):
system_attrs = storage.get_study_system_attrs(study_id)
history: History = json.loads(
system_attrs.get(_SYSTEM_ATTR_PREFIX_HISTORY + history_id, "")
)
preference: list[tuple[int, int]] = system_attrs.get(
_SYSTEM_ATTR_PREFIX_PREFERENCE + history["preference_id"], []
)
return preference, history
# switching_history(study_id, storage, history_uuid, False)
# history = load_preference_history(history_uuid, storage.get_study_system_attrs(study_id))
# preference = get_preference(study_id, storage, history.preference_uuid)
# assert len(history.evacuated_preference) == 2
# assert len(preference) == 0
history_id = report_history(
study_id=study_id,
storage=storage,
input_data=NewHistory(mode="ChooseWorst", candidates=[0, 1, 2], clicked=1),
)
switching_history(study_id, storage, history_id, False)
preference, history = get_preferences_history(history_id)
assert history["mode"] == "ChooseWorst"
assert history["candidates"] == [0, 1, 2]
assert history["clicked"] == 1
assert len(preference) == 0
# switching_history(study_id, storage, history_uuid, True)
# history = load_preference_history(history_uuid, storage.get_study_system_attrs(study_id))
# preference = get_preference(study_id, storage, history.preference_uuid)
# assert history.mode == "ChooseWorst"
# assert history.candidates == [0, 1, 2]
# assert history.clicked == 1
# assert len(history.evacuated_preference) == 0
# assert len(preference) == 2
# for i, (best, worst) in enumerate([(0, 1), (2, 1)]):
# assert len(preference[i]) == 2
# assert preference[i][0] == best
# assert preference[i][1] == worst
switching_history(study_id, storage, history_id, False)
preference, history = get_preferences_history(history_id)
assert len(preference) == 0
# switching_history(study_id, storage, history_uuid, True)
# history = load_preference_history(history_uuid, storage.get_study_system_attrs(study_id))
# preference = get_preference(study_id, storage, history.preference_uuid)
# assert len(history.evacuated_preference) == 0
# assert len(preference) == 2
switching_history(study_id, storage, history_id, True)
preference, history = get_preferences_history(history_id)
assert history["mode"] == "ChooseWorst"
assert history["candidates"] == [0, 1, 2]
assert history["clicked"] == 1
assert len(preference) == 2
for i, (best, worst) in enumerate([(0, 1), (2, 1)]):
assert len(preference[i]) == 2
assert preference[i][0] == best
assert preference[i][1] == worst
switching_history(study_id, storage, history_id, True)
preference, history = get_preferences_history(history_id)
assert len(preference) == 2