فهرست منبع

Cutelyst 2 on docker (#3445)

* Cutelyst 2 on docker

* cutelyst: Add more dockerfiles

* cutelyst: Fix Nginx tests

* cutelyst: uncomment .travis.yml
Daniel Nicoletti 7 سال پیش
والد
کامیت
9c0be72d64
43فایلهای تغییر یافته به همراه360 افزوده شده و 408 حذف شده
  1. 1 1
      .travis.yml
  2. 0 29
      frameworks/C++/cutelyst/CMakeLists.txt
  3. 18 73
      frameworks/C++/cutelyst/benchmark_config.json
  4. 0 79
      frameworks/C++/cutelyst/config.sh
  5. 19 0
      frameworks/C++/cutelyst/cutelyst-benchmark-app.dockerfile
  6. 19 0
      frameworks/C++/cutelyst/cutelyst-deps.dockerfile
  7. 16 0
      frameworks/C++/cutelyst/cutelyst-framework.dockerfile
  8. 12 0
      frameworks/C++/cutelyst/cutelyst-nginx-base.dockerfile
  9. 17 0
      frameworks/C++/cutelyst/cutelyst-nginx-my.dockerfile
  10. 17 0
      frameworks/C++/cutelyst/cutelyst-nginx-pg.dockerfile
  11. 14 0
      frameworks/C++/cutelyst/cutelyst-nginx.dockerfile
  12. 19 0
      frameworks/C++/cutelyst/cutelyst-pf-my-nodelay.dockerfile
  13. 18 0
      frameworks/C++/cutelyst/cutelyst-pf-my.dockerfile
  14. 15 0
      frameworks/C++/cutelyst/cutelyst-pf-nodelay.dockerfile
  15. 19 0
      frameworks/C++/cutelyst/cutelyst-pf-pg-nodelay.dockerfile
  16. 17 0
      frameworks/C++/cutelyst/cutelyst-pf-pg.dockerfile
  17. 18 0
      frameworks/C++/cutelyst/cutelyst-thread-my-nodelay.dockerfile
  18. 17 0
      frameworks/C++/cutelyst/cutelyst-thread-my.dockerfile
  19. 15 0
      frameworks/C++/cutelyst/cutelyst-thread-nodelay.dockerfile
  20. 18 0
      frameworks/C++/cutelyst/cutelyst-thread-pg-nodelay.dockerfile
  21. 17 0
      frameworks/C++/cutelyst/cutelyst-thread-pg.dockerfile
  22. 14 0
      frameworks/C++/cutelyst/cutelyst-thread.dockerfile
  23. 14 0
      frameworks/C++/cutelyst/cutelyst.dockerfile
  24. 0 10
      frameworks/C++/cutelyst/setup_pf.sh
  25. 0 11
      frameworks/C++/cutelyst/setup_pf_epoll.sh
  26. 0 10
      frameworks/C++/cutelyst/setup_pf_my.sh
  27. 0 11
      frameworks/C++/cutelyst/setup_pf_my_epoll.sh
  28. 0 10
      frameworks/C++/cutelyst/setup_pf_pg.sh
  29. 0 11
      frameworks/C++/cutelyst/setup_pf_pg_epoll.sh
  30. 0 10
      frameworks/C++/cutelyst/setup_thread.sh
  31. 0 11
      frameworks/C++/cutelyst/setup_thread_epoll.sh
  32. 0 11
      frameworks/C++/cutelyst/setup_thread_epoll_half.sh
  33. 0 10
      frameworks/C++/cutelyst/setup_thread_my.sh
  34. 0 11
      frameworks/C++/cutelyst/setup_thread_my_epoll.sh
  35. 0 10
      frameworks/C++/cutelyst/setup_thread_pg.sh
  36. 0 11
      frameworks/C++/cutelyst/setup_thread_pg_epoll.sh
  37. 0 11
      frameworks/C++/cutelyst/setup_thread_pg_epoll_half.sh
  38. 0 10
      frameworks/C++/cutelyst/setup_uwsgi_nginx.sh
  39. 0 10
      frameworks/C++/cutelyst/setup_uwsgi_nginx_my.sh
  40. 0 10
      frameworks/C++/cutelyst/setup_uwsgi_nginx_pg.sh
  41. 0 1
      frameworks/C++/cutelyst/source_code
  42. 26 0
      frameworks/C++/cutelyst/src/CMakeLists.txt
  43. 0 47
      toolset/setup/linux/frameworks/cutelyst.sh

+ 1 - 1
.travis.yml

@@ -21,7 +21,7 @@ env:
     # - "TESTDIR=C++/cppcms"
     # - "TESTDIR=C++/ffead-cpp"
     # - "TESTDIR=C++/cpoll_cppsp"
-    # - "TESTDIR=C++/cutelyst"
+     - "TESTDIR=C++/cutelyst"
      - "TESTDIR=C++/silicon"
      - "TESTDIR=C++/treefrog"
     # - "TESTDIR=C++/ulib"

+ 0 - 29
frameworks/C++/cutelyst/CMakeLists.txt

@@ -1,29 +0,0 @@
-project(cutelyst_benchmarks)
-
-cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
-if (POLICY CMP0043)
-  cmake_policy(SET CMP0043 NEW)
-endif()
-
-find_package(Qt5 COMPONENTS Core Network Sql REQUIRED)
-find_package(CutelystQt5 REQUIRED)
-
-# Auto generate moc files
-set(CMAKE_AUTOMOC ON)
-
-# As moc files are generated in the binary dir, tell CMake
-# to always look for includes there:
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-# Enable C++11 features
-add_definitions(-std=c++11)
-
-include_directories(
-    ${CMAKE_SOURCE_DIR}
-    ${CMAKE_CURRENT_BINARY_DIR}
-    ${CutelystQt5_INCLUDE_DIR}
-)
-
-file(GLOB_RECURSE TEMPLATES_SRC root/*)
-
-add_subdirectory(src)

+ 18 - 73
frameworks/C++/cutelyst/benchmark_config.json

@@ -2,7 +2,6 @@
     "framework": "cutelyst",
     "tests": [{
             "default": {
-                "setup_file": "setup_pf",
                 "json_url": "/json",
                 "plaintext_url": "/plaintext",
                 "port": 8080,
@@ -20,8 +19,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "pf-postgres": {
-                "setup_file": "setup_pf_pg",
+            "pf-pg": {
                 "db_url": "/db_postgres",
                 "query_url": "/query_postgres?queries=",
                 "update_url": "/updates_postgres?queries=",
@@ -41,8 +39,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "pf-mysql": {
-                "setup_file": "setup_pf_my",
+            "pf-my": {
                 "db_url": "/db_mysql",
                 "query_url": "/query_mysql?queries=",
                 "update_url": "/updates_mysql?queries=",
@@ -63,7 +60,6 @@
                 "versus": ""
             },
             "thread": {
-                "setup_file": "setup_thread",
                 "json_url": "/json",
                 "plaintext_url": "/plaintext",
                 "port": 8080,
@@ -81,8 +77,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "thread-postgres-raw": {
-                "setup_file": "setup_thread_pg",
+            "thread-pg": {
                 "db_url": "/db_postgres",
                 "query_url": "/query_postgres?queries=",
                 "update_url": "/updates_postgres?queries=",
@@ -102,8 +97,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "thread-mysql-raw": {
-                "setup_file": "setup_thread_my",
+            "thread-my": {
                 "db_url": "/db_mysql",
                 "query_url": "/query_mysql?queries=",
                 "update_url": "/updates_mysql?queries=",
@@ -123,8 +117,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "pf-epoll": {
-                "setup_file": "setup_pf_epoll",
+            "pf-nodelay": {
                 "json_url": "/json",
                 "plaintext_url": "/plaintext",
                 "port": 8080,
@@ -138,12 +131,11 @@
                 "webserver": "None",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "cutelyst-pf-epoll",
+                "display_name": "cutelyst-pf-nodelay",
                 "notes": "",
                 "versus": ""
             },
-            "pf-postgres-epoll": {
-                "setup_file": "setup_pf_pg_epoll",
+            "pf-pg-nodelay": {
                 "db_url": "/db_postgres",
                 "query_url": "/query_postgres?queries=",
                 "update_url": "/updates_postgres?queries=",
@@ -159,12 +151,11 @@
                 "webserver": "None",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "cutelyst-pf-pg-epoll",
+                "display_name": "cutelyst-pf-pg-nodelay",
                 "notes": "",
                 "versus": ""
             },
-            "pf-mysql-epoll": {
-                "setup_file": "setup_pf_my_epoll",
+            "pf-my-nodelay": {
                 "db_url": "/db_mysql",
                 "query_url": "/query_mysql?queries=",
                 "update_url": "/updates_mysql?queries=",
@@ -180,12 +171,11 @@
                 "webserver": "None",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "cutelyst-pf-my-epoll",
+                "display_name": "cutelyst-pf-my-nodelay",
                 "notes": "",
                 "versus": ""
             },
-            "thread-epoll": {
-                "setup_file": "setup_thread_epoll",
+            "thread-nodelay": {
                 "json_url": "/json",
                 "plaintext_url": "/plaintext",
                 "port": 8080,
@@ -199,12 +189,11 @@
                 "webserver": "None",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "cutelyst-thr-epoll",
+                "display_name": "cutelyst-thr-nodelay",
                 "notes": "",
                 "versus": ""
             },
-            "thread-postgres-epoll": {
-                "setup_file": "setup_thread_pg_epoll",
+            "thread-pg-nodelay": {
                 "db_url": "/db_postgres",
                 "query_url": "/query_postgres?queries=",
                 "update_url": "/updates_postgres?queries=",
@@ -220,12 +209,11 @@
                 "webserver": "None",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "cutelyst-thr-pg-epoll",
+                "display_name": "cutelyst-thr-pg-nodelay",
                 "notes": "",
                 "versus": ""
             },
-            "thread-mysql-epoll": {
-                "setup_file": "setup_thread_my_epoll",
+            "thread-my-nodelay": {
                 "db_url": "/db_mysql",
                 "query_url": "/query_mysql?queries=",
                 "update_url": "/updates_mysql?queries=",
@@ -241,52 +229,11 @@
                 "webserver": "None",
                 "os": "Linux",
                 "database_os": "Linux",
-                "display_name": "cutelyst-thr-my-epoll",
-                "notes": "",
-                "versus": ""
-            },
-            "thread-epoll-half": {
-                "setup_file": "setup_thread_epoll_half",
-                "json_url": "/json",
-                "plaintext_url": "/plaintext",
-                "port": 8080,
-                "approach": "Realistic",
-                "classification": "Fullstack",
-                "database": "None",
-                "framework": "cutelyst",
-                "language": "C++",
-                "orm": "Raw",
-                "platform": "Qt",
-                "webserver": "None",
-                "os": "Linux",
-                "database_os": "Linux",
-                "display_name": "cutelyst-thr-epoll-half",
-                "notes": "",
-                "versus": ""
-            },
-            "thread-postgres-epoll-half": {
-                "setup_file": "setup_thread_pg_epoll_half",
-                "db_url": "/db_postgres",
-                "query_url": "/query_postgres?queries=",
-                "update_url": "/updates_postgres?queries=",
-                "fortune_url": "/fortunes_raw_postgres",
-                "port": 8080,
-                "approach": "Realistic",
-                "classification": "Fullstack",
-                "database": "Postgres",
-                "framework": "cutelyst",
-                "language": "C++",
-                "orm": "Raw",
-                "platform": "Qt",
-                "webserver": "None",
-                "os": "Linux",
-                "database_os": "Linux",
-                "display_name": "cutelyst-thr-pg-epoll-half",
+                "display_name": "cutelyst-thr-my-nodelay",
                 "notes": "",
                 "versus": ""
             },
             "nginx": {
-                "setup_file": "setup_uwsgi_nginx",
                 "json_url": "/json",
                 "plaintext_url": "/plaintext",
                 "port": 8080,
@@ -304,8 +251,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "nginx-postgres-raw": {
-                "setup_file": "setup_uwsgi_nginx_pg",
+            "nginx-pg": {
                 "db_url": "/db_postgres",
                 "query_url": "/query_postgres?queries=",
                 "update_url": "/updates_postgres?queries=",
@@ -325,8 +271,7 @@
                 "notes": "",
                 "versus": ""
             },
-            "nginx-mysql-raw": {
-                "setup_file": "setup_uwsgi_nginx_my",
+            "nginx-my": {
                 "db_url": "/db_mysql",
                 "query_url": "/query_mysql?queries=",
                 "update_url": "/updates_mysql?queries=",

+ 0 - 79
frameworks/C++/cutelyst/config.sh

@@ -1,79 +0,0 @@
-#!/bin/bash
-
-fw_depends cutelyst
-
-# configure
-# DRIVER
-# UWSGI
-# NGINX
-# PROCESS_OR_THREAD
-# CUTELYST_EVENT_LOOP_EPOLL
-
-echo DRIVER=${DRIVER}
-echo UWSGI=${UWSGI}
-echo NGINX=${NGINX}
-echo QT_VERSION_MM=${QT_VERSION_MM}
-echo CUTELYST_EVENT_LOOP_EPOLL=${CUTELYST_EVENT_LOOP_EPOLL}
-echo C_PROCESSES=${C_PROCESSES}
-echo C_THREADS=${C_THREADS}
-echo CPU_AFFINITY=${CPU_AFFINITY}
-
-if [ "${DRIVER}" == "QMYSQL" ]; then
-  fw_depends mysql
-elif [ "${DRIVER}" == "QPSQL" ]; then
-  fw_depends postgresql
-fi
-
-CROOT=${IROOT}/cutelyst
-
-mkdir -p ${CROOT}/benchmarks || true
-cd ${CROOT}/benchmarks
-
-# build
-export CMAKE_PREFIX_PATH=/opt/qt${QT_VERSION_MM}:${CROOT}
-cmake $TROOT -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$CROOT
-make -j $CPU_COUNT
-
-if [ -n "${UWSGI}" ]; then
-  cp -v ${TROOT}/config/config_socket.ini ${CROOT}/config.ini
-  SEND_DATE=true
-else
-  cp -v ${TROOT}/config/config.ini ${CROOT}/config.ini
-  SEND_DATE=false
-fi
-
-sed -i "s|Driver=.*|Driver=${DRIVER}|g" ${CROOT}/config.ini
-sed -i "s|DatabaseHostName=.*|DatabaseHostName=${DBHOST}|g" ${CROOT}/config.ini
-sed -i "s|SendDate=.*|SendDate=${SEND_DATE}|g" ${CROOT}/config.ini
-
-export LD_LIBRARY_PATH=/opt/qt${QT_VERSION_MM}/lib:${CROOT}/lib/x86_64-linux-gnu/
-
-if [ -n "${UWSGI}" ]; then
-  uwsgi \
-  --ini ${CROOT}/config.ini \
-  --plugin ${CROOT}/lib/uwsgi/plugins/cutelyst_plugin.so \
-  --cutelyst-app ${CROOT}/benchmarks/src/libcutelyst_benchmarks.so \
-  --processes=${C_PROCESSES} \
-  --threads=${C_THREADS} \
-  --cpu-affinity=${CPU_AFFINITY} \
-  --reuse-port \
-  &
-else
-  ${CROOT}/bin/cutelyst-wsgi \
-  --ini ${CROOT}/config.ini:uwsgi \
-  -a ${CROOT}/benchmarks/src/libcutelyst_benchmarks.so \
-  --processes=${C_PROCESSES} \
-  --threads=${C_THREADS} \
-  --cpu-affinity=${CPU_AFFINITY} \
-  --socket-timeout 0 \
-  --reuse-port \
-  &
-fi
-
-# configure Nginx
-if [ -n "${NGINX}" ]; then
-  fw_depends nginx
-  cp -v ${TROOT}/nginx.conf ${CROOT}/nginx.conf
-  sed -i "s|include .*/conf/uwsgi_params;|include ${NGINX_HOME}/conf/uwsgi_params;|g" ${CROOT}/nginx.conf
-  nginx -c ${CROOT}/nginx.conf
-fi

+ 19 - 0
frameworks/C++/cutelyst/cutelyst-benchmark-app.dockerfile

@@ -0,0 +1,19 @@
+FROM tfb/cutelyst-framework:latest
+
+ENV TROOT=/cutelyst-benchmark-app
+ENV LD_LIBRARY_PATH=${CMAKE_PREFIX_PATH}/lib
+ENV CUTELYST_APP=${TROOT}/build/libcutelyst_benchmarks.so
+    
+ADD src ${TROOT}/
+ADD config/config.ini /cutelyst.ini
+ADD config/config_socket.ini /cutelyst_socket.ini
+
+RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=${DBHOST}|g" /cutelyst.ini
+RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=${DBHOST}|g" /cutelyst_socket.ini
+
+RUN cd ${TROOT} && \
+    mkdir -p build && \
+    cd build && \
+    cmake ${TROOT} \
+    -DCMAKE_BUILD_TYPE=Release && \
+    make -j ${CPU_COUNT}

+ 19 - 0
frameworks/C++/cutelyst/cutelyst-deps.dockerfile

@@ -0,0 +1,19 @@
+FROM tfb/base:latest
+
+ENV QT_VERSION_MM=59
+ENV QT_VERSION_FULL=594-xenial
+ENV CMAKE_PREFIX_PATH=/opt/qt${QT_VERSION_MM}
+ENV LD_LIBRARY_PATH=${CMAKE_PREFIX_PATH}/lib
+
+RUN apt-add-repository --yes ppa:beineri/opt-qt$QT_VERSION_FULL && \
+    apt-get update -qq && \
+    apt-get install -qqy \
+    cmake \
+    clearsilver-dev \
+    libgrantlee5-dev \
+    libjemalloc-dev \
+    qt${QT_VERSION_MM}base \
+    qt${QT_VERSION_MM}script \
+    qt${QT_VERSION_MM}tools
+    
+RUN apt install -yqq uwsgi uwsgi uuid-dev libcap-dev libzmq3-dev

+ 16 - 0
frameworks/C++/cutelyst/cutelyst-framework.dockerfile

@@ -0,0 +1,16 @@
+FROM tfb/cutelyst-deps:latest
+
+ENV CUTELYST_VER=2.0.1
+
+RUN wget https://github.com/cutelyst/cutelyst/archive/v$CUTELYST_VER.tar.gz -O cutelyst-$CUTELYST_VER.tar.gz && \
+    tar zxf cutelyst-$CUTELYST_VER.tar.gz && \
+    cd cutelyst-$CUTELYST_VER && mkdir build && cd build && \
+    cmake .. \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DPLUGIN_UWSGI=on \
+    -DPLUGIN_VIEW_GRANTLEE=on \
+    -DUSE_JEMALLOC=on && \
+    make -j ${CPU_COUNT} && \
+    make install
+

+ 12 - 0
frameworks/C++/cutelyst/cutelyst-nginx-base.dockerfile

@@ -0,0 +1,12 @@
+FROM tfb/nginx:latest
+FROM tfb/cutelyst-benchmark-app:latest
+
+COPY --from=0 /nginx /nginx
+
+ENV NGINX_HOME="/nginx"
+ENV PATH=/nginx/sbin:${PATH}
+
+ADD nginx.conf /nginx.conf
+
+RUN sed -i "s|include .*/conf/uwsgi_params;|include ${NGINX_HOME}/conf/uwsgi_params;|g" /nginx.conf
+RUN sed -i "s|SendDate=.*|SendDate=false|g" /cutelyst_socket.ini

+ 17 - 0
frameworks/C++/cutelyst/cutelyst-nginx-my.dockerfile

@@ -0,0 +1,17 @@
+FROM tfb/cutelyst-nginx-base:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+ENV DRIVER=QMYSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst_socket.ini
+
+CMD nginx -c /nginx.conf && uwsgi \
+    --ini /cutelyst_socket.ini \
+    --plugin /usr/lib/uwsgi/plugins/cutelyst2_plugin.so \
+    --cutelyst-app ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --reuse-port

+ 17 - 0
frameworks/C++/cutelyst/cutelyst-nginx-pg.dockerfile

@@ -0,0 +1,17 @@
+FROM tfb/cutelyst-nginx-base:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+ENV DRIVER=QPSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst_socket.ini
+
+CMD nginx -c /nginx.conf && uwsgi \
+    --ini /cutelyst_socket.ini \
+    --plugin /usr/lib/uwsgi/plugins/cutelyst2_plugin.so \
+    --cutelyst-app ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --reuse-port

+ 14 - 0
frameworks/C++/cutelyst/cutelyst-nginx.dockerfile

@@ -0,0 +1,14 @@
+FROM tfb/cutelyst-nginx-base:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+
+CMD nginx -c /nginx.conf && uwsgi \
+    --ini /cutelyst_socket.ini \
+    --plugin /usr/lib/uwsgi/plugins/cutelyst2_plugin.so \
+    --cutelyst-app ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --reuse-port

+ 19 - 0
frameworks/C++/cutelyst/cutelyst-pf-my-nodelay.dockerfile

@@ -0,0 +1,19 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+ENV DRIVER=QMYSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=${DBHOST}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port \
+    --tcp-nodelay

+ 18 - 0
frameworks/C++/cutelyst/cutelyst-pf-my.dockerfile

@@ -0,0 +1,18 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+ENV DRIVER=QMYSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=${DBHOST}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port

+ 15 - 0
frameworks/C++/cutelyst/cutelyst-pf-nodelay.dockerfile

@@ -0,0 +1,15 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port \
+    --tcp-nodelay

+ 19 - 0
frameworks/C++/cutelyst/cutelyst-pf-pg-nodelay.dockerfile

@@ -0,0 +1,19 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+ENV DRIVER=QPSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+RUN sed -i "s|DatabaseHostName=.*|DatabaseHostName=${DBHOST}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port \
+    --tcp-nodelay

+ 17 - 0
frameworks/C++/cutelyst/cutelyst-pf-pg.dockerfile

@@ -0,0 +1,17 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+ENV DRIVER=QPSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port

+ 18 - 0
frameworks/C++/cutelyst/cutelyst-thread-my-nodelay.dockerfile

@@ -0,0 +1,18 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=1
+ENV C_THREADS=${CPU_COUNT}
+ENV CPU_AFFINITY=1
+ENV DRIVER=QMYSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port \
+    --tcp-nodelay

+ 17 - 0
frameworks/C++/cutelyst/cutelyst-thread-my.dockerfile

@@ -0,0 +1,17 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=1
+ENV C_THREADS=${CPU_COUNT}
+ENV CPU_AFFINITY=1
+ENV DRIVER=QMYSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port

+ 15 - 0
frameworks/C++/cutelyst/cutelyst-thread-nodelay.dockerfile

@@ -0,0 +1,15 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=1
+ENV C_THREADS=${CPU_COUNT}
+ENV CPU_AFFINITY=1
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port \
+    --tcp-nodelay

+ 18 - 0
frameworks/C++/cutelyst/cutelyst-thread-pg-nodelay.dockerfile

@@ -0,0 +1,18 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=1
+ENV C_THREADS=${CPU_COUNT}
+ENV CPU_AFFINITY=1
+ENV DRIVER=QPSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port \
+    --tcp-nodelay

+ 17 - 0
frameworks/C++/cutelyst/cutelyst-thread-pg.dockerfile

@@ -0,0 +1,17 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=1
+ENV C_THREADS=${CPU_COUNT}
+ENV CPU_AFFINITY=1
+ENV DRIVER=QPSQL
+
+RUN sed -i "s|Driver=.*|Driver=${DRIVER}|g" /cutelyst.ini
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port

+ 14 - 0
frameworks/C++/cutelyst/cutelyst-thread.dockerfile

@@ -0,0 +1,14 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=1
+ENV C_THREADS=${CPU_COUNT}
+ENV CPU_AFFINITY=1
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port

+ 14 - 0
frameworks/C++/cutelyst/cutelyst.dockerfile

@@ -0,0 +1,14 @@
+FROM tfb/cutelyst-benchmark-app:latest
+
+ENV C_PROCESSES=${CPU_COUNT}
+ENV C_THREADS=1
+ENV CPU_AFFINITY=1
+
+CMD cutelyst-wsgi2 \
+    --ini /cutelyst.ini:uwsgi \
+    --application ${CUTELYST_APP} \
+    --processes=${C_PROCESSES} \
+    --threads=${C_THREADS} \
+    --cpu-affinity=${CPU_AFFINITY} \
+    --socket-timeout 0 \
+    --reuse-port

+ 0 - 10
frameworks/C++/cutelyst/setup_pf.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=
-UWSGI=
-NGINX=
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_pf_epoll.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=
-UWSGI=
-NGINX=
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_pf_my.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=QMYSQL
-UWSGI=
-NGINX=
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_pf_my_epoll.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=QMYSQL
-UWSGI=
-NGINX=
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_pf_pg.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=QPSQL
-UWSGI=
-NGINX=
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_pf_pg_epoll.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=QPSQL
-UWSGI=
-NGINX=
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_thread.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=${CPU_COUNT}
-CPU_AFFINITY=1
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_thread_epoll.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=${CPU_COUNT}
-CPU_AFFINITY=1
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_thread_epoll_half.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=$(( (${CPU_COUNT}+1) / 2 ))
-CPU_AFFINITY=2
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_thread_my.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=QMYSQL
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=${CPU_COUNT}
-CPU_AFFINITY=1
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_thread_my_epoll.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=QMYSQL
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=${CPU_COUNT}
-CPU_AFFINITY=1
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_thread_pg.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=QPSQL
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=${CPU_COUNT}
-CPU_AFFINITY=1
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_thread_pg_epoll.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=QPSQL
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=${CPU_COUNT}
-CPU_AFFINITY=1
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 11
frameworks/C++/cutelyst/setup_thread_pg_epoll_half.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-DRIVER=QPSQL
-UWSGI=
-NGINX=
-C_PROCESSES=1
-C_THREADS=$(( (${CPU_COUNT}+1) / 2 ))
-CPU_AFFINITY=2
-export CUTELYST_EVENT_LOOP_EPOLL=1
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_uwsgi_nginx.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=
-UWSGI=1
-NGINX=1
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_uwsgi_nginx_my.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=QMYSQL
-UWSGI=1
-NGINX=1
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-
-source ${TROOT}/config.sh

+ 0 - 10
frameworks/C++/cutelyst/setup_uwsgi_nginx_pg.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-DRIVER=QPSQL
-UWSGI=1
-NGINX=1
-C_PROCESSES=$(( (${CPU_COUNT}+1) / 2 ))
-C_THREADS=0
-CPU_AFFINITY=2
-
-source ${TROOT}/config.sh

+ 0 - 1
frameworks/C++/cutelyst/source_code

@@ -1,5 +1,4 @@
 cutelyst/
-cutelyst/CMakeLists.txt
 cutelyst/src
 cutelyst/src/plaintexttest.cpp
 cutelyst/src/jsontest.cpp

+ 26 - 0
frameworks/C++/cutelyst/src/CMakeLists.txt

@@ -1,3 +1,29 @@
+project(cutelyst_benchmarks)
+
+cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
+if (POLICY CMP0043)
+  cmake_policy(SET CMP0043 NEW)
+endif()
+
+find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core Network Sql)
+find_package(Cutelyst2Qt5 2.0.0 REQUIRED)
+
+# Auto generate moc files
+set(CMAKE_AUTOMOC ON)
+
+# As moc files are generated in the binary dir, tell CMake
+# to always look for includes there:
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+include_directories(
+    ${CMAKE_SOURCE_DIR}
+    ${Cutelyst2Qt5_INCLUDE_DIR}
+)
+
+file(GLOB_RECURSE TEMPLATES_SRC root/*)
 file(GLOB_RECURSE cutelyst_benchmarks_SRCS *.cpp *.h)
 
 set(cutelyst_benchmarks_SRCS

+ 0 - 47
toolset/setup/linux/frameworks/cutelyst.sh

@@ -1,47 +0,0 @@
-#!/bin/bash
-
-fw_installed cutelyst && return 0
-
-CUTELYST_VER=1.12.0
-QT_VERSION_MM=59
-QT_VERSION_FULL=591-trusty
-CROOT=${IROOT}/cutelyst
-
-sudo apt-add-repository --yes ppa:george-edison55/cmake-3.x
-sudo apt-add-repository --yes ppa:beineri/opt-qt$QT_VERSION_FULL
-sudo apt-get update -qq
-
-sudo apt-get install -qqy \
-cmake \
-uwsgi \
-uuid-dev \
-libcap-dev \
-libzmq3-dev \
-clearsilver-dev \
-libjemalloc-dev \
-qt${QT_VERSION_MM}base \
-qt${QT_VERSION_MM}script \
-qt${QT_VERSION_MM}tools
-
-export CMAKE_PREFIX_PATH=/opt/qt${QT_VERSION_MM};
-
-mkdir -p ${CROOT} || true
-cd ${CROOT}
-
-fw_get -O https://github.com/cutelyst/cutelyst/archive/v$CUTELYST_VER.tar.gz
-fw_untar v$CUTELYST_VER.tar.gz
-
-cd cutelyst-$CUTELYST_VER
-mkdir build && cd build
-
-cmake .. \
--DCMAKE_BUILD_TYPE=Release \
--DCMAKE_INSTALL_PREFIX=$CROOT \
--DUWSGI_PLUGINS_DIR=${CROOT}/lib/uwsgi/plugins \
--DPLUGIN_UWSGI=on \
--DUSE_JEMALLOC=on
-
-make -j $CPU_COUNT && make install
-
-echo "QT_VERSION_MM=${QT_VERSION_MM}" > $IROOT/cutelyst.installed
-