Fix test_get_repo_info: Retry on rate limit

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2024-06-10 23:54:36 +10:00
parent 6e0f9cd6da
commit 999ebb964c
No known key found for this signature in database
GPG key ID: 76D1E687CA3C4928

View file

@ -535,49 +535,36 @@ mod test {
let mut tests: Vec<(_, _)> = Vec::new(); let mut tests: Vec<(_, _)> = Vec::new();
for client in create_client() { for client in create_client() {
for repo in PUBLIC_REPOS { let spawn_get_repo_info_task = |repo| {
let client = client.clone(); let client = client.clone();
tokio::spawn(async move {
loop {
match client.get_repo_info(&repo).await {
Err(GhApiError::RateLimit { retry_after }) => {
sleep(retry_after.unwrap_or(DEFAULT_RETRY_AFTER)).await
}
res => break res,
}
}
})
};
for repo in PUBLIC_REPOS {
tests.push(( tests.push((
Some(RepoInfo::new(repo.clone(), false)), Some(RepoInfo::new(repo.clone(), false)),
tokio::spawn(async move { client.get_repo_info(&repo).await }), spawn_get_repo_info_task(repo),
)); ));
} }
for repo in NON_EXISTENT_REPOS { for repo in NON_EXISTENT_REPOS {
let client = client.clone(); tests.push((None, spawn_get_repo_info_task(repo)));
tests.push((
None,
tokio::spawn(async move {
loop {
match client.get_repo_info(&repo).await {
Err(GhApiError::RateLimit { retry_after }) => {
sleep(retry_after.unwrap_or(DEFAULT_RETRY_AFTER)).await
}
res => break res,
}
}
}),
));
} }
if client.has_gh_token() { if client.has_gh_token() {
for repo in PRIVATE_REPOS { for repo in PRIVATE_REPOS {
let client = client.clone();
tests.push(( tests.push((
Some(RepoInfo::new(repo.clone(), true)), Some(RepoInfo::new(repo.clone(), true)),
tokio::spawn(async move { spawn_get_repo_info_task(repo),
loop {
match client.get_repo_info(&repo).await {
Err(GhApiError::RateLimit { retry_after }) => {
sleep(retry_after.unwrap_or(DEFAULT_RETRY_AFTER)).await
}
res => break res,
}
}
}),
)); ));
} }
} }