瀏覽代碼

Docker c++ wt & treefrog (#3383)

* Docker c++/wt and c++/treefrog

* Docker c++/wt and c++/treefrog
Nate 7 年之前
父節點
當前提交
0830f8ea36

+ 2 - 2
.travis.yml

@@ -25,9 +25,9 @@ env:
     # - "TESTDIR=C++/cpoll_cppsp"
     # - "TESTDIR=C++/cutelyst"
     # - "TESTDIR=C++/silicon"
-    # - "TESTDIR=C++/treefrog"
+     - "TESTDIR=C++/treefrog"
     # - "TESTDIR=C++/ulib"
-    # - "TESTDIR=C++/wt"
+     - "TESTDIR=C++/wt"
     # - "TESTDIR=C++/poco"
     # - "TESTDIR=C++/luna"
      - "TESTDIR=Clojure/aleph"

+ 0 - 4
frameworks/C++/treefrog/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "treefrog",
   "tests": [{
     "default": {
-      "setup_file": "setup-thread",
       "json_url": "/json/json",
       "db_url": "/world/random",
       "query_url": "/world/queries/",
@@ -25,7 +24,6 @@
       "versus": ""
     },
     "hybrid": {
-      "setup_file": "setup",
       "json_url": "/json/json",
       "db_url": "/world/random",
       "query_url": "/world/queries/",
@@ -49,7 +47,6 @@
       "versus": "treefrog"
     },
     "postgres": {
-      "setup_file": "setup-postgres",
       "json_url": "/json/json",
       "db_url": "/world/random",
       "query_url": "/world/queries/",
@@ -73,7 +70,6 @@
       "versus": ""
     },
     "mongodb": {
-      "setup_file": "setup-mongodb",
       "json_url": "/json/json",
       "db_url": "/world/mrandom",
       "query_url": "/world/mqueries/",

+ 0 - 20
frameworks/C++/treefrog/setup-mongodb.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/database.ini
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/mongodb.ini
-sed -i 's|DriverType=.*|DriverType=QMYSQL|g' config/database.ini
-sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=thread|g' config/application.ini
-
-fw_depends mongodb treefrog
-
-# 1. Generate Makefile
-qmake -r CONFIG+=release
-
-# 2. Compile applicaton
-make
-
-# 3. Clean log files
-rm -f log/*.log
-
-# 4. Start TreeFrog
-treefrog -d $TROOT

+ 0 - 20
frameworks/C++/treefrog/setup-postgres.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/database.ini
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/mongodb.ini
-sed -i 's|DriverType=.*|DriverType=QPSQL|g' config/database.ini
-sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=thread|g' config/application.ini
-
-fw_depends postgresql treefrog
-
-# 1. Generate Makefile
-qmake -r CONFIG+=release
-
-# 2. Compile applicaton
-make
-
-# 3. Clean log files
-rm -f log/*.log
-
-# 4. Start TreeFrog
-treefrog -d $TROOT

+ 0 - 20
frameworks/C++/treefrog/setup-thread.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/database.ini
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/mongodb.ini
-sed -i 's|DriverType=.*|DriverType=QMYSQL|g' config/database.ini
-sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=thread|g' config/application.ini
-
-fw_depends mysql treefrog
-
-# 1. Generate Makefile
-qmake -r CONFIG+=release
-
-# 2. Compile applicaton
-make
-
-# 3. Clean log files
-rm -f log/*.log
-
-# 4. Start TreeFrog
-treefrog -d $TROOT

+ 0 - 20
frameworks/C++/treefrog/setup.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/database.ini
-sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/mongodb.ini
-sed -i 's|DriverType=.*|DriverType=QMYSQL|g' config/database.ini
-sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=hybrid|g' config/application.ini
-
-fw_depends mysql treefrog
-
-# 1. Generate Makefile
-qmake -r CONFIG+=release
-
-# 2. Compile applicaton
-make
-
-# 3. Clean log files
-rm -f log/*.log
-
-# 4. Start TreeFrog
-treefrog -d $TROOT

+ 24 - 0
frameworks/C++/treefrog/treefrog-base.dockerfile

@@ -0,0 +1,24 @@
+FROM tfb/base:latest
+
+ENV TFVER=1.19.0
+
+RUN apt install -yqq g++ gcc libjemalloc-dev qt5-qmake qt5-default qtbase5-dev \
+    qtbase5-dev-tools libqt5sql5 libqt5sql5-mysql libqt5sql5-psql libqt5qml5 libqt5xml5 \
+    qtdeclarative5-dev libqt5quick5 libqt5quickparticles5 libqt5gui5 libqt5printsupport5 \
+    libqt5widgets5 libqt5opengl5-dev libqt5quicktest5
+
+RUN wget https://github.com/treefrogframework/treefrog-framework/archive/v${TFVER}.tar.gz
+RUN tar xvf v${TFVER}.tar.gz
+RUN cd treefrog-framework-${TFVER} && \
+    ./configure && \
+    cd src && \
+    make -j4 && \
+    make install && \
+    cd ../tools && \
+    make -j4 && \
+    make install
+
+COPY ./ ./
+
+RUN sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/database.ini
+RUN sed -i 's|HostName=.*|HostName='"$DBHOST"'|g' config/mongodb.ini

+ 13 - 0
frameworks/C++/treefrog/treefrog-hybrid.dockerfile

@@ -0,0 +1,13 @@
+FROM tfb/treefrog-base:latest
+
+RUN sed -i 's|DriverType=.*|DriverType=QMYSQL|g' config/database.ini
+RUN sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=hybrid|g' config/application.ini
+
+# 1. Generate Makefile
+RUN qmake -r CONFIG+=release
+
+# 2. Compile applicaton
+RUN make
+
+# 3. Start TreeFrog
+CMD treefrog /

+ 13 - 0
frameworks/C++/treefrog/treefrog-mongodb.dockerfile

@@ -0,0 +1,13 @@
+FROM tfb/treefrog-base:latest
+
+RUN sed -i 's|DriverType=.*|DriverType=QMYSQL|g' config/database.ini
+RUN sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=thread|g' config/application.ini
+
+# 1. Generate Makefile
+RUN qmake -r CONFIG+=release
+
+# 2. Compile applicaton
+RUN make
+
+# 3. Start TreeFrog
+CMD treefrog /

+ 13 - 0
frameworks/C++/treefrog/treefrog-postgres.dockerfile

@@ -0,0 +1,13 @@
+FROM tfb/treefrog-base:latest
+
+RUN sed -i 's|DriverType=.*|DriverType=QPSQL|g' config/database.ini
+RUN sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=thread|g' config/application.ini
+
+# 1. Generate Makefile
+RUN qmake -r CONFIG+=release
+
+# 2. Compile applicaton
+RUN make
+
+# 3. Start TreeFrog
+CMD treefrog /

+ 13 - 0
frameworks/C++/treefrog/treefrog.dockerfile

@@ -0,0 +1,13 @@
+FROM tfb/treefrog-base:latest
+
+RUN sed -i 's|DriverType=.*|DriverType=QMYSQL|g' config/database.ini
+RUN sed -i 's|MultiProcessingModule=.*|MultiProcessingModule=thread|g' config/application.ini
+
+# 1. Generate Makefile
+RUN qmake -r CONFIG+=release
+
+# 2. Compile applicaton
+RUN make
+
+# 3. Start TreeFrog
+CMD treefrog /

+ 0 - 2
frameworks/C++/wt/.gitignore

@@ -1,2 +0,0 @@
-/benchmark.wt
-/benchmark_postgres.wt

+ 2 - 4
frameworks/C++/wt/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "wt",
   "tests": [{
      "default": {
-     	"setup_file": "setup",
      	"json_url": "/json",
      	"db_url": "/db",
      	"query_url": "/queries?queries=",
@@ -26,7 +25,6 @@
           "versus": "wt"
      },
      "postgres": {
-     	"setup_file": "setup_postgres",
      	"db_url": "/db",
      	"query_url": "/queries?queries=",
      	"fortune_url": "/fortune",
@@ -37,7 +35,7 @@
      	"database": "Postgres",
      	"framework": "wt",
      	"language": "C++",
-          "flavor": "None",
+        "flavor": "None",
      	"orm": "Full",
      	"platform": "None",
      	"webserver": "None",
@@ -45,7 +43,7 @@
      	"database_os": "Linux",
      	"display_name": "wt-postgres",
      	"notes": "",
-          "versus": "wt"
+        "versus": "wt"
      }
   }]
 }

+ 55 - 0
frameworks/C++/wt/wt-base.dockerfile

@@ -0,0 +1,55 @@
+FROM tfb/gcc-6:latest
+
+ENV WT_VERSION=4.0.2
+ENV BOOST_ROOT=${IROOT}/boost
+ENV BOOST_INC=${BOOST_ROOT}/include
+ENV BOOST_LIB=${BOOST_ROOT}/lib
+ENV WT_ROOT=${IROOT}/wt
+ENV WT_LIB=${WT_ROOT}/lib
+ENV WT_INC=${WT_ROOT}/include
+ENV LD_LIBRARY_PATH="${BOOST_LIB}:${WT_LIB}:${LD_LIBRARY_PATH}"
+ENV CPLUS_INCLUDE_PATH=/usr/include/postgresql:/usr/include/postgresql/9.3/server:$CPLUS_INCLUDE_PATH
+
+# Install CMake 3.x
+RUN apt-add-repository --yes ppa:george-edison55/cmake-3.x
+RUN apt-get update -qq
+RUN apt-get install -qqy cmake
+
+# Build boost_thread, boost_system, boost_filesystem and boost_program_options
+RUN wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz
+RUN tar xvf boost_1_65_1.tar.gz
+RUN cd boost_1_65_1 && \
+    ./bootstrap.sh && \
+    ./b2 \
+      -d0 \
+      toolset=gcc-6 \
+      variant=release \
+      link=static \
+      cxxflags="-std=c++14 -march=native" \
+      cflags="-march=native" \
+      --prefix=${BOOST_ROOT} \
+      --with-system \
+      --with-thread \
+      --with-program_options \
+      --with-filesystem \
+      install
+
+RUN wget https://github.com/emweb/wt/archive/$WT_VERSION.tar.gz
+RUN mv $WT_VERSION.tar.gz wt-$WT_VERSION.tar.gz
+RUN tar xvf wt-$WT_VERSION.tar.gz
+
+RUN cd wt-$WT_VERSION && \
+    mkdir -p build && \
+    cd build && \
+    cmake .. -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release \
+      -DBOOST_PREFIX=${BOOST_ROOT} \
+      -DCMAKE_INSTALL_PREFIX=${IROOT}/wt -DCONFIGDIR=${IROOT}/wt/etc \
+      -DCMAKE_C_COMPILER=$(which gcc-6) \
+      -DCMAKE_CXX_COMPILER=$(which g++-6) -DDESTDIR=${IROOT}/wt \
+      -DWEBUSER=$(id -u -n) -DWEBGROUP=$(id -g -n) \
+      -DENABLE_SSL=OFF -DHTTP_WITH_ZLIB=OFF \
+      -DCMAKE_C_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \
+      -DCMAKE_CXX_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \
+      -DBUILD_TESTS=OFF -DENABLE_LIBWTTEST=OFF \
+      -DSHARED_LIBS=OFF && \
+    make && make install

+ 6 - 4
frameworks/C++/wt/setup_postgres.sh → frameworks/C++/wt/wt-postgres.dockerfile

@@ -1,8 +1,8 @@
-#!/bin/bash
+FROM tfb/wt-base:latest
 
-fw_depends wt
+COPY ./ ./
 
-g++-6 \
+RUN g++-6 \
   -std=c++14 \
   -O3 -march=native -DNDEBUG \
   -I${BOOST_INC} \
@@ -21,4 +21,6 @@ g++-6 \
   -lpthread \
   -lpq
 
-./te-benchmark-pg.wt -c wt_config.xml -t ${CPU_COUNT} --docroot . --approot . --http-listen 0.0.0.0:8080 --accesslog=- --no-compression
+ENV DBHOST=TFB-database
+
+CMD ./te-benchmark-pg.wt -c wt_config.xml -t ${CPU_COUNT} --docroot . --approot . --http-listen 0.0.0.0:8080 --accesslog=- --no-compression

+ 6 - 4
frameworks/C++/wt/setup.sh → frameworks/C++/wt/wt.dockerfile

@@ -1,8 +1,8 @@
-#!/bin/bash
+FROM tfb/wt-base:latest
 
-fw_depends wt
+COPY ./ ./
 
-g++-6 \
+RUN g++-6 \
   -std=c++14 \
   -O3 -march=native -DNDEBUG \
   -I${BOOST_INC} \
@@ -20,4 +20,6 @@ g++-6 \
   -lpthread \
   -lmysqlclient
 
-./te-benchmark.wt -c wt_config.xml -t ${CPU_COUNT} --docroot . --approot . --http-listen 0.0.0.0:8080 --accesslog=- --no-compression
+ENV DBHOST=TFB-database
+
+CMD ./te-benchmark.wt -c wt_config.xml -t ${CPU_COUNT} --docroot . --approot . --http-listen 0.0.0.0:8080 --accesslog=- --no-compression

+ 0 - 27
toolset/setup/linux/frameworks/treefrog.sh

@@ -1,27 +0,0 @@
-#!/bin/bash
-
-fw_installed treefrog && return 0
-
-TFVER=1.19.0
-
-sudo apt-get update -qq
-sudo apt-get install -y g++ gcc libjemalloc-dev
-sudo apt-get install -y qt5-qmake qt5-default qtbase5-dev qtbase5-dev-tools libqt5sql5 libqt5sql5-mysql libqt5sql5-psql libqt5qml5 libqt5xml5 qtdeclarative5-dev libqt5quick5 libqt5quickparticles5 libqt5gui5 libqt5printsupport5 libqt5widgets5 libqt5opengl5-dev libqt5quicktest5
-fw_get -O https://github.com/treefrogframework/treefrog-framework/archive/v${TFVER}.tar.gz
-fw_untar v${TFVER}.tar.gz
-cd treefrog-framework-${TFVER}
-# TODO: Someday we can try this... I couldn't get it working
-#./configure --prefix=$IROOT/treefrog
-./configure
-
-cd src
-make -j4
-sudo make install
-
-cd ../tools
-make -j4
-sudo make install
-
-echo "" > $IROOT/treefrog.installed
-
-source $IROOT/treefrog.installed

+ 0 - 76
toolset/setup/linux/frameworks/wt.sh

@@ -1,76 +0,0 @@
-#!/bin/bash
-
-fw_depends postgresql mysql gcc-6
-
-fw_installed wt && return 0
-
-WT_VERSION=4.0.2
-BOOST_ROOT=${IROOT}/boost
-BOOST_INC=${BOOST_ROOT}/include
-BOOST_LIB=${BOOST_ROOT}/lib
-WT_ROOT=${IROOT}/wt
-WT_LIB=${WT_ROOT}/lib
-WT_INC=${WT_ROOT}/include
-LD_LIBRARY_PATH="${BOOST_LIB}:${WT_LIB}:${LD_LIBRARY_PATH}"
-CPLUS_INCLUDE_PATH=/usr/include/postgresql:/usr/include/postgresql/9.3/server:$CPLUS_INCLUDE_PATH
-
-# Install CMake 3.x
-sudo apt-add-repository --yes ppa:george-edison55/cmake-3.x
-sudo apt-get update -qq
-
-sudo apt-get install -qqy \
-  cmake
-
-# Build boost_thread, boost_system, boost_filesystem and boost_program_options
-fw_get -o boost_1_65_1.tar.gz https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz
-fw_untar boost_1_65_1.tar.gz
-cd boost_1_65_1
-./bootstrap.sh
-./b2 \
-  -d0 \
-  toolset=gcc-6 \
-  variant=release \
-  link=static \
-  cxxflags="-std=c++14 -march=native" \
-  cflags="-march=native" \
-  --prefix=${BOOST_ROOT} \
-  --with-system \
-  --with-thread \
-  --with-program_options \
-  --with-filesystem \
-  install
-cd ..
-
-fw_get -O https://github.com/emweb/wt/archive/$WT_VERSION.tar.gz
-mv $WT_VERSION.tar.gz wt-$WT_VERSION.tar.gz
-fw_untar wt-$WT_VERSION.tar.gz
-
-cd wt-$WT_VERSION
-mkdir -p build
-cd build
-cmake .. -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Release \
-  -DBOOST_PREFIX=${BOOST_ROOT} \
-  -DCMAKE_INSTALL_PREFIX=${IROOT}/wt -DCONFIGDIR=${IROOT}/wt/etc \
-  -DCMAKE_C_COMPILER=$(which gcc-6) \
-  -DCMAKE_CXX_COMPILER=$(which g++-6) -DDESTDIR=${IROOT}/wt \
-  -DWEBUSER=$(id -u -n) -DWEBGROUP=$(id -g -n) \
-  -DENABLE_SSL=OFF -DHTTP_WITH_ZLIB=OFF \
-  -DCMAKE_C_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \
-  -DCMAKE_CXX_FLAGS_RELEASE="-O3 -march=native -DNDEBUG" \
-  -DBUILD_TESTS=OFF -DENABLE_LIBWTTEST=OFF \
-  -DSHARED_LIBS=OFF
-make
-make install
-
-cd $IROOT
-
-echo "export BOOST_ROOT=${BOOST_ROOT}" > $IROOT/wt.installed
-echo "export BOOST_INC=${BOOST_INC}" >> $IROOT/wt.installed
-echo "export BOOST_LIB=${BOOST_LIB}" >> $IROOT/wt.installed
-echo "export WT_ROOT=${WT_ROOT}" >> $IROOT/wt.installed
-echo "export WT_LIB=${WT_LIB}" >> $IROOT/wt.installed
-echo "export WT_INC=${WT_INC}" >> $IROOT/wt.installed
-echo -e "export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:\$LD_LIBRARY_PATH" >> $IROOT/wt.installed
-echo -e "export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}:\$CPLUS_INCLUDE_PATH" >> $IROOT/wt.installed
-
-source $IROOT/wt.installed