Browse Source

update tests to new name and create the starting test...

This isn't the best as it depends upon a WebDAV server already running..
tags/ggatessh-v1.0.0
John-Mark Gurney 4 years ago
parent
commit
b9ca728a15
4 changed files with 151 additions and 271 deletions
  1. +1
    -1
      .gitignore
  2. +1
    -1
      tests/Makefile
  3. +0
    -269
      tests/ggate_test.sh
  4. +149
    -0
      tests/ggatehttp_test.sh

+ 1
- 1
.gitignore View File

@@ -5,4 +5,4 @@
*.debug
ggatehttp/ggatehttp
tests/Kyuafile
tests/ggate_test
tests/ggatehttp_test

+ 1
- 1
tests/Makefile View File

@@ -4,6 +4,6 @@ PACKAGE= tests

TESTSDIR= ${TESTSBASE}/sys/geom/class/gate

ATF_TESTS_SH+= ggate_test
ATF_TESTS_SH+= ggatehttp_test

.include <bsd.test.mk>

+ 0
- 269
tests/ggate_test.sh View File

@@ -1,269 +0,0 @@
# $FreeBSD$

PIDFILE=ggated.pid
PLAINFILES=plainfiles
PORT=33080
CONF=gg.exports

atf_test_case ggated cleanup
ggated_head()
{
atf_set "descr" "ggated can proxy geoms"
atf_set "require.progs" "ggatec ggated"
atf_set "require.user" "root"
atf_set "timeout" 60
}

ggated_body()
{
load_ggate

us=$(alloc_ggate_dev)
work=$(alloc_md)
src=$(alloc_md)

atf_check -e ignore -o ignore \
dd if=/dev/random of=/dev/$work bs=1m count=1 conv=notrunc
atf_check -e ignore -o ignore \
dd if=/dev/random of=/dev/$src bs=1m count=1 conv=notrunc

echo $CONF >> $PLAINFILES
echo "127.0.0.1 RW /dev/$work" > $CONF

atf_check ggated -p $PORT -F $PIDFILE $CONF
atf_check ggatec create -p $PORT -u $us 127.0.0.1 /dev/$work

ggate_dev=/dev/ggate${us}

wait_for_ggate_device ${ggate_dev}

atf_check -e ignore -o ignore \
dd if=/dev/${src} of=${ggate_dev} bs=1m count=1 conv=notrunc

checksum /dev/$src /dev/$work
}

ggated_cleanup()
{
common_cleanup
}

atf_test_case ggatel_file cleanup
ggatel_file_head()
{
atf_set "descr" "ggatel can proxy files"
atf_set "require.progs" "ggatel"
atf_set "require.user" "root"
atf_set "timeout" 15
}

ggatel_file_body()
{
load_ggate

us=$(alloc_ggate_dev)

echo src work >> ${PLAINFILES}
dd if=/dev/random of=work bs=1m count=1
dd if=/dev/random of=src bs=1m count=1

atf_check ggatel create -u $us work

ggate_dev=/dev/ggate${us}

wait_for_ggate_device ${ggate_dev}

atf_check -e ignore -o ignore \
dd if=src of=${ggate_dev} bs=1m count=1 conv=notrunc

checksum src work
}

ggatel_file_cleanup()
{
common_cleanup
}

atf_test_case ggatel_md cleanup
ggatel_md_head()
{
atf_set "descr" "ggatel can proxy files"
atf_set "require.progs" "ggatel"
atf_set "require.user" "root"
atf_set "timeout" 15
}

ggatel_md_body()
{
load_ggate

us=$(alloc_ggate_dev)
work=$(alloc_md)
src=$(alloc_md)

atf_check -e ignore -o ignore \
dd if=/dev/random of=$work bs=1m count=1 conv=notrunc
atf_check -e ignore -o ignore \
dd if=/dev/random of=$src bs=1m count=1 conv=notrunc

atf_check ggatel create -u $us /dev/$work

ggate_dev=/dev/ggate${us}

wait_for_ggate_device ${ggate_dev}

atf_check -e ignore -o ignore \
dd if=/dev/$src of=${ggate_dev} bs=1m count=1 conv=notrunc

checksum /dev/$src /dev/$work
}

ggatel_md_cleanup()
{
common_cleanup
}

atf_test_case ggate_sock cleanup
ggate_sock_head()
{
atf_set "descr" "ggatec can connect to ggated over unix domain socket"
atf_set "require.progs" "ggatec ggated"
atf_set "require.user" "root"
atf_set "timeout" 5
}

ggate_sock_body()
{
load_ggate

us=$(alloc_ggate_dev)
work=$(alloc_md)
src=$(alloc_md)

atf_check -e ignore -o ignore \
dd if=/dev/random of=/dev/$work bs=1m count=1 conv=notrunc
atf_check -e ignore -o ignore \
dd if=/dev/random of=/dev/$src bs=1m count=1 conv=notrunc

echo $CONF >> $PLAINFILES
echo "0.0.0.0 RW /dev/$work" > $CONF

atf_check ggated -q 10 -s local.sock -F $PIDFILE $CONF
atf_check ggatec create -u $us sock:"$(pwd)/local.sock" /dev/$work

ggate_dev=/dev/ggate${us}

wait_for_ggate_device ${ggate_dev}

atf_check -e ignore -o ignore \
dd if=/dev/${src} of=${ggate_dev} bs=1m count=1 conv=notrunc

checksum /dev/$src /dev/$work
}

ggate_sock_cleanup()
{
common_cleanup
}

atf_init_test_cases()
{
atf_add_test_case ggated
atf_add_test_case ggatel_file
atf_add_test_case ggatel_md
atf_add_test_case ggate_sock
}

alloc_ggate_dev()
{
local us

us=0
while [ -c /dev/ggate${us} ]; do
: $(( us += 1 ))
done
echo ${us} > ggate.devs
echo ${us}
}

alloc_md()
{
local md

md=$(mdconfig -a -t malloc -s 1M) || \
atf_fail "failed to allocate md device"
echo ${md} >> md.devs
echo ${md}
}

checksum()
{
local src work
src=$1
work=$2

src_checksum=$(md5 -q $src)
work_checksum=$(md5 -q $work)

if [ "$work_checksum" != "$src_checksum" ]; then
atf_fail "work md5 checksum didn't match"
fi

ggate_checksum=$(md5 -q /dev/ggate${us})
if [ "$ggate_checksum" != "$src_checksum" ]; then
atf_fail "ggate md5 checksum didn't match"
fi
}

common_cleanup()
{
if [ -f "ggate.devs" ]; then
while read test_ggate; do
ggatec destroy -f -u $test_ggate >/dev/null
done < ggate.devs
rm ggate.devs
fi

if [ -f "$PIDFILE" ]; then
pkill -F "$PIDFILE"
rm $PIDFILE
fi

if [ -f "PLAINFILES" ]; then
while read f; do
rm -f ${f}
done < ${PLAINFILES}
rm ${PLAINFILES}
fi

if [ -f "md.devs" ]; then
while read test_md; do
mdconfig -d -u $test_md 2>/dev/null
done < md.devs
rm md.devs
fi
true
}

load_ggate()
{
local class=gate

# If the geom class isn't already loaded, try loading it.
if ! kldstat -q -m g_${class}; then
if ! geom ${class} load; then
atf_skip "could not load module for geom class=${class}"
fi
fi
}

# Bug 204616: ggatel(8) creates /dev/ggate* asynchronously if `ggatel create`
# isn't called with `-v`.
wait_for_ggate_device()
{
ggate_device=$1

while [ ! -c $ggate_device ]; do
sleep 0.5
done
}

+ 149
- 0
tests/ggatehttp_test.sh View File

@@ -0,0 +1,149 @@
# $FreeBSD$

PIDFILE=ggated.pid
TESTURL=http://127.0.0.1:5555/somefile
TESTFILE=/home/freebsd/lf.test/webdav/data/somefile

atf_test_case ggatehttp cleanup
ggatehttp_head()
{
atf_set "descr" "ggatehttp can proxy to http"
atf_set "require.progs" "ggatehttp"
atf_set "require.user" "root"
atf_set "timeout" 10
}

ggatehttp_body()
{
load_ggate
us=$(alloc_ggate_dev)
src=$(alloc_md)

atf_check -e ignore -o ignore \
dd if=/dev/random of="$TESTFILE" bs=1m count=1 conv=notrunc

atf_check ggatehttp create -u $us "$TESTURL"

ggate_dev=/dev/ggate${us}

wait_for_ggate_device ${ggate_dev}

# Test reading
atf_check -e ignore -o ignore \
dd if=${ggate_dev} of=/dev/${src} bs=1m count=1 conv=notrunc

checksum /dev/$src "$TESTFILE"

atf_check -e ignore -o ignore \
dd if=/dev/random of=/dev/${src} bs=1m count=1 conv=notrunc

# Test writing
atf_check -e ignore -o ignore \
dd if=/dev/${src} of=${ggate_dev} bs=1m count=1 conv=notrunc

checksum /dev/$src "$TESTFILE"
}

ggatehttp_cleanup()
{
common_cleanup
}

atf_init_test_cases()
{
atf_add_test_case ggatehttp
}

alloc_ggate_dev()
{
local us

us=0
while [ -c /dev/ggate${us} ]; do
: $(( us += 1 ))
done
echo ${us} > ggate.devs
echo ${us}
}

alloc_md()
{
local md

md=$(mdconfig -a -t malloc -s 1M) || \
atf_fail "failed to allocate md device"
echo ${md} >> md.devs
echo ${md}
}

checksum()
{
local src work
src=$1
work=$2

src_checksum=$(md5 -q $src)
work_checksum=$(md5 -q $work)

if [ "$work_checksum" != "$src_checksum" ]; then
atf_fail "work md5 checksum didn't match"
fi

ggate_checksum=$(md5 -q /dev/ggate${us})
if [ "$ggate_checksum" != "$src_checksum" ]; then
atf_fail "ggate md5 checksum didn't match"
fi
}

common_cleanup()
{
if [ -f "ggate.devs" ]; then
while read test_ggate; do
ggatec destroy -f -u $test_ggate >/dev/null
done < ggate.devs
rm ggate.devs
fi

if [ -f "$PIDFILE" ]; then
pkill -F "$PIDFILE"
rm $PIDFILE
fi

if [ -f "PLAINFILES" ]; then
while read f; do
rm -f ${f}
done < ${PLAINFILES}
rm ${PLAINFILES}
fi

if [ -f "md.devs" ]; then
while read test_md; do
mdconfig -d -u $test_md 2>/dev/null
done < md.devs
rm md.devs
fi
true
}

load_ggate()
{
local class=gate

# If the geom class isn't already loaded, try loading it.
if ! kldstat -q -m g_${class}; then
if ! geom ${class} load; then
atf_skip "could not load module for geom class=${class}"
fi
fi
}

# Bug 204616: ggatel(8) creates /dev/ggate* asynchronously if `ggatel create`
# isn't called with `-v`.
wait_for_ggate_device()
{
ggate_device=$1

while [ ! -c $ggate_device ]; do
sleep 0.5
done
}

Loading…
Cancel
Save