Эх сурвалжийг харах

add setup for default test

root 10 жил өмнө
parent
commit
578a8a0c45

+ 2 - 2
frameworks/C++/ULib/benchmark_config

@@ -2,7 +2,7 @@
   "framework": "ULib",
   "tests": [{
     "default": {
-      "setup_file": "setup_sqlite",
+      "setup_file": "setup",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "port": 8080,
@@ -16,7 +16,7 @@
       "webserver": "userver_tcp",
       "os": "Linux",
       "database_os": "Linux",
-      "display_name": "ULib-mysql",
+      "display_name": "ULib",
       "notes": "",
       "versus": ""
     },

+ 9 - 0
frameworks/C++/ULib/setup.sh

@@ -0,0 +1,9 @@
+#!/bin/bash
+
+export UMEMPOOL="152,85,0,37,8330,105,-17,-22,40"
+
+# 1. Change ULib Server configuration
+sed -i "s|PREFORK_CHILD .*|PREFORK_CHILD ${MAX_THREADS}|g" ${IROOT}/ULib/benchmark.cfg
+
+# 2. Start ULib Server (userver_tcp)
+${IROOT}/ULib/bin/userver_tcp -c ${IROOT}/ULib/benchmark.cfg &

+ 24 - 17
frameworks/C++/ULib/src/db.usp

@@ -2,47 +2,54 @@
 #include "world.h"
 
 #ifndef AS_cpoll_cppsp_DO
-static UValue* pvalue;
+static UValue*	pvalue;
 #endif
-static World*         pworld_db;
-static UOrmSession*   psql_db;
+static World*			 pworld_db;
+static UOrmSession*	 psql_db;
 static UOrmStatement* pstmt_db;
 
 static void usp_init_db()
 {
-   U_TRACE(5, "::usp_init_db()")
+	U_TRACE(5, "::usp_init_db()")
 
-   pworld_db = U_NEW(World);
+	pworld_db = U_NEW(World);
 
 #ifndef AS_cpoll_cppsp_DO
-   pvalue = U_NEW(UValue(OBJECT_VALUE));
+	pvalue = U_NEW(UValue(OBJECT_VALUE));
 #endif
 }
 
 static void usp_fork_db()
 {
-   U_TRACE(5, "::usp_fork_db()")
+	U_TRACE(5, "::usp_fork_db()")
 
-   psql_db  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
-   pstmt_db = U_NEW(UOrmStatement(*psql_db, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+	psql_db = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
 
-   if (pstmt_db == 0) U_ERROR("usp_fork_db(): we cound't connect to db");
+	if (psql_db->isReady())
+		{
+		pstmt_db	= U_NEW(UOrmStatement(*psql_db, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
 
-   pstmt_db->use( pworld_db->id);
-   pstmt_db->into(pworld_db->randomNumber);
+		if (pstmt_db == 0) U_ERROR("usp_fork_db(): we cound't connect to db");
+
+		pstmt_db->use( pworld_db->id);
+		pstmt_db->into(pworld_db->randomNumber);
+		}
 }
 
+#ifdef DEBUG
 static void usp_end_db()
 {
-   U_TRACE(5, "::usp_end_db()")
+	U_TRACE(5, "::usp_end_db()")
+
+	if (pstmt_db) delete pstmt_db;
 
-   delete pstmt_db;
-   delete psql_db;
-   delete pworld_db;
+	delete psql_db;
+	delete pworld_db;
 #ifndef AS_cpoll_cppsp_DO
-   delete pvalue;
+	delete pvalue;
 #endif
 }
+#endif
 -->
 <!--#header
 Content-Type: application/json; charset=UTF-8

+ 37 - 30
frameworks/C++/ULib/src/fortune.usp

@@ -1,43 +1,50 @@
 <!--#declaration
 #include "fortune.h"
 
-static UOrmSession*       psql_fortune;
-static UOrmStatement*     pstmt_fortune;
-static Fortune*           pfortune;
+static UOrmSession*		  psql_fortune;
+static UOrmStatement*	  pstmt_fortune;
+static Fortune*			  pfortune;
 static UString*           pmessage;
 static UVector<Fortune*>* pvfortune;
 
 static void usp_init_fortune()
 {
-   U_TRACE(5, "::usp_init_fortune()")
+	U_TRACE(5, "::usp_init_fortune()")
 
-   pfortune  = U_NEW(Fortune);
-   pvfortune = U_NEW(UVector<Fortune*>);
-   pmessage  = U_NEW(U_STRING_FROM_CONSTANT("Additional fortune added at request time."));
+	pfortune  = U_NEW(Fortune);
+	pvfortune = U_NEW(UVector<Fortune*>);
+	pmessage  = U_NEW(U_STRING_FROM_CONSTANT("Additional fortune added at request time."));
 }
 
 static void usp_fork_fortune()
 {
-   U_TRACE(5, "::usp_fork_fortune()")
+	U_TRACE(5, "::usp_fork_fortune()")
 
-   psql_fortune  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("fortune")));
-   pstmt_fortune = U_NEW(UOrmStatement(*psql_fortune, U_CONSTANT_TO_PARAM("SELECT id, message FROM Fortune")));
+	psql_fortune  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("fortune")));
 
-   if (pstmt_fortune == 0) U_ERROR("usp_fork_fortune(): we cound't connect to db");
+	if (psql_fortune->isReady())
+		{
+		pstmt_fortune = U_NEW(UOrmStatement(*psql_fortune, U_CONSTANT_TO_PARAM("SELECT id, message FROM Fortune")));
 
-   pstmt_fortune->into(*pfortune);
+		if (pstmt_fortune == 0) U_ERROR("usp_fork_fortune(): we cound't connect to db");
+
+		pstmt_fortune->into(*pfortune);
+		}
 }
 
+#ifdef DEBUG
 static void usp_end_fortune()
 {
-   U_TRACE(5, "::usp_end_fortune()")
+	U_TRACE(5, "::usp_end_fortune()")
+
+	if (pstmt_fortune) delete pstmt_fortune;
 
-   delete pstmt_fortune;
-   delete psql_fortune;
-   delete pvfortune;
-   delete pfortune;
-   delete pmessage;
+	delete psql_fortune;
+	delete pvfortune;
+	delete pfortune;
+	delete pmessage;
 }
+#endif
 -->
 <!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr><!--#code
 Fortune* elem;
@@ -45,22 +52,22 @@ unsigned char encoded[1024];
 
 pstmt_fortune->execute();
 
-     pvfortune->push_back(U_NEW(Fortune(0, *pmessage)));
-do { pvfortune->push_back(U_NEW(Fortune(*pfortune))); } while (pstmt_fortune->nextRow());
+	  pvfortune->push_back(U_NEW(Fortune(0, *pmessage)));
+do	{ pvfortune->push_back(U_NEW(Fortune(*pfortune))); } while (pstmt_fortune->nextRow());
 
 pvfortune->sort(Fortune::cmp_obj);
 
 for (uint32_t i = 0, n = pvfortune->size(); i < n; ++i)
-   {
-   elem = (*pvfortune)[i];
-
-   USP_PRINTF_ADD(
-      "<tr>"
-      "<td>%u</td>"
-      "<td>%.*s</td>"
-      "</tr>",
-      elem->id, u_xml_encode((const unsigned char*)U_STRING_TO_PARAM(elem->message), encoded), encoded);
-   }
+	{
+	elem = (*pvfortune)[i];
+
+	USP_PRINTF_ADD(
+		"<tr>"
+		"<td>%u</td>"
+		"<td>%.*s</td>"
+		"</tr>",
+		elem->id, u_xml_encode((const unsigned char*)U_STRING_TO_PARAM(elem->message), encoded), encoded);
+	}
 
 pvfortune->clear();
 --></table></body></html>

+ 36 - 29
frameworks/C++/ULib/src/query.usp

@@ -2,50 +2,57 @@
 #include "world.h"
 
 #ifndef AS_cpoll_cppsp_DO
-static UValue* pvalue;
+static UValue*	pvalue;
 #endif
-static UOrmSession*     psql_query;
-static UOrmStatement*   pstmt_query;
-static World*           pworld_query;
+static UOrmSession*		psql_query;
+static UOrmStatement*	pstmt_query;
+static World*				pworld_query;
 static UVector<World*>* pvworld_query;
 
 static void usp_init_query()
 {
-   U_TRACE(5, "::usp_init_query()")
+	U_TRACE(5, "::usp_init_query()")
 
-   pworld_query  = U_NEW(World);
-   pvworld_query = U_NEW(UVector<World*>(500));
+	pworld_query  = U_NEW(World);
+	pvworld_query = U_NEW(UVector<World*>(500));
 
 #ifndef AS_cpoll_cppsp_DO
-   pvalue = U_NEW(UValue(ARRAY_VALUE));
+	pvalue = U_NEW(UValue(ARRAY_VALUE));
 #endif
 }
 
 static void usp_fork_query()
 {
-   U_TRACE(5, "::usp_fork_query()")
+	U_TRACE(5, "::usp_fork_query()")
 
-   psql_query  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
-   pstmt_query = U_NEW(UOrmStatement(*psql_query, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+	psql_query  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
 
-   if (pstmt_query == 0) U_ERROR("usp_fork_query(): we cound't connect to db");
+	if (psql_query->isReady())
+		{
+		pstmt_query = U_NEW(UOrmStatement(*psql_query, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
 
-   pstmt_query->use( pworld_query->id);
-   pstmt_query->into(pworld_query->randomNumber);
+		if (pstmt_query == 0) U_ERROR("usp_fork_query(): we cound't connect to db");
+
+		pstmt_query->use( pworld_query->id);
+		pstmt_query->into(pworld_query->randomNumber);
+		}
 }
 
+#ifdef DEBUG
 static void usp_end_query()
 {
-   U_TRACE(5, "::usp_end_query()")
+	U_TRACE(5, "::usp_end_query()")
+
+	if (pstmt_query) delete pstmt_query;
 
-   delete pstmt_query;
-   delete psql_query;
-   delete pvworld_query;
-   delete pworld_query;
+	delete psql_query;
+	delete pvworld_query;
+	delete pworld_query;
 #ifndef AS_cpoll_cppsp_DO
-   delete pvalue;
+	delete pvalue;
 #endif
 }
+#endif
 -->
 <!--#args
 queries;
@@ -56,7 +63,7 @@ Content-Type: application/json; charset=UTF-8
 <!--#code
 int i = 0, num_queries = queries.strtol();
 
-     if (num_queries <   1) num_queries = 1;
+	  if (num_queries <   1) num_queries = 1;
 else if (num_queries > 500) num_queries = 500;
 
 #ifdef AS_cpoll_cppsp_DO
@@ -64,23 +71,23 @@ USP_PUTS_CHAR('[');
 #endif
 
 while (true)
-   {
-   pworld_query->id = u_get_num_random(10000);
+	{
+	pworld_query->id = u_get_num_random(10000);
 
-   pstmt_query->execute();
+	pstmt_query->execute();
 
 #ifdef AS_cpoll_cppsp_DO
-   USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_query->id, pworld_query->randomNumber);
+	USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_query->id, pworld_query->randomNumber);
 #endif
 
-   pvworld_query->push_back(U_NEW(World(*pworld_query)));
+	pvworld_query->push_back(U_NEW(World(*pworld_query)));
 
-   if (++i == num_queries) break;
+	if (++i == num_queries) break;
 
 #ifdef AS_cpoll_cppsp_DO
-   USP_PUTS_CHAR(',');
+	USP_PUTS_CHAR(',');
 #endif
-   }
+	}
 
 #ifdef AS_cpoll_cppsp_DO
 USP_PUTS_CHAR(']');

+ 46 - 40
frameworks/C++/ULib/src/update.usp

@@ -2,59 +2,65 @@
 #include "world.h"
 
 #ifndef AS_cpoll_cppsp_DO
-static UValue* pvalue;
+static UValue*	pvalue;
 #endif
-static UOrmSession*     psql_update;
-static UOrmStatement*   pstmt1;
-static UOrmStatement*   pstmt2;
-static World*           pworld_update;
+static UOrmSession*		psql_update;
+static UOrmStatement*	pstmt1;
+static UOrmStatement*	pstmt2;
+static World*				pworld_update;
 static UVector<World*>* pvworld_update;
 
 static void usp_init_update()
 {
-   U_TRACE(5, "::usp_init_update()")
+	U_TRACE(5, "::usp_init_update()")
 
-   pworld_update  = U_NEW(World);
-   pvworld_update = U_NEW(UVector<World*>(500));
+	pworld_update  = U_NEW(World);
+	pvworld_update = U_NEW(UVector<World*>(500));
 
 #ifndef AS_cpoll_cppsp_DO
-   pvalue = U_NEW(UValue(ARRAY_VALUE));
+	pvalue = U_NEW(UValue(ARRAY_VALUE));
 #endif
 }
 
 static void usp_fork_update()
 {
-   U_TRACE(5, "::usp_fork_update()")
+	U_TRACE(5, "::usp_fork_update()")
 
-   psql_update = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
+	psql_update = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
 
-   pstmt1 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
-   pstmt2 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("UPDATE World SET randomNumber = ? WHERE id = ?")));
+	if (psql_update->isReady())
+		{
+		pstmt1 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+		pstmt2 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("UPDATE World SET randomNumber = ? WHERE id = ?")));
 
-   if (pstmt1 == 0 ||
-       pstmt2 == 0)
-      {
-      U_ERROR("usp_fork_update(): we cound't connect to db");
-      }
+		if (pstmt1 == 0 ||
+			 pstmt2 == 0)
+			{
+			U_ERROR("usp_fork_update(): we cound't connect to db");
+			}
 
-   pstmt1->use( pworld_update->id);
-   pstmt1->into(pworld_update->randomNumber);
-   pstmt2->use( pworld_update->randomNumber, pworld_update->id);
+		pstmt1->use( pworld_update->id);
+		pstmt1->into(pworld_update->randomNumber);
+		pstmt2->use( pworld_update->randomNumber, pworld_update->id);
+		}
 }
 
+#ifdef DEBUG
 static void usp_end_update()
 {
-   U_TRACE(5, "::usp_end_update()")
+	U_TRACE(5, "::usp_end_update()")
 
-   delete pstmt1;
-   delete pstmt2;
-   delete psql_update;
-   delete pvworld_update;
-   delete pworld_update;
+	if (pstmt1) delete pstmt1;
+	if (pstmt2) delete pstmt2;
+
+	delete psql_update;
+	delete pvworld_update;
+	delete pworld_update;
 #ifndef AS_cpoll_cppsp_DO
-   delete pvalue;
+	delete pvalue;
 #endif
 }
+#endif
 -->
 <!--#args
 queries;
@@ -65,7 +71,7 @@ Content-Type: application/json; charset=UTF-8
 <!--#code
 int i = 0, num_queries = queries.strtol();
 
-     if (num_queries <   1) num_queries = 1;
+	  if (num_queries <   1) num_queries = 1;
 else if (num_queries > 500) num_queries = 500;
 
 #ifdef AS_cpoll_cppsp_DO
@@ -73,29 +79,29 @@ USP_PUTS_CHAR('[');
 #endif
 
 while (true)
-   {
-   pworld_update->id = u_get_num_random(10000);
+	{
+	pworld_update->id = u_get_num_random(10000);
 
-   pstmt1->execute();
+	pstmt1->execute();
 
-   U_INTERNAL_DUMP("pworld_update->randomNumber = %u", pworld_update->randomNumber)
+	U_INTERNAL_DUMP("pworld_update->randomNumber = %u", pworld_update->randomNumber)
 
-   pworld_update->randomNumber = u_get_num_random(10000);
+	pworld_update->randomNumber = u_get_num_random(10000);
 
-   pstmt2->execute();
+	pstmt2->execute();
 
 #ifdef AS_cpoll_cppsp_DO
-   USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_update->id, pworld_update->randomNumber);
+	USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_update->id, pworld_update->randomNumber);
 #endif
 
-   pvworld_update->push_back(U_NEW(World(*pworld_update)));
+	pvworld_update->push_back(U_NEW(World(*pworld_update)));
 
-   if (++i == num_queries) break;
+	if (++i == num_queries) break;
 
 #ifdef AS_cpoll_cppsp_DO
-   USP_PUTS_CHAR(',');
+	USP_PUTS_CHAR(',');
 #endif
-   }
+	}
 
 #ifdef AS_cpoll_cppsp_DO
 USP_PUTS_CHAR(']');