Jelajahi Sumber

ffead-cpp - Added support for mysql and postgres, added nginx webserver support as well

root 9 tahun lalu
induk
melakukan
4f3c37012d

+ 168 - 8
frameworks/C++/ffead-cpp/benchmark_config.json

@@ -12,7 +12,7 @@
       "port": 8080,
       "approach": "Realistic",
       "classification": "Fullstack",
-      "database": "MongoDB",
+      "database": "mongodb",
       "framework": "ffead-cpp",
       "language": "C++",
       "orm": "Full",
@@ -20,11 +20,57 @@
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
-      "display_name": "ffead-cpp",
+      "display_name": "ffead-cpp-mongo",
       "notes": "",
       "versus": ""
     },
-    "apache2": {
+	"mysql": {
+      "setup_file": "setup-mysql",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "mysql",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-mysql",
+      "notes": "",
+      "versus": ""
+    },
+	"postgresql": {
+      "setup_file": "setup-postgresql",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "postgres",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-postgresql",
+      "notes": "",
+      "versus": ""
+    },
+    "apache2-mongo": {
       "setup_file": "setup-apache2",
       "json_url": "/te-benchmark/json",
       "plaintext_url": "/te-benchmark/plaintext",
@@ -35,18 +81,132 @@
       "port": 8080,
       "approach": "Realistic",
       "classification": "Fullstack",
-      "database": "MongoDB",
+      "database": "mongodb",
       "framework": "ffead-cpp",
       "language": "C++",
       "orm": "Full",
-      "platform": "ffead-cpp-apache",
+      "platform": "ffead-cpp-apache2",
       "webserver": "apache2",
       "os": "Linux",
       "database_os": "Linux",
-      "display_name": "ffead-cpp-apache",
+      "display_name": "ffead-cpp-apache2-mongo",
+      "notes": "",
+      "versus": ""
+    },
+	"apache2-mysql": {
+      "setup_file": "setup-apache2-mysql",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "mysql",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp-apache2",
+      "webserver": "apache2",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-apache2-mysql",
+      "notes": "",
+      "versus": ""
+    },
+	"apache2-postgresql": {
+      "setup_file": "setup-apache2-postgresql",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "postgres",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp-apache2",
+      "webserver": "apache2",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-apache2-postgresql",
+      "notes": "",
+      "versus": ""
+    },
+    "nginx-mongo": {
+      "setup_file": "setup-nginx",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "mongodb",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp-nginx",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-nginx-mongo",
+      "notes": "",
+      "versus": ""
+    },
+	"nginx-mysql": {
+      "setup_file": "setup-nginx-mysql",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "mysql",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp-nginx",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-nginx-mysql",
+      "notes": "",
+      "versus": ""
+    },
+	"nginx-postgresql": {
+      "setup_file": "setup-nginx-postgresql",
+      "json_url": "/te-benchmark/json",
+      "plaintext_url": "/te-benchmark/plaintext",
+      "db_url": "/te-benchmark/db",
+      "query_url": "/te-benchmark/queries?queries=",
+      "fortune_url": "/te-benchmark/fortunes",
+      "update_url": "/te-benchmark/updates?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "postgres",
+      "framework": "ffead-cpp",
+      "language": "C++",
+      "orm": "Full",
+      "platform": "ffead-cpp-nginx",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ffead-cpp-nginx-postgresql",
       "notes": "",
       "versus": ""
     }
   }]
-}
-
+}

+ 16 - 0
frameworks/C++/ffead-cpp/setup-apache2-mysql.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+fw_depends apache
+fw_depends ffead-cpp-apache
+
+export FFEAD_CPP_PATH=/var/www/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+sudo rm -f $FFEAD_CPP_PATH/*.cntrl
+sudo rm -f $FFEAD_CPP_PATH/tmp/*.sess
+sudo cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormmysql.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+sudo rm -rf $FFEAD_CPP_PATH/lib
+sudo cp -Rf $FFEAD_CPP_PATH/libsql $FFEAD_CPP_PATH/lib
+sudo cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldsql.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+sudo /etc/init.d/apache2 restart > ffead.log 2>&1

+ 16 - 0
frameworks/C++/ffead-cpp/setup-apache2-postgresql.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+fw_depends apache
+fw_depends ffead-cpp-apache
+
+export FFEAD_CPP_PATH=/var/www/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+sudo rm -f $FFEAD_CPP_PATH/*.cntrl
+sudo rm -f $FFEAD_CPP_PATH/tmp/*.sess
+sudo cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormpostgresql.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+sudo rm -rf $FFEAD_CPP_PATH/lib
+sudo cp -Rf $FFEAD_CPP_PATH/libsql $FFEAD_CPP_PATH/lib
+sudo cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldsql.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+sudo /etc/init.d/apache2 restart > ffead.log 2>&1

+ 5 - 1
frameworks/C++/ffead-cpp/setup-apache2.sh

@@ -3,10 +3,14 @@
 fw_depends apache
 fw_depends ffead-cpp-apache
 
-export FFEAD_CPP_PATH=$TROOT/ffead-cpp-2.0
+export FFEAD_CPP_PATH=/var/www/ffead-cpp-2.0
 export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
 echo $FFEAD_CPP_PATH
 echo $LD_LIBRARY_PATH
 sudo rm -f $FFEAD_CPP_PATH/*.cntrl
 sudo rm -f $FFEAD_CPP_PATH/tmp/*.sess
+sudo cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormmongo.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+sudo rm -rf $FFEAD_CPP_PATH/lib
+sudo cp -Rf $FFEAD_CPP_PATH/libmongo $FFEAD_CPP_PATH/lib
+sudo cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldmongo.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
 sudo /etc/init.d/apache2 restart > ffead.log 2>&1

+ 16 - 0
frameworks/C++/ffead-cpp/setup-mysql.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+fw_depends ffead-cpp
+
+export FFEAD_CPP_PATH=$TROOT/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+rm -f $FFEAD_CPP_PATH/*.cntrl
+rm -f $FFEAD_CPP_PATH/tmp/*.sess
+cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormmysql.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+rm -rf $FFEAD_CPP_PATH/lib
+cp -Rf $FFEAD_CPP_PATH/libsql $FFEAD_CPP_PATH/lib
+cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldsql.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+$TROOT/ffead-cpp-2.0/CHS $FFEAD_CPP_PATH > ffead.log 2>&1
+

+ 16 - 0
frameworks/C++/ffead-cpp/setup-nginx-mysql.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+fw_depends ffead-cpp-nginx
+
+export FFEAD_CPP_PATH=$TROOT/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+rm -f $FFEAD_CPP_PATH/*.cntrl
+rm -f $FFEAD_CPP_PATH/tmp/*.sess
+cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormmysql.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+rm -rf $FFEAD_CPP_PATH/lib
+cp -Rf $FFEAD_CPP_PATH/libsql $FFEAD_CPP_PATH/lib
+cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldsql.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+$IROOT/nginxfc/sbin/nginx > ffead.log 2>&1
+

+ 15 - 0
frameworks/C++/ffead-cpp/setup-nginx-postgresql.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+fw_depends ffead-cpp-nginx
+
+export FFEAD_CPP_PATH=$TROOT/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+rm -f $FFEAD_CPP_PATH/*.cntrl
+rm -f $FFEAD_CPP_PATH/tmp/*.sess
+cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormpostgresql.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+rm -rf $FFEAD_CPP_PATH/lib
+cp -Rf $FFEAD_CPP_PATH/libsql $FFEAD_CPP_PATH/lib
+cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldsql.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+$IROOT/nginxfc/sbin/nginx > ffead.log 2>&1

+ 15 - 0
frameworks/C++/ffead-cpp/setup-nginx.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+fw_depends ffead-cpp-nginx
+
+export FFEAD_CPP_PATH=$TROOT/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+rm -f $FFEAD_CPP_PATH/*.cntrl
+rm -f $FFEAD_CPP_PATH/tmp/*.sess
+cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormmongo.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+rm -rf $FFEAD_CPP_PATH/lib
+cp -Rf $FFEAD_CPP_PATH/libmongo $FFEAD_CPP_PATH/lib
+cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldmongo.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+$IROOT/nginxfc/sbin/nginx > ffead.log 2>&1

+ 16 - 0
frameworks/C++/ffead-cpp/setup-postgresql.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+
+fw_depends ffead-cpp
+
+export FFEAD_CPP_PATH=$TROOT/ffead-cpp-2.0
+export LD_LIBRARY_PATH=$IROOT:$FFEAD_CPP_PATH/lib:$LD_LIBRARY_PATH
+echo $FFEAD_CPP_PATH
+echo $LD_LIBRARY_PATH
+rm -f $FFEAD_CPP_PATH/*.cntrl
+rm -f $FFEAD_CPP_PATH/tmp/*.sess
+cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormpostgresql.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+rm -rf $FFEAD_CPP_PATH/lib
+cp -Rf $FFEAD_CPP_PATH/libsql $FFEAD_CPP_PATH/lib
+cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldsql.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
+$TROOT/ffead-cpp-2.0/CHS $FFEAD_CPP_PATH > ffead.log 2>&1
+

+ 4 - 0
frameworks/C++/ffead-cpp/setup.sh

@@ -8,5 +8,9 @@ echo $FFEAD_CPP_PATH
 echo $LD_LIBRARY_PATH
 rm -f $FFEAD_CPP_PATH/*.cntrl
 rm -f $FFEAD_CPP_PATH/tmp/*.sess
+cp $FFEAD_CPP_PATH/web/te-benchmark/config/sdormmongo.xml $FFEAD_CPP_PATH/web/te-benchmark/config/sdorm.xml
+rm -rf $FFEAD_CPP_PATH/lib
+cp -Rf $FFEAD_CPP_PATH/libmongo $FFEAD_CPP_PATH/lib
+cp $FFEAD_CPP_PATH/web/te-benchmark/sql-src/TeBkWorldmongo.h $FFEAD_CPP_PATH/web/te-benchmark/include/TeBkWorld.h
 $TROOT/ffead-cpp-2.0/CHS $FFEAD_CPP_PATH > ffead.log 2>&1
 

+ 10 - 0
toolset/benchmark/benchmarker.py

@@ -125,6 +125,7 @@ class Benchmarker:
     self.__setup_server()
     self.__setup_database()
     self.__setup_client()
+    self.__setup_misc()    
 
     ## Check if wrk (and wrk-pipeline) is installed and executable, if not, raise an exception
     #if not (os.access("/usr/local/bin/wrk", os.X_OK) and os.access("/usr/local/bin/wrk-pipeline", os.X_OK)):
@@ -377,6 +378,15 @@ class Benchmarker:
   # End __setup_server
   ############################################################
 
+  ############################################################
+  # Clean up any processes that run with root privileges
+  ############################################################
+  def __setup_misc(self):
+    p = subprocess.Popen(self.database_ssh_string, stdin=subprocess.PIPE, shell=True)
+    p.communicate("""
+      sudo /etc/init.d/apache2 stop
+    """)
+
   ############################################################
   # Makes any necessary changes to the database machine that
   # should be made before running the tests. Is very similar

+ 26 - 8
toolset/setup/linux/frameworks/ffead-cpp-apache.sh

@@ -3,20 +3,39 @@
 RETCODE=$(fw_exists ${IROOT}/ffead-cpp-apache.installed)
 [ ! "$RETCODE" == 0 ] || { return 0; }
 
-sudo apt-get install -y uuid-dev unixodbc unixodbc-dev
+fw_get -o unixODBC-2.3.4.tar.gz ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz
+fw_untar unixODBC-2.3.4.tar.gz
+cd unixODBC-2.3.4
+./configure --enable-stats=no --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --sysconfdir=/etc
+sudo make install
 
-fw_get -o ffead-cpp-2.0.tar.gz https://github.com/sumeetchhetri/ffead-cpp/releases/download/v2.0-Draft-TLV-Fixed-TE_Benchmark/ffead-cpp-2.0-tlfixed-bin.tar.gz
+sudo apt-get install build-essential
+sudo apt-get install -y uuid-dev libmyodbc odbc-postgresql
+
+#fw_get -o ffead-cpp-2.0.tar.gz https://github.com/sumeetchhetri/ffead-cpp/releases/download/2.0/ffead-cpp-2.0-te-bin.tar.gz
+fw_get -o ffead-cpp-2.0.tar.gz http://localhost:8000/ffead-cpp-2.0-te-bin.tar.gz
 fw_untar ffead-cpp-2.0.tar.gz
 
-sudo rm -rf /var/www/ffead-cpp-2.0-bin
+sudo rm -rf /var/www/ffead-cpp-2.0
 sudo cp -R ffead-cpp-2.0-bin/ /var/www
 sudo mv /var/www/ffead-cpp-2.0-bin /var/www/ffead-cpp-2.0
 rm -rf ffead-cpp-2.0/
 
-wget https://github.com/mongodb/mongo-c-driver/releases/download/1.1.10/mongo-c-driver-1.1.10.tar.gz
-tar -xzf mongo-c-driver-1.1.10.tar.gz
-cd mongo-c-driver-1.1.10/
-./configure --prefix=${IROOT} --libdir=${IROOT}
+sudo sed -i 's|localhost|'${DBHOST}'|g' ${TROOT}/ffead-cpp-2.0/web/te-benchmark/config/sdorm*
+
+sudo rm -f /etc/odbcinst.ini
+sudo rm -f /etc/odbc.ini
+
+sudo cp ${TROOT}/ffead-cpp-2.0/resources/sample-odbcinst.ini /etc/odbcinst.ini
+sudo cp ${TROOT}/ffead-cpp-2.0/resources/sample-odbc.ini /etc/odbc.ini
+
+sudo sed -i 's|localhost|'${DBHOST}'|g' /etc/odbc.ini
+
+#fw_get -o mongo-c-driver-1.4.0.tar.gz https://github.com/mongodb/mongo-c-driver/releases/download/1.4.0/mongo-c-driver-1.4.0.tar.gz
+fw_get -o mongo-c-driver-1.4.0.tar.gz http://localhost:8000/mongo-c-driver-1.4.0.tar.gz
+fw_untar mongo-c-driver-1.4.0.tar.gz
+cd mongo-c-driver-1.4.0/
+./configure --prefix=${IROOT} --libdir=${IROOT} --disable-automatic-init-and-cleanup
 make && sudo make install
 
 FFEADROOT=/var/www/ffead-cpp-2.0
@@ -49,7 +68,6 @@ FFEAD_CPP_PATH '"${FFEADROOT}"'
 </VirtualHost>
 EOL'
 
-sudo adduser testrunner www-data
 sudo chown -R www-data:www-data ${FFEADROOT}
 sudo chmod -R g+rw ${FFEADROOT}
 

+ 51 - 0
toolset/setup/linux/frameworks/ffead-cpp-nginx.sh

@@ -0,0 +1,51 @@
+#!/bin/bash
+
+RETCODE=$(fw_exists ${IROOT}/ffead-cpp-nginx.installed)
+[ ! "$RETCODE" == 0 ] || { return 0; }
+
+fw_get -o unixODBC-2.3.4.tar.gz ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz
+fw_untar unixODBC-2.3.4.tar.gz
+cd unixODBC-2.3.4
+./configure --enable-stats=no --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --sysconfdir=/etc
+sudo make install
+
+sudo apt-get install build-essential
+sudo apt-get install -y uuid-dev libmyodbc odbc-postgresql
+
+#fw_get -o ffead-cpp-2.0.tar.gz https://github.com/sumeetchhetri/ffead-cpp/releases/download/2.0/ffead-cpp-2.0-te-bin.tar.gz
+fw_get -o ffead-cpp-2.0.tar.gz http://localhost:8000/ffead-cpp-2.0-te-bin.tar.gz
+fw_untar ffead-cpp-2.0.tar.gz
+
+sudo rm -rf ${TROOT}/ffead-cpp-2.0
+cp -R ffead-cpp-2.0-bin/ ${TROOT}
+mv ${TROOT}/ffead-cpp-2.0-bin ${TROOT}/ffead-cpp-2.0
+rm -rf ffead-cpp-2.0/
+
+fw_get -o nginx-1.11.3.tar.gz http://nginx.org/download/nginx-1.11.3.tar.gz
+fw_untar nginx-1.11.3.tar.gz
+sudo rm -rf ${IROOT}/nginxfc
+cd nginx-1.11.3
+./configure --prefix=${IROOT}/nginxfc --with-ld-opt="-lstdc++ -L${TROOT}/ffead-cpp-2.0/lib -L${IROOT}" --add-module="${TROOT}/ffead-cpp-2.0/ngx_mod" --with-cc-opt="-I${IROOT}/include/libmongoc-1.0/ -I${IROOT}/include/libbson-1.0/ -I${TROOT}/ffead-cpp-2.0/include -w -fpermissive"
+make install
+
+sed -i 's|localhost|'${DBHOST}'|g' ${TROOT}/ffead-cpp-2.0/web/te-benchmark/config/sdorm*
+
+sudo rm -f /etc/odbcinst.ini
+sudo rm -f /etc/odbc.ini
+
+sudo cp ${TROOT}/ffead-cpp-2.0/resources/sample-odbcinst.ini /etc/odbcinst.ini
+sudo cp ${TROOT}/ffead-cpp-2.0/resources/sample-odbc.ini /etc/odbc.ini
+
+sudo sed -i 's|localhost|'${DBHOST}'|g' /etc/odbc.ini
+
+#fw_get -o mongo-c-driver-1.4.0.tar.gz https://github.com/mongodb/mongo-c-driver/releases/download/1.4.0/mongo-c-driver-1.4.0.tar.gz
+fw_get -o mongo-c-driver-1.4.0.tar.gz http://localhost:8000/mongo-c-driver-1.4.0.tar.gz
+fw_untar mongo-c-driver-1.4.0.tar.gz
+cd mongo-c-driver-1.4.0/
+./configure --prefix=${IROOT} --libdir=${IROOT} --disable-automatic-init-and-cleanup
+make && sudo make install
+
+cp ${TROOT}/ffead-cpp-2.0/ngx_mod/nginx.conf ${IROOT}/nginxfc/conf/
+sed -i 's|FFEAD_PATH|'${TROOT}/ffead-cpp-2.0'|g' ${IROOT}/nginxfc/conf/nginx.conf
+
+touch ${IROOT}/ffead-cpp-nginx.installed

+ 28 - 7
toolset/setup/linux/frameworks/ffead-cpp.sh

@@ -3,12 +3,22 @@
 RETCODE=$(fw_exists ${IROOT}/ffead-cpp.installed)
 [ ! "$RETCODE" == 0 ] || { return 0; }
 
-sudo apt-get install -y uuid-dev unixodbc unixodbc-dev
+sudo apt-get remove libodbc1 unixodbc unixodbc-dev
 
-fw_get -o ffead-cpp-2.0.tar.gz https://github.com/sumeetchhetri/ffead-cpp/releases/download/v2.0-Draft-TLV-Fixed-TE_Benchmark/ffead-cpp-2.0-tlfixed-bin.tar.gz
+fw_get -o unixODBC-2.3.4.tar.gz ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz
+fw_untar unixODBC-2.3.4.tar.gz
+cd unixODBC-2.3.4
+./configure --enable-stats=no --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --sysconfdir=/etc
+sudo make install
+
+sudo apt-get install build-essential
+sudo apt-get install -y uuid-dev libmyodbc odbc-postgresql
+
+#fw_get -o ffead-cpp-2.0.tar.gz https://github.com/sumeetchhetri/ffead-cpp/releases/download/2.0/ffead-cpp-2.0-te-bin.tar.gz
+fw_get -o ffead-cpp-2.0.tar.gz http://localhost:8000/ffead-cpp-2.0-te-bin.tar.gz
 fw_untar ffead-cpp-2.0.tar.gz
 
-rm -rf ${TROOT}/ffead-cpp-2.0-bin
+sudo rm -rf ${TROOT}/ffead-cpp-2.0
 cp -R ffead-cpp-2.0-bin/ ${TROOT}
 mv ${TROOT}/ffead-cpp-2.0-bin ${TROOT}/ffead-cpp-2.0
 rm -rf ffead-cpp-2.0/
@@ -16,10 +26,21 @@ rm -rf ffead-cpp-2.0/
 sudo chown -R testrunner:testrunner ${TROOT}/ffead-cpp-2.0
 sudo chmod -R g+rw ${TROOT}/ffead-cpp-2.0
 
-wget https://github.com/mongodb/mongo-c-driver/releases/download/1.1.10/mongo-c-driver-1.1.10.tar.gz
-tar -xzf mongo-c-driver-1.1.10.tar.gz
-cd mongo-c-driver-1.1.10/
-./configure --prefix=${IROOT} --libdir=${IROOT}
+sudo sed -i 's|localhost|'${DBHOST}'|g' ${TROOT}/ffead-cpp-2.0/web/te-benchmark/config/sdorm*
+
+sudo rm -f /etc/odbcinst.ini
+sudo rm -f /etc/odbc.ini
+
+sudo cp ${TROOT}/ffead-cpp-2.0/resources/sample-odbcinst.ini /etc/odbcinst.ini
+sudo cp ${TROOT}/ffead-cpp-2.0/resources/sample-odbc.ini /etc/odbc.ini
+
+sudo sed -i 's|localhost|'${DBHOST}'|g' /etc/odbc.ini
+
+#fw_get -o mongo-c-driver-1.4.0.tar.gz https://github.com/mongodb/mongo-c-driver/releases/download/1.4.0/mongo-c-driver-1.4.0.tar.gz
+fw_get -o mongo-c-driver-1.4.0.tar.gz http://localhost:8000/mongo-c-driver-1.4.0.tar.gz
+fw_untar mongo-c-driver-1.4.0.tar.gz
+cd mongo-c-driver-1.4.0/
+./configure --prefix=${IROOT} --libdir=${IROOT} --disable-automatic-init-and-cleanup
 make && sudo make install
 
 touch ${IROOT}/ffead-cpp.installed