1
0
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:
stefanocasazza 2015-03-05 14:52:12 +01:00
parent 90e3faa491
commit 6d145b3f88
19 changed files with 250 additions and 170 deletions

View File

@ -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)

View File

@ -50,6 +50,7 @@ public:
// will be typecast into conn-specific type
bool isReady() const __pure;
void* getConnection() __pure;
bool connect(const UString& option);

View File

@ -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);
}

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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));
}
}

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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"

View File

@ -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",

View 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 &

View File

@ -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

View File

@ -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>

View File

@ -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(']');

View File

@ -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(']');

View File

@ -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'\""