Skip to content

Development

DatuX edited this page Oct 2, 2023 · 15 revisions

These are instructions if you want to modify zfs-autobackup, or if you want to run zfs-autobackup directly from git.

Setting up virtual env

(this is optional, you can also install the requirements globally)

psy@ws1:~/zfs_autobackup$ python3 -m venv backupdev
psy@ws1:~/zfs_autobackup$ source backupdev/bin/activate
(backupdev) psy@ws1:~/zfs_autobackup$ pip install -r requirements.txt 
psy@ws1 ~/zfs_autobackup % python3 -m venv backupdev                 
...

Running zfs_autobackup

To run zfs_autobackup you can just access it as a python module:

(backupdev) psy@ws1:~/zfs_autobackup$ python -m zfs_autobackup.ZfsAutobackup  --version
ZfsAutobackup.py v3.2-alpha1 - (c)2021 E.H.Eefting (edwin@datux.nl)

Same goes for zfs-autoverify:

(backupdev) psy@ws1:~/zfs_autobackup$ python -m zfs_autobackup.ZfsAutoverify  --version
ZfsAutoverify.py v3.2-alpha1 - (c)2021 E.H.Eefting (edwin@datux.nl)

Automated test suites

I'm using a test driven design process, usually i write the code and corresponding tests in unison.

The tests run against actual zfs commands and create a lot of temporary pools via loopback-images in the /tmp dir. Therefore the tests need root to run.

The tests also need ssh support via root@localhost, so it will create and install a sshkey if needed.

Running the whole suite

This takes a few minutes and is also done automaticly on each commit via github actions: https://github.com/psy0rz/zfs_autobackup/actions

(backupdev) root@ws1:/home/psy/zfs_autobackup# ./tests/run_tests 
###########################################
#### Unit testing against:
#### Python                :3.8.10 (default, Nov 26 2021, 20:14:08)  [GCC 9.3.0]
#### ZFS userspace         :2.1.1-0york0~20.04
#### ZFS kernel            :2.1.1-0york0~20.04
#############################################
THIS TEST REQUIRES SSH TO LOCALHOST
test_exitcode (test_cmdpipe.TestCmdPipe)
test piped exitcodes ... ok
...

Running one test

Since running the whole suite takes long, you can run one test like this:

(backupdev) root@ws1:/home/psy/zfs_autobackup# ./tests/run_test test_verify.py
###########################################
#### Unit testing against:
#### Python                :3.8.10 (default, Nov 26 2021, 20:14:08)  [GCC 9.3.0]
#### ZFS userspace         :2.1.1-0york0~20.04
#### ZFS kernel            :2.1.1-0york0~20.04
#############################################
test_verify (test_verify.TestZfsEncryption) ... Preparing zfs filesystems...

Automaticly run test on save

I use entr for this:

root@ws1:/home/psy/zfs_autobackup# find zfs_autobackup/ | entr -r ./tests/run_test test_verify.py

This will reexecute the specified test each time you save the files in your editor.