Skip to content

Commit

Permalink
Add timeout to ci config
Browse files Browse the repository at this point in the history
  • Loading branch information
sgdxbc committed Jul 6, 2024
1 parent f6515ee commit c9f1397
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ jobs:
build_and_test:
name: Build and test
runs-on: ubuntu-latest
timeout-minutes: 3
strategy:
fail-fast: false
matrix:
Expand All @@ -21,4 +22,3 @@ jobs:
- run: cargo test --verbose --lib
# loopback network seems not work
# - run: cargo run --verbose --release --bin workload-standalone -- unreplicated
# - run: cargo run --verbose --release --bin workload-standalone -- pbft
76 changes: 36 additions & 40 deletions src/bin/workload-standalone.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ use std::{

use neatworks::{pbft::PublicParameters, workload::events::Invoke};
use tokio::{select, time::sleep};
use workload::util::run_until;

pub mod workload {
pub mod clients;
pub mod servers;
mod util;
pub mod util;
}

struct InvokeTask;
Expand Down Expand Up @@ -37,47 +38,42 @@ impl workload::clients::InvokeTask for InvokeTask {
#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
let mode = args().nth(1);
'client: {
match mode.as_deref().unwrap_or("unreplicated") {
"unreplicated" => {
let server_task = workload::servers::unreplicated();
let client_task = workload::clients::unreplicated(InvokeTask);
select! {
result = client_task => break 'client result?,
result = server_task => result?,
}
}
"pbft" => {
let config = PublicParameters {
num_replica: 4,
num_faulty: 1,
num_concurrent: 1,
max_batch_size: 1,
..PublicParameters::durations(if cfg!(debug_assertions) {
Duration::from_millis(300)
} else {
Duration::from_millis(100)
})
};
let addrs = (0..4)
.map(|index| ([127, 0, 0, 1 + index], 3000).into())
.collect::<Vec<_>>();
let server_task0 = workload::servers::pbft(config.clone(), 0, addrs.clone());
let server_task1 = workload::servers::pbft(config.clone(), 1, addrs.clone());
let server_task2 = workload::servers::pbft(config.clone(), 2, addrs.clone());
let server_task3 = workload::servers::pbft(config.clone(), 3, addrs.clone());
let client_task = workload::clients::pbft(InvokeTask, config, addrs);
match mode.as_deref().unwrap_or("unreplicated") {
"unreplicated" => {
let server_task = workload::servers::unreplicated();
let client_task = workload::clients::unreplicated(InvokeTask);
run_until(client_task, server_task).await
}
"pbft" => {
let config = PublicParameters {
num_replica: 4,
num_faulty: 1,
num_concurrent: 1,
max_batch_size: 1,
..PublicParameters::durations(if cfg!(debug_assertions) {
Duration::from_millis(300)
} else {
Duration::from_millis(100)
})
};
let addrs = (0..4)
.map(|index| ([127, 0, 0, 1 + index], 3000).into())
.collect::<Vec<_>>();
let server_task0 = workload::servers::pbft(config.clone(), 0, addrs.clone());
let server_task1 = workload::servers::pbft(config.clone(), 1, addrs.clone());
let server_task2 = workload::servers::pbft(config.clone(), 2, addrs.clone());
let server_task3 = workload::servers::pbft(config.clone(), 3, addrs.clone());
let client_task = workload::clients::pbft(InvokeTask, config, addrs);
run_until(client_task, async {
select! {
result = client_task => break 'client result?,
result = server_task0 => result?,
result = server_task1 => result?,
result = server_task2 => result?,
result = server_task3 => result?,
result = server_task0 => result,
result = server_task1 => result,
result = server_task2 => result,
result = server_task3 => result,
}
}
_ => anyhow::bail!("unimplemented"),
})
.await
}
anyhow::bail!("unexpected termination of server task")
_ => anyhow::bail!("unimplemented"),
}
Ok(())
}

0 comments on commit c9f1397

Please sign in to comment.