#!/bin/sh rm -f /usr/local/lib/libffead-* rm -f /usr/local/lib/libte_benc* rm -f /usr/local/lib/libinter.so rm -f /usr/local/lib/libdinter.so export FFEAD_CPP_PATH=${IROOT}/$1 ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um.so /usr/local/lib/libte-benchmark-um.so ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um-pq.so /usr/local/lib/libte-benchmark-um-pq.so ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um-mgr.so /usr/local/lib/libte-benchmark-um-mgr.so ln -s ${FFEAD_CPP_PATH}/lib/libte-benchmark-um-pq-async.so /usr/local/lib/libte-benchmark-um-pq-async.so ln -s ${FFEAD_CPP_PATH}/lib/libffead-modules.so /usr/local/lib/libffead-modules.so ln -s ${FFEAD_CPP_PATH}/lib/libffead-framework.so /usr/local/lib/libffead-framework.so ln -s ${FFEAD_CPP_PATH}/lib/libinter.so /usr/local/lib/libinter.so ln -s ${FFEAD_CPP_PATH}/lib/libdinter.so /usr/local/lib/libdinter.so ldconfig if [ "$2" = "nginx" ] then if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ] then export PATH=${IROOT}/nginx-ffead-sql/sbin:${PATH} else export PATH=${IROOT}/nginx-ffead-mongo/sbin:${PATH} fi fi export LD_LIBRARY_PATH=${IROOT}/:${IROOT}/lib:${FFEAD_CPP_PATH}/lib:/usr/local/lib:$LD_LIBRARY_PATH export ODBCINI=${IROOT}/odbc.ini export ODBCSYSINI=${IROOT} export LD_PRELOAD=/usr/local/lib/libmimalloc.so #export LD_PRELOAD=$IROOT/snmalloc-0.5.3/build/libsnmallocshim.so cd $FFEAD_CPP_PATH #use below settings only for debugging #echo '/tmp/core.%h.%e.%t' > /proc/sys/kernel/core_pattern #ulimit -c unlimited service redis-server stop service apache2 stop service memcached stop if [ "$3" = "mongo" ] then WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async cp -f ${WEB_DIR}/config/sdormmongo.xml ${WEB_DIR}/config/sdorm.xml elif [ "$3" = "mongo-raw" ] then WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um-mgr rm -rf web/te-benchmark-um web/te-benchmark-um-pq web/te-benchmark-um-pq-async elif [ "$3" = "mysql" ] then WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async cp -f ${WEB_DIR}/config/sdormmysql.xml ${WEB_DIR}/config/sdorm.xml elif [ "$3" = "postgresql" ] then WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async cp -f web/te-benchmark-um/config/sdormpostgresql.xml web/te-benchmark-um/config/sdorm.xml elif [ "$3" = "postgresql-raw" ] then WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um-pq rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq-async sed -i 's|true|false|g' ${WEB_DIR}/config/sdorm.xml elif [ "$3" = "postgresql-raw-async" ] then WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um-pq-async rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq sed -i 's|false|true|g' ${WEB_DIR}/config/sdorm.xml else WEB_DIR=$FFEAD_CPP_PATH/web/te-benchmark-um rm -rf web/te-benchmark-um-mgr web/te-benchmark-um-pq web/te-benchmark-um-pq-async fi if [ "$4" = "memory" ] then cp -f ${WEB_DIR}/config/cachememory.xml ${WEB_DIR}/config/cache.xml elif [ "$4" = "redis" ] then service redis-server start cp -f ${WEB_DIR}/config/cacheredis.xml ${WEB_DIR}/config/cache.xml elif [ "$4" = "memcached" ] then service memcached start cp -f ${WEB_DIR}/config/cachememcached.xml ${WEB_DIR}/config/cache.xml fi rm -f rtdcf/*.d rtdcf/*.o rm -f *.cntrl rm -f tmp/*.sess if [ ! -d tmp ]; then mkdir tmp fi chmod 700 ffead-cpp* chmod 700 resources/*.sh chmod 700 tests/* chmod 700 rtdcf/* if [ "$2" = "emb" ] then sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop for i in $(seq 0 $(($(nproc --all)-1))); do taskset -c $i ./ffead-cpp $FFEAD_CPP_PATH & done elif [ "$2" = "lithium" ] then ./ffead-cpp-lithium $FFEAD_CPP_PATH & elif [ "$2" = "cinatra" ] then ./ffead-cpp-cinatra $FFEAD_CPP_PATH & elif [ "$2" = "drogon" ] then ./ffead-cpp-drogon $FFEAD_CPP_PATH & elif [ "$2" = "apache" ] then if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ] then sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/apache2.conf sed -i 's|/installs/ffead-cpp-6.0|'/installs/ffead-cpp-6.0-sql'|g' /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/ffead-site.conf fi sed -i 's|30|3|g' web/te-benchmark-um/config/sdorm.xml sed -i 's|10|2|g' web/te-benchmark-um/config/cache.xml apachectl -D FOREGROUND elif [ "$2" = "nginx" ] then mkdir -p ${IROOT}/nginxfc/logs sed -i 's|30|3|g' web/te-benchmark-um/config/sdorm.xml sed -i 's|10|2|g' web/te-benchmark-um/config/cache.xml if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ] then nginx -g 'daemon off;' -c ${IROOT}/nginx-ffead-sql/conf/nginx.conf else nginx -g 'daemon off;' -c ${IROOT}/nginx-ffead-mongo/conf/nginx.conf fi elif [ "$2" = "libreactor" ] then cd ${IROOT} ./libreactor-ffead-cpp $FFEAD_CPP_PATH 8080 elif [ "$2" = "h2o" ] then cd ${IROOT}/lang-server-backends/c/h2o ./h2o.sh ${FFEAD_CPP_PATH} ${LD_LIBRARY_PATH} 8080 elif [ "$2" = "crystal-http" ] then cd ${IROOT} for i in $(seq 0 $(($(nproc --all)-1))); do taskset -c $i ./crystal-ffead-cpp.out --ffead-cpp-dir=$FFEAD_CPP_PATH --to=8080 & done elif [ "$2" = "crystal-h2o" ] then cd ${IROOT} for i in $(seq 0 $(($(nproc --all)-1))); do taskset -c $i ./h2o-evloop-ffead-cpp.out --ffead-cpp-dir=$FFEAD_CPP_PATH --to=8080 & done elif [ "$2" = "julia-http" ] then for i in $(seq 0 $(($(nproc --all)-1))); do julia ${IROOT}/lang-server-backends/julia/http.jl/server.jl $FFEAD_CPP_PATH done elif [ "$2" = "swift-nio" ] then cd ${IROOT} ./app $FFEAD_CPP_PATH elif [ "$2" = "d-hunt" ] then cd ${IROOT} ./hunt-minihttp -s $FFEAD_CPP_PATH elif [ "$2" = "rust-actix" ] then cd ${IROOT} ./actix-ffead-cpp $FFEAD_CPP_PATH 8080 elif [ "$2" = "rust-hyper" ] then cd ${IROOT} ./hyper-ffead-cpp $FFEAD_CPP_PATH 8080 elif [ "$2" = "rust-thruster" ] then cd ${IROOT} ./thruster-ffead-cpp $FFEAD_CPP_PATH 8080 elif [ "$2" = "rust-rocket" ] then cd ${IROOT} ./rocket-ffead-cpp $FFEAD_CPP_PATH 8080 elif [ "$2" = "go-fasthttp" ] then cd ${IROOT} ./fasthttp-ffead-cpp --server_directory=$FFEAD_CPP_PATH -addr=8080 elif [ "$2" = "go-gnet" ] then cd ${IROOT} ./gnet-ffead-cpp --server_directory=$FFEAD_CPP_PATH --port=8080 elif [ "$2" = "v-vweb" ] then cd ${IROOT} for i in $(seq 0 $(($(nproc --all)-1))); do taskset -c $i ./vweb --server_dir=$FFEAD_CPP_PATH --server_port=8080 & done elif [ "$2" = "v-picov" ] then cd ${IROOT} sed -i 's|"TeBkUmLpqRouter"|"TeBkUmLpqRouterPicoV"|g' ${WEB_DIR}/config/application.xml sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' $FFEAD_CPP_PATH/resources/server.prop for i in $(seq 0 $(($(nproc --all)-1))); do taskset -c $i ./main --server_dir=$FFEAD_CPP_PATH --server_port=8080 & done elif [ "$2" = "java-firenio" ] then cd ${IROOT} java \ -server \ -XX:+UseNUMA \ -XX:+UseParallelGC \ -XX:+AggressiveOpts \ -Dlite=false \ -Dcore=1 \ -Dframe=16 \ -DreadBuf=512 \ -Dpool=true \ -Ddirect=true \ -Dinline=true \ -Dlevel=1 \ -Dread=false \ -Depoll=true \ -Dnodelay=true \ -Dcachedurl=false \ -DunsafeBuf=true \ -classpath firenio-ffead-cpp-0.1-jar-with-dependencies.jar com.firenio.ffeadcpp.FirenioFfeadCppServer $FFEAD_CPP_PATH 8080 elif [ "$2" = "java-rapidoid" ] then cd ${IROOT} java -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \ -classpath rapidoid-ffead-cpp-1.0-jar-with-dependencies.jar \ com.rapidoid.ffeadcpp.Main $FFEAD_CPP_PATH 8080 profiles=production elif [ "$2" = "java-wizzardo-http" ] then cd ${IROOT} java -Xmx2G -Xms2G -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \ -jar wizzardo-ffead-cpp-all-1.0.jar $FFEAD_CPP_PATH 8080 env=prod elif [ "$2" = "seastar" ] then cd ${IROOT}/lang-server-backends/c++/seastar ./ffead-cpp-seastar --port=8080 --address=0.0.0.0 --fcpdir=${FFEAD_CPP_PATH} -c$(nproc) fi wait