Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ codecov:
require_ci_to_pass: false

ignore:
- core/src/serf/base/tests
- core/src/serf/base/tests.rs
- serf-core/src/serf/base/tests
- serf-core/src/serf/base/tests.rs
- serf/test
- fuzz/
- examples/

coverage:
status:
Expand Down
11 changes: 3 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on:
- '**.txt'
- 'art'
workflow_dispatch:
schedule: [cron: "40 1 * * *"]
schedule: [cron: "0 1 */7 * *"]

jobs:
test:
Expand Down Expand Up @@ -67,13 +67,8 @@ jobs:

- name: Run Unit Tests for core
run: |
cargo test --no-default-features --features "test,encryption,serde"
working-directory: core

- name: Run Unit Tests for types
run: |
cargo test --no-default-features --features "metrics,encryption,serde"
working-directory: types
cargo test --no-default-features --features "test,encryption,serde,quickcheck"
working-directory: serf-core

- name: Cache Cargo registry
uses: actions/cache@v4
Expand Down
7 changes: 2 additions & 5 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,9 @@ jobs:
strategy:
matrix:
include:
- crate: core
features: "test,metrics"
- crate: serf-core
features: "test,metrics,quickcheck,encryption"
name: "serf-core"
- crate: types
features: "metrics,encryption"
name: "serf-types"
- crate: serf
features: "test,tokio,tcp,encryption,metrics"
name: "serf-tcp-encryption"
Expand Down
41 changes: 41 additions & 0 deletions .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Fuzz Testing
on:
push:
branches:
- main
paths-ignore:
- 'README.md'
- 'COPYRIGHT'
- 'LICENSE*'
- '**.md'
- '**.txt'
- 'art'
pull_request:
paths-ignore:
- 'README.md'
- 'COPYRIGHT'
- 'LICENSE*'
- '**.md'
- '**.txt'
- 'art'
schedule: [cron: "0 1 */7 * *"]


jobs:
fuzz:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly

- name: Install cargo-fuzz
run: cargo install cargo-fuzz

- name: Run fuzzing
run: |
cargo fuzz build
cargo fuzz run messages -- -max_len=4096 -max_total_time=300
5 changes: 2 additions & 3 deletions .github/workflows/net.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on:
- '**.txt'
- 'art'
workflow_dispatch:
schedule: [cron: "40 1 * * *"]
schedule: [cron: "0 1 */7 * *"]

jobs:
test:
Expand All @@ -36,7 +36,6 @@ jobs:
runtime: [tokio, async-std, smol]
stream_layer:
- tls
- native-tls
- tcp
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -67,7 +66,7 @@ jobs:

- name: Run Unit Tests for serf based on net transport
run: |
cargo test --no-default-features --features "test,encryption,net,metrics,${{ matrix.runtime }}" -- --test-threads=1
cargo test --no-default-features --features "test,encryption,net,metrics,${{ matrix.runtime }},${{ matrix.stream_layer }}" -- --test-threads=1
working-directory: serf

- name: Cache Cargo registry
Expand Down
76 changes: 0 additions & 76 deletions .github/workflows/quinn.yml.bk

This file was deleted.

76 changes: 0 additions & 76 deletions .github/workflows/s2n.yml.bk

This file was deleted.

26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Releases

## 0.3.0

### Features

- Redesign `Delegate` trait, making it easier to implement for users.
- Rewriting encoding/decoding to support forward and backward compitibility.
- Support `zstd`, `brotli`, `lz4`, and `snappy` for compressing.
- Support `crc32`, `xxhash64`, `xxhash32`, `xxhash3`, `murmur3` for checksuming.
- Unify returned error, all exported APIs return `Error` on `Result::Err`.

### Example

- Add [toyconsul](https://github.com/al8n/serf/tree/main/examples/), a toy eventually consistent distributed registry.

### Breakage

- Remove `native-tls` supports
- Remove `s2n-quic` supports
- Remove `TransformDelegate` trait to simplify `Delegate` trait
- Remove `JoinError`, add an new `Error::Multiple` variant

### Testing

- Add fuzzy testing for encoding/decoding
44 changes: 27 additions & 17 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
[workspace]
members = [
"core",
"serf",
"types"
"serf-core",
"examples/toyconsul",
"fuzz",
]
resolver = "2"
resolver = "3"

[workspace.package]
version = "0.2.0"
edition = "2021"
rust-version = "1.81.0"
version = "0.3.0"
edition = "2024"
rust-version = "1.85.0"
description = "A decentralized solution for service discovery and orchestration that is lightweight, highly available, and fault tolerant."
repository = "https://github.com/al8n/serf"
homepage = "https://github.com/al8n/serf"
Expand All @@ -20,23 +21,32 @@ readme = "README.md"

[workspace.dependencies]
byteorder = "1"
derive_more = { version = "1", features = ["full"] }
derive_more = { version = "2", features = ["full"] }
futures = { version = "0.3", default-features = false }
serde = { version = "1", features = ["derive"] }
humantime-serde = "1"
indexmap = "2"
memberlist-types = { version = "0.3", default-features = false }
memberlist-core = { version = "0.3", default-features = false }
memberlist = { version = "0.3", default-features = false }
thiserror = "2"
thiserror = { version = "2", default-features = false }
viewit = "0.1.5"
regex = "1"
smol_str = "0.3"
smallvec = "1"
rand = "0.8"
rand = "0.9"

# memberlist-types = { version = "0.3", path = "../memberlist/types", default-features = false }
# memberlist-core = { version = "0.3", path = "../memberlist/core", default-features = false }
# memberlist = { version = "0.3", path = "../memberlist/memberlist", default-features = false }
arbitrary = { version = "1", default-features = false, features = ["derive"] }
quickcheck = { version = "1", default-features = false }

serf-core = { path = "core", version = "0.2.0", default-features = false }
serf-types = { path = "types", version = "0.2.0", default-features = false }
# memberlist-proto = { version = "0.1", path = "../memberlist/memberlist-proto", default-features = false }
# memberlist-core = { version = "0.6", path = "../memberlist/memberlist-core", default-features = false }
# memberlist = { version = "0.6", path = "../memberlist/memberlist", default-features = false }

# memberlist-proto = { version = "0.1", default-features = false, git = "https://github.com/al8n/memberlist" }
# memberlist-core = { version = "0.6", default-features = false, git = "https://github.com/al8n/memberlist" }
# memberlist = { version = "0.6", default-features = false, git = "https://github.com/al8n/memberlist" }

memberlist-proto = { version = "0.1", default-features = false }
memberlist-core = { version = "0.6", default-features = false }
memberlist = { version = "0.6", default-features = false }

serf-core = { path = "serf-core", version = "0.3.0", default-features = false }
serf = { path = "serf", version = "0.3.0", default-features = false }
Loading
Loading