From 91a70dfb1b2c0dd297b19823d6196fb658ee8a42 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 22 Feb 2021 00:07:05 +0300 Subject: [PATCH] Add a test for the no_same_sector_overwrites mode --- tests/common.sh | 9 +++++++ tests/test_write.sh | 10 ++------ tests/test_write_no_same.sh | 47 +++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 8 deletions(-) create mode 100755 tests/test_write_no_same.sh diff --git a/tests/common.sh b/tests/common.sh index 32a259be..5f90f404 100644 --- a/tests/common.sh +++ b/tests/common.sh @@ -33,3 +33,12 @@ $ETCD -name etcd_test --data-dir ./testdata/etcd \ ETCD_PID=$! ETCD_URL=127.0.0.1:$ETCD_PORT/v3 ETCDCTL="${ETCD}ctl --endpoints=http://$ETCD_URL" + +echo leak:fio >> testdata/lsan-suppress.txt +echo leak:tcmalloc >> testdata/lsan-suppress.txt +echo leak:ceph >> testdata/lsan-suppress.txt +echo leak:librbd >> testdata/lsan-suppress.txt +echo leak:_M_mutate >> testdata/lsan-suppress.txt +echo leak:_M_assign >> testdata/lsan-suppress.txt +export LSAN_OPTIONS=report_objects=true:suppressions=`pwd`/testdata/lsan-suppress.txt +export ASAN_OPTIONS=verify_asan_link_order=false diff --git a/tests/test_write.sh b/tests/test_write.sh index 4da0cfb3..5f1002c0 100755 --- a/tests/test_write.sh +++ b/tests/test_write.sh @@ -31,16 +31,10 @@ if ! ($ETCDCTL get /vitastor/pg/state/1/1 --print-value-only | jq -s -e '(. | le format_error "FAILED: 1 PG NOT UP" fi -echo leak:fio >> testdata/lsan-suppress.txt -echo leak:tcmalloc >> testdata/lsan-suppress.txt -echo leak:ceph >> testdata/lsan-suppress.txt -echo leak:librbd >> testdata/lsan-suppress.txt -echo leak:_M_mutate >> testdata/lsan-suppress.txt -echo leak:_M_assign >> testdata/lsan-suppress.txt -#LSAN_OPTIONS=suppressions=`pwd`/testdata/lsan-suppress.txt LD_PRELOAD=libasan.so.5 \ +#LD_PRELOAD=libasan.so.5 \ # fio -thread -name=test -ioengine=build/src/libfio_vitastor_sec.so -bs=4k -fsync=128 `$ETCDCTL get /vitastor/osd/state/1 --print-value-only | jq -r '"-host="+.addresses[0]+" -port="+(.port|tostring)'` -rw=write -size=32M -LSAN_OPTIONS=suppressions=`pwd`/testdata/lsan-suppress.txt LD_PRELOAD=libasan.so.5 \ +LD_PRELOAD=libasan.so.5 \ fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=1G -cluster_log_level=10 format_green OK diff --git a/tests/test_write_no_same.sh b/tests/test_write_no_same.sh new file mode 100755 index 00000000..fa70728a --- /dev/null +++ b/tests/test_write_no_same.sh @@ -0,0 +1,47 @@ +#!/bin/bash -ex +# Test the `no_same_sector_overwrites` mode + +. `dirname $0`/common.sh + +dd if=/dev/zero of=./testdata/test_osd1.bin bs=1024 count=1 seek=$((1024*1024-1)) +dd if=/dev/zero of=./testdata/test_osd2.bin bs=1024 count=1 seek=$((1024*1024-1)) +dd if=/dev/zero of=./testdata/test_osd3.bin bs=1024 count=1 seek=$((1024*1024-1)) + +NO_SAME="--journal_no_same_sector_overwrites true --journal_sector_buffer_count 1024 --disable_data_fsync 1 --immediate_commit all" + +build/src/vitastor-osd --osd_num 1 --bind_address 127.0.0.1 $NO_SAME --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd1.bin 2>/dev/null) &>./testdata/osd1.log & +OSD1_PID=$! +build/src/vitastor-osd --osd_num 2 --bind_address 127.0.0.1 $NO_SAME --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd2.bin 2>/dev/null) &>./testdata/osd2.log & +OSD2_PID=$! +build/src/vitastor-osd --osd_num 3 --bind_address 127.0.0.1 $NO_SAME --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd3.bin 2>/dev/null) &>./testdata/osd3.log & +OSD3_PID=$! + +cd mon +npm install +cd .. +node mon/mon-main.js --etcd_url http://$ETCD_URL --etcd_prefix "/vitastor" &>./testdata/mon.log & +MON_PID=$! + +$ETCDCTL put /vitastor/config/global '{"immediate_commit":"all"}' + +$ETCDCTL put /vitastor/config/pools '{"1":{"name":"testpool","scheme":"xor","pg_size":3,"pg_minsize":2,"parity_chunks":1,"pg_count":1,"failure_domain":"osd"}}' + +sleep 2 + +if ! ($ETCDCTL get /vitastor/config/pgs --print-value-only | jq -s -e '(. | length) != 0 and (.[0].items["1"]["1"].osd_set | sort) == ["1","2","3"]'); then + format_error "FAILED: 1 PG NOT CONFIGURED" +fi + +if ! ($ETCDCTL get /vitastor/pg/state/1/1 --print-value-only | jq -s -e '(. | length) != 0 and .[0].state == ["active"]'); then + format_error "FAILED: 1 PG NOT UP" +fi + +#LSAN_OPTIONS=report_objects=true:suppressions=`pwd`/testdata/lsan-suppress.txt LD_PRELOAD=libasan.so.5 \ +# fio -thread -name=test -ioengine=build/src/libfio_vitastor_sec.so -bs=4k -fsync=128 `$ETCDCTL get /vitastor/osd/state/1 --print-value-only | jq -r '"-host="+.addresses[0]+" -port="+(.port|tostring)'` -rw=write -size=32M + +# Test basic write + +LD_PRELOAD=libasan.so.5 \ + fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=1G -cluster_log_level=10 + +format_green OK