spdk
shunit2
Our great sponsors
spdk | shunit2 | |
---|---|---|
6 | 4 | |
2,829 | 1,547 | |
2.3% | - | |
9.9 | 3.5 | |
3 days ago | 3 months ago | |
C | Shell | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
spdk
-
calcuating IOPS
https://spdk.io will require you to load linux onto the server (livecd off a usb should be fine), but is essentially the most efficient way possible to do IO. Intel’s storage division used to use it to get the numbers they advertised with. When they loaded up a system with kioxia drives, Intel managed to hit 120 million IOPS in some of their testing.
- Storage performance development kit
- Win32 is the stable Linux userland ABI
- SPDK: Storage Performance Development Kit
-
ShellCheck: A static analysis tool for shell scripts
Since the project I work on (https://spdk.io) largely produces a set of executables as output, it was most natural to write the tests in bash. There's one top level bash script that kicks off the full suite of tests and thousands and thousands of lines of tests all written as bash scripts stringing together calls to these executables.
One of these tests is to run shellcheck against all of the scripts in the repo. We don't allow any modifications to scripts without shellcheck giving them the green light now. The quality of our tests has increased dramatically since this was instituted - it's a really great tool.
-
Achieving 11M IOPS and 66 GB/S IO on a Single ThreadRipper Workstation
FYI SPDK doesn't strictly require the IOMMU be enabled. See https://spdk.io/doc/system_configuration.html There's also a new experimental interrupt mode (not for everything) finding some valuable use cases in SPDK, see https://github.com/spdk/spdk/blob/master/CHANGELOG.md and feel free to jump on the SPDK slack channel or email list for more info on either of these https://spdk.io/community/
shunit2
-
Pure Bash Bible
> or something that would proper unit testing
<https://github.com/kward/shunit2>
-
First time writing bash scripts for work, not sure if this is true elsewhere
https://github.com/kward/shunit2 is your friend here.
-
AWK an old-school tool today
And in case you are thinking how powerful this is and like me trying to take it further to create small AWK powered "apps" to do the monotonous tasks while wondering how can you verify if what you are coding is valid, you can execute any number of unit tests for shell scripts, and therefore, AWK scripts using shunit2
-
ShellCheck: A static analysis tool for shell scripts
Alongside ShellCheck, I also use shUnit2 as my unit testing framework. Yes, you should test your bash.
https://github.com/kward/shunit2
What are some alternatives?
KVell - KVell: the Design and Implementation of a Fast Persistent Key-Value Store
bats-core - Bash Automated Testing System
shellharden - The corrective bash syntax highlighter
shellspec - A full-featured BDD unit testing framework for bash, ksh, zsh, dash and all POSIX shells
chia-blockchain - Chia blockchain python implementation (full node, farmer, harvester, timelord, and wallet)
ShellCheck - ShellCheck, a static analysis tool for shell scripts
static-analysis - ⚙️ A curated list of static analysis (SAST) tools and linters for all programming languages, config files, build tools, and more. The focus is on tools which improve code quality.
sh - A shell parser, formatter, and interpreter with bash support; includes shfmt
hadolint - Dockerfile linter, validate inline bash, written in Haskell
etc - Things that are too small to keep in a separate repo, but too important not to version them.