Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions app/jobs/get_usps_proofing_results_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def perform(_now)
@enrollment_outcomes = {
enrollments_checked: 0,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
Expand All @@ -45,7 +46,8 @@ def perform(_now)
analytics.idv_in_person_usps_proofing_results_job_completed(
**enrollment_outcomes,
duration_seconds: (Time.zone.now - started_at).seconds.round(2),
percent_enrollments_errored: percent_errored,
percent_enrollments_errored: summary_percent(:enrollments_errored),
percent_enrollments_network_error: summary_percent(:enrollments_network_error),
job_name: self.class.name,
)

Expand Down Expand Up @@ -112,11 +114,11 @@ def analytics(user: AnonymousUser.new)
Analytics.new(user: user, request: nil, session: {}, sp: nil)
end

def percent_errored
def summary_percent(outcomes_key)
error_rate = 0
if enrollment_outcomes[:enrollments_checked] > 0
error_rate =
(enrollment_outcomes[:enrollments_errored].fdiv(
(enrollment_outcomes[outcomes_key].fdiv(
enrollment_outcomes[:enrollments_checked],
) * 100).round(2)
end
Expand Down Expand Up @@ -159,7 +161,12 @@ def handle_client_or_server_error(err, enrollment)
response_status_code: err.response_status,
job_name: self.class.name,
)
enrollment_outcomes[:enrollments_errored] += 1

if err.is_a?(Faraday::TimeoutError) || err.is_a?(Faraday::ConnectionFailed)
enrollment_outcomes[:enrollments_network_error] += 1
else
enrollment_outcomes[:enrollments_errored] += 1
end
end

def handle_standard_error(err, enrollment)
Expand Down
4 changes: 3 additions & 1 deletion app/jobs/get_usps_ready_proofing_results_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def perform(_now)
@enrollment_outcomes = {
enrollments_checked: 0,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
Expand All @@ -31,7 +32,8 @@ def perform(_now)
analytics.idv_in_person_usps_proofing_results_job_completed(
**enrollment_outcomes,
duration_seconds: (Time.zone.now - started_at).seconds.round(2),
percent_enrollments_errored: percent_errored,
percent_enrollments_errored: summary_percent(:enrollments_errored),
percent_enrollments_network_error: summary_percent(:enrollments_network_error),
job_name: self.class.name,
)

Expand Down
4 changes: 3 additions & 1 deletion app/jobs/get_usps_waiting_proofing_results_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def perform(_now)
@enrollment_outcomes = {
enrollments_checked: 0,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
Expand All @@ -31,7 +32,8 @@ def perform(_now)
analytics.idv_in_person_usps_proofing_results_job_completed(
**enrollment_outcomes,
duration_seconds: (Time.zone.now - started_at).seconds.round(2),
percent_enrollments_errored: percent_errored,
percent_enrollments_errored: summary_percent(:enrollments_errored),
percent_enrollments_network_error: summary_percent(:enrollments_network_error),
job_name: self.class.name,
)

Expand Down
34 changes: 31 additions & 3 deletions spec/jobs/get_usps_proofing_results_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,16 @@
end

it 'logs a message with counts of various outcomes when the job completes (errored > 0)' do
pending_enrollments.append(
create(
:in_person_enrollment, :pending,
selected_location_details: { name: 'DEANWOOD' }
),
create(
:in_person_enrollment, :pending,
selected_location_details: { name: 'DEANWOOD' }
),
)
enrollment_records = InPersonEnrollment.where(id: pending_enrollments.map(&:id))
allow(InPersonEnrollment).to receive(:needs_usps_status_check).
and_return(enrollment_records)
Expand All @@ -329,19 +339,22 @@
{ status: 500 },
request_failed_proofing_results_args,
request_expired_proofing_results_args,
)
).and_raise(Faraday::TimeoutError).and_raise(Faraday::ConnectionFailed)

job.perform(Time.zone.now)

expect(job_analytics).to have_logged_event(
'GetUspsProofingResultsJob: Job completed',
duration_seconds: anything,
enrollments_checked: 5,
enrollments_checked: 7,
enrollments_errored: 1,
enrollments_network_error: 2,
enrollments_expired: 1,
enrollments_failed: 1,
enrollments_in_progress: 1,
enrollments_passed: 1,
percent_enrollments_errored: 20.00,
percent_enrollments_errored: 14.29,
percent_enrollments_network_error: 28.57,
job_name: 'GetUspsProofingResultsJob',
)

Expand All @@ -366,11 +379,13 @@
duration_seconds: anything,
enrollments_checked: 5,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
enrollments_passed: 5,
percent_enrollments_errored: 0.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsProofingResultsJob',
)

Expand All @@ -395,11 +410,13 @@
duration_seconds: anything,
enrollments_checked: 0,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
enrollments_passed: 0,
percent_enrollments_errored: 0.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsProofingResultsJob',
)

Expand Down Expand Up @@ -1109,6 +1126,17 @@
)
end

context 'when a connection failed error occurs' do
before(:each) do
stub_request_proofing_results_with_connection_failed_error
end

it_behaves_like(
'enrollment_encountering_an_error_that_has_a_nil_response',
error_type: Faraday::ConnectionFailed,
)
end

context 'when a nil status error occurs' do
before(:each) do
stub_request_proofing_results_with_nil_status_error
Expand Down
6 changes: 6 additions & 0 deletions spec/jobs/get_usps_ready_proofing_results_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,13 @@
duration_seconds: anything,
enrollments_checked: 5,
enrollments_errored: 1,
enrollments_network_error: 0,
enrollments_expired: 1,
enrollments_failed: 1,
enrollments_in_progress: 1,
enrollments_passed: 1,
percent_enrollments_errored: 20.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsReadyProofingResultsJob',
)

Expand All @@ -209,11 +211,13 @@
duration_seconds: anything,
enrollments_checked: 5,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
enrollments_passed: 5,
percent_enrollments_errored: 0.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsReadyProofingResultsJob',
)

Expand All @@ -238,11 +242,13 @@
duration_seconds: anything,
enrollments_checked: 0,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
enrollments_passed: 0,
percent_enrollments_errored: 0.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsReadyProofingResultsJob',
)

Expand Down
6 changes: 6 additions & 0 deletions spec/jobs/get_usps_waiting_proofing_results_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,13 @@
duration_seconds: anything,
enrollments_checked: 5,
enrollments_errored: 1,
enrollments_network_error: 0,
enrollments_expired: 1,
enrollments_failed: 1,
enrollments_in_progress: 1,
enrollments_passed: 1,
percent_enrollments_errored: 20.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsWaitingProofingResultsJob',
)

Expand All @@ -209,11 +211,13 @@
duration_seconds: anything,
enrollments_checked: 5,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
enrollments_passed: 5,
percent_enrollments_errored: 0.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsWaitingProofingResultsJob',
)

Expand All @@ -238,11 +242,13 @@
duration_seconds: anything,
enrollments_checked: 0,
enrollments_errored: 0,
enrollments_network_error: 0,
enrollments_expired: 0,
enrollments_failed: 0,
enrollments_in_progress: 0,
enrollments_passed: 0,
percent_enrollments_errored: 0.00,
percent_enrollments_network_error: 0.00,
job_name: 'GetUspsWaitingProofingResultsJob',
)

Expand Down
7 changes: 7 additions & 0 deletions spec/support/usps_ipp_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,13 @@ def stub_request_proofing_results_with_timeout_error
).to_raise(Faraday::TimeoutError)
end

def stub_request_proofing_results_with_connection_failed_error
stub_request(
:post,
%r{/ivs-ippaas-api/IPPRest/resources/rest/getProofingResults},
).to_raise(Faraday::ConnectionFailed)
end

def stub_request_proofing_results_with_nil_status_error
stub_request(
:post,
Expand Down