2015-06-11 15 views
7

Tôi hiện đang làm việc trên một loạt các dịch vụ web mà chúng tôi cần tích hợp với Kinesis - việc triển khai đã được thực hiện, tuy nhiên chúng tôi có một loạt các bài kiểm tra tích hợp (các dịch vụ web của chúng tôi đều đang sử dụng Khởi động mùa xuân để chúng tôi sử dụng chú thích @WebIntegrationTest trên các lớp thử nghiệm của chúng tôi để khởi động một cá thể cục bộ của máy chủ và sau đó gọi tài nguyên của chúng tôi bằng TestRestTemplate) hiện đang cố gắng và không kết nối được với Kinesis thực. Mặc dù trong các bài kiểm tra đơn vị thông thường, không có vấn đề gì khi thực hiện các cuộc gọi đến các phương thức bên trong thư viện Kinesis, chúng ta không thể thực hiện điều này trong các bài kiểm tra tích hợp khi toàn bộ ứng dụng được kết nối với Spring. Đối với một vài thứ khác (chẳng hạn như OAuth2 và các cuộc gọi đến các dịch vụ web khác của chúng tôi), chúng tôi đã có thể sử dụng WireMock để giả lập điểm cuối thực tế - những gì tôi thực sự muốn làm là sử dụng WireMock trong thời trang này để loại bỏ cuộc gọi đến AmazonKinesisClient nhưng tôi không thể tìm thấy bất kỳ lời khuyên nào về cách thực hiện việc này. Ngoài ra, tôi đã thấy rằng một số thành phần AWS có thư viện kiểm tra được viết bởi bên thứ ba cho phép bạn chạy phiên bản địa phương của nó (ví dụ: DynamoDbLocal) nhưng không thể tìm thấy giải pháp như vậy cho Kinesis.Amazon Kinesis + Integration Tests

Có ai có thể cho tôi một số lời khuyên về cách chạy thử nghiệm tích hợp với Kinesis không?

+0

Tôi không quen với WebIntegrationTests, nhưng, bạn có thể: Tạo một luồng thử nghiệm không sản xuất với một mảnh duy nhất trước khi thử nghiệm của bạn, chạy thử nghiệm và đóng nó sau? Hoặc tạo ra một wrapper mỏng xung quanh aws api trên đặt/nhận cuộc gọi của bạn mà có thể phễu đối tượng thông qua một hàng đợi? –

+0

Tôi cũng chạy vào "vấn đề" này. Một trường hợp sử dụng khác mà tôi cần là mọi nhà phát triển đều có thể chạy thử nghiệm tích hợp từ môi trường cục bộ. Tôi không muốn tạo luồng cho mọi dev. – Mantas

+0

2017 và vẫn không thấy bất kỳ công cụ nào xung quanh. – prayagupd

Trả lời

1

Tôi chạy vào cùng một vấn đề và thực hiện mô hình duy nhất tôi tìm thấy cho đến nay là một nodejs một: https://github.com/mhart/kinesalite Nó hiện các trick - Tôi quản lý để chạy client Java Kinesis của tôi chống lại nó, chỉ cần phải thiết lập các thiết bị đầu cuối trên kinesis.properties:

kinesisEndpoint=http://localhost:4567 

Nhược điểm là nó không phải là tầm thường để sử dụng nó trong các bài kiểm tra thời gian xây dựng - cần phải tìm một cách để bắt đầu Kinesis giả trước khi thử nghiệm (sử dụng một plugin maven hoặc một cái gì đó), didn Chưa đến được ..

3

Có thể đã quá muộn để cung cấp giải pháp nhưng tôi sẽ thêm tại nhóm của tôi đã thực hiện để nhân rộng các tài nguyên AWS cục bộ khi chúng tôi sử dụng rất nhiều Kinesis, DynamoDb, S3 và cloudWatch.

Chúng tôi đã tạo trình bao bọc quanh Localstack ->https://github.com/localstack/localstack cho phép chúng tôi quay các phiên bản cục bộ của các dịch vụ cần thiết dưới dạng vùng chứa docker bằng cách sử dụng docker-compose.

Một docker-compose.yml tập điển hình cho chúng ta trông giống như:

version: '2' 
services: 
    localstack: 
    image: "localstack/localstack" 
    environment: 
     - SERVICES=kinesis,dynamodb,cloudwatch 
    ports: 
     - "4568" 
     - "4569" 
     - "4582" 

Sau đó, trong giai đoạn thiết lập cho sự hội nhập-kiểm tra, cháy wrapper của chúng tôi lên docker-compose up và chạy kiểm tra đối với cơ sở hạ tầng địa phương. Sau đó trong khi xé xuống, trình bao bọc sẽ tiêu diệt các thùng chứa.

Các vấn đề liên quan