1f397a004SAlan Somers 2cf551b8aSAlan Somers. $(atf_get_srcdir)/conf.sh 3cf551b8aSAlan Somers 4f397a004SAlan Somersatf_test_case attach_d cleanup 5f397a004SAlan Somersattach_d_head() 6f397a004SAlan Somers{ 7f397a004SAlan Somers atf_set "descr" "geli attach -d will cause the provider to detach on last close" 8f397a004SAlan Somers atf_set "require.user" "root" 9f397a004SAlan Somers} 10f397a004SAlan Somersattach_d_body() 11f397a004SAlan Somers{ 12cf551b8aSAlan Somers geli_test_setup 13f397a004SAlan Somers 14f397a004SAlan Somers sectors=100 1596950419SGleb Smirnoff attach_md md -t malloc -s `expr $sectors + 1` 16f397a004SAlan Somers 17f397a004SAlan Somers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 18f397a004SAlan Somers 19f397a004SAlan Somers atf_check geli init -B none -P -K keyfile ${md} 20f397a004SAlan Somers atf_check geli attach -d -p -k keyfile ${md} 21f397a004SAlan Somers 22f397a004SAlan Somers # Be sure it doesn't detach on read. 23f397a004SAlan Somers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 24f397a004SAlan Somers sleep 1 25f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 26f397a004SAlan Somers atf_fail "Detached on last close of a reader" 27f397a004SAlan Somers fi 28f397a004SAlan Somers 29f397a004SAlan Somers # It should detach on last close of a writer 30f397a004SAlan Somers true > /dev/${md}.eli 31f397a004SAlan Somers sleep 1 32f397a004SAlan Somers if [ -c /dev/${md}.eli ]; then 33f397a004SAlan Somers atf_fail "Did not detach on last close of a writer" 34f397a004SAlan Somers fi 35f397a004SAlan Somers 36f397a004SAlan Somers} 37f397a004SAlan Somersattach_d_cleanup() 38f397a004SAlan Somers{ 39f397a004SAlan Somers geli_test_cleanup 40f397a004SAlan Somers} 41f397a004SAlan Somers 42*4b3141f5SMariusz Zaborskiatf_test_case atach_multiple_fails cleanup 43*4b3141f5SMariusz Zaborskiattach_multiple_fails_head() 44*4b3141f5SMariusz Zaborski{ 45*4b3141f5SMariusz Zaborski atf_set "descr" "test multiple failed attach of geli provider" 46*4b3141f5SMariusz Zaborski atf_set "require.user" "root" 47*4b3141f5SMariusz Zaborski} 48*4b3141f5SMariusz Zaborskiattach_multiple_fails_body() 49*4b3141f5SMariusz Zaborski{ 50*4b3141f5SMariusz Zaborski geli_test_setup 51*4b3141f5SMariusz Zaborski 52*4b3141f5SMariusz Zaborski sectors=1000 53*4b3141f5SMariusz Zaborski attach_md md -t malloc -s `expr $sectors + 1` 54*4b3141f5SMariusz Zaborski atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 55*4b3141f5SMariusz Zaborski 56*4b3141f5SMariusz Zaborski atf_check geli init -B none -P -K keyfile ${md} 57*4b3141f5SMariusz Zaborski atf_check geli attach -d -p -k keyfile ${md} 58*4b3141f5SMariusz Zaborski 59*4b3141f5SMariusz Zaborski for i in $(jot 100); do 60*4b3141f5SMariusz Zaborski atf_check -s not-exit:0 -e ignore -- geli attach -d -p -k keyfile ${md} 61*4b3141f5SMariusz Zaborski done 62*4b3141f5SMariusz Zaborski atf_check -o ignore -- newfs ${md}.eli 63*4b3141f5SMariusz Zaborski} 64*4b3141f5SMariusz Zaborskiattach_multiple_fails_cleanup() 65*4b3141f5SMariusz Zaborski{ 66*4b3141f5SMariusz Zaborski geli_test_cleanup 67*4b3141f5SMariusz Zaborski} 68*4b3141f5SMariusz Zaborski 69*4b3141f5SMariusz Zaborski 70565a0a2cSAlan Somersatf_test_case attach_r cleanup 71565a0a2cSAlan Somersattach_r_head() 72565a0a2cSAlan Somers{ 73565a0a2cSAlan Somers atf_set "descr" "geli attach -r will create a readonly provider" 74565a0a2cSAlan Somers atf_set "require.user" "root" 75565a0a2cSAlan Somers} 76565a0a2cSAlan Somersattach_r_body() 77565a0a2cSAlan Somers{ 78cf551b8aSAlan Somers geli_test_setup 79565a0a2cSAlan Somers 80565a0a2cSAlan Somers sectors=100 8196950419SGleb Smirnoff attach_md md -t malloc -s `expr $sectors + 1` 82565a0a2cSAlan Somers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 83565a0a2cSAlan Somers 84565a0a2cSAlan Somers atf_check geli init -B none -P -K keyfile ${md} 85565a0a2cSAlan Somers atf_check geli attach -r -p -k keyfile ${md} 86565a0a2cSAlan Somers 87565a0a2cSAlan Somers atf_check -o match:"^Flags: .*READ-ONLY" geli list ${md}.eli 88565a0a2cSAlan Somers 89565a0a2cSAlan Somers # Verify that writes are verbotten 90565a0a2cSAlan Somers atf_check -s not-exit:0 -e match:"Read-only" \ 91565a0a2cSAlan Somers dd if=/dev/zero of=/dev/${md}.eli count=1 92565a0a2cSAlan Somers} 93565a0a2cSAlan Somersattach_r_cleanup() 94565a0a2cSAlan Somers{ 95565a0a2cSAlan Somers geli_test_cleanup 96565a0a2cSAlan Somers} 97565a0a2cSAlan Somers 9895e6640bSAlan Somersatf_test_case attach_multiple cleanup 9995e6640bSAlan Somersattach_multiple_head() 10095e6640bSAlan Somers{ 10195e6640bSAlan Somers atf_set "descr" "geli attach can attach multiple providers" 10295e6640bSAlan Somers atf_set "require.user" "root" 10395e6640bSAlan Somers} 10495e6640bSAlan Somersattach_multiple_body() 10595e6640bSAlan Somers{ 10695e6640bSAlan Somers geli_test_setup 10795e6640bSAlan Somers 10895e6640bSAlan Somers sectors=100 10996950419SGleb Smirnoff attach_md md0 -t malloc -s `expr $sectors + 1` 11096950419SGleb Smirnoff attach_md md1 -t malloc -s `expr $sectors + 1` 11196950419SGleb Smirnoff attach_md md2 -t malloc -s `expr $sectors + 1` 11295e6640bSAlan Somers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 11395e6640bSAlan Somers 11495e6640bSAlan Somers atf_check geli init -B none -P -K keyfile ${md0} 11595e6640bSAlan Somers atf_check geli init -B none -P -K keyfile ${md1} 11695e6640bSAlan Somers atf_check geli init -B none -P -K keyfile ${md2} 11795e6640bSAlan Somers atf_check geli attach -p -k keyfile ${md0} ${md1} ${md2} 11895e6640bSAlan Somers # verify that it did create all 3 geli devices 11995e6640bSAlan Somers atf_check -s exit:0 test -c /dev/${md0}.eli 12095e6640bSAlan Somers atf_check -s exit:0 test -c /dev/${md1}.eli 12195e6640bSAlan Somers atf_check -s exit:0 test -c /dev/${md2}.eli 12295e6640bSAlan Somers} 12395e6640bSAlan Somersattach_multiple_cleanup() 12495e6640bSAlan Somers{ 12595e6640bSAlan Somers geli_test_cleanup 12695e6640bSAlan Somers} 12795e6640bSAlan Somers 128565a0a2cSAlan Somersatf_test_case nokey cleanup 129565a0a2cSAlan Somersnokey_head() 130565a0a2cSAlan Somers{ 131565a0a2cSAlan Somers atf_set "descr" "geli attach fails if called with no key component" 132565a0a2cSAlan Somers atf_set "require.user" "root" 133565a0a2cSAlan Somers} 134565a0a2cSAlan Somersnokey_body() 135565a0a2cSAlan Somers{ 136cf551b8aSAlan Somers geli_test_setup 137565a0a2cSAlan Somers 138565a0a2cSAlan Somers sectors=100 13996950419SGleb Smirnoff attach_md md -t malloc -s `expr $sectors + 1` 140565a0a2cSAlan Somers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 141565a0a2cSAlan Somers 142565a0a2cSAlan Somers atf_check geli init -B none -P -K keyfile ${md} 143565a0a2cSAlan Somers atf_check -s not-exit:0 -e match:"No key components given" \ 144565a0a2cSAlan Somers geli attach -p ${md} 2>/dev/null 145565a0a2cSAlan Somers} 146565a0a2cSAlan Somersnokey_cleanup() 147565a0a2cSAlan Somers{ 148565a0a2cSAlan Somers geli_test_cleanup 149565a0a2cSAlan Somers} 150565a0a2cSAlan Somers 151f397a004SAlan Somersatf_init_test_cases() 152f397a004SAlan Somers{ 153f397a004SAlan Somers atf_add_test_case attach_d 154565a0a2cSAlan Somers atf_add_test_case attach_r 15595e6640bSAlan Somers atf_add_test_case attach_multiple 156*4b3141f5SMariusz Zaborski atf_add_test_case attach_multiple_fails 157565a0a2cSAlan Somers atf_add_test_case nokey 158f397a004SAlan Somers} 159