[BACK]Return to t_cgd.sh CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / tests / dev / cgd

Annotation of src/tests/dev/cgd/t_cgd.sh, Revision 1.13

1.13    ! kre         1: #      $NetBSD: t_cgd.sh,v 1.12 2019/04/10 06:09:39 kre Exp $
1.1       pooka       2: #
                      3: # Copyright (c) 2010 The NetBSD Foundation, Inc.
                      4: # All rights reserved.
                      5: #
                      6: # Redistribution and use in source and binary forms, with or without
                      7: # modification, are permitted provided that the following conditions
                      8: # are met:
                      9: # 1. Redistributions of source code must retain the above copyright
                     10: #    notice, this list of conditions and the following disclaimer.
                     11: # 2. Redistributions in binary form must reproduce the above copyright
                     12: #    notice, this list of conditions and the following disclaimer in the
                     13: #    documentation and/or other materials provided with the distribution.
                     14: #
                     15: # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     16: # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     17: # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     18: # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     19: # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     20: # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     21: # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     22: # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     23: # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     24: # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     25: # POSSIBILITY OF SUCH DAMAGE.
                     26: #
                     27:
1.5       pooka      28: rawpart=`sysctl -n kern.rawpartition | tr '01234' 'abcde'`
                     29: rawcgd=/dev/rcgd0${rawpart}
1.4       pooka      30: cgdserver=\
                     31: "rump_server -lrumpvfs -lrumpkern_crypto -lrumpdev -lrumpdev_disk -lrumpdev_cgd"
                     32:
1.3       pooka      33: atf_test_case basic cleanup
1.1       pooka      34: basic_head()
                     35: {
                     36:
1.13    ! kre        37:        atf_set descr "Tests that encrypt/decrypt works"
        !            38:        atf_set require.progs rump_server
1.1       pooka      39: }
                     40:
                     41: basic_body()
                     42: {
                     43:        d=$(atf_get_srcdir)
1.2       pooka      44:        atf_check -s exit:0 \
1.4       pooka      45:            ${cgdserver} -d key=/dev/dk,hostpath=dk.img,size=1m unix://csock
1.2       pooka      46:
                     47:        export RUMP_SERVER=unix://csock
1.9       jmmv       48:        atf_check -s exit:0 -x "echo 12345 | \
1.2       pooka      49:            rump.cgdconfig -p cgd0 /dev/dk ${d}/paramsfile"
1.9       jmmv       50:        atf_check -s exit:0 -e ignore -x \
1.6       pooka      51:            "dd if=${d}/t_cgd count=2 | rump.dd of=${rawcgd}"
1.2       pooka      52:        atf_check -s exit:0 -e ignore dd if=${d}/t_cgd of=testfile count=2
1.6       pooka      53:        atf_check -s exit:0 -e ignore -o file:testfile \
                     54:            rump.dd if=${rawcgd} count=2
1.2       pooka      55: }
                     56:
                     57: basic_cleanup()
                     58: {
1.8       jmmv       59:        env RUMP_SERVER=unix://csock rump.halt || true
1.1       pooka      60: }
                     61:
1.3       pooka      62: atf_test_case wrongpass cleanup
1.1       pooka      63: wrongpass_head()
                     64: {
                     65:
1.13    ! kre        66:        atf_set descr \
        !            67:            "Tests that wrong password does not give original plaintext"
        !            68:        atf_set require.progs rump_server
1.1       pooka      69: }
                     70:
                     71: wrongpass_body()
                     72: {
                     73:        d=$(atf_get_srcdir)
1.2       pooka      74:        atf_check -s exit:0 \
1.4       pooka      75:            ${cgdserver} -d key=/dev/dk,hostpath=dk.img,size=1m unix://csock
1.2       pooka      76:
                     77:        export RUMP_SERVER=unix://csock
1.13    ! kre        78:        atf_check -s exit:0 -x \
        !            79:            "echo 12345 | rump.cgdconfig -p cgd0 /dev/dk ${d}/paramsfile"
1.9       jmmv       80:        atf_check -s exit:0 -e ignore -x \
1.6       pooka      81:            "dd if=${d}/t_cgd | rump.dd of=${rawcgd} count=2"
1.2       pooka      82:
                     83:        # unconfig and reconfig cgd
                     84:        atf_check -s exit:0 rump.cgdconfig -u cgd0
1.13    ! kre        85:        atf_check -s exit:0 -x \
        !            86:            "echo 54321 | rump.cgdconfig -p cgd0 /dev/dk ${d}/paramsfile"
1.2       pooka      87:
                     88:        atf_check -s exit:0 -e ignore dd if=${d}/t_cgd of=testfile count=2
                     89:        atf_check -s exit:0 -e ignore -o not-file:testfile \
1.6       pooka      90:            rump.dd if=${rawcgd} count=2
1.1       pooka      91: }
                     92:
1.3       pooka      93: wrongpass_cleanup()
                     94: {
1.8       jmmv       95:        env RUMP_SERVER=unix://csock rump.halt || true
1.3       pooka      96: }
                     97:
1.7       pooka      98:
1.10      riastrad   99: atf_test_case unaligned_write cleanup
                    100: unaligned_write_head()
1.7       pooka     101: {
1.13    ! kre       102:        atf_set descr "Attempt unaligned writes to a raw cgd device"
        !           103:        atf_set require.progs rump_server
1.7       pooka     104: }
                    105:
1.10      riastrad  106: unaligned_write_body()
1.7       pooka     107: {
                    108:        d=$(atf_get_srcdir)
                    109:        atf_check -s exit:0 \
                    110:            ${cgdserver} -d key=/dev/dk,hostpath=dk.img,size=1m unix://csock
                    111:
                    112:        export RUMP_SERVER=unix://csock
1.13    ! kre       113:        atf_check -s exit:0 -x \
        !           114:            "echo 12345 | rump.cgdconfig -p cgd0 /dev/dk ${d}/paramsfile"
1.7       pooka     115:
1.10      riastrad  116:        # Check that cgd rejects writes of totally bogus lengths.
                    117:        atf_check -s not-exit:0 -e ignore -x \
1.7       pooka     118:            "echo die hard | rump.dd of=${rawcgd} bs=123 conv=sync"
1.10      riastrad  119:
                    120:        # Check that cgd rejects non-sector-length writes even if they
                    121:        # are integral multiples of the block size.
                    122:        atf_check -s not-exit:0 -e ignore -x \
                    123:            "echo die hard | rump.dd of=${rawcgd} bs=64 conv=sync"
                    124:        atf_check -s not-exit:0 -e ignore -x \
                    125:            "echo die hard | rump.dd of=${rawcgd} bs=256 conv=sync"
                    126:
                    127:        # Check that cgd rejects misaligned buffers, produced by
                    128:        # packetizing the input on bogus boundaries and using the
                    129:        # bizarre behaviour of `bs=N' in dd.
                    130:        atf_check -s not-exit:0 -e ignore -x \
1.13    ! kre       131:            "(echo -n x && sleep 1 && head -c 511 </dev/zero) |
        !           132:                rump.dd of=${rawcgd} bs=512"
1.10      riastrad  133:
                    134:        # Check that cgd rejects sector-length writes if they are not
                    135:        # on sector boundaries.  Doesn't work because dd can't be
                    136:        # persuaded to seek a non-integral multiple of the output
                    137:        # buffer size and I can't be arsed to find the another way to
                    138:        # do that.
                    139:        #atf_check -s not-exit:0 -e ignore -x \
                    140:        #    "echo die hard | rump.dd of=${rawcgd} seek=1 bs=512 conv=sync"
1.7       pooka     141: }
                    142:
1.10      riastrad  143: unaligned_write_cleanup()
1.7       pooka     144: {
1.8       jmmv      145:        env RUMP_SERVER=unix://csock rump.halt || true
1.7       pooka     146: }
                    147:
1.12      kre       148: vmeth_failure_body()
                    149: {
                    150:        local vmeth="$1"
                    151:        local d=$(atf_get_srcdir)
                    152:
                    153:        atf_check -s exit:0 \
                    154:            ${cgdserver} -d key=/dev/dk,hostpath=dk.img,size=1m unix://csock
                    155:        export RUMP_SERVER=unix://csock
1.13    ! kre       156:        atf_check -s not-exit:0 -e ignore -x \
        !           157:            "echo 12345 |
        !           158:             rump.cgdconfig -V '${vmeth}' -p cgd0 /dev/dk ${d}/paramsfile"
        !           159:        atf_check -s exit:0 -o not-match:'(^| )cgd0( |$)' \
        !           160:            rump.sysctl -n hw.disknames
1.12      kre       161: }
                    162:
                    163: test_case_vmeth_failure()
                    164: {
                    165:        local vmeth="${1}"
                    166:        local name="vmeth_failure_${vmeth}"
                    167:
                    168:        atf_test_case "${name}" cleanup
1.13    ! kre       169:        eval "${name}_head() {
        !           170:                atf_set descr 'Tests verification method \"${vmeth}\" failure'
        !           171:                atf_set require.progs rump_server
1.12      kre       172:        }"
1.13    ! kre       173:        eval "${name}_body() {
        !           174:                vmeth_failure_body '${vmeth}'
1.12      kre       175:        }"
1.13    ! kre       176:        eval "${name}_cleanup() {
        !           177:                rump.cgdconfig -u cgd0 2>/dev/null
        !           178:                env RUMP_SERVER=unix://csock rump.halt || true
1.12      kre       179:        }"
                    180: }
                    181:
                    182: test_case_vmeth_failure disklabel
                    183: test_case_vmeth_failure ffs
                    184: test_case_vmeth_failure gpt
                    185: test_case_vmeth_failure mbr
                    186:
1.1       pooka     187: atf_init_test_cases()
                    188: {
                    189:        atf_add_test_case basic
                    190:        atf_add_test_case wrongpass
1.10      riastrad  191:        atf_add_test_case unaligned_write
1.12      kre       192:        atf_add_test_case vmeth_failure_disklabel
                    193:        atf_add_test_case vmeth_failure_ffs
                    194:        atf_add_test_case vmeth_failure_gpt
                    195:        atf_add_test_case vmeth_failure_mbr
1.1       pooka     196: }

CVSweb <webmaster@jp.NetBSD.org>