1 #!/usr/bin/env bash 2 # group: rw quick 3 # 4 # Test qemu-img snapshot -l 5 # 6 # Copyright (C) 2019 Red Hat, Inc. 7 # 8 # This program is free software; you can redistribute it and/or modify 9 # it under the terms of the GNU General Public License as published by 10 # the Free Software Foundation; either version 2 of the License, or 11 # (at your option) any later version. 12 # 13 # This program is distributed in the hope that it will be useful, 14 # but WITHOUT ANY WARRANTY; without even the implied warranty of 15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 # GNU General Public License for more details. 17 # 18 # You should have received a copy of the GNU General Public License 19 # along with this program. If not, see <http://www.gnu.org/licenses/>. 20 # 21 22 seq=$(basename "$0") 23 echo "QA output created by $seq" 24 25 status=1 # failure is the default! 26 27 _cleanup() 28 { 29 _cleanup_test_img 30 } 31 trap "_cleanup; exit \$status" 0 1 2 3 15 32 33 # get standard environment, filters and checks 34 . ./common.rc 35 . ./common.filter 36 . ./common.qemu 37 38 _supported_fmt qcow2 39 _supported_proto file fuse 40 # Internal snapshots are (currently) impossible with refcount_bits=1, 41 # and generally impossible with external data files 42 _unsupported_imgopts 'refcount_bits=1[^0-9]' data_file 43 44 _make_test_img 64M 45 46 # Should be so long as to take up the whole field width 47 sn_name=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 48 49 # More memory will give us a larger VM state, i.e. one above 1 MB. 50 # This way, we get a number with a decimal point. 51 qemu_comm_method=monitor _launch_qemu -m 512 "$TEST_IMG" 52 53 _send_qemu_cmd $QEMU_HANDLE "savevm $sn_name" '(qemu)' 54 _send_qemu_cmd $QEMU_HANDLE 'quit' '(qemu)' 55 wait=yes _cleanup_qemu 56 57 # Check that all fields are separated by spaces. 58 # We first collapse all space sequences into one space each; 59 # then we turn every space-separated field into a '.'; 60 # and finally, we name the '.'s so the output is not just a confusing 61 # sequence of dots. 62 63 echo 'Output structure:' 64 $QEMU_IMG snapshot -l "$TEST_IMG" | tail -n 1 | tr -s ' ' \ 65 | sed -e 's/\S\+/./g' \ 66 | sed -e 's/\./(snapshot ID)/' \ 67 -e 's/\./(snapshot name)/' \ 68 -e 's/\./(VM state size value)/' \ 69 -e 's/\./(VM state size unit)/' \ 70 -e 's/\./(snapshot date)/' \ 71 -e 's/\./(snapshot time)/' \ 72 -e 's/\./(VM clock)/' \ 73 -e 's/\./(icount)/' 74 75 # success, all done 76 echo "*** done" 77 rm -f $seq.full 78 status=0 79