From: <ta...@us...> - 2006-12-15 08:12:08
|
Revision: 88 http://svn.sourceforge.net/crackerjack/?rev=88&view=rev Author: taru Date: 2006-12-15 00:12:06 -0800 (Fri, 15 Dec 2006) Log Message: ----------- add precision test Added Paths: ----------- trunk/crackerjack/testcases/examples/hello_precision_world/ trunk/crackerjack/testcases/examples/hello_precision_world/Makefile trunk/crackerjack/testcases/examples/hello_precision_world/compare trunk/crackerjack/testcases/examples/hello_precision_world/hello_precision_world.c Added: trunk/crackerjack/testcases/examples/hello_precision_world/Makefile =================================================================== --- trunk/crackerjack/testcases/examples/hello_precision_world/Makefile (rev 0) +++ trunk/crackerjack/testcases/examples/hello_precision_world/Makefile 2006-12-15 08:12:06 UTC (rev 88) @@ -0,0 +1,40 @@ +# +# Crackerjack Project +# +# Copyright (C) 2006 Red Hat Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Further, this software is distributed without any warranty that it is +# free of the rightful claim of any third person regarding infringement +# or the like. Any license provided herein, whether implied or +# otherwise, applies only to this software file. Patent licenses, if +# any, provided herein do not apply to combinations of this program with +# other software, or any other product whatsoever. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write the Free Software Foundation, Inc., 59 +# Temple Place - Suite 330, Boston MA 02111-1307, USA. +# +# $Id: test.c 34 2006-12-01 03:54:47Z kyagi $ +# + +test: hello_precision_world.c Makefile + $(CC) -o $@ $(CFLAGS) $< + +check: test + ./test > test.log.1 + sleep 1 + ./test > test.log.2 + ./compare test.log.1 test.log.2 + /bin/rm -rf test.log.* + +clean: + /bin/rm -rf test.log.* test + Added: trunk/crackerjack/testcases/examples/hello_precision_world/compare =================================================================== --- trunk/crackerjack/testcases/examples/hello_precision_world/compare (rev 0) +++ trunk/crackerjack/testcases/examples/hello_precision_world/compare 2006-12-15 08:12:06 UTC (rev 88) @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Simple compare program +# +# This compare program may not be useful because the comparision +# algorithm is too load sensitive. +# +# This program check whether the difference of min and max between +# each version is both less than 1ms. + +min0=`sort $1 | head -1` +max0=`sort $1 | tail -1` + +min1=`sort $2 | head -1` +max1=`sort $2 | tail -1` + +test $(expr `echo "$min0 * 1000000" | bc | cut -d. -f1` - \ + `echo "$min1 * 1000000" | bc | cut -d. -f1` | cut -d- -f2) -lt 10000 && \ +test $(expr `echo "$max0 * 1000000" | bc | cut -d. -f1` - \ + `echo "$max1 * 1000000" | bc | cut -d. -f1` | cut -d- -f2) -lt 10000 + + + Property changes on: trunk/crackerjack/testcases/examples/hello_precision_world/compare ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/testcases/examples/hello_precision_world/hello_precision_world.c =================================================================== --- trunk/crackerjack/testcases/examples/hello_precision_world/hello_precision_world.c (rev 0) +++ trunk/crackerjack/testcases/examples/hello_precision_world/hello_precision_world.c 2006-12-15 08:12:06 UTC (rev 88) @@ -0,0 +1,49 @@ +#include <stdio.h> +#include <sys/time.h> +#include <sys/types.h> +#include <unistd.h> + + +void print_result( struct timeval *start, struct timeval *end ) { + /* print the result */ + printf( "%d.%06d\n", + end->tv_sec - start->tv_sec - + (((end->tv_usec - start->tv_usec)<0)?1:0), + end->tv_usec - start->tv_usec + + (( (end->tv_usec - start->tv_usec)<0)?1000000:0)); +} + + +/* + * The simplest example for precision test. + * + */ +int main() +{ + + fd_set rfds; + struct timeval tv; + struct timeval start, end; + int rval, i; + + + for( i = 0; i < 1000; i++ ) { + FD_ZERO(&rfds); + FD_SET(0, &rfds); + + tv.tv_sec = 0; + tv.tv_usec = 10000; + + gettimeofday( &start, NULL ); + rval = select(1, &rfds, NULL, NULL, &tv); + gettimeofday( &end, NULL ); + + if( rval != 0 ) { + fprintf( stderr, "timeout wans't occured\n"); + return -1; + } + print_result( &start, &end ); + } + return 0; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |