Changeset a4c778ebc689f0be4a18b9459d0020ad2f5ca231

Show
Ignore:
Timestamp:
08/16/08 03:41:59 (6 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1218858119 +0000
git-parent:

[b2cc63038d9c296673961479f37207fd9a0c213c]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1218858119 +0000
Message:

add support for timings in lua and measure each phase in smtp, refs #56

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/modules-lua/noit/module/smtp.lua

    rb2cc630 ra4c778e  
    4242local function mkaction(e, check) 
    4343  return function (phase, tosend, expected_code) 
     44    local start_time = noit.timeval.now() 
     45    local success = true 
    4446    if tosend then 
    4547      write_cmd(e, tosend) 
     
    4951      check.status(string.format("%d/%d %s", expected_code, actual_code, message)) 
    5052      check.bad() 
    51       return false 
     53      success = false 
     54    else 
     55      check.available() 
    5256    end 
    53     check.available() 
    54     return true 
     57    local elapsed = noit.timeval.now() - start_time 
     58    local elapsed_ms = math.floor(tostring(elapsed) * 1000) 
     59    check.metric(phase .. "_time",  elapsed_ms) 
     60    return success 
    5561  end 
    5662end 
     
    7177  local action = mkaction(e, check) 
    7278  if     action("banner", nil, 220) 
    73      and action("mail from", mailfrom, 250) 
    74      and action("rcpt to", rcptto, 250) 
     79     and action("mailfrom", mailfrom, 250) 
     80     and action("rcptto", rcptto, 250) 
    7581     and action("data", "DATA", 354) 
    7682     and action("body", "Subject: Test\r\n\r\nHello.\r\n.", 250) 
  • src/modules/lua.c

    rd221460 ra4c778e  
    1212#include "utils/noit_log.h" 
    1313#include "lua_noit.h" 
     14#include "lua_noit_glue.h" 
    1415 
    1516#ifdef HAVE_ALLOCA_H 
     
    643644                     char *module_name, 
    644645                     noit_conf_section_t section) { 
     646  int rv; 
    645647  noit_module_t *m; 
    646648  lua_State *L; 
     
    669671  luaL_openlibs(L);  /* open libraries */ 
    670672  luaopen_noit(L); 
     673 
    671674  lua_newtable(L); 
    672675  lua_setglobal(L, "noit_coros"); 
     
    677680  lua_pop(L, 1); 
    678681 
     682#define require(a) do { \ 
     683  lua_getglobal(L, "require"); \ 
     684  lua_pushstring(L, #a); \ 
     685  rv = lua_pcall(L, 1, 1, 0); \ 
     686  if(rv != 0) { \ 
     687    noitL(noit_stderr, "Loading: %d\n", rv); \ 
     688    goto load_failed; \ 
     689  } \ 
     690  lua_pop(L, 1); \ 
     691} while(0) 
     692 
     693  require(noit.timeval); 
     694 
    679695  lua_gc(L, LUA_GCRESTART, 0); 
    680696 
    681697  noit_image_set_userdata(&m->hdr, lmc); 
    682698  if(m->hdr.onload(&m->hdr) == -1) { 
     699   load_failed: 
     700    lua_close(L); 
    683701    free(m->hdr.name); 
    684702    free(m->hdr.description); 
  • src/modules/lua_noit.c

    ra1327f8 ra4c778e  
    490490} 
    491491static int 
     492nl_gettimeofday(lua_State *L) { 
     493  struct timeval now; 
     494  gettimeofday(&now, NULL); 
     495  lua_pushinteger(L, now.tv_sec); 
     496  lua_pushinteger(L, now.tv_usec); 
     497  return 2; 
     498} 
     499static int 
    492500nl_socket_tcp(lua_State *L, int family) { 
    493501  struct nl_slcl *cl; 
     
    541549static const luaL_Reg noitlib[] = { 
    542550  { "sleep", nl_sleep }, 
     551  { "gettimeofday", nl_gettimeofday }, 
    543552  { "socket", nl_socket }, 
    544553  { "log", nl_log },