-rw-r--r-- 6063 cdb-20251021/rts.tests raw
# Requirements: # XFSZ is signal 25 or signal 31. # # Some features not tested here: # cdbmake traps 4GB overflows. umask 022 for SUFFIX in '' 64 do CDB=cdb$SUFFIX TEST=test$SUFFIX rm -rf rts-tmp mkdir rts-tmp cd rts-tmp echo "--- ${CDB}make handles simple example" echo '+3,5:one->Hello +3,7:two->Goodbye ' | ${CDB}make test.${CDB} test.tmp echo $? echo "--- ${CDB}make-12 handles simple example" echo ' one Hello # comment line two Goodbye ' | ${CDB}make-12 12.${CDB} 12.tmp echo $? echo "--- ${CDB}make-sv handles simple example" echo ' # Network services, Internet style echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users #Active Users systat 11/udp users #Active Users ' | ${CDB}make-sv sv.${CDB} sv.tmp echo $? echo "--- ${CDB}dump handles simple examples" ${CDB}dump < test.${CDB} echo $? ${CDB}dump < 12.${CDB} echo $? ${CDB}dump < sv.${CDB} echo $? echo "--- ${CDB}test handles simple examples" ${CDB}test < test.${CDB} echo $? ${CDB}test < 12.${CDB} echo $? ${CDB}test < sv.${CDB} echo $? echo "--- ${CDB}stats handles simple examples" ${CDB}stats < test.${CDB} echo $? ${CDB}stats < 12.${CDB} echo $? ${CDB}stats < sv.${CDB} echo $? echo "--- ${CDB}get retrieves data successfully" ${CDB}get one < test.${CDB} echo ' '$? ${CDB}get two < test.${CDB} echo ' '$? for i in @7 echo @9 discard sink null @11 systat users do ${CDB}get $i/tcp < sv.${CDB} echo ' '$? ${CDB}get $i/udp < sv.${CDB} echo ' '$? done echo "--- ${CDB}get exits 100 on nonexistent data" ${CDB}get three < test.${CDB} echo $? ${CDB}get '#Active' < sv.${CDB} echo $? echo "--- ${CDB}make handles repeated keys" echo '+3,5:one->Hello +3,7:one->Goodbye +3,7:one->Another ' | ${CDB}make rep.${CDB} rep.tmp echo $? ${CDB}dump < rep.${CDB} echo $? echo "--- ${CDB}get handles repeated keys" ${CDB}get one < rep.${CDB} echo ' '$? ${CDB}get one 0 < rep.${CDB} echo ' '$? ${CDB}get one 1 < rep.${CDB} echo ' '$? ${CDB}get one 2 < rep.${CDB} echo ' '$? ${CDB}get one 3 < rep.${CDB} echo ' '$? ${CDB}get one 4 < rep.${CDB} echo ' '$? echo "--- ${CDB}make handles long keys and data" echo '+320,320:ba483b3442e75cace82def4b5df25bfca887b41687537c21dc4b82cb4c36315e2f6a0661d1af2e05e686c4c595c16561d8c1b3fbee8a6b99c54b3d10d61948445298e97e971f85a600c88164d6b0b09 b5169a54910232db0a56938de61256721667bddc1c0a2b14f5d063ab586a87a957e87f704acb7246c5e8c25becef713a365efef79bb1f406fecee88f3261f68e239c5903e3145961eb0fbc538ff506a ->152e113d5deec3638ead782b93e1b9666d265feb5aebc840e79aa69e2cfc1a2ce4b3254b79fa73c338d22a75e67cfed4cd17b92c405e204a48f21c31cdcf7da46312dc80debfbdaf6dc39d74694a711 6d170c5fde1a81806847cf71732c7f3217a38c6234235951af7b7c1d32e62d480d7c82a63a9d94291d92767ed97dd6a6809d1eb856ce23eda20268cb53fda31c016a19fc20e80aec3bd594a3eb82a5a ' | ${CDB}make test.${CDB} test.tmp echo $? echo "--- ${CDB}dump handles long keys and data" ${CDB}dump < test.${CDB} echo $? echo "--- ${CDB}test handles long keys and data" ${CDB}test < test.${CDB} echo $? echo "--- ${CDB}stats handles long keys and data" ${CDB}stats < test.${CDB} echo $? echo "--- ${CDB}get handles long keys and data" ${CDB}get 'ba483b3442e75cace82def4b5df25bfca887b41687537c21dc4b82cb4c36315e2f6a0661d1af2e05e686c4c595c16561d8c1b3fbee8a6b99c54b3d10d61948445298e97e971f85a600c88164d6b0b09 b5169a54910232db0a56938de61256721667bddc1c0a2b14f5d063ab586a87a957e87f704acb7246c5e8c25becef713a365efef79bb1f406fecee88f3261f68e239c5903e3145961eb0fbc538ff506a ' < test.${CDB} echo ' '$? rm -f loop echo "--- ${CDB}make handles unwritable tmp" ln -s loop loop echo '' | ${CDB}make test.${CDB} loop echo $? echo "--- ${CDB}make handles unmovable ${CDB}" echo '' | ${CDB}make loop/test.${CDB} test.tmp echo $? echo "--- ${CDB}make handles nomem" for x1 in 1 2 3 4 5 6 7 8 9 10 do for x2 in 1 2 3 4 5 6 7 8 9 10 do for x3 in 1 2 3 4 5 6 7 8 9 10 do for x4 in 1 2 3 4 5 6 7 8 9 10 do for x5 in 1 2 3 4 5 6 7 8 9 10 do for x6 in 1 2 3 4 5 6 7 8 9 10 do echo "+3,5:one->Hello" done done done done done done \ | ( ulimit -d 5000 ${CDB}make test.${CDB} test.tmp echo $? ) echo "--- ${CDB}make handles full disk" ( trap '' 25 31 echo '' | ( ulimit -f 1 ${CDB}make test.${CDB} test.tmp echo $? ) ) case $CDB in cdb) echo "--- ${CDB}make rejects klen=4294967296" echo '+4294967296' | ${CDB}make test.${CDB} test.tmp echo $? ;; cdb64) echo "--- ${CDB}make rejects klen=9223372036854775808" echo '+9223372036854775808' | ${CDB}make test.${CDB} test.tmp echo $? ;; esac echo "--- ${CDB}get handles empty file" ${CDB}get foo </dev/null echo $? echo "--- ${CDB}dump and ${CDB}make handle random.${CDB}" ${CDB}dump < ../random.${CDB} | ${CDB}make test.${CDB} test.tmp echo $? cmp ../random.${CDB} test.${CDB} echo "--- ${CDB}test handles random.${CDB}" ${CDB}test < ../random.${CDB} echo $? echo "--- ${CDB}stats handles random.${CDB}" ${CDB}stats < ../random.${CDB} echo $? echo "--- ${TEST}zero works" ${TEST}zero 5 > test.${CDB} echo $? ${CDB}test < test.${CDB} echo $? echo "--- ${TEST}zero can build a database very close to 4GB" ${TEST}zero 65507 > /dev/null echo $? case $CDB in cdb) echo "--- ${TEST}zero complains if hash table passes 4GB" ${TEST}zero 65508 > /dev/null echo $? echo "--- ${TEST}zero complains if records pass 4GB" ${TEST}zero 66000 > /dev/null echo $? ;; cdb64) echo "--- ${TEST}zero is ok with records past 4GB" ${TEST}zero 66000 > /dev/null echo $? ;; esac cd .. done exit 0