master - tests: add support to run unit test
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=d38a2d64f0cddc95177...
Commit: d38a2d64f0cddc951774b63d56b2fb5d9afb336e
Parent: 7616a7f46ee3de6dfc898b98ed33dbbf9d12cc95
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 18:09:44 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:18:23 2018 +0200
tests: add support to run unit test
---
test/lib/aux.sh | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index c56767e..977e917 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -1351,6 +1351,11 @@ apitest() {
"$TESTOLDPWD/api/$1.t" "${@:2}" && rm -f debug.log strace.log
}
+unittest() {
+ test -x "$TESTOLDPWD/unit/unit-test" || skip
+ "$TESTOLDPWD/unit/unit-test" "${@}"
+}
+
mirror_recovery_works() {
case "$(uname -r)" in
3.3.4-5.fc17.i686|3.3.4-5.fc17.x86_64) return 1 ;;
6 years
master - build: properly track source file for lmvlockctl
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=7616a7f46ee3de6dfc8...
Commit: 7616a7f46ee3de6dfc898b98ed33dbbf9d12cc95
Parent: cbe81a0b058b6c994ff2cdf9b3f7bd7903074320
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 01:19:07 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:05:50 2018 +0200
build: properly track source file for lmvlockctl
Ensure the source file is tracked by various cleanup functions.
---
daemons/lvmlockd/Makefile.in | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/daemons/lvmlockd/Makefile.in b/daemons/lvmlockd/Makefile.in
index 8f16d06..63944cb 100644
--- a/daemons/lvmlockd/Makefile.in
+++ b/daemons/lvmlockd/Makefile.in
@@ -27,6 +27,8 @@ ifeq ("@BUILD_LOCKDDLM@", "yes")
LOCK_LIBS += -ldlm_lt
endif
+SOURCES2 = lvmlockctl.c
+
TARGETS = lvmlockd lvmlockctl
.PHONY: install_lvmlockd
6 years
master - tests: inittest may run without root
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=cbe81a0b058b6c994ff...
Commit: cbe81a0b058b6c994ff2cdf9b3f7bd7903074320
Parent: 0221ebfd64541ee8598fc7f936f8267505b1bfae
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 00:08:06 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:05:50 2018 +0200
tests: inittest may run without root
If the test does not need root, it can use 'SKIP_ROOT_DM_CHECK'.
For such test no actions needed root to initilize DM devices and
nodes will be take and test can check i.e. functional unit tests.
---
test/lib/inittest.sh | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/test/lib/inittest.sh b/test/lib/inittest.sh
index b6a1a3a..5e900c0 100644
--- a/test/lib/inittest.sh
+++ b/test/lib/inittest.sh
@@ -47,6 +47,7 @@ SKIP_WITH_LVMETAD=${SKIP_WITH_LVMETAD-}
SKIP_WITH_LVMPOLLD=${SKIP_WITH_LVMPOLLD-}
SKIP_WITH_LVMLOCKD=${SKIP_WITH_LVMLOCKD-}
+SKIP_ROOT_DM_CHECK=${SKIP_ROOT_DM_CHECK-}
if test -n "$LVM_TEST_FLAVOUR"; then
. "lib/flavour-$LVM_TEST_FLAVOUR"
@@ -75,7 +76,9 @@ COMMON_PREFIX="LVMTEST"
PREFIX="${COMMON_PREFIX}$$"
# Check we are not conflickting with some exiting setup
-dmsetup table | not grep "${PREFIX}[^0-9]" || die "DM table already has devices with prefix $PREFIX!"
+if test -z "$SKIP_ROOT_DM_CHECK" ; then
+ dmsetup table | not grep "${PREFIX}[^0-9]" || die "DM table already has devices with prefix $PREFIX!"
+fi
if test -z "$LVM_TEST_DIR"; then LVM_TEST_DIR=$TMPDIR; fi
TESTDIR=$(mkdtemp "${LVM_TEST_DIR:-/tmp}" "$PREFIX.XXXXXXXXXX") || \
@@ -88,8 +91,13 @@ LVM_LOG_FILE_MAX_LINES=${LVM_LOG_FILE_MAX_LINES-1000000}
LVM_EXPECTED_EXIT_STATUS=1
export LVM_LOG_FILE_EPOCH LVM_LOG_FILE_MAX_LINES LVM_EXPECTED_EXIT_STATUS
-test -n "$BASH" && trap 'set +vx; STACKTRACE; set -vx' ERR
-trap 'aux teardown' EXIT # don't forget to clean up
+if test -z "$SKIP_ROOT_DM_CHECK" ; then
+ # Teardown only with root
+ test -n "$BASH" && trap 'set +vx; STACKTRACE; set -vx' ERR
+ trap 'aux teardown' EXIT # don't forget to clean up
+else
+ trap 'cd $TESTOLDPWD; rm -rf "${TESTDIR:?}"' EXIT
+fi
cd "$TESTDIR"
mkdir lib
@@ -114,7 +122,7 @@ mkdir "$LVM_SYSTEM_DIR" "$DM_DEV_DIR"
if test -n "$LVM_TEST_DEVDIR" ; then
test -d "$LVM_TEST_DEVDIR" || die "Test device directory LVM_TEST_DEVDIR=\"$LVM_TEST_DEVDIR\" is not valid."
DM_DEV_DIR=$LVM_TEST_DEVDIR
-else
+elif test -z "$SKIP_ROOT_DM_CHECK" ; then
mknod "$DM_DEV_DIR/testnull" c 1 3 || die "mknod failed"
echo >"$DM_DEV_DIR/testnull" || \
die "Filesystem does support devices in $DM_DEV_DIR (mounted with nodev?)"
@@ -151,7 +159,7 @@ if test -n "$LVM_TEST_LVMETAD" ; then
export LVM_LVMETAD_SOCKET="$TESTDIR/lvmetad.socket"
export LVM_LVMETAD_PIDFILE="$TESTDIR/lvmetad.pid"
aux prepare_lvmetad
-else
+elif test -z "$SKIP_ROOT_DM_CHECK" ; then
# lvmetad prepares its own lvmconf
export LVM_LVMETAD_PIDFILE="$TESTDIR/non-existing-file"
aux lvmconf
6 years
master - tests: inittest compare string
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=0221ebfd64541ee8598...
Commit: 0221ebfd64541ee8598fc7f936f8267505b1bfae
Parent: a7a23e7dd2f7fde59760a3d3f7c980d7a8f657a7
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 00:06:44 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:05:50 2018 +0200
tests: inittest compare string
Avoid logging warning when compared string is empty with -eq.
---
test/lib/inittest.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/lib/inittest.sh b/test/lib/inittest.sh
index 62ec494..b6a1a3a 100644
--- a/test/lib/inittest.sh
+++ b/test/lib/inittest.sh
@@ -53,7 +53,7 @@ if test -n "$LVM_TEST_FLAVOUR"; then
fi
test -n "$SKIP_WITHOUT_CLVMD" && test "$LVM_TEST_LOCKING" -ne 3 && initskip
-test -n "$SKIP_WITH_CLVMD" && test "$LVM_TEST_LOCKING" -eq 3 && initskip
+test -n "$SKIP_WITH_CLVMD" && test "$LVM_TEST_LOCKING" = 3 && initskip
test -n "$SKIP_WITHOUT_LVMETAD" && test -z "$LVM_TEST_LVMETAD" && initskip
test -n "$SKIP_WITH_LVMETAD" && test -n "$LVM_TEST_LVMETAD" && initskip
6 years
master - tests: aux extra protection for rm -rf
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a7a23e7dd2f7fde5976...
Commit: a7a23e7dd2f7fde59760a3d3f7c980d7a8f657a7
Parent: 38b4354494d3e6742d082c82ae7fc957be44e7e1
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 00:05:27 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:05:50 2018 +0200
tests: aux extra protection for rm -rf
---
test/lib/aux.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 877934c..c56767e 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -633,7 +633,7 @@ teardown() {
test -n "$TESTDIR" && {
cd "$TESTOLDPWD" || die "Failed to enter $TESTOLDPWD"
# after this delete no further write is possible
- rm -rf "$TESTDIR" || echo BLA
+ rm -rf "${TESTDIR:?}" || echo BLA
}
echo "ok"
6 years
master - tests: again disable this raid test
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=38b4354494d3e6742d0...
Commit: 38b4354494d3e6742d082c82ae7fc957be44e7e1
Parent: ec0f5c2bf67df53072196f1630f3407501384397
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 12:02:01 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:05:50 2018 +0200
tests: again disable this raid test
Still kills testing machines even with 4.17-rc4 kernels
on reshaping.
---
test/shell/lvconvert-raid-reshape.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/shell/lvconvert-raid-reshape.sh b/test/shell/lvconvert-raid-reshape.sh
index 28bff0d..e621318 100644
--- a/test/shell/lvconvert-raid-reshape.sh
+++ b/test/shell/lvconvert-raid-reshape.sh
@@ -18,7 +18,7 @@ LVM_SKIP_LARGE_TESTS=0
. lib/inittest
which mkfs.ext4 || skip
-aux have_raid 1 13 1 || skip # needed to address RHBZ#1501145
+aux have_raid 1 13 99 || skip # needed to address RHBZ#1501145
# Temporarily skip reshape tests on single-core CPUs until there's a fix for
# https://bugzilla.redhat.com/1443999 - AGK 2017/04/20
6 years
master - tests: drop delaying
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=ec0f5c2bf67df530721...
Commit: ec0f5c2bf67df53072196f1630f3407501384397
Parent: 86c8f0f01f07a1516f5a3f20e2a3c282b52c25dc
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat May 12 18:04:06 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 18:05:50 2018 +0200
tests: drop delaying
Here seem delaying dev has no use.
---
test/shell/mirror-names.sh | 16 ++--------------
1 files changed, 2 insertions(+), 14 deletions(-)
diff --git a/test/shell/mirror-names.sh b/test/shell/mirror-names.sh
index 899d63d..a3bc80f 100644
--- a/test/shell/mirror-names.sh
+++ b/test/shell/mirror-names.sh
@@ -51,18 +51,6 @@ lv_convert_lv_() {
get lv_field "$1" convert_lv | tr -d []
}
-enable_devs() {
- for i in "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" ; do
- aux enable_dev "$i"
- done
-}
-
-delay_devs() {
- for i in "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" ; do
- aux delay_dev "$i" 0 1000 "$(get first_extent_sector "$i"):"
- done
-}
-
# ---------------------------------------------------------------------
# Common environment setup/cleanup for each sub testcases
@@ -122,14 +110,14 @@ check_and_cleanup_lvs_
#COMM "converting mirror names is ${lv1}_mimagetmp_2"
lvcreate -aey -l2 --type mirror -m1 -n $lv1 $vg
-delay_devs
+# Use large enough polling interval so mirror is keeping mimagetmp
LVM_TEST_TAG="kill_me_$PREFIX" lvconvert -m+1 -i+40 -b $vg/$lv1
convlv=$(lv_convert_lv_ $vg/$lv1)
test "$convlv" = "${lv1}_mimagetmp_2"
lv_devices_ $vg/$lv1 $convlv ${lv1}_mimage_2
lv_devices_ $vg/$convlv ${lv1}_mimage_0 ${lv1}_mimage_1
lv_mirror_log_ $vg/$convlv ${lv1}_mlog
-enable_devs
+check lv_exists $vg ${lv1}_mimagetmp_2
#COMM "mirror log name after re-adding is ${lv1}_mlog"
lvconvert -f --mirrorlog core $vg/$lv1
6 years
master - tests: using throttling
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=86c8f0f01f07a1516f5...
Commit: 86c8f0f01f07a1516f5a3f20e2a3c282b52c25dc
Parent: 7362ed68be4a292fd51ad32fd8960c1c8ef765d9
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 7 13:09:46 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 17:48:31 2018 +0200
tests: using throttling
---
test/shell/pvmove-abort-all.sh | 18 ++++++++----------
test/shell/pvmove-abort.sh | 18 ++++++++----------
2 files changed, 16 insertions(+), 20 deletions(-)
diff --git a/test/shell/pvmove-abort-all.sh b/test/shell/pvmove-abort-all.sh
index 7cb549f..5a86a37 100644
--- a/test/shell/pvmove-abort-all.sh
+++ b/test/shell/pvmove-abort-all.sh
@@ -20,18 +20,19 @@ export DM_ABORT_ON_INTERNAL_ERRORS=0
. lib/inittest
+aux lvmconf 'activation/raid_region_size = 16'
+
aux prepare_pvs 6 60
-vgcreate -s 128k $vg "$dev1" "$dev2"
+vgcreate -s 512k $vg "$dev1" "$dev2"
pvcreate --metadatacopies 0 "$dev3"
vgextend $vg "$dev3"
-vgcreate -s 128k $vg1 "$dev4" "$dev5"
+vgcreate -s 512k $vg1 "$dev4" "$dev5"
pvcreate --metadatacopies 0 "$dev6"
vgextend $vg1 "$dev6"
-# Slowdown writes
-aux delay_dev "$dev3" 0 800 "$(get first_extent_sector "$dev3"):"
-aux delay_dev "$dev6" 0 800 "$(get first_extent_sector "$dev6"):"
+# Throttle mirroring
+aux throttle_dm_mirror
for mode in "--atomic" "" ;
do
@@ -48,7 +49,6 @@ cmd1=(pvmove -i1 $backgroundarg $mode "$dev1" "$dev3")
cmd2=(pvmove -i1 $backgroundarg $mode "$dev2" "$dev3")
cmd3=(pvmove -i1 $backgroundarg $mode -n $vg1/$lv1 "$dev4" "$dev6")
-if test -e HAVE_DM_DELAY; then
if test -z "$backgroundarg" ; then
"${cmd1[@]}" &
@@ -64,8 +64,6 @@ else
LVM_TEST_TAG="kill_me_$PREFIX" "${cmd3[@]}"
fi
-fi
-
# test removal of all pvmove LVs
pvmove --abort
@@ -82,7 +80,7 @@ aux kill_tagged_processes
done
done
-# Restore delayed device back
-aux enable_dev "$dev3" "$dev6"
+# Restore throttling
+aux restore_dm_mirror
vgremove -ff $vg $vg1
diff --git a/test/shell/pvmove-abort.sh b/test/shell/pvmove-abort.sh
index 0b8960b..5ca993b 100644
--- a/test/shell/pvmove-abort.sh
+++ b/test/shell/pvmove-abort.sh
@@ -16,14 +16,16 @@ SKIP_WITH_LVMLOCKD=1
. lib/inittest
+aux lvmconf 'activation/raid_region_size = 16'
+
aux prepare_pvs 3 60
-vgcreate -s 128k $vg "$dev1" "$dev2"
+vgcreate -s 512k $vg "$dev1" "$dev2"
pvcreate --metadatacopies 0 "$dev3"
vgextend $vg "$dev3"
-# Slowdown read/writes
-aux delay_dev "$dev3" 0 800 "$(get first_extent_sector "$dev3"):"
+# Throttle mirroring
+aux throttle_dm_mirror
for mode in "--atomic" "" ;
do
@@ -32,13 +34,11 @@ do
# Create multisegment LV
lvcreate -an -Zn -l30 -n $lv1 $vg "$dev1"
-lvcreate -an -Zn -l30 -n $lv2 $vg "$dev2"
+lvcreate -an -Zn -l40 -n $lv2 $vg "$dev2"
cmd1=(pvmove -i1 $backgroundarg $mode "$dev1" "$dev3")
cmd2=(pvmove -i1 $backgroundarg $mode "$dev2" "$dev3")
-if test -e HAVE_DM_DELAY; then
-
if test -z "$backgroundarg" ; then
"${cmd1[@]}" &
aux wait_pvmove_lv_ready "$vg-pvmove0"
@@ -57,8 +57,6 @@ get lv_field $vg name -a | tee out
not grep -E "^\[?pvmove0" out
grep -E "^\[?pvmove1" out
-fi
-
# remove any remaining pvmoves in progress
pvmove --abort
@@ -69,7 +67,7 @@ aux kill_tagged_processes
done
done
-# Restore delayed device back
-aux enable_dev "$dev3"
+# Restore throttling
+aux restore_dm_mirror
vgremove -ff $vg
6 years
master - tests: move device discard
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=7362ed68be4a292fd51...
Commit: 7362ed68be4a292fd51ad32fd8960c1c8ef765d9
Parent: f5da325d701082edab568160824c9c8c7289cf15
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 7 11:56:00 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 17:48:31 2018 +0200
tests: move device discard
---
test/lib/aux.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 853a78f..877934c 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -867,6 +867,7 @@ prepare_devs() {
prepare_backing_dev $(( n * devsize ))
# shift start of PV devices on /dev/loopXX by 1M
not diff LOOP BACKING_DEV >/dev/null 2>&1 || shift=2048
+ blkdiscard "$BACKING_DEV" 2>/dev/null || true
echo -n "## preparing $n devices..."
local size=$(( devsize * 2048 )) # sectors
@@ -894,7 +895,6 @@ prepare_devs() {
# non-ephemeral devices need to be cleared between tests
test -f LOOP -o -f RAMDISK || for d in "${DEVICES[@]}"; do
- blkdiscard "$d" 2>/dev/null || true
# ensure disk header is always zeroed
dd if=/dev/zero of="$d" bs=32k count=1
wipefs -a "$d" 2>/dev/null || true
6 years
master - tests: use throttle_dm_mirror
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=f5da325d701082edab5...
Commit: f5da325d701082edab568160824c9c8c7289cf15
Parent: 172d8fb3554c3c71ce4ba0d8efa65dce62a877c3
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 7 11:45:11 2018 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat May 12 17:48:31 2018 +0200
tests: use throttle_dm_mirror
In this case it's better to use throttling of mirror sync,
that delay everything with dm_delay.
---
test/shell/lvconvert-mirror.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/test/shell/lvconvert-mirror.sh b/test/shell/lvconvert-mirror.sh
index a45e6e7..72a3978 100644
--- a/test/shell/lvconvert-mirror.sh
+++ b/test/shell/lvconvert-mirror.sh
@@ -17,7 +17,7 @@ export LVM_TEST_LVMETAD_DEBUG_OPTS=${LVM_TEST_LVMETAD_DEBUG_OPTS-}
. lib/inittest
-aux prepare_pvs 5 100
+aux prepare_pvs 5
get_devs
# proper DEVRANGE needs to be set according to extent size
@@ -319,10 +319,12 @@ fi
#
aux zero_dev "$dev2" $(get first_extent_sector "$dev2"):
aux zero_dev "$dev4" $(get first_extent_sector "$dev4"):
+aux throttle_dm_mirror
# Use large enough mirror that takes time to sychronize with small regionsize
-lvcreate -aey -L80 -Zn -Wn --type mirror --regionsize 16k -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev4" "$dev3:$DEVRANGE"
+lvcreate -aey -L20 -Zn -Wn --type mirror --regionsize 16k -m2 -n $lv1 $vg "$dev1" "$dev2" "$dev4" "$dev3:$DEVRANGE"
not lvconvert -m-1 $vg/$lv1 "$dev1" 2>&1 | tee out
+aux restore_dm_mirror
grep "not in-sync" out
lvconvert $vg/$lv1 # wait
@@ -334,9 +336,11 @@ check linear $vg $lv1
check lv_on $vg $lv1 "$dev4"
lvremove -ff $vg
+
+aux throttle_dm_mirror
# No parallel lvconverts on a single LV please
# Use big enough mirror size and small regionsize to run on all test machines succesfully
-lvcreate -aey -Zn -Wn -L80 --type mirror --regionsize 16k -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0-8"
+lvcreate -aey -Zn -Wn -L20 --type mirror --regionsize 16k -m1 -n $lv1 $vg "$dev1" "$dev2" "$dev3:0-8"
check mirror $vg $lv1
check mirror_legs $vg $lv1 2
@@ -345,6 +349,7 @@ LVM_TEST_TAG="kill_me_$PREFIX" lvconvert -m+1 -b $vg/$lv1 "$dev4"
# Next convert should fail b/c we can't have 2 at once
not lvconvert -m+1 $vg/$lv1 "$dev5" 2>&1 | tee out
+aux restore_dm_mirror
grep "is already being converted" out
lvconvert $vg/$lv1 # wait
6 years