From f33577b31737d51ae4eb49099736c57b3b888109 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Mon, 14 Dec 2020 17:44:27 +0100 Subject: [PATCH] send activities sync for tests --- api_tests/prepare-drone-federation-test.sh | 1 + api_tests/src/shared.ts | 2 +- docker/federation/docker-compose.yml | 5 ++ lemmy_apub/src/activity_queue.rs | 54 +++++++++++++--------- 4 files changed, 38 insertions(+), 24 deletions(-) diff --git a/api_tests/prepare-drone-federation-test.sh b/api_tests/prepare-drone-federation-test.sh index 97a5313b5..4010eff66 100755 --- a/api_tests/prepare-drone-federation-test.sh +++ b/api_tests/prepare-drone-federation-test.sh @@ -8,6 +8,7 @@ export LEMMY_SETUP__ADMIN_PASSWORD=lemmy export LEMMY_RATE_LIMIT__POST=99999 export LEMMY_RATE_LIMIT__REGISTER=99999 export LEMMY_CAPTCHA__ENABLED=false +export LEMMY_TEST_SEND_SYNC=1 export RUST_BACKTRACE=1 for INSTANCE in lemmy_alpha lemmy_beta lemmy_gamma lemmy_delta lemmy_epsilon; do diff --git a/api_tests/src/shared.ts b/api_tests/src/shared.ts index ed4899f8e..be6b53adf 100644 --- a/api_tests/src/shared.ts +++ b/api_tests/src/shared.ts @@ -615,7 +615,7 @@ export async function followBeta(api: API): Promise { export function delay(millis: number = 500) { return new Promise((resolve, _reject) => { - setTimeout(_ => resolve(), millis); + setTimeout(_ => resolve(), 10); }); } diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml index e32dfe2da..dc015a289 100644 --- a/docker/federation/docker-compose.yml +++ b/docker/federation/docker-compose.yml @@ -52,6 +52,7 @@ services: - LEMMY_RATE_LIMIT__POST=99999 - LEMMY_RATE_LIMIT__REGISTER=99999 - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 - RUST_BACKTRACE=1 - RUST_LOG=debug depends_on: @@ -91,6 +92,7 @@ services: - LEMMY_RATE_LIMIT__POST=99999 - LEMMY_RATE_LIMIT__REGISTER=99999 - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 - RUST_BACKTRACE=1 - RUST_LOG=debug depends_on: @@ -130,6 +132,7 @@ services: - LEMMY_RATE_LIMIT__POST=99999 - LEMMY_RATE_LIMIT__REGISTER=99999 - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 - RUST_BACKTRACE=1 - RUST_LOG=debug depends_on: @@ -170,6 +173,7 @@ services: - LEMMY_RATE_LIMIT__POST=99999 - LEMMY_RATE_LIMIT__REGISTER=99999 - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 - RUST_BACKTRACE=1 - RUST_LOG=debug depends_on: @@ -210,6 +214,7 @@ services: - LEMMY_RATE_LIMIT__POST=99999 - LEMMY_RATE_LIMIT__REGISTER=99999 - LEMMY_CAPTCHA__ENABLED=false + - LEMMY_TEST_SEND_SYNC=1 - RUST_BACKTRACE=1 - RUST_LOG=debug depends_on: diff --git a/lemmy_apub/src/activity_queue.rs b/lemmy_apub/src/activity_queue.rs index 5e4f113b5..1b5ffb937 100644 --- a/lemmy_apub/src/activity_queue.rs +++ b/lemmy_apub/src/activity_queue.rs @@ -25,7 +25,7 @@ use lemmy_websocket::LemmyContext; use log::{debug, warn}; use reqwest::Client; use serde::{export::fmt::Debug, Deserialize, Serialize}; -use std::{collections::BTreeMap, future::Future, pin::Pin}; +use std::{collections::BTreeMap, future::Future, pin::Pin, env}; use url::Url; /// Sends a local activity to a single, remote actor. @@ -234,7 +234,11 @@ where actor_id: actor.actor_id()?, private_key: actor.private_key().context(location_info!())?, }; - activity_sender.queue::(message)?; + if env::var("LEMMY_TEST_SEND_SYNC").is_ok() { + do_send(message, &Client::default()).await?; + } else { + activity_sender.queue::(message)?; + } } Ok(()) @@ -260,31 +264,35 @@ impl ActixJob for SendActivityTask { fn run(self, state: Self::State) -> Self::Future { Box::pin(async move { - let mut headers = BTreeMap::::new(); - headers.insert("Content-Type".into(), "application/json".into()); - let result = sign_and_send( - &state.client, - headers, - &self.inbox, - self.activity.clone(), - &self.actor_id, - self.private_key.to_owned(), - ) - .await; - - if let Err(e) = result { - warn!("{}", e); - return Err(anyhow!( - "Failed to send activity {} to {}", - &self.activity, - self.inbox - )); - } - Ok(()) + do_send(self, &state.client).await }) } } +async fn do_send(task: SendActivityTask, client: &Client) -> Result<(), Error>{ + let mut headers = BTreeMap::::new(); + headers.insert("Content-Type".into(), "application/json".into()); + let result = sign_and_send( + client, + headers, + &task.inbox, + task.activity.clone(), + &task.actor_id, + task.private_key.to_owned(), + ) + .await; + + if let Err(e) = result { + warn!("{}", e); + return Err(anyhow!( + "Failed to send activity {} to {}", + &task.activity, + task.inbox + )); + } + Ok(()) +} + pub fn create_activity_queue() -> QueueHandle { // Start the application server. This guards access to to the jobs store let queue_handle = create_server(Storage::new());