Merge pull request #95 feature-NEWDWH2021-688 into develop-6crm
This commit is contained in:
commit
8110fcde06
@ -9,8 +9,8 @@ LOG_LEVEL = os.environ.get(constants.LOG_LEVEL, constants.LOG_LEVEL_INFO)
|
||||
CRM_AUTH_TIMEOUT = int(os.environ.get(constants.CRM_AUTH_TIMEOUT, 100))
|
||||
# CRMのレコード件数取得処理のタイムアウト秒数
|
||||
CRM_GET_RECORD_COUNT_TIMEOUT = int(os.environ.get(constants.CRM_GET_RECORD_COUNT_TIMEOUT, 300))
|
||||
# CRMのレコード件数取得処理の最大リトライ試行回数
|
||||
CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT = int(os.environ.get(constants.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT, 3))
|
||||
# CRMのレコード件数取得処理の最大リトライ試行回数(処理の実施総回数)
|
||||
CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT = int(os.environ.get(constants.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT, 4))
|
||||
# CRMのレコード件数取得処理のリトライ時の初回待ち秒数
|
||||
CRM_GET_RECORD_COUNT_RETRY_INTERVAL = int(os.environ.get(constants.CRM_GET_RECORD_COUNT_RETRY_INTERVAL, 5))
|
||||
# CRMのレコード件数取得処理のリトライ時の最小待ち秒数
|
||||
@ -19,8 +19,8 @@ CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL = int(os.environ.get(constants.CRM_GET_R
|
||||
CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL = int(os.environ.get(constants.CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL, 50))
|
||||
# CRMのレコード取得処理のタイムアウト秒数
|
||||
CRM_FETCH_RECORD_TIMEOUT = int(os.environ.get(constants.CRM_FETCH_RECORD_TIMEOUT, 300))
|
||||
# CRMのレコード取得処理の最大リトライ試行回数
|
||||
CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT = int(os.environ.get(constants.CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT, 3))
|
||||
# CRMのレコード取得処理の最大リトライ試行回数(処理の実施総回数)
|
||||
CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT = int(os.environ.get(constants.CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT, 4))
|
||||
# CRMのレコード取得処理のリトライ時の初回待ち秒数
|
||||
CRM_FETCH_RECORD_RETRY_INTERVAL = int(os.environ.get(constants.CRM_FETCH_RECORD_RETRY_INTERVAL, 5))
|
||||
# CRMのレコード取得処理のリトライ時の最小待ち秒数
|
||||
|
||||
@ -217,7 +217,7 @@ class TestFetchCrmDataProcess:
|
||||
2. データ件数取得処理で読み取りタイムアウト例外が発生した場合、リトライした結果復旧し、正常終了すること
|
||||
3. データ件数取得処理で予期せぬ例外が発生した場合、リトライした結果復旧し、正常終了すること
|
||||
Arranges:
|
||||
- データ件数取得処理の最大リトライ試行回数を3に設定する
|
||||
- データ件数取得処理の最大リトライ試行回数を4に設定する
|
||||
- timeout_env_nameに指定されたリトライタイムアウト時間の秒数を1に設定する
|
||||
- データ件数取得処理の初回に接続タイムアウト例外が発生するようにする
|
||||
Expects:
|
||||
@ -225,7 +225,7 @@ class TestFetchCrmDataProcess:
|
||||
- データ件数取得に失敗した旨のエラーが出力されない
|
||||
"""
|
||||
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT', 3)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT', 4)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_INTERVAL', 1)
|
||||
@ -236,8 +236,8 @@ class TestFetchCrmDataProcess:
|
||||
patch('src.fetch_crm_data_process.SalesforceApiClient') as mock_api_client:
|
||||
# モック化
|
||||
mock_counter_inst = mock_counter.return_value
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4]
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3, 4]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4, 5]
|
||||
mock_builder_inst = mock_soql_builder.return_value
|
||||
mock_builder_inst.create_count_soql.return_value = ''
|
||||
mock_builder_inst.create_fetch_soql.return_value = ''
|
||||
@ -271,15 +271,15 @@ class TestFetchCrmDataProcess:
|
||||
2. データ件数取得処理で読み取りタイムアウト例外が発生した場合、リトライした結果復旧せず、異常終了すること
|
||||
3. データ件数取得処理で予期せぬ例外が発生した場合、リトライした結果復旧せず、異常終了すること
|
||||
Arranges:
|
||||
- データ件数取得処理の最大リトライ試行回数を3に設定する
|
||||
- データ件数取得処理の最大リトライ試行回数を4に設定する
|
||||
- timeout_env_nameに指定されたリトライタイムアウト時間の秒数を1に設定する
|
||||
- データ件数取得処理の1回目、2回目、3回目で接続タイムアウト例外が発生するようにする
|
||||
- データ件数取得処理の1回目、2回目、3回目、4回目で接続タイムアウト例外が発生するようにする
|
||||
Expects:
|
||||
- 異常終了する
|
||||
- データ件数取得に失敗した旨のエラーが出力される
|
||||
"""
|
||||
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT', 3)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT', 4)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_INTERVAL', 1)
|
||||
@ -290,13 +290,13 @@ class TestFetchCrmDataProcess:
|
||||
patch('src.fetch_crm_data_process.SalesforceApiClient') as mock_api_client:
|
||||
# モック化
|
||||
mock_counter_inst = mock_counter.return_value
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4]
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3, 4]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4, 5]
|
||||
mock_builder_inst = mock_soql_builder.return_value
|
||||
mock_builder_inst.create_count_soql.return_value = ''
|
||||
mock_builder_inst.create_fetch_soql.return_value = ''
|
||||
mock_client_inst = mock_api_client.return_value
|
||||
mock_client_inst.fetch_sf_count.side_effect = [exception, exception, exception]
|
||||
mock_client_inst.fetch_sf_count.side_effect = [exception, exception, exception, exception]
|
||||
mock_client_inst.fetch_sf_data.return_value = common_expect
|
||||
# Act
|
||||
with pytest.raises(SalesforceAPIException) as e:
|
||||
@ -304,16 +304,16 @@ class TestFetchCrmDataProcess:
|
||||
|
||||
# Assert
|
||||
|
||||
# 取得は3回行われる
|
||||
assert mock_counter_inst.describe.call_count == 3
|
||||
# 足し込みは2回のみ
|
||||
assert mock_counter_inst.increment.call_count == 2
|
||||
# 取得は4回行われる
|
||||
assert mock_counter_inst.describe.call_count == 4
|
||||
# 足し込みは3回のみ
|
||||
assert mock_counter_inst.increment.call_count == 3
|
||||
|
||||
assert generate_log_message_tuple(
|
||||
log_level=logging.WARNING,
|
||||
log_message=expect_message) in caplog.record_tuples
|
||||
called_log_counts = len([log for log in caplog.messages if log == expect_message])
|
||||
assert called_log_counts == 2
|
||||
assert called_log_counts == 3
|
||||
assert generate_log_message_tuple(log_message='I-FETCH-06 [Account] のCRMからのデータ取得処理を終了します') not in caplog.record_tuples
|
||||
|
||||
assert e.value.error_id == 'E-FETCH-01'
|
||||
@ -333,7 +333,7 @@ class TestFetchCrmDataProcess:
|
||||
2. レコード取得処理で読み取りタイムアウト例外が発生した場合、リトライした結果復旧し、正常終了すること
|
||||
3. レコード取得処理で予期せぬ例外が発生した場合、リトライした結果復旧し、正常終了すること
|
||||
Arranges:
|
||||
- レコード取得処理の最大リトライ試行回数を3に設定する
|
||||
- レコード取得処理の最大リトライ試行回数を4に設定する
|
||||
- timeout_env_nameに指定されたリトライタイムアウト時間の秒数を1に設定する
|
||||
- レコード取得処理の初回に接続タイムアウト例外が発生するようにする
|
||||
Expects:
|
||||
@ -341,7 +341,7 @@ class TestFetchCrmDataProcess:
|
||||
- データレコード取得に失敗した旨のエラーが出力されない
|
||||
"""
|
||||
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT', 3)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT', 4)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_GET_RECORD_COUNT_RETRY_INTERVAL', 1)
|
||||
@ -352,8 +352,8 @@ class TestFetchCrmDataProcess:
|
||||
patch('src.fetch_crm_data_process.SalesforceApiClient') as mock_api_client:
|
||||
# モック化
|
||||
mock_counter_inst = mock_counter.return_value
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4]
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3, 4]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4, 5]
|
||||
mock_builder_inst = mock_soql_builder.return_value
|
||||
mock_builder_inst.create_count_soql.return_value = ''
|
||||
mock_builder_inst.create_fetch_soql.return_value = ''
|
||||
@ -387,15 +387,15 @@ class TestFetchCrmDataProcess:
|
||||
2. レコード取得処理で読み取りタイムアウト例外が発生した場合、リトライした結果復旧せず、異常終了すること
|
||||
3. レコード取得処理で予期せぬ例外が発生した場合、リトライした結果復旧せず、異常終了すること
|
||||
Arranges:
|
||||
- レコード取得処理の最大リトライ試行回数を3に設定する
|
||||
- レコード取得処理の最大リトライ試行回数を4に設定する
|
||||
- timeout_env_nameに指定されたリトライタイムアウト時間の秒数を1に設定する
|
||||
- レコード取得処理の1回目、2回目、3回目で接続タイムアウト例外が発生するようにする
|
||||
- レコード取得処理の1回目、2回目、3回目、4回目で接続タイムアウト例外が発生するようにする
|
||||
Expects:
|
||||
- 異常終了する
|
||||
- データレコード取得に失敗した旨のエラーが出力される
|
||||
"""
|
||||
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT', 3)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT', 4)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_FETCH_RECORD_RETRY_MAX_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_FETCH_RECORD_RETRY_MIN_INTERVAL', 1)
|
||||
monkeypatch.setattr('src.fetch_crm_data_process.CRM_FETCH_RECORD_RETRY_INTERVAL', 1)
|
||||
@ -406,30 +406,30 @@ class TestFetchCrmDataProcess:
|
||||
patch('src.fetch_crm_data_process.SalesforceApiClient') as mock_api_client:
|
||||
# モック化
|
||||
mock_counter_inst = mock_counter.return_value
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4]
|
||||
mock_counter_inst.describe.side_effect = [1, 2, 3, 4]
|
||||
mock_counter_inst.increment.side_effect = [2, 3, 4, 5]
|
||||
mock_builder_inst = mock_soql_builder.return_value
|
||||
mock_builder_inst.create_count_soql.return_value = ''
|
||||
mock_builder_inst.create_fetch_soql.return_value = ''
|
||||
mock_client_inst = mock_api_client.return_value
|
||||
mock_client_inst.fetch_sf_count.return_value = 1
|
||||
mock_client_inst.fetch_sf_data.side_effect = [exception, exception, exception]
|
||||
mock_client_inst.fetch_sf_data.side_effect = [exception, exception, exception, exception]
|
||||
# Act
|
||||
with pytest.raises(SalesforceAPIException) as e:
|
||||
fetch_crm_data_process(common_target_object, common_last_fetch_datetime)
|
||||
|
||||
# Assert
|
||||
|
||||
# 取得は3回行われる
|
||||
assert mock_counter_inst.describe.call_count == 3
|
||||
# 足し込みは2回のみ
|
||||
assert mock_counter_inst.increment.call_count == 2
|
||||
# 取得は4回行われる
|
||||
assert mock_counter_inst.describe.call_count == 4
|
||||
# 足し込みは3回のみ
|
||||
assert mock_counter_inst.increment.call_count == 3
|
||||
|
||||
assert generate_log_message_tuple(
|
||||
log_level=logging.WARNING,
|
||||
log_message=expect_message) in caplog.record_tuples
|
||||
called_log_counts = len([log for log in caplog.messages if log == expect_message])
|
||||
assert called_log_counts == 2
|
||||
assert called_log_counts == 3
|
||||
assert generate_log_message_tuple(log_message='I-FETCH-06 [Account] のCRMからのデータ取得処理を終了します') not in caplog.record_tuples
|
||||
|
||||
assert e.value.error_id == 'E-FETCH-02'
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
LOG_LEVEL=INFO
|
||||
CRM_AUTH_TIMEOUT=100
|
||||
CRM_GET_RECORD_COUNT_TIMEOUT=300
|
||||
CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT=3
|
||||
CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT=4
|
||||
CRM_GET_RECORD_COUNT_RETRY_INTERVAL=5
|
||||
CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL=5
|
||||
CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL=50
|
||||
CRM_FETCH_RECORD_TIMEOUT=300
|
||||
CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT=3
|
||||
CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT=4
|
||||
CRM_FETCH_RECORD_RETRY_INTERVAL=5
|
||||
CRM_FETCH_RECORD_RETRY_MIN_INTERVAL=5
|
||||
CRM_FETCH_RECORD_RETRY_MAX_INTERVAL=50
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user