Closed sakamomo554101 closed 2 years ago
summarize_job_logもレコードがないのはおかしいな・・。 要約処理のリクエストがきたら、かならず登録されるはずなんだが、、
job_idをuuidで入れてるのが問題かも・・。 色々と統一感ないな
とりあえず、uuidをstringに変換して、BQに入れ直す
なるほど、、BQの場合、insertのタイミングでuuid付与しているから、BodyInfoのインスタンス作ったタイミングでは、まだidがない状態なんだ・・。
MySQLの場合、かってにIDが割り振られる前提だからOK
あれ、、SQLAlchemyのcolumnに対して、初期化が聞いてないような・・。 dataclassだから?
https://docs.python.org/ja/3/library/dataclasses.html#post-init-processing __post_init__でuuidの初期化すれば良いかも。試す。
summarize_job_infoとsummarize_job_logのidに差分がある・・
MySQL側、BQ側、両方要約処理のレスポンス変えることを確認!
IFの型を整理したら、コミット整理して、PR作る!
テストも見た方がいいな。 特にMySQL側はこけそう
うーむ、テストコード動かん・・。
とりあえずAPI_Gatewayから見ていく。
======================================================================
ERROR: test_get_summarize_result_complete (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "api_gateway/test/test_api.py", line 84, in test_get_summarize_result_complete
response = client.get(
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 555, in get
return self.request('GET', url, **kwargs)
File "/usr/local/lib/python3.8/site-packages/starlette/testclient.py", line 468, in request
return super().request(
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.8/site-packages/starlette/testclient.py", line 266, in send
raise exc
File "/usr/local/lib/python3.8/site-packages/starlette/testclient.py", line 263, in send
portal.call(self.app, scope, receive, send)
File "/usr/local/lib/python3.8/site-packages/anyio/from_thread.py", line 230, in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 388, in __get_result
raise self._exception
File "/usr/local/lib/python3.8/site-packages/anyio/from_thread.py", line 177, in _call_func
retval = await retval
File "/usr/local/lib/python3.8/site-packages/fastapi/applications.py", line 208, in __call__
await super().__call__(scope, receive, send)
File "/usr/local/lib/python3.8/site-packages/starlette/applications.py", line 112, in __call__
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 181, in __call__
raise exc
File "/usr/local/lib/python3.8/site-packages/starlette/middleware/errors.py", line 159, in __call__
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 82, in __call__
raise exc
File "/usr/local/lib/python3.8/site-packages/starlette/exceptions.py", line 71, in __call__
await self.app(scope, receive, sender)
File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 656, in __call__
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 259, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.8/site-packages/starlette/routing.py", line 61, in app
response = await func(request)
File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 226, in app
raw_response = await run_endpoint_function(
File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 159, in run_endpoint_function
return await dependant.call(**values)
File "api_gateway/test/../api.py", line 96, in get_summarize_result
return await self.__get_summarize_result(job_id=job_id)
File "api_gateway/test/../api.py", line 126, in __get_summarize_result
job_log = self.__db_instance.fetch_summarize_job_log_by_id(job_id=job_id)
File "api_gateway/test/test_api.py", line 196, in fetch_summarize_job_log_by_id
return [job_log for job_log in self.__job_logs if job_log.job_id == job_id][0]
IndexError: list index out of range
======================================================================
FAIL: test_request_summarize (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "api_gateway/test/test_api.py", line 59, in test_request_summarize
self.assertEqual(len(queue), 1)
AssertionError: 0 != 1
======================================================================
FAIL: test_set_correct_summarize_result_complete (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "api_gateway/test/test_api.py", line 119, in test_set_correct_summarize_result_complete
self.assertEqual(response.status_code, 200)
AssertionError: 422 != 200
----------------------------------------------------------------------
Ran 3 tests in 0.069s
FAILED (failures=2, errors=1)
結構まえのキューの実装修正した際のテストコードの修正ミスっぽいな・・。 やっぱりちゃんとテストを毎回全部実行したい・・
test_apiは書き直す
======================================================================
FAIL: test_set_correct_summarize_result_complete (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test/test_api.py", line 125, in test_set_correct_summarize_result_complete
self.assertEqual(response.status_code, 200)
AssertionError: 422 != 200
CorrectInputDataにstatus_codeは不要そうなので、削除する。 api.jsonも修正する(これどうやって作ったっけ・・)
test_db_wrapper.pyもこけているので修正する。 ※これはBQ対応が関連してそう
test_bq_db_wrapperもこけてるな・・。
各idをfetch時に入れ直す必要がある
一通りテストパスしたので、コミット整理して、マージする。 テスト追加するissueは作っておこ・・
対応済み。クローズ。
概要
DBをBQに保存するように対応 現状は、(別コンテナ化しているが)MySQLへ保存するように対応している。
上記のDBヘルパー的なインスタンスをBQ用にも作成し、データを保存できるようにする。