. $(atf_get_srcdir)/ctl.subr
atf_test_case basic cleanup
basic_head()
{
atf_set "descr" "READ BUFFER can retrieve data previously written by WRITE BUFFER"
atf_set "require.user" "root"
atf_set "require.progs" "sg_read_buffer sg_write_buffer ctladm"
}
basic_body()
{
create_ramdisk
cp /etc/passwd input
len=`wc -c input | cut -wf 2`
atf_check -o ignore sg_write_buffer --mode data --in=input /dev/$dev
atf_check -o save:output sg_read_buffer --mode data -l $len --raw /dev/$dev
if ! diff -q input output; then
atf_fail "Miscompare!"
fi
}
basic_cleanup()
{
cleanup
}
atf_test_case desc cleanup
desc_head()
{
atf_set "descr" "READ BUFFER can retrieve the buffer size via the DESCRIPTOR mode"
atf_set "require.user" "root"
atf_set "require.progs" "sg_read_buffer ctladm"
}
desc_body()
{
create_ramdisk
atf_check -o inline:" 00 00 04 00 00\n" sg_read_buffer --hex --mode desc /dev/$dev
}
desc_cleanup()
{
cleanup
}
atf_test_case length cleanup
length_head()
{
atf_set "descr" "READ BUFFER can limit its length with the LENGTH field"
atf_set "require.user" "root"
atf_set "require.progs" "sg_read_buffer sg_write_buffer ctladm"
}
length_body()
{
create_ramdisk
atf_check -o ignore -e ignore dd if=/dev/random of=input bs=4096 count=1
atf_check -o ignore -e ignore dd if=input bs=2048 count=1 of=expected
atf_check -o ignore sg_write_buffer --mode data --in=input /dev/$dev
atf_check -o save:output sg_read_buffer --mode data -l 2048 --raw /dev/$dev
if ! diff -q expected output; then
atf_fail "Miscompare!"
fi
}
length_cleanup()
{
cleanup
}
atf_test_case offset cleanup
offset_head()
{
atf_set "descr" "READ BUFFER accepts the BUFFER OFFSET field"
atf_set "require.user" "root"
atf_set "require.progs" "sg_read_buffer sg_write_buffer ctladm"
}
offset_body()
{
create_ramdisk
atf_check -o ignore -e ignore dd if=/dev/random of=input bs=4096 count=1
atf_check -o ignore -e ignore dd if=input iseek=2 bs=512 count=1 of=expected
atf_check -o ignore sg_write_buffer --mode data --in=input /dev/$dev
atf_check -o save:output sg_read_buffer --mode data -l 512 -o 1024 --raw /dev/$dev
if ! diff -q expected output; then
atf_fail "Miscompare!"
fi
}
offset_cleanup()
{
cleanup
}
atf_test_case uninitialized cleanup
uninitialized_head()
{
atf_set "descr" "READ BUFFER buffers are zero-initialized"
atf_set "require.user" "root"
atf_set "require.progs" "sg_read_buffer ctladm"
}
uninitialized_body()
{
create_ramdisk
atf_check -o save:output sg_read_buffer --mode data -l 262144 --raw /dev/$dev
atf_check -o ignore -e ignore dd if=/dev/zero bs=262144 count=1 of=expected
if ! diff -q expected output; then
atf_fail "Miscompare!"
fi
}
uninitialized_cleanup()
{
cleanup
}
atf_init_test_cases()
{
atf_add_test_case basic
atf_add_test_case desc
atf_add_test_case length
atf_add_test_case offset
atf_add_test_case uninitialized
}