A platform for self-hosting internet services.
|
1 year ago | |
---|---|---|
.vscode | 1 year ago | |
crates | 1 year ago | |
doc | 1 year ago | |
dockerfiles | 1 year ago | |
tools | 1 year ago | |
website | 1 year ago | |
.dockerignore | 1 year ago | |
.gitignore | 1 year ago | |
Cargo.lock | 1 year ago | |
Cargo.toml | 1 year ago | |
LICENSE | 2 years ago | |
README.md | 1 year ago | |
ROADMAP.md | 2 years ago |
Blocktree is a platform for building distributed systems. It aims to make it easy to create secure and reliable services using the actor model.
The goals of the system include the following:
Non-goals of the systems include:
Blocktree is broken into the following main crates:
The remaining crates contain tests and code which facilitates them.
Blocktree requires the nightly rust compiler. The preferred way of installing this is
using rustup. Once you have rustup installed you can install the nightly
toolchain with rustup toolchain install nightly
.
Building is as simple as executing cargo build
in the root of this repository. The test suite
can be run with cargo test
. In order to run the tests swtpm
, libtss2
and libfuse
need to be
installed.
In order to use the flamegraph
crate to on Linux you need to setup unprivileged access to the
perf
utility by your user account. After installing perf
(on Arch with pacman -S perf
),
perform the following as root (if perf
is not installed at /usr/bin/perf
use which perf
to
locate it):
# groupadd perf_users
# cd /usr/bin
# ls -alhF perf
-rwxr-xr-x 2 root root 11M Oct 19 15:12 perf
# chgrp perf_users perf
# ls -alhF
-rwxr-xr-x 2 root perf_users 11M Oct 19 15:12 perf
# chmod o-rwx perf
# ls -alhF
-rwxr-x--- 2 root perf_users 11M Oct 19 15:12 perf
# setcap "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" perf
# setcap -v "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" perf
perf: OK
# getcap perf
perf = cap_sys_ptrace,cap_syslog,cap_perfmon+ep
(source: https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html) Finally add your user account to the perf_users group:
# usermod -aG perf_users <your username>
You'll need to logout and back in for the new group to take effect. You can confirm you're in the group with:
> groups
tss audio <your username> perf_users
The you can run flamegraph as your user account with:
> cargo flamegraph --unit-test <crate name> -- test::<test name>
(source: https://crates.io/crates/flamegraph)
The tarpaulin crate can be used to generate code coverage
reports. You can install it with cargo with cargo install tarpaulin
. To generate an HTML report
for the entire repository, execute cargo tarpaulin --out Html
from the root of
this repository. The generated report will be saved to the root of the repository.
You can generate coverage reports for specific crates by first navigating
to the crates directory then executing the above command.
Note that even if you run the tool in a subdirectory, the report will still be saved in the root
of the repository.
Please do not commit the coverage report.
Copyright 2023 Delease, LLC. The software contained in this repository is licensed under the GNU Affero General Public License Version 3 or later. A copy of this license is provided in the LICENSE file in the root of this repository. A license which allows for the usage of this software without disclosing the source code of the system containing it may be purchased by contacting Delease, LLC.