feat: バグ取りしながらテスト実装。can_run_processの判定がtrueになるパターンを実装。
This commit is contained in:
parent
274c7abec1
commit
881ebeb7e3
@ -83,7 +83,8 @@ class JskultBatchStatusManager:
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
COUNT(*)
|
||||
process_name,
|
||||
process_date
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
@ -93,7 +94,7 @@ class JskultBatchStatusManager:
|
||||
{'process_name': self._process_name}
|
||||
)
|
||||
|
||||
record_count = record[0]['count']
|
||||
record_count = len(record)
|
||||
|
||||
if record_count == 0:
|
||||
raise BatchOperationException("レコードの取得が出来ませんでした。")
|
||||
@ -137,7 +138,8 @@ class JskultBatchStatusManager:
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
COUNT(*)
|
||||
process_name,
|
||||
process_date
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
@ -147,7 +149,7 @@ class JskultBatchStatusManager:
|
||||
{'process_name': self._process_name}
|
||||
)
|
||||
|
||||
record_count = record[0]['count']
|
||||
record_count = len(record)
|
||||
|
||||
if record_count == 0:
|
||||
raise ValueError("レコードの取得が出来ませんでした。")
|
||||
@ -191,7 +193,8 @@ class JskultBatchStatusManager:
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
COUNT(*)
|
||||
process_name,
|
||||
process_date
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
@ -202,7 +205,7 @@ class JskultBatchStatusManager:
|
||||
{'process_name': constants.PROCESS_NAME_ULTMARC_IO}
|
||||
)
|
||||
|
||||
record_count = record[0]['count']
|
||||
record_count = len(record)
|
||||
return record_count != 0
|
||||
|
||||
except Exception as e:
|
||||
@ -224,7 +227,8 @@ class JskultBatchStatusManager:
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
run_count
|
||||
total_run_count,
|
||||
process_status
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
@ -237,23 +241,25 @@ class JskultBatchStatusManager:
|
||||
if len(record) == 0:
|
||||
raise BatchOperationException("レコードの取得が出来ませんでした。")
|
||||
|
||||
run_count = record[0]['run_count']
|
||||
total_run_count = record[0]['total_run_count']
|
||||
process_status = record[0]['process_status']
|
||||
|
||||
self._db.execute(
|
||||
"""
|
||||
CALL
|
||||
internal07.upsert_jskult_batch_status_manage(
|
||||
:process_name,{self._process_name},
|
||||
:process_type,{self._process_type},
|
||||
NULL
|
||||
:run_count,
|
||||
:process_name,
|
||||
:process_type,
|
||||
:process_status,
|
||||
:total_run_count,
|
||||
NULL
|
||||
)
|
||||
""",
|
||||
{
|
||||
'process_name': self._process_name,
|
||||
'process_type': self._process_type,
|
||||
'run_count': run_count + 1,
|
||||
'process_status': process_status,
|
||||
'total_run_count': total_run_count + 1,
|
||||
}
|
||||
)
|
||||
|
||||
@ -276,11 +282,14 @@ class JskultBatchStatusManager:
|
||||
Returns:
|
||||
bool 後続処理を実行してよい場合はTrue
|
||||
"""
|
||||
try:
|
||||
self._db.connect()
|
||||
# 自身(後続処理 or 日付テーブル更新)のレコードを取得する
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
COUNT(*)
|
||||
process_name,
|
||||
process_date
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
@ -294,10 +303,14 @@ class JskultBatchStatusManager:
|
||||
}
|
||||
)
|
||||
|
||||
record_count = record[0]['count']
|
||||
record_count = len(record)
|
||||
|
||||
# データ取込数とデータ登録の件数が一致しているか確認
|
||||
return self._receive_file_count == record_count
|
||||
except Exception as e:
|
||||
raise BatchOperationException(e)
|
||||
finally:
|
||||
self._db.disconnect()
|
||||
|
||||
def _is_done_post_process(self) -> bool:
|
||||
"""後続処理のすべての処理が完了しているかを判定する
|
||||
@ -342,7 +355,8 @@ class JskultBatchStatusManager:
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
COUNT(*)
|
||||
process_name,
|
||||
process_date
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
@ -356,7 +370,7 @@ class JskultBatchStatusManager:
|
||||
}
|
||||
)
|
||||
|
||||
record_count = record[0]['count']
|
||||
record_count = len(record)
|
||||
|
||||
return record_count != 0
|
||||
|
||||
@ -379,20 +393,21 @@ class JskultBatchStatusManager:
|
||||
record = self._db.execute_select(
|
||||
"""
|
||||
SELECT
|
||||
run_count
|
||||
total_run_count
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
process_name = {self._process_name}
|
||||
process_name = :process_name
|
||||
AND
|
||||
process_date = src07.get_syor_date();
|
||||
"""
|
||||
""",
|
||||
{'process_name': self._process_name}
|
||||
)
|
||||
|
||||
run_count = record[0]['run_count']
|
||||
total_run_count = record[0]['total_run_count']
|
||||
|
||||
# 取得した起動回数とフィールド変数の最大起動回数が一致を確認
|
||||
return run_count == self._max_run_count
|
||||
return total_run_count == self._max_run_count
|
||||
except Exception as e:
|
||||
raise BatchOperationException(e)
|
||||
finally:
|
||||
|
||||
@ -29,7 +29,7 @@ PROCESS_TYPE_DATA_IMPORT = 'data_import'
|
||||
# 後続処理
|
||||
PROCESS_TYPE_POST_PROCESS = 'post_process'
|
||||
# 日付テーブル更新
|
||||
PROCESS_TYPE_DATA_IMPORT = 'update_business_day'
|
||||
PROCESS_TYPE_UPDATE_BUSINESS_DAY = 'update_business_day'
|
||||
|
||||
# 処理ステータス:
|
||||
# 処理開始
|
||||
|
||||
@ -43,7 +43,8 @@ class TestJskultBatchStatusManager:
|
||||
db.execute('DELETE FROM src07.hdke_tbl')
|
||||
db.execute("""
|
||||
INSERT INTO src07.hdke_tbl
|
||||
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
||||
(syor_date, bch_actf, dump_sts_kbn,
|
||||
creater, create_date, updater, update_date)
|
||||
VALUES
|
||||
(:syor_date, :bch_actf, :dump_sts_kbn, CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
||||
""", {
|
||||
@ -64,7 +65,8 @@ class TestJskultBatchStatusManager:
|
||||
db.connect()
|
||||
db.execute("""
|
||||
INSERT INTO src07.hdke_tbl
|
||||
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
||||
(syor_date, bch_actf, dump_sts_kbn,
|
||||
creater, create_date, updater, update_date)
|
||||
VALUES
|
||||
('20250530', '1', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
||||
""")
|
||||
@ -105,7 +107,8 @@ class TestJskultBatchStatusManager:
|
||||
db.connect()
|
||||
db.execute("""
|
||||
INSERT INTO src07.hdke_tbl
|
||||
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
||||
(syor_date, bch_actf, dump_sts_kbn,
|
||||
creater, create_date, updater, update_date)
|
||||
VALUES
|
||||
('20250530', '1', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
||||
""")
|
||||
@ -113,18 +116,12 @@ class TestJskultBatchStatusManager:
|
||||
# バッチステータス管理テーブルを登録
|
||||
db.execute("""
|
||||
INSERT INTO internal07.jskult_batch_status_manage
|
||||
(process_name,process_date,process_type,process_status,total_run_count,max_run_count_flg)
|
||||
(process_name, process_date, process_type,
|
||||
process_status, total_run_count, max_run_count_flg)
|
||||
VALUES
|
||||
(:process_name,:process_date,:process_type,:process_status,:total_run_count,:max_run_count_flg)
|
||||
""",
|
||||
{
|
||||
'process_name': 'unittest_process_name',
|
||||
'process_date': '2025-05-30',
|
||||
'process_type': 'unittest_process_type',
|
||||
'process_status': 'retry',
|
||||
'total_run_count': '1',
|
||||
'max_run_count_flg': '0'
|
||||
})
|
||||
('unittest_process_name', '2025-05-30','unittest_process_type',
|
||||
'retry', '1', '0')
|
||||
""")
|
||||
|
||||
# Act
|
||||
sut = JskultBatchStatusManager(
|
||||
@ -151,3 +148,59 @@ class TestJskultBatchStatusManager:
|
||||
actual['process_date'], '%Y/%m/%d') == '2025/05/30'
|
||||
assert actual['process_type'] == 'unittest_process_type'
|
||||
assert actual['process_status'] == 'doing'
|
||||
|
||||
def test_can_run_post_process_success(self):
|
||||
"""
|
||||
完了しているデータ取り込み件数と受信ファイル数が一致している場合、trueが返却されること
|
||||
起動回数が+1されていること
|
||||
"""
|
||||
# Arrange
|
||||
# 日付テーブルを登録
|
||||
db = Database.get_instance()
|
||||
db.connect()
|
||||
db.execute("""
|
||||
INSERT INTO src07.hdke_tbl
|
||||
(syor_date, bch_actf, dump_sts_kbn,
|
||||
creater, create_date, updater, update_date)
|
||||
VALUES
|
||||
('20250530', '1', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
||||
""")
|
||||
|
||||
# バッチステータス管理テーブルを登録
|
||||
db.execute("""
|
||||
INSERT INTO internal07.jskult_batch_status_manage
|
||||
(process_name, process_date, process_type,
|
||||
process_status, total_run_count, max_run_count_flg)
|
||||
VALUES
|
||||
('unittest_process_name', '2025-05-30', 'unittest_process_type',
|
||||
'start', '0', '0'),
|
||||
('data_import_process_1', '2025-05-30','data_import',
|
||||
'done', '0', '0'),
|
||||
('data_import_process_2', '2025-05-30','data_import',
|
||||
'done', '0', '0'),
|
||||
('data_import_process_3', '2025-05-30','data_import',
|
||||
'done', '0', '0')
|
||||
""")
|
||||
|
||||
# Act
|
||||
sut = JskultBatchStatusManager(
|
||||
'unittest_process_name',
|
||||
'unittest_process_type',
|
||||
3,
|
||||
3
|
||||
)
|
||||
actual = sut.can_run_post_process()
|
||||
|
||||
# Assert
|
||||
assert actual is True
|
||||
actual_record = db.execute_select("""
|
||||
SELECT
|
||||
total_run_count
|
||||
FROM
|
||||
internal07.jskult_batch_status_manage
|
||||
WHERE
|
||||
process_name = 'unittest_process_name'
|
||||
AND process_date = '2025-05-30'
|
||||
""")[0]
|
||||
|
||||
assert actual_record['total_run_count'] == 1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user