mirror of
https://github.com/stefanocasazza/ULib.git
synced 2025-09-28 19:05:55 +08:00
Setting for FrameworkBenchmarks participations
This commit is contained in:
parent
90e3faa491
commit
6d145b3f88
|
|
@ -343,6 +343,24 @@ protected:
|
|||
|
||||
void prepareForSendfile();
|
||||
|
||||
static uint32_t getCountToRead()
|
||||
{
|
||||
U_TRACE(0, "UClientImage_Base::getCountToRead()")
|
||||
|
||||
if (size_request == 0) U_RETURN(U_SINGLE_READ);
|
||||
|
||||
uint32_t sz = rbuffer->size();
|
||||
|
||||
if (size_request > sz)
|
||||
{
|
||||
sz = size_request - sz;
|
||||
|
||||
U_RETURN(sz);
|
||||
}
|
||||
|
||||
U_RETURN(U_SINGLE_READ);
|
||||
}
|
||||
|
||||
static void setSendfile(int _sfd, uint32_t _start, uint32_t _count)
|
||||
{
|
||||
U_TRACE(0, "UClientImage_Base::setSendfile(%d,%u,%u)", _sfd, _start, _count)
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ public:
|
|||
|
||||
// will be typecast into conn-specific type
|
||||
|
||||
bool isReady() const __pure;
|
||||
void* getConnection() __pure;
|
||||
bool connect(const UString& option);
|
||||
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@ U_NO_EXPORT int UClientImage_Base::handlerDataPending()
|
|||
if (U_ClientImage_parallelization == 1) // 1 => child of parallelization
|
||||
{
|
||||
if (UNotifier::waitForRead(psocket->iSockDesc, U_TIMEOUT_MS) != 1 ||
|
||||
(resetReadBuffer(), USocketExt::read(psocket, *rbuffer, size_request == 0 ? U_SINGLE_READ : size_request - rbuffer->size(), 0)) == false)
|
||||
(resetReadBuffer(), USocketExt::read(psocket, *rbuffer, getCountToRead(), 0)) == false)
|
||||
{
|
||||
U_RETURN(-1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,13 +27,17 @@ static void 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
|
||||
|
|
@ -41,7 +45,8 @@ static void usp_end_db()
|
|||
{
|
||||
U_TRACE(5, "::usp_end_db()")
|
||||
|
||||
delete pstmt_db;
|
||||
if (pstmt_db) delete pstmt_db;
|
||||
|
||||
delete psql_db;
|
||||
delete pworld_db;
|
||||
#ifndef AS_cpoll_cppsp_DO
|
||||
|
|
|
|||
|
|
@ -25,11 +25,15 @@ static void 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")));
|
||||
|
||||
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
|
||||
|
|
@ -37,7 +41,8 @@ static void usp_end_fortune()
|
|||
{
|
||||
U_TRACE(5, "::usp_end_fortune()")
|
||||
|
||||
delete pstmt_fortune;
|
||||
if (pstmt_fortune) delete pstmt_fortune;
|
||||
|
||||
delete psql_fortune;
|
||||
delete pvfortune;
|
||||
delete pfortune;
|
||||
|
|
|
|||
|
|
@ -30,12 +30,16 @@ static void 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 = ?")));
|
||||
|
||||
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
|
||||
|
|
@ -43,7 +47,8 @@ static void usp_end_query()
|
|||
{
|
||||
U_TRACE(5, "::usp_end_query()")
|
||||
|
||||
delete pstmt_query;
|
||||
if (pstmt_query) delete pstmt_query;
|
||||
|
||||
delete psql_query;
|
||||
delete pvworld_query;
|
||||
delete pworld_query;
|
||||
|
|
|
|||
|
|
@ -32,18 +32,21 @@ static void usp_fork_update()
|
|||
|
||||
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 (pstmt1 == 0 ||
|
||||
pstmt2 == 0)
|
||||
if (psql_update->isReady())
|
||||
{
|
||||
U_ERROR("usp_fork_update(): we cound't connect to db");
|
||||
}
|
||||
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 = ?")));
|
||||
|
||||
pstmt1->use( pworld_update->id);
|
||||
pstmt1->into(pworld_update->randomNumber);
|
||||
pstmt2->use( pworld_update->randomNumber, pworld_update->id);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
@ -51,8 +54,9 @@ static void usp_end_update()
|
|||
{
|
||||
U_TRACE(5, "::usp_end_update()")
|
||||
|
||||
delete pstmt1;
|
||||
delete pstmt2;
|
||||
if (pstmt1) delete pstmt1;
|
||||
if (pstmt2) delete pstmt2;
|
||||
|
||||
delete psql_update;
|
||||
delete pvworld_update;
|
||||
delete pworld_update;
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public:
|
|||
|
||||
UString usp = UFile::contentOf(filename);
|
||||
|
||||
if (usp.empty()) U_ERROR("filename not valid");
|
||||
if (usp.empty()) U_ERROR(" %.*S not valid", U_STRING_TO_TRACE(filename));
|
||||
|
||||
# ifndef DEBUG
|
||||
bool bpreprocessing_failed = false;
|
||||
|
|
@ -128,7 +128,7 @@ public:
|
|||
bpreprocessing_failed = true;
|
||||
# endif
|
||||
|
||||
U_WARNING("preprocessing filename failed");
|
||||
U_WARNING("preprocessing %.*S failed", U_STRING_TO_TRACE(filename));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ err: loadDriverFail(backend, len);
|
|||
}
|
||||
}
|
||||
|
||||
UOrmSession::UOrmSession(const char* dbname, uint32_t len)
|
||||
UOrmSession::UOrmSession(const char* dbname, uint32_t len)
|
||||
{
|
||||
U_TRACE_REGISTER_OBJECT(0, UOrmSession, "%.*S,%u", len, dbname, len)
|
||||
|
||||
|
|
@ -93,6 +93,19 @@ UOrmSession::UOrmSession(const char* dbname, uint32_t len)
|
|||
#endif
|
||||
}
|
||||
|
||||
__pure bool UOrmSession::isReady() const
|
||||
{
|
||||
U_TRACE(0, "UOrmSession::isReady()")
|
||||
|
||||
if (pdrv != 0 &&
|
||||
UOrmDriver::env_driver_len)
|
||||
{
|
||||
U_RETURN(true);
|
||||
}
|
||||
|
||||
U_RETURN(false);
|
||||
}
|
||||
|
||||
__pure UOrmSession::~UOrmSession()
|
||||
{
|
||||
U_TRACE_UNREGISTER_OBJECT(0, UOrmSession)
|
||||
|
|
@ -176,10 +189,10 @@ UOrmStatement::UOrmStatement(UOrmSession& session, const char* stmt, uint32_t le
|
|||
U_TRACE_REGISTER_OBJECT(0, UOrmStatement, "%p,%.*S,%u", &session, len, stmt, len)
|
||||
|
||||
#if defined(USE_SQLITE) || defined(USE_MYSQL) || defined(USE_PGSQL)
|
||||
if (session.pdrv == 0) UOrmSession::loadDriverFail(UOrmDriver::env_driver, UOrmDriver::env_driver_len);
|
||||
pdrv = session.pdrv;
|
||||
|
||||
pdrv = session.pdrv;
|
||||
pstmt = pdrv->handlerStatementCreation(stmt, len);
|
||||
if (pdrv) pstmt = pdrv->handlerStatementCreation(stmt, len);
|
||||
else if (UOrmDriver::env_driver_len) UOrmSession::loadDriverFail(UOrmDriver::env_driver, UOrmDriver::env_driver_len);
|
||||
#else
|
||||
pdrv = 0;
|
||||
pstmt = 0;
|
||||
|
|
|
|||
|
|
@ -155,6 +155,8 @@ bool UOrmDriver::loadDriver(const UString& dir, const UString& driver_list)
|
|||
U_TRACE(0, "UOrmDriver::loadDriver(%.*S,%.*S)", U_STRING_TO_TRACE(dir), U_STRING_TO_TRACE(driver_list))
|
||||
|
||||
#if defined(USE_SQLITE) || defined(USE_MYSQL) || defined(USE_PGSQL)
|
||||
if (str_host) U_RETURN(true);
|
||||
|
||||
str_allocate();
|
||||
|
||||
if (dir) setDriverDirectory(dir);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@ UTRACE_SIGNAL="0 30M 0"
|
|||
#MALLOC_CHECK_=3
|
||||
#VALGRIND=valgrind
|
||||
TZ='CET-1CEST,M3.5.0/2,M10.5.0/3'
|
||||
ORM_DRIVER="sqlite"
|
||||
ORM_OPTION="dbname=../db/hello_world"
|
||||
MUDFLAP_OPTIONS="-ignore-reads -backtrace=8"
|
||||
UMEMPOOL=802,1025,-30,1512,2052,-12,-10,-26,102:67108864,16384
|
||||
|
||||
|
|
@ -69,7 +67,7 @@ else
|
|||
fi
|
||||
|
||||
export UTRACE UTRACE_SIGNAL UOBJDUMP USIMERR EXEC_ON_EXIT WINELOADER PID TZ \
|
||||
RESULT MALLOC_CHECK_ VALGRIND MUDFLAP_OPTIONS ECHO UMEMPOOL ORM_DRIVER ORM_OPTION \
|
||||
RESULT MALLOC_CHECK_ VALGRIND MUDFLAP_OPTIONS ECHO UMEMPOOL \
|
||||
NC NC_ARG_LISTEN_PORT NCAT SYNC CURL OPENSSL SLEEP SUFFIX CHOWN TRUSS LTRUSS STRACE WINE_OPENSSL
|
||||
|
||||
# function : CApath_rehash
|
||||
|
|
|
|||
|
|
@ -18,8 +18,10 @@ rm -f /tmp/*.memusage.* \
|
|||
UMEMUSAGE=yes
|
||||
export UTRACE UOBJDUMP USIMERR VALGRIND UMEMUSAGE
|
||||
|
||||
ORM_DRIVER="sqlite"
|
||||
ORM_OPTION="host=10.30.1.131 dbname=../db/hello_world"
|
||||
unset ORM_DRIVER ORM_OPTION
|
||||
|
||||
#ORM_DRIVER="sqlite"
|
||||
#ORM_OPTION="host=10.30.1.131 dbname=../db/hello_world"
|
||||
#ORM_DRIVER="mysql"
|
||||
#ORM_OPTION="host=10.30.1.131 user=benchmarkdbuser password=benchmarkdbpass character-set=utf8 dbname=hello_world"
|
||||
#ORM_DRIVER="pgsql"
|
||||
|
|
|
|||
|
|
@ -2,17 +2,13 @@
|
|||
"framework": "ULib",
|
||||
"tests": [{
|
||||
"default": {
|
||||
"setup_file": "setup_mysql",
|
||||
"setup_file": "setup",
|
||||
"json_url": "/json",
|
||||
"db_url": "/db",
|
||||
"query_url": "/query?queries=",
|
||||
"fortune_url": "/fortune",
|
||||
"update_url": "/update?queries=",
|
||||
"plaintext_url": "/plaintext",
|
||||
"port": 8080,
|
||||
"approach": "Realistic",
|
||||
"classification": "Platform",
|
||||
"database": "MySQL",
|
||||
"database": "None",
|
||||
"framework": "ULib",
|
||||
"language": "C++",
|
||||
"orm": "Micro",
|
||||
|
|
@ -20,18 +16,16 @@
|
|||
"webserver": "userver_tcp",
|
||||
"os": "Linux",
|
||||
"database_os": "Linux",
|
||||
"display_name": "ULib-mysql",
|
||||
"display_name": "ULib",
|
||||
"notes": "",
|
||||
"versus": ""
|
||||
},
|
||||
"mysql": {
|
||||
"setup_file": "setup_mysql",
|
||||
"json_url": "/json",
|
||||
"db_url": "/db",
|
||||
"query_url": "/query?queries=",
|
||||
"fortune_url": "/fortune",
|
||||
"update_url": "/update?queries=",
|
||||
"plaintext_url": "/plaintext",
|
||||
"port": 8080,
|
||||
"approach": "Realistic",
|
||||
"classification": "Platform",
|
||||
|
|
@ -49,11 +43,9 @@
|
|||
},
|
||||
"sqlite": {
|
||||
"setup_file": "setup_sqlite",
|
||||
"json_url": "/json",
|
||||
"db_url": "/db",
|
||||
"query_url": "/query?queries=",
|
||||
"fortune_url": "/fortune",
|
||||
"plaintext_url": "/plaintext",
|
||||
"port": 8080,
|
||||
"approach": "Realistic",
|
||||
"classification": "Platform",
|
||||
|
|
@ -71,12 +63,10 @@
|
|||
},
|
||||
"postgres": {
|
||||
"setup_file": "setup_postgres",
|
||||
"json_url": "/json",
|
||||
"db_url": "/db",
|
||||
"query_url": "/query?queries=",
|
||||
"fortune_url": "/fortune",
|
||||
"update_url": "/update?queries=",
|
||||
"plaintext_url": "/plaintext",
|
||||
"port": 8080,
|
||||
"approach": "Realistic",
|
||||
"classification": "Platform",
|
||||
|
|
|
|||
9
tests/examples/benchmark/FrameworkBenchmarks/ULib/setup.sh
Executable file
9
tests/examples/benchmark/FrameworkBenchmarks/ULib/setup.sh
Executable file
|
|
@ -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 &
|
||||
|
|
@ -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()")
|
||||
|
||||
delete pstmt_db;
|
||||
delete psql_db;
|
||||
delete pworld_db;
|
||||
if (pstmt_db) delete pstmt_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
|
||||
|
|
|
|||
|
|
@ -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()")
|
||||
|
||||
delete pstmt_fortune;
|
||||
delete psql_fortune;
|
||||
delete pvfortune;
|
||||
delete pfortune;
|
||||
delete pmessage;
|
||||
if (pstmt_fortune) delete pstmt_fortune;
|
||||
|
||||
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];
|
||||
{
|
||||
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);
|
||||
}
|
||||
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>
|
||||
|
|
|
|||
|
|
@ -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()")
|
||||
|
||||
delete pstmt_query;
|
||||
delete psql_query;
|
||||
delete pvworld_query;
|
||||
delete pworld_query;
|
||||
if (pstmt_query) delete pstmt_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(']');
|
||||
|
|
|
|||
|
|
@ -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(']');
|
||||
|
|
|
|||
|
|
@ -6,13 +6,14 @@
|
|||
|
||||
start_msg orm
|
||||
|
||||
#UTRACE="0 50M 1"
|
||||
#UTRACE="0 50M 0"
|
||||
#UOBJDUMP="0 100k 10"
|
||||
#USIMERR="error.sim"
|
||||
export UTRACE UOBJDUMP USIMERR
|
||||
|
||||
#ORM_DRIVER="sqlite"
|
||||
#ORM_OPTION="dbname=../db/hello_world"
|
||||
ORM_DRIVER="sqlite"
|
||||
ORM_OPTION="dbname=../db/hello_world"
|
||||
export ORM_DRIVER ORM_OPTION
|
||||
|
||||
SQLITE="sqlite \"sample\""
|
||||
#PGSQL="pgsql \"host='localhost' user='benchmarkdbuser' password='benchmarkdbpass' dbname='sample' client_encoding='UTF8' sslmode='allow'\""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user