Tôi có một ứng dụng Java sử dụng rất nhiều java.sql.Connection
đến một cơ sở dữ liệu.Làm cho DB thất bại về mặt xác định để thử nghiệm
Tôi muốn kiểm tra, nếu cơ sở dữ liệu không khả dụng, dịch vụ của tôi trả lại mã lỗi thích hợp (phân biệt giữa các vấn đề tạm thời và vĩnh viễn, ví dụ: HTTP 500 và 503).
Để thử nghiệm, ứng dụng của tôi kết nối với cơ sở dữ liệu h2 được nhúng, cục bộ, trong bộ nhớ; ứng dụng không nhận thức được điều này, chỉ thử nghiệm tích hợp của tôi là.
Tôi làm cách nào để ghi vào cơ sở dữ liệu không xác định, ví dụ: móc vào cam kết và làm cho họ ném một tùy chỉnh SQLException
? Tôi muốn một boolean 'cơ sở dữ liệu không có sẵn' toàn cầu trong mã kiểm tra có ảnh hưởng đến tất cả các kết nối và làm cho ứng dụng của tôi thực hiện logic kết nối lại của nó.
(Tôi đã bắt đầu bởi proxy Connection
và đưa một if(failFlag) throw new MySimulateFailureException()
trong commit()
; nhưng điều này không bắt PreparedStatement.executeUpdate()
; trước khi tôi bắt tay vào proxy các PreparedStatement
quá - rất nhiều của phương pháp - Tôi muốn được giảng dạy! một cách tốt hơn ...)
này nghe có vẻ ngớ ngẩn, nhưng tại sao không dừng dịch vụ cơ sở dữ liệu? hoặc chặn cổng trên tường lửa để từ chối lưu lượng truy cập cho một chút? – Serdalis
Tôi thường đi theo tuyến đường proxy mà bạn phác thảo ở trên. Nếu có ai có cách tiếp cận tốt hơn thì tôi sẽ thích nghe nó. – Keppil