mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-11-26 14:21:19 +00:00
add test to federate 100 events
This commit is contained in:
parent
c2dab71377
commit
40b3c1a24d
1 changed files with 64 additions and 4 deletions
|
@ -499,6 +499,14 @@ mod test {
|
|||
self.wait_stop_server.stop(true).await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn recv_last_stats(&mut self) -> LemmyResult<FederationQueueStateWithDomain> {
|
||||
let mut last = self.stats_receiver.try_recv();
|
||||
while let Ok(next) = self.stats_receiver.try_recv() {
|
||||
last = Ok(next);
|
||||
}
|
||||
Ok(last?)
|
||||
}
|
||||
}
|
||||
/// In order to guarantee that the webserver is stopped via the cleanup function,
|
||||
/// we implement a test context.
|
||||
|
@ -525,7 +533,7 @@ mod test {
|
|||
// assert_eq!(Some(ActivityId(0)), rcv.state.last_successful_id);
|
||||
// let last_id_before = rcv.state.last_successful_id.unwrap();
|
||||
|
||||
let sent = send_activity(data.person.actor_id.clone(), &data.context).await?;
|
||||
let sent = send_activity(data.person.actor_id.clone(), &data.context, true).await?;
|
||||
tracing::debug!("sent activity");
|
||||
// receive for successfully sent activity
|
||||
let inbox_rcv = data.inbox_receiver.recv().await.unwrap();
|
||||
|
@ -552,6 +560,52 @@ mod test {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[test_context(Data)]
|
||||
#[tokio::test]
|
||||
#[traced_test]
|
||||
#[serial]
|
||||
async fn test_send_100(data: &mut Data) -> LemmyResult<()> {
|
||||
tracing::debug!("hello world");
|
||||
|
||||
// first receive at startup
|
||||
let rcv = data.stats_receiver.recv().await.unwrap();
|
||||
tracing::debug!("received first stats");
|
||||
assert_eq!(data.instance.id, rcv.state.instance_id);
|
||||
// assert_eq!(Some(ActivityId(0)), rcv.state.last_successful_id);
|
||||
// let last_id_before = rcv.state.last_successful_id.unwrap();
|
||||
let mut sent = Vec::new();
|
||||
for _ in 0..100 {
|
||||
sent.push(send_activity(data.person.actor_id.clone(), &data.context, false).await?);
|
||||
sleep(2 * *WORK_FINISHED_RECHECK_DELAY).await;
|
||||
}
|
||||
tracing::debug!("sent activity");
|
||||
// receive for successfully sent activity
|
||||
for i in 0..100 {
|
||||
let inbox_rcv = data.inbox_receiver.recv().await.unwrap();
|
||||
let parsed_activity = serde_json::from_str::<WithContext<Value>>(&inbox_rcv)?;
|
||||
assert_eq!(&sent[i].data, parsed_activity.inner());
|
||||
tracing::debug!("received activity");
|
||||
}
|
||||
|
||||
let rcv = data.recv_last_stats().await.unwrap();
|
||||
assert_eq!(data.instance.id, rcv.state.instance_id);
|
||||
assert_eq!(Some(sent.last().unwrap().id), rcv.state.last_successful_id);
|
||||
|
||||
data.cleanup().await?;
|
||||
|
||||
// it also sends state on shutdown
|
||||
let rcv = data.stats_receiver.try_recv();
|
||||
assert!(rcv.is_ok());
|
||||
|
||||
// nothing further received
|
||||
let rcv = data.stats_receiver.try_recv();
|
||||
assert_eq!(Some(TryRecvError::Disconnected), rcv.err());
|
||||
let inbox_rcv = data.inbox_receiver.try_recv();
|
||||
assert_eq!(Some(TryRecvError::Disconnected), inbox_rcv.err());
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test_context(Data)]
|
||||
#[tokio::test]
|
||||
#[serial]
|
||||
|
@ -562,7 +616,7 @@ mod test {
|
|||
.build();
|
||||
Instance::update(&mut data.context.pool(), data.instance.id, form).await?;
|
||||
|
||||
send_activity(data.person.actor_id.clone(), &data.context).await?;
|
||||
send_activity(data.person.actor_id.clone(), &data.context, true).await?;
|
||||
data.inbox_receiver.recv().await.unwrap();
|
||||
|
||||
let instance =
|
||||
|
@ -603,7 +657,11 @@ mod test {
|
|||
Ok(handle)
|
||||
}
|
||||
|
||||
async fn send_activity(actor_id: DbUrl, context: &LemmyContext) -> LemmyResult<SentActivity> {
|
||||
async fn send_activity(
|
||||
actor_id: DbUrl,
|
||||
context: &LemmyContext,
|
||||
wait: bool,
|
||||
) -> LemmyResult<SentActivity> {
|
||||
// create outgoing activity
|
||||
let file = File::open("../apub/assets/lemmy/activities/voting/like_note.json")?;
|
||||
let reader = BufReader::new(file);
|
||||
|
@ -623,7 +681,9 @@ mod test {
|
|||
};
|
||||
let sent = SentActivity::create(&mut context.pool(), form).await?;
|
||||
|
||||
if wait {
|
||||
sleep(*WORK_FINISHED_RECHECK_DELAY * 2).await;
|
||||
}
|
||||
|
||||
Ok(sent)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue