Ошибка "Несколько исполнителей одновременно" для интеграционного теста обратного прокси, написанного на rust actix-web 0.7.18

Я разрабатываю обратный прокси с именем palantir используя ржавчину actix-web v0.7.18. Он отлично работает и превосходит обратный прокси Nginx в тестах. Я пытаюсь написать интеграционные тесты для него, используя actix_web::test::TestServer:

extern crate palantir;
use palantir::proxy::proxy::PalantirProxy;
fn connection_server_proxy(req: actix_web::HttpRequest) -> 
    impl futures::Future<Item=actix_web::HttpResponse, Error=actix_web::Error> {
        PalantirProxy::new(&String::from(
            "https://127.0.0.1:9062"))
            .timeout(std::time::Duration::from_secs(100))
            .forward(req)
    }
#[test]

fn make_palantir() {
        use actix_web::test::TestServer;
        let mut srv = TestServer::new(|_r|
            actix_web::server::new(
                || actix_web::App::new()
                    .resource("/{tail:.*}", |r| r.with_async(
                        connection_server_proxy
                        ))
                    )
                    .bind(&String::from("0.0.0.0:8080"))
                    .unwrap()
                    .run()
        );
        let request = srv.get().finish().unwrap();
        let response = srv.execute(request.send()).unwrap();
        assert!(response.status().is_success());
}

Однако мой тест не прошел из-за этой паники:

thread 'arbiter:a640a897-97d9-431c-988c-ea776e293127:actix-net-worker-0' panicked at 
'Multiple executors at once: EnterError { reason: "attempted to run an executor while another executor is already running" }', 
src/libcore/result.rs:997:5

Я нашел похожие проблемы, о которых сообщалось reqwest а также tokio, но решения и обсуждения не помогли, потому что actix-web не предоставляет такой интерфейс.

Я знаю, что эта ошибка возникает из-за блокирующего сетевого запроса в неблокирующем будущем, но я не знаю, как это исправить. Я также думал о HTTP-насмешках, используя mockito, но не смог найти полезных примеров для прокси-серверов.

Кто-нибудь знает, как я могу это исправить или сделать простой интеграционный тест с помощью actix-web v0.7.18?

0 ответов

Другие вопросы по тегам