From f4245ee2652cb1f7d6e2c8d5eb762dfaedf7d5bb Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Thu, 15 Jun 2006 13:14:04 +0000 Subject: [PATCH] Added sb_rand_str() --- sysbench/scripting/script_lua.c | 17 +++++++++++++++++ sysbench/sysbench.c | 17 +++++++++++++++++ sysbench/sysbench.h | 1 + sysbench/tests/db/insert.lua | 7 ++++--- sysbench/tests/db/oltp_complex_rw.lua | 4 ++-- sysbench/tests/db/update_non_index.lua | 6 +++--- 6 files changed, 44 insertions(+), 8 deletions(-) diff --git a/sysbench/scripting/script_lua.c b/sysbench/scripting/script_lua.c index 3371c53..1d00376 100644 --- a/sysbench/scripting/script_lua.c +++ b/sysbench/scripting/script_lua.c @@ -125,6 +125,7 @@ static int sb_lua_db_free_results(lua_State *); static int sb_lua_rand(lua_State *); static int sb_lua_rand_uniq(lua_State *); static int sb_lua_rnd(lua_State *); +static int sb_lua_rand_str(lua_State *); /* Get a per-state interpreter context */ static sb_lua_ctxt_t *sb_lua_get_context(lua_State *); @@ -352,6 +353,9 @@ lua_State *sb_lua_new_state(const char *scriptname) lua_pushcfunction(state, sb_lua_rnd); lua_setglobal(state, "sb_rnd"); + + lua_pushcfunction(state, sb_lua_rand_str); + lua_setglobal(state, "sb_rand_str"); lua_pushcfunction(state, sb_lua_db_connect); lua_setglobal(state, "db_connect"); @@ -853,6 +857,19 @@ int sb_lua_rnd(lua_State *L) return 1; } +int sb_lua_rand_str(lua_State *L) +{ + const char *fmt = luaL_checkstring(L, -1); + char *buf = strdup(fmt); + + sb_rand_str(fmt, buf); + lua_pushstring(L, buf); + + free(buf); + + return 1; +} + /* Get a per-state interpreter context */ sb_lua_ctxt_t *sb_lua_get_context(lua_State *L) diff --git a/sysbench/sysbench.c b/sysbench/sysbench.c index cddb967..38860a7 100644 --- a/sysbench/sysbench.c +++ b/sysbench/sysbench.c @@ -801,3 +801,20 @@ int sb_rand_uniq(int a, int b) } +/* Generate random string */ + + +void sb_rand_str(const char *fmt, char *buf) +{ + unsigned int i; + + for (i=0; fmt[i] != '\0'; i++) + { + if (fmt[i] == '#') + buf[i] = sb_rand_uniform('0', '9'); + else if (fmt[i] == '@') + buf[i] = sb_rand_uniform('a', 'z'); + else + buf[i] = fmt[i]; + } +} diff --git a/sysbench/sysbench.h b/sysbench/sysbench.h index 1989713..c781728 100644 --- a/sysbench/sysbench.h +++ b/sysbench/sysbench.h @@ -204,5 +204,6 @@ int sb_rand_uniform(int, int); int sb_rand_gaussian(int, int); int sb_rand_special(int, int); int sb_rand_uniq(int a, int b); +void sb_rand_str(const char *, char *); #endif diff --git a/sysbench/tests/db/insert.lua b/sysbench/tests/db/insert.lua index 42d9a96..53082f2 100644 --- a/sysbench/tests/db/insert.lua +++ b/sysbench/tests/db/insert.lua @@ -82,9 +82,10 @@ function event(thread_id) params[1] = sb_rand_uniq(1, oltp_table_size) end params[2]= sb_rand(1, oltp_table_size) - params[3] = sb_rnd() .. '-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd() .. '-' .. - sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd() - params[4] = sb_rnd()..'-'.. sb_rnd()..'-'.. sb_rnd()..'-'.. sb_rnd()..'-'.. sb_rnd() + params[3] = sb_rand_str([[ +###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]]) + params[4] = sb_rand_str([[ +###########-###########-###########-###########-###########]]) rs = db_execute(stmt) end diff --git a/sysbench/tests/db/oltp_complex_rw.lua b/sysbench/tests/db/oltp_complex_rw.lua index cebd7d9..63cedcf 100644 --- a/sysbench/tests/db/oltp_complex_rw.lua +++ b/sysbench/tests/db/oltp_complex_rw.lua @@ -170,8 +170,8 @@ function event(thread_id) update_idx_params[1] = sb_rand(1, oltp_table_size) rs = db_execute(update_idx_stmt) - update_nonidx_params[1] = sb_rnd() .. '-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd() .. '-' .. - sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd() + update_nonidx_params[1] = sb_rand_str([[ +###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]]) update_nonidx_params[2] = sb_rand(1, oltp_table_size) rs = db_execute(update_nonidx_stmt) diff --git a/sysbench/tests/db/update_non_index.lua b/sysbench/tests/db/update_non_index.lua index a2d6920..c1211f8 100644 --- a/sysbench/tests/db/update_non_index.lua +++ b/sysbench/tests/db/update_non_index.lua @@ -85,7 +85,7 @@ function thread_init(thread_id) set_vars() stmt = db_prepare([[ - UPDATE %s set c=? where id=? + UPDATE sbtest set c=? where id=? ]]) params = {"", 0} db_bind_param(stmt, params) @@ -93,8 +93,8 @@ end function event(thread_id) local rs - params[1] = sb_rnd() .. '-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd() .. '-' .. - sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd()..'-'..sb_rnd() + params[1] = sb_rand_str([[ +###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]]) params[2] = sb_rand(1, oltp_table_size) rs = db_execute(stmt) end