tests/devcount.c | 58 +++++++++----------------------------------
tests/devcountn | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 86 insertions(+), 45 deletions(-)
New commits:
commit a7b2b21047deddf7e7d310cf7b41a4ad11df173e
Author: David Teigland <teigland(a)redhat.com>
Date: Fri Apr 15 12:43:24 2011 -0500
devcountn: start multiple devcount tests
diff --git a/tests/devcount.c b/tests/devcount.c
index fbb0723..e372645 100644
--- a/tests/devcount.c
+++ b/tests/devcount.c
@@ -75,11 +75,12 @@ void print_entries(int pid, char *buf)
}
}
-void print_our_we(int pid, struct entry *our_we)
+void print_our_we(int pid, int writes, struct entry *our_we)
{
- printf("%d w index %d turn %u time %llu %u:%llu:%llu "
+ printf("%d w %d index %d turn %u time %llu %u:%llu:%llu "
"last %u %llu %u:%llu:%llu\n",
pid,
+ writes,
our_hostid - 1,
our_we->turn,
(unsigned long long)our_we->time,
@@ -111,6 +112,7 @@ static int do_count(int argc, char *argv[])
uint32_t max_turn;
int sec1, sec2;
int read_seconds, write_seconds;
+ uint32_t writes = 0;
if (argc < COUNT_ARGS)
return -1;
@@ -128,8 +130,10 @@ static int do_count(int argc, char *argv[])
read_seconds = sec2;
}
+ /*
printf("%d %s count_disk %s sec1 %d sec2 %d our_hostid %d\n",
our_pid, argv[1], count_path, sec1, sec2, our_hostid);
+ */
fd = open(count_path, O_RDWR | O_DIRECT | O_SYNC, 0);
if (fd < 0) {
@@ -255,9 +259,9 @@ static int do_count(int argc, char *argv[])
perror("write failed");
goto fail;
}
+ writes = 1;
- printf("%d first write\n", our_pid);
- print_our_we(our_pid, our_we);
+ print_our_we(our_pid, writes, our_we);
start = time(NULL);
@@ -272,13 +276,13 @@ static int do_count(int argc, char *argv[])
perror("write failed");
goto fail;
}
+ writes++;
if (write_seconds && (our_we->time - start >= write_seconds))
break;
}
- printf("%d last write\n", our_pid);
- print_our_we(our_pid, our_we);
+ print_our_we(our_pid, writes, our_we);
if (turn_file) {
fprintf(turn_file, "turn %03u start %llu end %llu host %u pid %u\n",
@@ -385,9 +389,6 @@ static int do_relock(int argc, char *argv[])
res->disks[0].path[SANLK_PATH_LEN-1] = '\0';
res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d\n",
- parent_pid, lock_path, count_path, our_hostid);
-
memset(&lockspace, 0, sizeof(lockspace));
strcpy(lockspace.name, "devcount");
strcpy(lockspace.host_id_disk.path, lock_path);
@@ -395,15 +396,7 @@ static int do_relock(int argc, char *argv[])
lockspace.host_id = our_hostid;
rv = sanlock_add_lockspace(&lockspace, 0);
- if (rv == -EEXIST) {
- printf("%d sanlock_add_lockspace exists\n", parent_pid);
- rv = 0;
- }
- if (rv < 0) {
- printf("%d sanlock_add_lockspace error %d\n", parent_pid, rv);
- exit(EXIT_FAILURE);
- }
- printf("%d sanlock_add_lockspace done\n", parent_pid);
+ printf("%d sanlock_add_lockspace %d\n", parent_pid, rv);
/*
* argv[0] = devcount
@@ -565,9 +558,6 @@ static int do_lock(int argc, char *argv[])
res->disks[0].path[SANLK_PATH_LEN-1] = '\0';
res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d\n",
- parent_pid, lock_path, count_path, our_hostid);
-
memset(&lockspace, 0, sizeof(lockspace));
strcpy(lockspace.name, "devcount");
strcpy(lockspace.host_id_disk.path, lock_path);
@@ -575,15 +565,7 @@ static int do_lock(int argc, char *argv[])
lockspace.host_id = our_hostid;
rv = sanlock_add_lockspace(&lockspace, 0);
- if (rv == -EEXIST) {
- printf("%d sanlock_add_lockspace exists\n", parent_pid);
- rv = 0;
- }
- if (rv < 0) {
- printf("%d sanlock_add_lockspace error %d\n", parent_pid, rv);
- exit(EXIT_FAILURE);
- }
- printf("%d sanlock_add_lockspace done\n", parent_pid);
+ printf("%d sanlock_add_lockspace %d\n", parent_pid, rv);
/*
* argv[0] = devcount
@@ -668,9 +650,6 @@ static int do_wrap(int argc, char *argv[])
res->disks[0].path[SANLK_PATH_LEN-1] = '\0';
res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d\n",
- pid, lock_path, count_path, our_hostid);
-
/*
* argv[0] = devcount
* argv[1] = wrap
@@ -918,9 +897,6 @@ static int do_migrate(int argc, char *argv[])
res->disks[0].path[SANLK_PATH_LEN-1] = '\0';
res->disks[0].offset = 1024000;
- printf("%d lock_disk %s count_disk %s our_hostid %d max_hostid %d\n",
- parent_pid, lock_path, count_path, our_hostid, max_hostid);
-
memset(&lockspace, 0, sizeof(lockspace));
strcpy(lockspace.name, "devcount");
strcpy(lockspace.host_id_disk.path, lock_path);
@@ -928,15 +904,7 @@ static int do_migrate(int argc, char *argv[])
lockspace.host_id = our_hostid;
rv = sanlock_add_lockspace(&lockspace, 0);
- if (rv == -EEXIST) {
- printf("%d sanlock_add_lockspace exists\n", parent_pid);
- rv = 0;
- }
- if (rv < 0) {
- printf("%d sanlock_add_lockspace error %d\n", parent_pid, rv);
- exit(EXIT_FAILURE);
- }
- printf("%d sanlock_add_lockspace done\n", parent_pid);
+ printf("%d sanlock_add_lockspace %d\n", parent_pid, rv);
/*
* argv[0] = devcount
diff --git a/tests/devcountn b/tests/devcountn
new file mode 100755
index 0000000..625eb33
--- /dev/null
+++ b/tests/devcountn
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+if [ $# -le 3 ]; then
+ echo ""
+ echo "Start N devcount commands"
+ echo ""
+ echo "devcountn N init LOCKDEV_BASE COUNTDEV_BASE"
+ echo "devcountn N rw COUNTDEV_BASE SEC1 SEC2 HOSTID"
+ echo "devcountn N lock LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID"
+ echo "devcountn N relock LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID"
+ echo "devcountn N wrap LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID"
+ echo "devcountn N migrate LOCKDEV_BASE rw COUNTDEV_BASE SEC1 SEC2 HOSTID
MAXID"
+ echo ""
+ echo "devcount <cmd> LOCKDEV1 rw COUNTDEV1 ..."
+ echo "devcount <cmd> LOCKDEV2 rw COUNTDEV2 ..."
+ echo "devcount <cmd> LOCKDEV3 rw COUNTDEV3 ..."
+ echo ...
+ echo "devcount <cmd> LOCKDEVN rw COUNTDEVN ..."
+ echo ""
+ echo "Examples"
+ echo ""
+ echo "devcountn 3 init /dev/lock /dev/count"
+ echo " devcount init /dev/lock1 /dev/count1"
+ echo " devcount init /dev/lock2 /dev/count2"
+ echo " devcount init /dev/lock3 /dev/count3"
+ echo ""
+ echo "devcountn 3 rw /dev/count 5 5 1"
+ echo " devcount rw /dev/count1 5 5 1"
+ echo " devcount rw /dev/count2 5 5 1"
+ echo " devcount rw /dev/count3 5 5 1"
+ echo ""
+ echo "devcountn 3 lock /dev/lock rw /dev/count 5 5 1"
+ echo " sanlock add_lockspace -s devcount:1:/dev/lock1:0"
+ echo " (the add_lockspace command from each subsequent devcount will fail)"
+ echo " devcount lock /dev/lock1 rw /dev/count1 5 5 1"
+ echo " devcount lock /dev/lock2 rw /dev/count2 5 5 1"
+ echo " devcount lock /dev/lock3 rw /dev/count3 5 5 1"
+ echo ""
+ exit 0
+fi
+
+num=$1
+cmd1=$2
+
+if [ "$cmd1" != "init" ]; then
+ deva=$3
+ cmd2=$4
+ devb=$5
+ sec1=$6
+ sec2=$7
+ hostid=$8
+ maxid=$9
+
+ i=1
+ echo sanlock add_lockspace -s devcount:$hostid:$deva$i:0
+ sanlock add_lockspace -s devcount:$hostid:$deva$i:0
+fi
+
+for i in `seq 1 $num`; do
+ if [ "$cmd1" == "init" ]; then
+ deva=$3
+ devb=$4
+ echo ./devcount init $deva$i $devb$i
+ ./devcount init $deva$i $devb$i
+ elif [ "$cmd1" == "rw" ] || [ "$cmd1" == "wr" ];
then
+ echo ./devcount $cmd1 $deva$i $sec1 $sec2 $hostid
+ ./devcount $cmd1 $deva$i $sec1 $sec2 $hostid &
+ else
+ echo ./devcount $cmd1 $deva$i $cmd2 $devb$i $sec1 $sec2 $hostid $maxid
+ ./devcount $cmd1 $deva$i $cmd2 $devb$i $sec1 $sec2 $hostid $maxid &
+ fi
+done
+