Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion tests/api_tst.test/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
export SECONDARY_DB_PREFIX=db2

ifeq ($(TESTSROOTDIR),)
include ../testcase.mk
else
include $(TESTSROOTDIR)/testcase.mk
endif
ifeq ($(TEST_TIMEOUT),)
export TEST_TIMEOUT=2m
export TEST_TIMEOUT=10m
endif
211 changes: 116 additions & 95 deletions tests/api_tst.test/runit
Original file line number Diff line number Diff line change
@@ -1,67 +1,71 @@
#!/usr/bin/env bash
bash -n "$0" | exit 1

db=${DBNAME}
tier=default
CDB2_HOST_NAME=localhost

if [[ -n "$CLUSTER" ]]; then
node=$(echo "$CLUSTER" | awk '{print $1}')
ssh -o StrictHostKeyChecking=no $node "${TESTSBUILDDIR}/cdb2api_admin ${db} ${CDB2_HOST_NAME} ${tier}"
[[ $? -ne 0 ]] && echo "admin connection to local host test failed" && echo "cdb2api_admin - fail" && exit 1
else
${TESTSBUILDDIR}/cdb2api_admin ${db} ${CDB2_HOST_NAME} ${tier}
[[ $? -ne 0 ]] && echo "admin connection to local host test failed" && echo "cdb2api_admin - fail" && exit 1
fi

if [[ -n "$CLUSTER" ]]; then
CDB2_HOST_NAME=$(${CDB2SQL_EXE} ${CDB2_OPTIONS} -tabs -s ${db} ${tier} "select comdb2_host()")
${TESTSBUILDDIR}/cdb2api_admin ${db} ${CDB2_HOST_NAME} ${tier}
[[ $? -ne 0 ]] && echo "admin connection to remote host test failed" && echo "cdb2api_admin - fail" && exit 1
fi

echo 'cdb2api_admin - pass'

${TESTSBUILDDIR}/cdb2api_hasql ${DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_hasql - fail" && exit 1
echo 'cdb2api_hasql - pass'

set -e

${TESTSBUILDDIR}/cdb2api_rte ${DBNAME}

# EXPECTED_PORTS='5105\|8125'
EXPECTED_PORTS='5105\|8125\|53'
if [[ $(uname) = "Linux" ]]; then
set +e
# what's port 0 on connect?
strace ${TESTSBUILDDIR}/cdb2api_rte ${DBNAME} onlyrte 2>&1 | grep -w connect | grep AF_INET | sed "s/.*htons(//; s/).*//" | grep -v "0" | grep -v $EXPECTED_PORTS > ports
if [[ -s ports ]]; then
echo 'Unexpected connection to following ports: '
cat ports
echo 'cdb2api_rte - failed'
exit 1
fi
fi
set +e

echo 'cdb2api_rte - pass'

${TESTSBUILDDIR}/cdb2api_setoptions ${DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_setoptions - fail" && exit 1
echo 'cdb2api_setoptions - pass'

CDB2_LOG_CALLS=1 ${TESTSBUILDDIR}/cdb2api_stmt_return_types ${DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_stmt_return_types - fail" && exit 1
echo 'cdb2api_stmt_return_types - pass'

${TESTSBUILDDIR}/cdb2api_string_escape
[[ $? -ne 0 ]] && echo "cdb2api_string_escape - fail" && exit 1
echo 'cdb2api_string_escape - pass'

${TESTSBUILDDIR}/cdb2api_txn ${DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_txn - fail" && exit 1
echo 'cdb2api_txn - pass'
# add cluster line from secondary db into primary comdb2db cfg to make easier for c++ programs
cluster_line=$(head -n 1 $DBDIR/comdb2db.cfg)
echo "db2$cluster_line" >> $DBDIR/comdb2db.cfg

# db=${DBNAME}
# tier=default
# CDB2_HOST_NAME=localhost

# if [[ -n "$CLUSTER" ]]; then
# node=$(echo "$CLUSTER" | awk '{print $1}')
# ssh -o StrictHostKeyChecking=no $node "${TESTSBUILDDIR}/cdb2api_admin ${db} ${CDB2_HOST_NAME} ${tier}"
# [[ $? -ne 0 ]] && echo "admin connection to local host test failed" && echo "cdb2api_admin - fail" && exit 1
# else
# ${TESTSBUILDDIR}/cdb2api_admin ${db} ${CDB2_HOST_NAME} ${tier}
# [[ $? -ne 0 ]] && echo "admin connection to local host test failed" && echo "cdb2api_admin - fail" && exit 1
# fi

# if [[ -n "$CLUSTER" ]]; then
# CDB2_HOST_NAME=$(${CDB2SQL_EXE} ${CDB2_OPTIONS} -tabs -s ${db} ${tier} "select comdb2_host()")
# ${TESTSBUILDDIR}/cdb2api_admin ${db} ${CDB2_HOST_NAME} ${tier}
# [[ $? -ne 0 ]] && echo "admin connection to remote host test failed" && echo "cdb2api_admin - fail" && exit 1
# fi

# echo 'cdb2api_admin - pass'

# ${TESTSBUILDDIR}/cdb2api_hasql ${DBNAME}
# [[ $? -ne 0 ]] && echo "cdb2api_hasql - fail" && exit 1
# echo 'cdb2api_hasql - pass'

# set -e

# ${TESTSBUILDDIR}/cdb2api_rte ${DBNAME}

# # EXPECTED_PORTS='5105\|8125'
# EXPECTED_PORTS='5105\|8125\|53'
# if [[ $(uname) = "Linux" ]]; then
# set +e
# # what's port 0 on connect?
# strace ${TESTSBUILDDIR}/cdb2api_rte ${DBNAME} onlyrte 2>&1 | grep -w connect | grep AF_INET | sed "s/.*htons(//; s/).*//" | grep -v "0" | grep -v $EXPECTED_PORTS > ports
# if [[ -s ports ]]; then
# echo 'Unexpected connection to following ports: '
# cat ports
# echo 'cdb2api_rte - failed'
# exit 1
# fi
# fi
# set +e

# echo 'cdb2api_rte - pass'

# ${TESTSBUILDDIR}/cdb2api_setoptions ${DBNAME}
# [[ $? -ne 0 ]] && echo "cdb2api_setoptions - fail" && exit 1
# echo 'cdb2api_setoptions - pass'

# CDB2_LOG_CALLS=1 ${TESTSBUILDDIR}/cdb2api_stmt_return_types ${DBNAME}
# [[ $? -ne 0 ]] && echo "cdb2api_stmt_return_types - fail" && exit 1
# echo 'cdb2api_stmt_return_types - pass'

# ${TESTSBUILDDIR}/cdb2api_string_escape
# [[ $? -ne 0 ]] && echo "cdb2api_string_escape - fail" && exit 1
# echo 'cdb2api_string_escape - pass'

# ${TESTSBUILDDIR}/cdb2api_txn ${DBNAME}
# [[ $? -ne 0 ]] && echo "cdb2api_txn - fail" && exit 1
# echo 'cdb2api_txn - pass'

pgrep cdb2sockpool
if [ $? -ne 0 ]; then
Expand All @@ -76,40 +80,57 @@ if [ $? -ne 0 ]; then
fi
fi

${TESTSBUILDDIR}/cdb2api_localcache_systable ${DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_localcache_systable - fail" && exit 1
echo 'cdb2api_localcache_systable - pass'

cfg=$DBDIR/comdb2db.cfg
echo 'comdb2_feature:discard_unread_socket_data=on' >> ${cfg}
${TESTSBUILDDIR}/cdb2api_unread_data ${DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_unread_data - fail" && exit 1
sed -i '/comdb2_feature:discard_unread_socket_data=on/d' "${cfg}"
echo 'cdb2api_unread_data - pass'

comdb2db_cfg=api_tst_comdb2db.cfg
dbname_cfg=api_tst_${db}.cfg
for global_tier in local dev integration beta prod proxy; do
echo "comdb2_config:default_type=${global_tier}" > ${comdb2db_cfg}
for db_tier in local dev integration beta prod proxy; do
cat > ${dbname_cfg} <<-EOF
comdb2_config:default_type=${db_tier}
comdb2_config:api_call_timeout=1
comdb2_config:comdb2db_timeout=1
comdb2_config:connect_timeout=1
comdb2_config:socket_timeout=1
comdb2_feature:use_bmsd=0
EOF
exp="${global_tier}:${db_tier}"
res=$(${TESTSBUILDDIR}/cdb2api_cfg ${db} default ${comdb2db_cfg} ${dbname_cfg} 2> /dev/null)
if [[ "${res}" != "${exp}" ]] ; then
echo >&2 "cfg expected:${exp} result:${res} - fail"
exit 1
else
echo "${res} ok"
fi
done
done
echo "cfg - pass"
echo 'comdb2_config:max_local_connection_cache_entries=11' >> ${cfg}
echo 'comdb2_config:max_local_connection_cache_age=10' >> ${cfg}
echo 'comdb2_config:local_connection_cache_use_sbuf=0' >> ${cfg}
COMDB2_CONFIG_LOCAL_CONNECTION_CACHE_USE_SBUF=0 ${TESTSBUILDDIR}/cdb2api_localcache ${DBNAME} ${SECONDARY_DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_localcache (sbuf=0) - fail" && exit 1
echo 'cdb2api_localcache (sbuf=0) - pass'

sed -i 's/comdb2_config:local_connection_cache_use_sbuf=0/comdb2_config:local_connection_cache_use_sbuf=1/' "${cfg}"
COMDB2_CONFIG_LOCAL_CONNECTION_CACHE_USE_SBUF=1 ${TESTSBUILDDIR}/cdb2api_localcache ${DBNAME} ${SECONDARY_DBNAME}
[[ $? -ne 0 ]] && echo "cdb2api_localcache (sbuf=1) - fail" && exit 1
echo 'cdb2api_localcache (sbuf=1) - pass'

sed -i '/comdb2_config:max_local_connection_cache_entries=11/d' "${cfg}"
sed -i '/comdb2_config:max_local_connection_cache_age=10/d' "${cfg}"
sed -i '/comdb2_config:local_connection_cache_use_sbuf=1/d' "${cfg}"

# ${TESTSBUILDDIR}/cdb2api_localcache_systable ${DBNAME}
# [[ $? -ne 0 ]] && echo "cdb2api_localcache_systable - fail" && exit 1
# echo 'cdb2api_localcache_systable - pass'

# cfg=$DBDIR/comdb2db.cfg
# echo 'comdb2_feature:discard_unread_socket_data=on' >> ${cfg}
# ${TESTSBUILDDIR}/cdb2api_unread_data ${DBNAME}
# [[ $? -ne 0 ]] && echo "cdb2api_unread_data - fail" && exit 1
# sed -i '/comdb2_feature:discard_unread_socket_data=on/d' "${cfg}"
# echo 'cdb2api_unread_data - pass'

# comdb2db_cfg=api_tst_comdb2db.cfg
# dbname_cfg=api_tst_${db}.cfg
# for global_tier in local dev integration beta prod proxy; do
# echo "comdb2_config:default_type=${global_tier}" > ${comdb2db_cfg}
# for db_tier in local dev integration beta prod proxy; do
# cat > ${dbname_cfg} <<-EOF
# comdb2_config:default_type=${db_tier}
# comdb2_config:api_call_timeout=1
# comdb2_config:comdb2db_timeout=1
# comdb2_config:connect_timeout=1
# comdb2_config:socket_timeout=1
# comdb2_feature:use_bmsd=0
# EOF
# exp="${global_tier}:${db_tier}"
# res=$(${TESTSBUILDDIR}/cdb2api_cfg ${db} default ${comdb2db_cfg} ${dbname_cfg} 2> /dev/null)
# if [[ "${res}" != "${exp}" ]] ; then
# echo >&2 "cfg expected:${exp} result:${res} - fail"
# exit 1
# else
# echo "${res} ok"
# fi
# done
# done
# echo "cfg - pass"

exit 0
1 change: 1 addition & 0 deletions tests/tools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ add_exe(cdb2api_chunk cdb2api_chunk.cpp)
add_exe(cdb2api_drain cdb2api_drain.cpp)
add_exe(cdb2api_effects_on_chunk_error cdb2api_effects_on_chunk_error.c)
add_exe(cdb2api_hasql cdb2api_hasql.cpp)
add_exe(cdb2api_localcache cdb2api_localcache.cpp)
add_exe(cdb2api_localcache_systable cdb2api_localcache_systable.cpp)
add_exe(cdb2api_read_intrans_results cdb2api_read_intrans_results.c)
add_exe(cdb2api_rte cdb2api_rte.cpp)
Expand Down
Loading