From a6b17b0c780f65dbe6df9a419c0efe4f3859b037 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Tue, 27 May 2025 11:19:15 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=90=E3=83=83=E3=83=81=E5=AE=9F?= =?UTF-8?q?=E8=A1=8C=E7=AE=A1=E7=90=86=E3=83=86=E3=83=BC=E3=83=96=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E3=83=A6=E3=83=8B=E3=83=83=E3=83=88=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E5=AE=9F=E8=A3=85=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/manager/jskult_batch_run_manager.py | 4 +- .../manager/test_jskult_batch_run_manager.py | 55 ++++++++++++++++++- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/ecs/jskult-batch/src/manager/jskult_batch_run_manager.py b/ecs/jskult-batch/src/manager/jskult_batch_run_manager.py index 125e3167..682e9024 100644 --- a/ecs/jskult-batch/src/manager/jskult_batch_run_manager.py +++ b/ecs/jskult-batch/src/manager/jskult_batch_run_manager.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta import boto3 @@ -28,7 +28,7 @@ class JskultBatchRunManager: batch_run_status (str): バッチ処理ステータス """ # レコードの有効期限を現在時刻+24hのタイムスタンプで生成 - now = datetime.now(timezone.utc) + now = datetime.now(UTC) later = now + timedelta(hours=24) timestamp_24h = int(later.timestamp()) diff --git a/ecs/jskult-batch/tests/manager/test_jskult_batch_run_manager.py b/ecs/jskult-batch/tests/manager/test_jskult_batch_run_manager.py index a74c5f20..8d8e0ae3 100644 --- a/ecs/jskult-batch/tests/manager/test_jskult_batch_run_manager.py +++ b/ecs/jskult-batch/tests/manager/test_jskult_batch_run_manager.py @@ -14,12 +14,19 @@ class TestJskultBatchRunManager: yield dynamodb - dynamodb.delete_item(Key={ - 'execution_id': UNITTEST_EXECUTION_ID - }) + dynamodb.delete_item( + TableName=BATCH_MANAGE_DYNAMODB_TABLE_NAME, + Key={ + 'execution_id': {'S': UNITTEST_EXECUTION_ID} + } + ) def test_batch_success(self, dynamodb_client): + """バッチ実行管理テーブルに成功のステータスが書き込まれること + Args: + dynamodb_client (boto3.Client): DynamoDB クライアント + """ # Arrange # Act sut = JskultBatchRunManager(BATCH_MANAGE_DYNAMODB_TABLE_NAME, UNITTEST_EXECUTION_ID) @@ -34,3 +41,45 @@ class TestJskultBatchRunManager: } actual = dynamodb_client.get_item(**options) assert actual['Item']['batch_run_status']['S'] == 'success' + + def test_batch_failed(self, dynamodb_client): + """バッチ実行管理テーブルに失敗のステータスが書き込まれること + + Args: + dynamodb_client (boto3.Client): DynamoDB クライアント + """ + # Arrange + # Act + sut = JskultBatchRunManager(BATCH_MANAGE_DYNAMODB_TABLE_NAME, UNITTEST_EXECUTION_ID) + sut.batch_failed() + + # Assert + options = { + 'TableName': BATCH_MANAGE_DYNAMODB_TABLE_NAME, + 'Key': { + 'execution_id': {'S': UNITTEST_EXECUTION_ID}, + }, + } + actual = dynamodb_client.get_item(**options) + assert actual['Item']['batch_run_status']['S'] == 'failed' + + def test_batch_retry(self, dynamodb_client): + """バッチ実行管理テーブルにリトライのステータスが書き込まれること + + Args: + dynamodb_client (boto3.Client): DynamoDB クライアント + """ + # Arrange + # Act + sut = JskultBatchRunManager(BATCH_MANAGE_DYNAMODB_TABLE_NAME, UNITTEST_EXECUTION_ID) + sut.batch_retry() + + # Assert + options = { + 'TableName': BATCH_MANAGE_DYNAMODB_TABLE_NAME, + 'Key': { + 'execution_id': {'S': UNITTEST_EXECUTION_ID}, + }, + } + actual = dynamodb_client.get_item(**options) + assert actual['Item']['batch_run_status']['S'] == 'retry'