#!/usr/bin/env bash set -ex set -o pipefail export SYSTEMD_PAGER=cat dd if=/dev/urandom of=/var/tmp/testimage.raw bs=$((1024*1024+7)) count=5 # Test import machinectl import-raw /var/tmp/testimage.raw machinectl image-status testimage test -f /var/lib/machines/testimage.raw cmp /var/tmp/testimage.raw /var/lib/machines/testimage.raw # Test export machinectl export-raw testimage /var/tmp/testimage2.raw cmp /var/tmp/testimage.raw /var/tmp/testimage2.raw rm /var/tmp/testimage2.raw # Test compressed export (gzip) machinectl export-raw testimage /var/tmp/testimage2.raw.gz gunzip /var/tmp/testimage2.raw.gz cmp /var/tmp/testimage.raw /var/tmp/testimage2.raw rm /var/tmp/testimage2.raw # Test clone machinectl clone testimage testimage3 test -f /var/lib/machines/testimage3.raw machinectl image-status testimage3 test -f /var/lib/machines/testimage.raw machinectl image-status testimage cmp /var/tmp/testimage.raw /var/lib/machines/testimage.raw cmp /var/tmp/testimage.raw /var/lib/machines/testimage3.raw # Test removal machinectl remove testimage ! test -f /var/lib/machines/testimage.raw ! machinectl image-status testimage # Test export of clone machinectl export-raw testimage3 /var/tmp/testimage3.raw cmp /var/tmp/testimage.raw /var/tmp/testimage3.raw rm /var/tmp/testimage3.raw # Test rename machinectl rename testimage3 testimage4 test -f /var/lib/machines/testimage4.raw machinectl image-status testimage4 ! test -f /var/lib/machines/testimage3.raw ! machinectl image-status testimage3 cmp /var/tmp/testimage.raw /var/lib/machines/testimage4.raw # Test export of rename machinectl export-raw testimage4 /var/tmp/testimage4.raw cmp /var/tmp/testimage.raw /var/tmp/testimage4.raw rm /var/tmp/testimage4.raw # Test removal machinectl remove testimage4 ! test -f /var/lib/machines/testimage4.raw ! machinectl image-status testimage4 # → And now, let's test directory trees ← # # Set up a directory we can import mkdir /var/tmp/scratch mv /var/tmp/testimage.raw /var/tmp/scratch/ touch /var/tmp/scratch/anotherfile mkdir /var/tmp/scratch/adirectory echo "piep" > /var/tmp/scratch/adirectory/athirdfile # Test import-fs machinectl import-fs /var/tmp/scratch/ test -d /var/lib/machines/scratch machinectl image-status scratch # Test export-tar machinectl export-tar scratch /var/tmp/scratch.tar.gz test -f /var/tmp/scratch.tar.gz mkdir /var/tmp/extract (cd /var/tmp/extract ; tar xzf /var/tmp/scratch.tar.gz) diff -r /var/tmp/scratch/ /var/tmp/extract/ rm -rf /var/tmp/extract # Test import-tar machinectl import-tar /var/tmp/scratch.tar.gz scratch2 test -d /var/lib/machines/scratch2 machinectl image-status scratch2 diff -r /var/tmp/scratch/ /var/lib/machines/scratch2 # Test removal machinectl remove scratch ! test -f /var/lib/machines/scratch ! machinectl image-status scratch # Test clone machinectl clone scratch2 scratch3 test -d /var/lib/machines/scratch2 machinectl image-status scratch2 test -d /var/lib/machines/scratch3 machinectl image-status scratch3 diff -r /var/tmp/scratch/ /var/lib/machines/scratch3 # Test removal machinectl remove scratch2 ! test -f /var/lib/machines/scratch2 ! machinectl image-status scratch2 # Test rename machinectl rename scratch3 scratch4 test -d /var/lib/machines/scratch4 machinectl image-status scratch4 ! test -f /var/lib/machines/scratch3 ! machinectl image-status scratch3 diff -r /var/tmp/scratch/ /var/lib/machines/scratch4 # Test removal machinectl remove scratch4 ! test -f /var/lib/machines/scratch4 ! machinectl image-status scratch4 # Test import-tar hypen/stdin pipe behavior cat /var/tmp/scratch.tar.gz | machinectl import-tar - scratch5 test -d /var/lib/machines/scratch5 machinectl image-status scratch5 diff -r /var/tmp/scratch/ /var/lib/machines/scratch5 # Test export-tar hypen/stdout pipe behavior mkdir -p /var/tmp/extract machinectl export-tar scratch5 - | tar xvf - -C /var/tmp/extract/ diff -r /var/tmp/scratch/ /var/tmp/extract/ rm -rf /var/tmp/extract rm -rf /var/tmp/scratch echo OK > /testok exit 0