I''ve submitted these before, and there were no comments. Any suggestions for addition tests on the balloon driver would be appreciated. Here it is again as a patch putting them under /tools/tests/balloon. -- Thanks, Paul Larson plars@linuxtestproject.org linuxtestproject.org # HG changeset patch # User root@bl3-3.ltc.austin.ibm.com # Node ID fa47e95d40dc1cd96ff54555284efd60bbdd6406 # Parent b63577ff53a3161ac73b55e0aa87803e76c8bde5 Add simple set of tests for balloon driver These can be executed individually, or with make check from the balloon directory. The ballon06 test is skipped in make check for the time being, and has a big warning and 10 second delay when you run it standalone since it exposes the system hang bug described in bug #145. Signed-off-by: Paul Larson <pl@us.ibm.com> diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/Makefile --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/Makefile Fri Aug 5 16:57:07 2005 @@ -0,0 +1,27 @@ +CFLAGS=-g -Wall -Werror + +PROGS=balloon07 balloon08 balloon09 memsteal + +#balloon06 is left out on purpose due to a known, fatal bug +TESTS=balloon01 balloon02 balloon03 balloon04 balloon05 balloon07 \ + balloon08 balloon09 + +all: $(PROGS) + +balloon07: balloon07.o +balloon08: balloon08.o +balloon09: balloon09.o +memsteal: memsteal.o + +clean: + $(RM) *.o $(PROGS) + +check: all + for test in $(TESTS); do ./$$test; done + +%.o: %.c + $(CC) -c $(CFLAGS) -o $@ $^ + +%: %.o + $(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS) + diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon01 --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon01 Fri Aug 5 16:57:07 2005 @@ -0,0 +1,31 @@ +#!/bin/bash + +# +# Copyright (c) International Business Machines Corp., 2005 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Test name: balloon01 +# Author: Paul Larson <pl@us.ibm.com> +# Description: Test read from /proc/xen/balloon + +TESTNAME=balloon01 + +cat /proc/xen/balloon &> /dev/null +if [ $? == 0 ] +then + echo "$TESTNAME PASS: read from /proc/xen/balloon" +else + echo "$TESTNAME FAIL: read from /proc/xen/balloon" +fi diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon02 --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon02 Fri Aug 5 16:57:07 2005 @@ -0,0 +1,43 @@ +#!/bin/bash + +# +# Copyright (c) International Business Machines Corp., 2005 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Test name: balloon02 +# Author: Paul Larson <pl@us.ibm.com> +# Description: Echo a number higher than current requested allocation to +# /proc/xen/balloon, cat balloon and see that requested +# target changed. + +TESTNAME=balloon02 + +#Units seem to currently be in kB +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +new_alloc=$(( $old_alloc + 4096 )) +echo $[new_alloc]K > /proc/xen/balloon +check_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +#cleanup before checking the value and exiting +echo $[old_alloc]K > /proc/xen/balloon + +if [ $check_alloc == $new_alloc ] +then + echo "$TESTNAME PASS: Requested allocation increased from $old_alloc"\ + "kB to $new_alloc kB" +else + echo "$TESTNAME FAIL: increase Requested allocation by 4k" +fi diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon03 --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon03 Fri Aug 5 16:57:07 2005 @@ -0,0 +1,43 @@ +#!/bin/bash + +# +# Copyright (c) International Business Machines Corp., 2005 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Test name: balloon03 +# Author: Paul Larson <pl@us.ibm.com> +# Description: Echo a number lower than current requested allocation to +# /proc/xen/balloon, cat balloon and see that requested +# target changed. + +TESTNAME=balloon03 + +#Units seem to currently be in kB +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +new_alloc=$(( $old_alloc - 4096 )) +echo $[new_alloc]K > /proc/xen/balloon +check_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +#cleanup before checking the value and exiting +echo $[old_alloc]K > /proc/xen/balloon + +if [ $check_alloc == $new_alloc ] +then + echo "$TESTNAME PASS: Requested allocation decreased from $old_alloc"\ + "kB to $new_alloc kB" +else + echo "$TESTNAME FAIL: decrease Requested allocation by 4k" +fi diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon04 --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon04 Fri Aug 5 16:57:07 2005 @@ -0,0 +1,42 @@ +#!/bin/bash + +# +# Copyright (c) International Business Machines Corp., 2005 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Test name: balloon04 +# Author: Paul Larson <pl@us.ibm.com> +# Description: Allocate some memory for the domain, then use +# /proc/xen/balloon to reduce available memory to less than +# what is allocated + +TESTNAME=balloon04 + +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +#Allocating 128 MB, reducing memory to 120 MB +new_alloc=$(( 120 * 1024 )) +./memsteal 128& +cpid=$! +sleep 2 + +echo $[new_alloc]K > /proc/xen/balloon +#wait a moment for it to settle +sleep 3 +echo $[old_alloc]K > /proc/xen/balloon +kill $cpid + +#If you make it this far, the test passed +echo "$TESTNAME PASS: Requested allocation reduced to $new_alloc kB" diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon05 --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon05 Fri Aug 5 16:57:07 2005 @@ -0,0 +1,45 @@ +#!/bin/bash + +# +# Copyright (c) International Business Machines Corp., 2005 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Test name: balloon05 +# Author: Paul Larson <pl@us.ibm.com> +# Description: Try to give /proc/xen/balloon a value larger than the +# available RAM in the system. + +TESTNAME=balloon05 + +#Units seem to currently be in kB +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +#If you have more than 70GB, either change this number or take some of that +#out and send it my way :) +new_alloc=73400320 + +echo $[new_alloc]K > /proc/xen/balloon +check_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` + +#cleanup before checking the value and exiting +echo $[old_alloc]K > /proc/xen/balloon + +if [ $check_alloc == $new_alloc ] +then + echo "$TESTNAME PASS: Requested alloc. increased from $old_alloc"\ + "kB to $new_alloc kB" +else + echo "$TESTNAME FAIL: increase Requested allocation to 70GB" +fi diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon06 --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon06 Fri Aug 5 16:57:07 2005 @@ -0,0 +1,39 @@ +#!/bin/bash + +# +# Copyright (c) International Business Machines Corp., 2005 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Test name: balloon06 +# Author: Paul Larson <pl@us.ibm.com> +# Description: Try to give /proc/xen/balloon a value way too low, such as 4k +# +# Warning: Known to crash at the time this was written + +TESTNAME=balloon06 + +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print $3}''` +new_alloc=4 + +echo ''**********************************************************************'' +echo ''* Warning!!! About to run a test that is known to hang or crash *'' +echo ''* the system! Abort now, echo if you wish, sleeping for 10 seconds. *'' +echo ''**********************************************************************'' +sleep 10 + +echo $[new_alloc]K > /proc/xen/balloon +sleep 3 +echo $[old_alloc]K > /proc/xen/balloon +echo "$TESTNAME PASS: Requested allocation reduced to $new_alloc kB" diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon07.c --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon07.c Fri Aug 5 16:57:07 2005 @@ -0,0 +1,68 @@ +/* + * + * Copyright (c) International Business Machines Corp., 2005 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Test name: balloon07 + * Author: Paul Larson <pl@us.ibm.com> + * Description: Open /proc/xen/balloon as non-root user, expect -EACCES + */ + +#include <errno.h> +#include <fcntl.h> +#include <pwd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> + +#define TESTNAME "balloon07" + +int main(void) +{ + int fd; + int err; + char username[] = "nobody"; + struct passwd *user; + + user = getpwnam(username); + + if (setreuid(user->pw_uid, user->pw_uid) == -1) { + printf("%s FAIL: setreuid(): %s\n",TESTNAME, strerror(errno)); + exit(1); + } + + fd = open("/proc/xen/balloon", O_RDWR); + err = errno; + if (fd != -1) { + printf("%s FAIL: Write to /proc/xen/balloon as non-root " + "user succeeded\n", TESTNAME); + close(fd); + exit(1); + } + if (err != 13) { + printf("%s FAIL: Write to /proc/xen/balloon as non-root " + "got errno %d, expected 13\n", TESTNAME, err); + close(fd); + exit(1); + } + printf("%s PASS: Write to /proc/xen/balloon as non-root user failed " + "with -EACCES\n", TESTNAME); + close(fd); + exit(0); +} + diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon08.c --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon08.c Fri Aug 5 16:57:07 2005 @@ -0,0 +1,64 @@ +/* + * + * Copyright (c) International Business Machines Corp., 2005 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Test name: balloon08 + * Author: Paul Larson <pl@us.ibm.com> + * Description: Write 1 byte to /proc/xen/balloon, expect -EBADMSG + */ + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> + +#define TESTNAME "balloon08" + +int main(void) +{ + int fd; + int ret, err; + + fd = open("/proc/xen/balloon", O_RDWR); + if (fd == -1) { + printf("%s FAIL: failed to open /proc/xen/balloon, %s\n", + TESTNAME, strerror(errno)); + exit(1); + } + ret = write(fd, "a", 1); + err = errno; + if (ret != -1) { + printf("%s FAIL: Write 1 byte to /proc/xen/balloon succeeded\n", + TESTNAME); + close(fd); + exit(1); + } + if (err != 74) { + printf("%s FAIL: Write 1 byte got errno %d, expected 74\n", + TESTNAME, err); + close(fd); + exit(1); + } + printf("%s PASS: Write 1 byte failed with -EBADMSG\n", + TESTNAME); + close(fd); + exit(0); +} + diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon09.c --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/balloon09.c Fri Aug 5 16:57:07 2005 @@ -0,0 +1,70 @@ +/* + * + * Copyright (c) International Business Machines Corp., 2005 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Test name: balloon09 + * Author: Paul Larson <pl@us.ibm.com> + * Description: Write >64 bytes to /proc/xen/balloon, expect -EFBIG + */ + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> + +#define TESTNAME "balloon09" +#define STRSIZE 100 + +int main(void) +{ + int fd; + int ret, err, i; + char str[STRSIZE]; + + for(i=0;i<64;i++) { + *(str + i) = ''a''; + } + + fd = open("/proc/xen/balloon", O_RDWR); + if (fd == -1) { + printf("%s FAIL: failed to open /proc/xen/balloon, %s\n", + TESTNAME, strerror(errno)); + exit(1); + } + ret = write(fd, str, sizeof(str)); + err = errno; + if (ret != -1) { + printf("%s FAIL: Write 1 byte to /proc/xen/balloon succeeded\n", + TESTNAME); + close(fd); + exit(1); + } + if (err != 27) { + printf("%s FAIL: Write 1 byte got errno %d, expected 27\n", + TESTNAME, err); + close(fd); + exit(1); + } + printf("%s PASS: Write 1 byte failed with -EFBIG as expected\n", + TESTNAME); + close(fd); + exit(0); +} + diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/memsteal.c --- /dev/null Fri Aug 5 14:57:43 2005 +++ b/tools/tests/balloon/memsteal.c Fri Aug 5 16:57:07 2005 @@ -0,0 +1,52 @@ +/* + * + * Copyright (c) International Business Machines Corp., 2005 + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Test name: memsteal + * Author: Paul Larson <pl@us.ibm.com> + * Description: simple memory allocator + */ + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/mman.h> + +int main(int argc, char **argv) +{ + int i; + size_t memsize; + char *chunk; + + if (argc != 2) { + printf("usage: memsteal [Memory in MB]\n" + "Allocates given amount of memory, touches the pages,\n" + "and waits for a signal to exit.\n\n"); + exit(1); + } + memsize = atol(argv[1]) * 1024 * 1024; + chunk = mmap(0, memsize, PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); + if (chunk == NULL) { + perror("mmap()"); + exit(1); + } + for(i=0;i<memsize;i+=4096) { + chunk[i]=''a''; + } + pause(); + exit(0); +} _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com lists.xensource.com/xen-devel
> I''ve submitted these before, and there were no comments. Any > suggestions for addition tests on the balloon driver would be > appreciated. Here it is again as a patch putting them under > /tools/tests/balloon.Unrelated, but are we going to move /proc/xen/balloon to somewhere under /sys e.g. /sys/xen/mem_target or something? Ian> -- > Thanks, > Paul Larson > plars@linuxtestproject.org > linuxtestproject.org > > # HG changeset patch > # User root@bl3-3.ltc.austin.ibm.com > # Node ID fa47e95d40dc1cd96ff54555284efd60bbdd6406 > # Parent b63577ff53a3161ac73b55e0aa87803e76c8bde5 > Add simple set of tests for balloon driver > > These can be executed individually, or with make check from > the balloon directory. The ballon06 test is skipped in make > check for the time being, and has a big warning and 10 second > delay when you run it standalone since it exposes the system > hang bug described in bug #145. > > Signed-off-by: Paul Larson <pl@us.ibm.com> > > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/Makefile > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/Makefile Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,27 @@ > +CFLAGS=-g -Wall -Werror > + > +PROGS=balloon07 balloon08 balloon09 memsteal > + > +#balloon06 is left out on purpose due to a known, fatal bug > +TESTS=balloon01 balloon02 balloon03 balloon04 balloon05 balloon07 \ > + balloon08 balloon09 > + > +all: $(PROGS) > + > +balloon07: balloon07.o > +balloon08: balloon08.o > +balloon09: balloon09.o > +memsteal: memsteal.o > + > +clean: > + $(RM) *.o $(PROGS) > + > +check: all > + for test in $(TESTS); do ./$$test; done > + > +%.o: %.c > + $(CC) -c $(CFLAGS) -o $@ $^ > + > +%: %.o > + $(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS) > + > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon01 > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon01 Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,31 @@ > +#!/bin/bash > + > +# > +# Copyright (c) International Business Machines Corp., 2005 # This > +program is free software; you can redistribute it and/or > modify # it > +under the terms of the GNU General Public License as > published by # the > +Free Software Foundation; either version 2 of the License, or # (at > +your option) any later version. > +# > +# This program is distributed in the hope that it will be > useful, # but > +WITHOUT ANY WARRANTY; without even the implied warranty of # > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU > +General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > License # > +along with this program; if not, write to the Free Software # > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > USA > +# > +# Test name: balloon01 > +# Author: Paul Larson <pl@us.ibm.com> > +# Description: Test read from /proc/xen/balloon > + > +TESTNAME=balloon01 > + > +cat /proc/xen/balloon &> /dev/null > +if [ $? == 0 ] > +then > + echo "$TESTNAME PASS: read from /proc/xen/balloon" > +else > + echo "$TESTNAME FAIL: read from /proc/xen/balloon" > +fi > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon02 > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon02 Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,43 @@ > +#!/bin/bash > + > +# > +# Copyright (c) International Business Machines Corp., 2005 # This > +program is free software; you can redistribute it and/or > modify # it > +under the terms of the GNU General Public License as > published by # the > +Free Software Foundation; either version 2 of the License, or # (at > +your option) any later version. > +# > +# This program is distributed in the hope that it will be > useful, # but > +WITHOUT ANY WARRANTY; without even the implied warranty of # > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU > +General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > License # > +along with this program; if not, write to the Free Software # > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > USA > +# > +# Test name: balloon02 > +# Author: Paul Larson <pl@us.ibm.com> > +# Description: Echo a number higher than current requested allocation > to > +# /proc/xen/balloon, cat balloon and see that requested > +# target changed. > + > +TESTNAME=balloon02 > + > +#Units seem to currently be in kB > +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print > $3}''` > + > +new_alloc=$(( $old_alloc + 4096 )) > +echo $[new_alloc]K > /proc/xen/balloon > +check_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' > +'' ''{print > $3}''` > + > +#cleanup before checking the value and exiting echo $[old_alloc]K > > +/proc/xen/balloon > + > +if [ $check_alloc == $new_alloc ] > +then > + echo "$TESTNAME PASS: Requested allocation increased > from $old_alloc"\ > + "kB to $new_alloc kB" > +else > + echo "$TESTNAME FAIL: increase Requested allocation by 4k" > +fi > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon03 > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon03 Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,43 @@ > +#!/bin/bash > + > +# > +# Copyright (c) International Business Machines Corp., 2005 # This > +program is free software; you can redistribute it and/or > modify # it > +under the terms of the GNU General Public License as > published by # the > +Free Software Foundation; either version 2 of the License, or # (at > +your option) any later version. > +# > +# This program is distributed in the hope that it will be > useful, # but > +WITHOUT ANY WARRANTY; without even the implied warranty of # > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU > +General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > License # > +along with this program; if not, write to the Free Software # > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > USA > +# > +# Test name: balloon03 > +# Author: Paul Larson <pl@us.ibm.com> > +# Description: Echo a number lower than current requested allocation > to > +# /proc/xen/balloon, cat balloon and see that requested > +# target changed. > + > +TESTNAME=balloon03 > + > +#Units seem to currently be in kB > +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print > $3}''` > + > +new_alloc=$(( $old_alloc - 4096 )) > +echo $[new_alloc]K > /proc/xen/balloon > +check_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' > +'' ''{print > $3}''` > + > +#cleanup before checking the value and exiting echo $[old_alloc]K > > +/proc/xen/balloon > + > +if [ $check_alloc == $new_alloc ] > +then > + echo "$TESTNAME PASS: Requested allocation decreased > from $old_alloc"\ > + "kB to $new_alloc kB" > +else > + echo "$TESTNAME FAIL: decrease Requested allocation by 4k" > +fi > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon04 > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon04 Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,42 @@ > +#!/bin/bash > + > +# > +# Copyright (c) International Business Machines Corp., 2005 # This > +program is free software; you can redistribute it and/or > modify # it > +under the terms of the GNU General Public License as > published by # the > +Free Software Foundation; either version 2 of the License, or # (at > +your option) any later version. > +# > +# This program is distributed in the hope that it will be > useful, # but > +WITHOUT ANY WARRANTY; without even the implied warranty of # > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU > +General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > License # > +along with this program; if not, write to the Free Software # > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > USA > +# > +# Test name: balloon04 > +# Author: Paul Larson <pl@us.ibm.com> > +# Description: Allocate some memory for the domain, then use > +# /proc/xen/balloon to reduce available memory to less > than > +# what is allocated > + > +TESTNAME=balloon04 > + > +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print > $3}''` > + > +#Allocating 128 MB, reducing memory to 120 MB new_alloc=$(( > 120 * 1024 > +)) ./memsteal 128& cpid=$! > +sleep 2 > + > +echo $[new_alloc]K > /proc/xen/balloon > +#wait a moment for it to settle > +sleep 3 > +echo $[old_alloc]K > /proc/xen/balloon > +kill $cpid > + > +#If you make it this far, the test passed echo "$TESTNAME PASS: > +Requested allocation reduced to $new_alloc kB" > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon05 > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon05 Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,45 @@ > +#!/bin/bash > + > +# > +# Copyright (c) International Business Machines Corp., 2005 # This > +program is free software; you can redistribute it and/or > modify # it > +under the terms of the GNU General Public License as > published by # the > +Free Software Foundation; either version 2 of the License, or # (at > +your option) any later version. > +# > +# This program is distributed in the hope that it will be > useful, # but > +WITHOUT ANY WARRANTY; without even the implied warranty of # > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU > +General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > License # > +along with this program; if not, write to the Free Software # > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > USA > +# > +# Test name: balloon05 > +# Author: Paul Larson <pl@us.ibm.com> > +# Description: Try to give /proc/xen/balloon a value larger than the > +# available RAM in the system. > + > +TESTNAME=balloon05 > + > +#Units seem to currently be in kB > +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print > $3}''` > + > +#If you have more than 70GB, either change this number or > take some of > that > +#out and send it my way :) > +new_alloc=73400320 > + > +echo $[new_alloc]K > /proc/xen/balloon > +check_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' > +'' ''{print > $3}''` > + > +#cleanup before checking the value and exiting echo $[old_alloc]K > > +/proc/xen/balloon > + > +if [ $check_alloc == $new_alloc ] > +then > + echo "$TESTNAME PASS: Requested alloc. increased from > $old_alloc"\ > + "kB to $new_alloc kB" > +else > + echo "$TESTNAME FAIL: increase Requested allocation to 70GB" > +fi > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon06 > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon06 Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,39 @@ > +#!/bin/bash > + > +# > +# Copyright (c) International Business Machines Corp., 2005 # This > +program is free software; you can redistribute it and/or > modify # it > +under the terms of the GNU General Public License as > published by # the > +Free Software Foundation; either version 2 of the License, or # (at > +your option) any later version. > +# > +# This program is distributed in the hope that it will be > useful, # but > +WITHOUT ANY WARRANTY; without even the implied warranty of # > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU > +General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > License # > +along with this program; if not, write to the Free Software # > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > USA > +# > +# Test name: balloon06 > +# Author: Paul Larson <pl@us.ibm.com> > +# Description: Try to give /proc/xen/balloon a value way too > low, such > as 4k > +# > +# Warning: Known to crash at the time this was written > + > +TESTNAME=balloon06 > + > +old_alloc=`cat /proc/xen/balloon |grep Requested |awk -F '' +'' ''{print > $3}''` > +new_alloc=4 > + > +echo > ''************************************************************* > *********'' > +echo ''* Warning!!! About to run a test that is known to hang or crash > *'' > +echo ''* the system! Abort now, echo if you wish, sleeping for 10 > seconds. *'' > +echo > ''************************************************************* > *********'' > +sleep 10 > + > +echo $[new_alloc]K > /proc/xen/balloon > +sleep 3 > +echo $[old_alloc]K > /proc/xen/balloon > +echo "$TESTNAME PASS: Requested allocation reduced to $new_alloc kB" > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon07.c > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon07.c Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,68 @@ > +/* > + * > + * Copyright (c) International Business Machines Corp., 2005 > + * This program is free software; you can redistribute it and/or > modify > + * it under the terms of the GNU General Public License as > published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > + * the GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA > 02111-1307 > USA > + * > + * Test name: balloon07 > + * Author: Paul Larson <pl@us.ibm.com> > + * Description: Open /proc/xen/balloon as non-root user, > expect -EACCES > + */ > + > +#include <errno.h> > +#include <fcntl.h> > +#include <pwd.h> > +#include <stdio.h> > +#include <stdlib.h> > +#include <string.h> > +#include <unistd.h> > +#include <sys/types.h> > +#include <sys/stat.h> > + > +#define TESTNAME "balloon07" > + > +int main(void) > +{ > + int fd; > + int err; > + char username[] = "nobody"; > + struct passwd *user; > + > + user = getpwnam(username); > + > + if (setreuid(user->pw_uid, user->pw_uid) == -1) { > + printf("%s FAIL: setreuid(): %s\n",TESTNAME, > strerror(errno)); > + exit(1); > + } > + > + fd = open("/proc/xen/balloon", O_RDWR); > + err = errno; > + if (fd != -1) { > + printf("%s FAIL: Write to /proc/xen/balloon as > non-root " > + "user succeeded\n", TESTNAME); > + close(fd); > + exit(1); > + } > + if (err != 13) { > + printf("%s FAIL: Write to /proc/xen/balloon as > non-root " > + "got errno %d, expected 13\n", TESTNAME, err); > + close(fd); > + exit(1); > + } > + printf("%s PASS: Write to /proc/xen/balloon as non-root > user failed " > + "with -EACCES\n", TESTNAME); > + close(fd); > + exit(0); > +} > + > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon08.c > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon08.c Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,64 @@ > +/* > + * > + * Copyright (c) International Business Machines Corp., 2005 > + * This program is free software; you can redistribute it and/or > modify > + * it under the terms of the GNU General Public License as > published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > + * the GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA > 02111-1307 > USA > + * > + * Test name: balloon08 > + * Author: Paul Larson <pl@us.ibm.com> > + * Description: Write 1 byte to /proc/xen/balloon, expect -EBADMSG */ > + > +#include <errno.h> > +#include <fcntl.h> > +#include <stdio.h> > +#include <stdlib.h> > +#include <string.h> > +#include <unistd.h> > +#include <sys/types.h> > +#include <sys/stat.h> > + > +#define TESTNAME "balloon08" > + > +int main(void) > +{ > + int fd; > + int ret, err; > + > + fd = open("/proc/xen/balloon", O_RDWR); > + if (fd == -1) { > + printf("%s FAIL: failed to open > /proc/xen/balloon, %s\n", > + TESTNAME, strerror(errno)); > + exit(1); > + } > + ret = write(fd, "a", 1); > + err = errno; > + if (ret != -1) { > + printf("%s FAIL: Write 1 byte to > /proc/xen/balloon succeeded\n", > + TESTNAME); > + close(fd); > + exit(1); > + } > + if (err != 74) { > + printf("%s FAIL: Write 1 byte got errno %d, > expected 74\n", > + TESTNAME, err); > + close(fd); > + exit(1); > + } > + printf("%s PASS: Write 1 byte failed with -EBADMSG\n", > + TESTNAME); > + close(fd); > + exit(0); > +} > + > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/balloon09.c > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/balloon09.c Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,70 @@ > +/* > + * > + * Copyright (c) International Business Machines Corp., 2005 > + * This program is free software; you can redistribute it and/or > modify > + * it under the terms of the GNU General Public License as > published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > + * the GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA > 02111-1307 > USA > + * > + * Test name: balloon09 > + * Author: Paul Larson <pl@us.ibm.com> > + * Description: Write >64 bytes to /proc/xen/balloon, expect > -EFBIG */ > + > +#include <errno.h> > +#include <fcntl.h> > +#include <stdio.h> > +#include <stdlib.h> > +#include <string.h> > +#include <unistd.h> > +#include <sys/types.h> > +#include <sys/stat.h> > + > +#define TESTNAME "balloon09" > +#define STRSIZE 100 > + > +int main(void) > +{ > + int fd; > + int ret, err, i; > + char str[STRSIZE]; > + > + for(i=0;i<64;i++) { > + *(str + i) = ''a''; > + } > + > + fd = open("/proc/xen/balloon", O_RDWR); > + if (fd == -1) { > + printf("%s FAIL: failed to open > /proc/xen/balloon, %s\n", > + TESTNAME, strerror(errno)); > + exit(1); > + } > + ret = write(fd, str, sizeof(str)); > + err = errno; > + if (ret != -1) { > + printf("%s FAIL: Write 1 byte to > /proc/xen/balloon succeeded\n", > + TESTNAME); > + close(fd); > + exit(1); > + } > + if (err != 27) { > + printf("%s FAIL: Write 1 byte got errno %d, > expected 27\n", > + TESTNAME, err); > + close(fd); > + exit(1); > + } > + printf("%s PASS: Write 1 byte failed with -EFBIG as expected\n", > + TESTNAME); > + close(fd); > + exit(0); > +} > + > diff -r b63577ff53a3 -r fa47e95d40dc tools/tests/balloon/memsteal.c > --- /dev/null Fri Aug 5 14:57:43 2005 > +++ b/tools/tests/balloon/memsteal.c Fri Aug 5 16:57:07 2005 > @@ -0,0 +1,52 @@ > +/* > + * > + * Copyright (c) International Business Machines Corp., 2005 > + * This program is free software; you can redistribute it and/or > modify > + * it under the terms of the GNU General Public License as > published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > + * the GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA > 02111-1307 > USA > + * > + * Test name: memsteal > + * Author: Paul Larson <pl@us.ibm.com> > + * Description: simple memory allocator */ > + > +#include <errno.h> > +#include <stdio.h> > +#include <stdlib.h> > +#include <unistd.h> > +#include <sys/mman.h> > + > +int main(int argc, char **argv) > +{ > + int i; > + size_t memsize; > + char *chunk; > + > + if (argc != 2) { > + printf("usage: memsteal [Memory in MB]\n" > + "Allocates given amount of memory, > touches the pages,\n" > + "and waits for a signal to exit.\n\n"); > + exit(1); > + } > + memsize = atol(argv[1]) * 1024 * 1024; > + chunk = mmap(0, memsize, PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); > + if (chunk == NULL) { > + perror("mmap()"); > + exit(1); > + } > + for(i=0;i<memsize;i+=4096) { > + chunk[i]=''a''; > + } > + pause(); > + exit(0); > +} > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com lists.xensource.com/xen-devel
Paul Larson wrote:>I''ve submitted these before, and there were no comments. Any >suggestions for addition tests on the balloon driver would be >appreciated. Here it is again as a patch putting them >under /tools/tests/balloon. > >Hi Paul, As you know, I''m a big fan of randomized testing. A single randomized test can take the place of a large number of single function tests. For something like the balloon driver, I think this would work best in concert with a larger test program that actually checked the results of ballooning through different mechanism (via /proc/xen/balloon, xm set-mem, or writing to the store directly). The procpipe code I submitted yesterday would be an excellent way to coordinate this. If you''d like, we can take this offline and develop a procpipe based balloon testsuite that really stresses all interfaces for the balloon driver. Regards, Anthony Liguori>------------------------------------------------------------------------ > >_______________________________________________ >Xen-devel mailing list >Xen-devel@lists.xensource.com >lists.xensource.com/xen-devel > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com lists.xensource.com/xen-devel
On Fri, Aug 05, 2005 at 06:36:14PM +0100, Ian Pratt wrote:> > I''ve submitted these before, and there were no comments. Any > > suggestions for addition tests on the balloon driver would be > > appreciated. Here it is again as a patch putting them under > > /tools/tests/balloon. > > Unrelated, but are we going to move /proc/xen/balloon to somewhere under > /sys e.g. /sys/xen/mem_target or something?This is mandatory for merging xen drivers to the linux kernel -- Vincent Hanquez _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com lists.xensource.com/xen-devel
* Vincent Hanquez (vincent.hanquez@cl.cam.ac.uk) wrote:> On Fri, Aug 05, 2005 at 06:36:14PM +0100, Ian Pratt wrote: > > > I''ve submitted these before, and there were no comments. Any > > > suggestions for addition tests on the balloon driver would be > > > appreciated. Here it is again as a patch putting them under > > > /tools/tests/balloon. > > > > Unrelated, but are we going to move /proc/xen/balloon to somewhere under > > /sys e.g. /sys/xen/mem_target or something? > > This is mandatory for merging xen drivers to the linux kernelAgreed, all the /proc bits need to move. -chris _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com lists.xensource.com/xen-devel