Finished a pass over all the non-SQLite derrived tests (which all
live in scr050) and brought them up to date, some minor fixes along the way. A few tests don't work properly, I've noted those in the TODO file for some other time.
This commit is contained in:
parent
62311bde64
commit
c39ba47f61
11 changed files with 183 additions and 140 deletions
24
TODO
24
TODO
|
@ -1,25 +1,43 @@
|
|||
|
||||
* Check all DB API calls
|
||||
Make sure a) we check return codes for for all calls into DB and
|
||||
Make sure a) we check return codes for for all calls into DB and
|
||||
that b) when there is an error we output it only when configured
|
||||
to be verbose and c) then return the proper DBSQL error indicating
|
||||
what went wrong at a higher level.
|
||||
|
||||
* Review all reused DB code
|
||||
Make sure that we're up to date with the latest in DB. Things such
|
||||
Make sure that we're up to date with the latest in DB. Things such
|
||||
as hashing, etc.
|
||||
|
||||
* Find printf/fprintf calls which print error messages
|
||||
The library should never print messages unless configured to be
|
||||
verbose.
|
||||
|
||||
* splint
|
||||
Clean up all items pointed out by splint.
|
||||
|
||||
* makedepend
|
||||
|
||||
* valgrind
|
||||
Fix all memory related bugs.
|
||||
|
||||
* review dbsql/dbsql.c
|
||||
General clean-up including changing calls to malloc, free, etc to
|
||||
__os_malloc, __os_free, etc.
|
||||
|
||||
* Review SQLite's latest lemon.c and lempar.c code
|
||||
|
||||
* Review code for trailing spaces, tab characters, lines > 79 col
|
||||
|
||||
* api.c/__os_sleep()
|
||||
This is now static in DB's code, so to hack the compile I commented
|
||||
This is now static in DB's code, so to hack the compile I commented
|
||||
out the use of __os_sleep() in api.c
|
||||
|
||||
* test/scr026
|
||||
This test has not been updated to check for DBSQL API calls rather
|
||||
than DB API calls. Review and fix it.
|
||||
|
||||
* test/scr030
|
||||
Update this test to match the configure script. Augment it so that
|
||||
as the configure script changes the script reports options not tested.
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ d=../..
|
|||
t1=__1
|
||||
t2=__2
|
||||
|
||||
trap 'rm -f $t1 $t2' 0 1 2 3 13 15
|
||||
|
||||
egrep -- "define.*DBSQL_.*-509" $d/src/dbsql.in | awk '{print $2}' > $t1
|
||||
sed -e '/^dbsql_strerror/,/^}/{' \
|
||||
-e '/ case DBSQL_/{' \
|
||||
|
@ -27,6 +29,6 @@ sed -e '/^dbsql_strerror/,/^}/{' \
|
|||
< $d/src/common/dbsql_err.c > $t2
|
||||
|
||||
cmp $t1 $t2 > /dev/null ||
|
||||
(echo "<<< db.h >>> db_strerror" && diff $t1 $t2 && exit 1)
|
||||
(echo "<<< dbsql.h >>> db_strerror" && diff $t1 $t2 && exit 1)
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -15,6 +15,60 @@ d=../..
|
|||
exit 1
|
||||
}
|
||||
|
||||
trap 'rm -f t t.c' 0 1 2 3 13 15
|
||||
|
||||
cat << END_OF_CODE > t.c
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
extern int isblank(int c);
|
||||
|
||||
int
|
||||
chk(f)
|
||||
char *f;
|
||||
{
|
||||
int ch, l, r;
|
||||
|
||||
if (freopen(f, "r", stdin) == NULL) {
|
||||
fprintf(stderr, "%s: %s\n", f, strerror(errno));
|
||||
exit (1);
|
||||
}
|
||||
for (l = 1, r = 0; (ch = getchar()) != EOF;) {
|
||||
if (ch != ',')
|
||||
goto next;
|
||||
do { ch = getchar(); } while (isblank(ch));
|
||||
if (ch != '\n')
|
||||
goto next;
|
||||
++l;
|
||||
do { ch = getchar(); } while (isblank(ch));
|
||||
if (ch != '}')
|
||||
goto next;
|
||||
r = 1;
|
||||
printf("%s: line %d\n", f, l);
|
||||
|
||||
next: if (ch == '\n')
|
||||
++l;
|
||||
}
|
||||
return (r);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int r;
|
||||
|
||||
for (r = 0; *++argv != NULL;)
|
||||
if (chk(*argv))
|
||||
r = 1;
|
||||
return (r);
|
||||
}
|
||||
END_OF_CODE
|
||||
|
||||
if cc -g -Wall -I.. t.c -o t; then
|
||||
:
|
||||
else
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
#include <sys/types.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
|
||||
int
|
||||
chk(f)
|
||||
char *f;
|
||||
{
|
||||
int ch, l, r;
|
||||
|
||||
if (freopen(f, "r", stdin) == NULL) {
|
||||
fprintf(stderr, "%s: %s\n", f, strerror(errno));
|
||||
exit (1);
|
||||
}
|
||||
for (l = 1, r = 0; (ch = getchar()) != EOF;) {
|
||||
if (ch != ',')
|
||||
goto next;
|
||||
do { ch = getchar(); } while (isblank(ch));
|
||||
if (ch != '\n')
|
||||
goto next;
|
||||
++l;
|
||||
do { ch = getchar(); } while (isblank(ch));
|
||||
if (ch != '}')
|
||||
goto next;
|
||||
r = 1;
|
||||
printf("%s: line %d\n", f, l);
|
||||
|
||||
next: if (ch == '\n')
|
||||
++l;
|
||||
}
|
||||
return (r);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int r;
|
||||
|
||||
for (r = 0; *++argv != NULL;)
|
||||
if (chk(*argv))
|
||||
r = 1;
|
||||
return (r);
|
||||
}
|
|
@ -13,6 +13,8 @@ d=../..
|
|||
t1=__1
|
||||
t2=__2
|
||||
|
||||
trap 'rm -f $t1 $t2' 0 1 2 3 13 15
|
||||
|
||||
egrep -- '#include[ ]' $d/src/inc/dbsql_int.in |
|
||||
sed -e '/[ ]db\.h'/d \
|
||||
-e 's/^#include.//' \
|
||||
|
|
|
@ -13,6 +13,8 @@ d=../..
|
|||
t1=__1
|
||||
t2=__2
|
||||
|
||||
trap 'rm -f $t1 $t2' 0 1 2 3 13 15
|
||||
|
||||
(cd $d && find . -name '*.[chys]' -o -name '*.cpp' |
|
||||
xargs egrep -l '#include.*dbsql_config.h') | tee /tmp/o > $t1
|
||||
|
||||
|
|
|
@ -6,6 +6,81 @@ d=../..
|
|||
t1=__1
|
||||
t2=__2
|
||||
|
||||
trap 'rm -f $t1 $t2 t' 0 1 2 3 13 15
|
||||
|
||||
cat << END_OF_CODE > t.c
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void
|
||||
chk(f, str)
|
||||
char *f, *str;
|
||||
{
|
||||
char *s;
|
||||
int ch, l, ok, pc;
|
||||
|
||||
if (freopen(f, "r", stdin) == NULL) {
|
||||
fprintf(stderr, "%s: %s\n", f, strerror(errno));
|
||||
exit (1);
|
||||
}
|
||||
|
||||
for (l = 1, ok = 1, s = str; (ch = getchar()) != EOF;) {
|
||||
if (ch == '\n')
|
||||
++l;
|
||||
if (!ok || ch != *s) {
|
||||
s = str;
|
||||
ok = !isalpha(ch) && !isdigit(ch) && ch != '_';
|
||||
continue;
|
||||
}
|
||||
if (*++s != '\0')
|
||||
continue;
|
||||
|
||||
/* Match. */
|
||||
printf("%s: %d: %s", f, l, str);
|
||||
for (pc = 1; (ch = getchar()) != EOF;) {
|
||||
switch (ch) {
|
||||
case '(':
|
||||
++pc;
|
||||
break;
|
||||
case ')':
|
||||
--pc;
|
||||
break;
|
||||
case '\n':
|
||||
++l;
|
||||
break;
|
||||
}
|
||||
if (ch == '\n')
|
||||
putchar(' ');
|
||||
else
|
||||
putchar(ch);
|
||||
if (pc <= 0) {
|
||||
putchar('\n');
|
||||
break;
|
||||
}
|
||||
}
|
||||
s = str;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int r;
|
||||
|
||||
for (r = 0; *++argv != NULL;) {
|
||||
chk(*argv, "F_ISSET(");
|
||||
chk(*argv, "F_CLR(");
|
||||
chk(*argv, "F_SET(");
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
END_OF_CODE
|
||||
|
||||
if cc -g -Wall -I.. t.c -o t; then
|
||||
:
|
||||
else
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
#include <sys/types.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
|
||||
void
|
||||
chk(f, str)
|
||||
char *f, *str;
|
||||
{
|
||||
char *s;
|
||||
int ch, l, ok, pc;
|
||||
|
||||
if (freopen(f, "r", stdin) == NULL) {
|
||||
fprintf(stderr, "%s: %s\n", f, strerror(errno));
|
||||
exit (1);
|
||||
}
|
||||
|
||||
for (l = 1, ok = 1, s = str; (ch = getchar()) != EOF;) {
|
||||
if (ch == '\n')
|
||||
++l;
|
||||
if (!ok || ch != *s) {
|
||||
s = str;
|
||||
ok = !isalpha(ch) && !isdigit(ch) && ch != '_';
|
||||
continue;
|
||||
}
|
||||
if (*++s != '\0')
|
||||
continue;
|
||||
|
||||
/* Match. */
|
||||
printf("%s: %d: %s", f, l, str);
|
||||
for (pc = 1; (ch = getchar()) != EOF;) {
|
||||
switch (ch) {
|
||||
case '(':
|
||||
++pc;
|
||||
break;
|
||||
case ')':
|
||||
--pc;
|
||||
break;
|
||||
case '\n':
|
||||
++l;
|
||||
break;
|
||||
}
|
||||
if (ch == '\n')
|
||||
putchar(' ');
|
||||
else
|
||||
putchar(ch);
|
||||
if (pc <= 0) {
|
||||
putchar('\n');
|
||||
break;
|
||||
}
|
||||
}
|
||||
s = str;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int r;
|
||||
|
||||
for (r = 0; *++argv != NULL;) {
|
||||
chk(*argv, "F_ISSET(");
|
||||
chk(*argv, "F_CLR(");
|
||||
chk(*argv, "F_SET(");
|
||||
}
|
||||
return (0);
|
||||
}
|
|
@ -1,25 +1,26 @@
|
|||
#!/bin/sh -
|
||||
#
|
||||
# Check for DB_RUNRECOVERY being specified instead of a call
|
||||
# to dbsql_panic.
|
||||
# Check for DB_RUNRECOVERY being specified instead of a call to dbsql_panic.
|
||||
|
||||
d=../..
|
||||
|
||||
t1=__1
|
||||
|
||||
egrep DB_RUNRECOVERY $d/*/*.c |
|
||||
sed -e '/__db_panic(.*, DB_RUNRECOVERY)/d' \
|
||||
-e '/case DB_RUNRECOVERY:/d' \
|
||||
-e '/db_dispatch.c:.*if (ret == DB_RUNRECOVERY/d' \
|
||||
trap 'rm -f $t1' 0 1 2 3 13 15
|
||||
|
||||
egrep DBSQL_RUNRECOVERY $d/*/*.c $d/*/*/*.c |
|
||||
sed -e '/__db_panic(.*, DBSQL_RUNRECOVERY)/d' \
|
||||
-e '/case DBSQL_RUNRECOVERY:/d' \
|
||||
-e '/db_dispatch.c:.*if (ret == DBSQL_RUNRECOVERY/d' \
|
||||
-e '/db_err.c:/d' \
|
||||
-e '/os_errno.c:.*evalue == DB_RUNRECOVERY/d' \
|
||||
-e '/os_errno.c:.*evalue == DBSQL_RUNRECOVERY/d' \
|
||||
-e '/\/php_db4\//d' \
|
||||
-e '/rep_backup.c:.*Panic the env and return DB_RUNRECOVERY/d' \
|
||||
-e '/txn.c:.* \* DB_RUNRECOVERY and we need to/d' \
|
||||
-e '/txn.c:.*returned DB_RUNRECOVERY and we need to/d' \
|
||||
-e '/rep_backup.c:.*Panic the env and return DBSQL_RUNRECOVERY/d' \
|
||||
-e '/txn.c:.* \* DBSQL_RUNRECOVERY and we need to/d' \
|
||||
-e '/txn.c:.*returned DBSQL_RUNRECOVERY and we need to/d' \
|
||||
> $t1
|
||||
[ -s $t1 ] && {
|
||||
echo "DB_RUNRECOVERY used; should be a call to dbsql_panic."
|
||||
echo "DBSQL_RUNRECOVERY used; should be a call to dbsql_panic."
|
||||
cat $t1
|
||||
exit 1
|
||||
}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
|
||||
d=../..
|
||||
|
||||
t=__1
|
||||
t1=__1
|
||||
|
||||
trap 'rm -f $t1' 0 1 2 3 13 15
|
||||
|
||||
echo ============================================================
|
||||
echo "Check that DBSQL doesn't call DBSQL_ENV methods internally."
|
||||
|
@ -80,10 +82,10 @@ sed \
|
|||
-e '/db_iface.c:.*if ((t_ret = txn->abort(txn)) != 0)/d' \
|
||||
-e '/db_iface.c:.*return (dbenv->txn_begin(dbenv, NULL, txnidp, 0));/d' \
|
||||
-e '/rep_util.c:.*ret = dbenv->rep_send(dbenv, &cdbt, dbtp, &cntrl.lsn,/d' \
|
||||
>$t
|
||||
>$t1
|
||||
|
||||
test -s $t && {
|
||||
cat $t
|
||||
test -s $t1 && {
|
||||
cat $t1
|
||||
echo "FAIL: found DB/DB_ENV method calls DB library."
|
||||
exit 1
|
||||
}
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
#
|
||||
# Build a program that calls the run-time API configuration functions.
|
||||
|
||||
trap 'rm -rf scr030 ; exit 0' 0
|
||||
trap 'rm -rf scr030 ; exit 1' 1 2 3 13 15
|
||||
t=__1
|
||||
|
||||
trap 'rm -rf $t ; exit 0' 0
|
||||
trap 'rm -rf $t ; exit 1' 1 2 3 13 15
|
||||
|
||||
[ -d ../../dist ] || {
|
||||
echo 'FAIL: unable to find top-level dist directory'
|
||||
|
@ -38,9 +40,9 @@ s="\
|
|||
r()
|
||||
{
|
||||
echo "run: $1 (`date`)"
|
||||
rm -rf scr030
|
||||
mkdir scr030
|
||||
cd scr030
|
||||
rm -rf $t
|
||||
mkdir $t
|
||||
cd $t
|
||||
../../../dist/configure $1 > config.OUT 2>&1
|
||||
if test $? -ne 0; then
|
||||
echo "$i: FAILED in configure"
|
||||
|
@ -67,7 +69,7 @@ r()
|
|||
exit 1
|
||||
fi
|
||||
cd ..
|
||||
rm -rf scr030
|
||||
rm -rf $t
|
||||
}
|
||||
|
||||
# Run through all of the standard single options.
|
||||
|
|
Loading…
Reference in a new issue