diff --git a/.github/workflows/rustpublish.yml b/.github/workflows/rustpublish.yml index 64dfca8..169058f 100644 --- a/.github/workflows/rustpublish.yml +++ b/.github/workflows/rustpublish.yml @@ -18,4 +18,5 @@ jobs: CARGO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} run: | cargo publish --manifest-path .\server\Cargo.toml --token ${CARGO_TOKEN} + cargo publish --manifest-path .\rust_client\Cargo.toml --token ${CARGO_TOKEN} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1438e62..285e088 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,28 @@ -Contributions -============= +# Contributions Wether they be in code, intersting feature suggestions, design critique or bug reports, all contributions are welocme. Please start an issue, before investing a lot of work. This helps avoid situations there I would feel the need to reject a large body of work, and a lot of your time has been wasted. Throttle is a pet project and a work of love, which implies that I maintain it in my spare time. Please understand that I may not always react immediatly. If you contribute code to fix a Bug, please also contribute the test to fix it. Happy contributing. + +## Local build and test setup + +* Install Rust compiler and Cargo. Follow the instructions on [this site](https://www.rust-lang.org/en-US/install.html). +* Checkout the sources. + + ```bash + git clone https://github.com/pacman82/throttle.git + ``` + +* Build the throttle server, run the unit tests and the integration tests with the Rust client. + + ```bash + cd throttle + cargo test + ``` + +* Execute integration of throttle server with Python client. + + ```bash + cd python_client + pip install -r test-requirements.txt + pip install -e . + pytest + ``` diff --git a/Cargo.lock b/Cargo.lock index 205961d..5c9ec41 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1658,7 +1658,7 @@ dependencies = [ [[package]] name = "throttle-client" -version = "0.1.0" +version = "0.3.8" dependencies = [ "humantime 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "humantime-serde 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1669,7 +1669,7 @@ dependencies = [ [[package]] name = "throttle-server" -version = "0.3.7" +version = "0.3.8" dependencies = [ "actix-rt 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "actix-web 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1687,7 +1687,7 @@ dependencies = [ "structopt-derive 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)", - "throttle-client 0.1.0", + "throttle-client 0.3.8", "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "version 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Changelog.md b/Changelog.md index 05559bc..2792ffe 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,11 @@ Changelog ========= +0.3.8 +----- + +* Add Rust client http layer + 0.3.7 ----- diff --git a/Readme.md b/Readme.md index 3a4aca0..b5b1384 100644 --- a/Readme.md +++ b/Readme.md @@ -11,7 +11,9 @@ Throttle aims to be easy to operate, well-behaved in edge cases and works withou ## Features * Server builds and runs on Windows, Linux, and OS-X. -* Python Client is available. +* Clients + * Python: A high level client with blocking API. + * Rust: Low level client with async API. * Prevents Deadlocks, through enforcing lock hierarchies. * Fairness (longer waiting peers have priority) * Locks with large count, won't be starved by lots of others with a small counts. @@ -234,34 +236,8 @@ This has been done manly for the convinience of Python users, who want to try ou ### Python Client -Python client is publish to [PyPi](https://pypi.org) and can be installed using pip. +Python client is published to [PyPi](https://pypi.org) and can be installed using pip. ```bash pip install throttle-client ``` - -## Local build and test setup - -* Install Rust compiler and Cargo. Follow the instructions on - [this site](https://www.rust-lang.org/en-US/install.html) -* Checkout the sources with - - ```bash - git clone https://github.com/pacman82/throttle.git - ``` - -* You can run the build and run unit tests by executing - - ```bash - cd throttle - cargo test - ``` - -* Execute integration test with clients - - ```bash - cd python_client - pip install -r test-requirements.txt - pip install -e . - pytest - ``` diff --git a/python_client/setup.py b/python_client/setup.py index a098d2b..02eb1f9 100644 --- a/python_client/setup.py +++ b/python_client/setup.py @@ -5,7 +5,7 @@ setup( name="throttle_client", - version="0.3.7", + version="0.3.8", author="Markus Klein", description="Client for Throttle. Throttle is a http semaphore service, providing" "semaphores for distributed systems.", diff --git a/rust_client/Cargo.toml b/rust_client/Cargo.toml index 60a9b79..c9900b7 100644 --- a/rust_client/Cargo.toml +++ b/rust_client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "throttle-client" -version = "0.1.0" +version = "0.3.8" authors = ["Markus Klein "] edition = "2018" diff --git a/server/Cargo.toml b/server/Cargo.toml index 7d77d1a..d1d5d38 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "throttle-server" -version = "0.3.7" +version = "0.3.8" authors = ["Markus Klein"] edition = "2018" license = "MIT"