Explore the docs » · Learn about TES »
The tes
crate contains types (via the types
feature) and a simple client
(via the client
feature) for working with the Task Execution Service
(TES) specification. Briefly, TES is a specification developed to
uniformly submit units of execution ("tasks") to multiple compute environment
through a single HTTP interface. It is of interest mostly when developing
clients or servers that participate in the large-scale submission or monitoring
of jobs.
To utilize tes
in your crates, simply add it to your project.
# If you want to use the types.
cargo add tes
# If you also want to use the provided client.
cargo add tes --features client
After this, you can access the library using the tes
module in your Rust code.
You can take a look at the
examples for
inspiration, but a simple example could look like this.
use tes::v1::client;
#[tokio::main]
async fn main() {
let url = std::env::args().nth(1).expect("url to be present");
let client = client::Builder::default()
.url_from_string(url)
.expect("url could not be parsed")
.try_build()
.expect("could not build client");
println!(
"{:#?}",
client
.service_info()
.await
.expect("getting service information failed")
);
}
The minimum supported Rust version is currently 1.80.0
.
There is a CI job that verifies the declared minimum supported version.
If a contributor submits a PR that uses a feature from a newer version of Rust,
the contributor is responsible for updating the minimum supported version in
the Cargo.toml
.
Contributors may update the minimum supported version as-needed to the latest stable release of Rust.
To facilitate the discovery of what the minimum supported version should be,
install the cargo-msrv
tool:
cargo install cargo-msrv
And run the following command:
cargo msrv --min 1.80.0
If the reported version is newer than the crate's current minimum supported version, an update is required.
To bootstrap a development environment, please use the following commands.
# Clone the repository
git clone git@github.com:stjude-rust-labs/tes.git
cd tes
# Build the crate in release mode
cargo build --release
# List out the examples
cargo run --release --example
Before submitting any pull requests, please make sure the code passes the following checks (from the root directory).
# Run the project's tests.
cargo test --all-features
# Run the tests for the examples.
cargo test --examples --all-features
# Ensure the project doesn't have any linting warnings.
cargo clippy --all-features
# Ensure the project passes `cargo fmt`.
# Currently this requires nightly Rust
cargo +nightly fmt --check
# Ensure the docs build.
cargo doc
Contributions, issues and feature requests are welcome! Feel free to check issues page.
This project is licensed as either Apache 2.0 or MIT at your discretion. Additionally, please see the disclaimer that applies to all crates and command line tools made available by St. Jude Rust Labs.
Copyright © 2024-Present St. Jude Children's Research Hospital.