<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CkUBSH0_fSp7ImA9WhdbFEo.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108</id><updated>2011-10-12T18:44:19.345-07:00</updated><title>Noodles</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default?redirect=false&amp;v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2'/><author><name>nyet</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>460</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='W/&quot;CkcGQHk6fyp7ImA9WhdbFEo.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-8491582294063675735</id><published>2011-10-12T18:40:00.001-07:00</published><updated>2011-10-12T18:40:21.717-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-10-12T18:40:21.717-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='blogger api'/><title>First Post (via Blogger API)</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
      &lt;p&gt;Yay, it works!&lt;/p&gt;
    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-8491582294063675735?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/8491582294063675735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=8491582294063675735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/8491582294063675735?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/8491582294063675735?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2011/10/first-post-via-blogger-api_12.html' title='First Post (via Blogger API)'/><author><name>Joe Helper</name><uri>http://www.blogger.com/profile/13265982929120878921</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CkQESHw8eip7ImA9WxBUF0s.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-4727905731211068094</id><published>2010-03-04T19:32:00.000-08:00</published><updated>2010-03-04T19:38:29.272-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2010-03-04T19:38:29.272-08:00</app:edited><title>Conversation</title><content type='html'>boss says:&lt;br /&gt;it is almost as if you work for ibm - stubborn punks&lt;br /&gt;terrible testers&lt;br /&gt;if you tell them the light switch doesn't work - they will fix the switch so it goes up and down and not check that the light works&lt;br /&gt;&lt;br /&gt;me sez:&lt;br /&gt;dont you know? that's their new business model&lt;br /&gt;customer as QA testers&lt;br /&gt;&lt;br /&gt;EOF&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-4727905731211068094?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/4727905731211068094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=4727905731211068094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4727905731211068094?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4727905731211068094?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2010/03/conversation.html' title='Conversation'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;Dk8DRX09eSp7ImA9WxBSF08.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-5236710443939745491</id><published>2009-12-24T23:07:00.001-08:00</published><updated>2009-12-24T23:07:54.361-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-12-24T23:07:54.361-08:00</app:edited><title>Merry Christmas And Happy New Year</title><content type='html'>I'll be incommunicado these following days&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-5236710443939745491?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/5236710443939745491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=5236710443939745491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5236710443939745491?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5236710443939745491?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/12/merry-christmas-and-happy-new-year.html' title='Merry Christmas And Happy New Year'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C08BQno_fyp7ImA9WxBSF0o.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-4424767993768316223</id><published>2009-12-21T12:09:00.001-08:00</published><updated>2009-12-25T12:10:53.447-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-12-25T12:10:53.447-08:00</app:edited><title>Moving Again</title><content type='html'>Looks like I am going to be moving out of my hole, has been hitting up Craig's List for several weeks and there are lots of openings in Sillycone Valley.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-4424767993768316223?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/4424767993768316223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=4424767993768316223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4424767993768316223?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4424767993768316223?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/12/moving-again.html' title='Moving Again'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C04NRXY5fCp7ImA9WxBSF0o.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-4937953382596131444</id><published>2009-12-18T12:12:00.000-08:00</published><updated>2009-12-25T12:13:14.824-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-12-25T12:13:14.824-08:00</app:edited><title>Hilo Is A Culinary Sink Hole</title><content type='html'>Don't eat there, or lower your expectation, even your baseline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-4937953382596131444?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/4937953382596131444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=4937953382596131444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4937953382596131444?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4937953382596131444?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/12/hilo-is-culinary-sink-hole.html' title='Hilo Is A Culinary Sink Hole'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;A0UCQnc8fyp7ImA9WxBSEEo.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-3717120169726547470</id><published>2009-12-17T11:42:00.000-08:00</published><updated>2009-12-17T11:47:43.977-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-12-17T11:47:43.977-08:00</app:edited><title>Taking Caltrain From SFO</title><content type='html'>This is what happened last night:&lt;br /&gt;834pm Grabbed the bag &lt;br /&gt;839pm Blue line starts&lt;br /&gt;848pm BART: SFO-Millbrae starts&lt;br /&gt;857pm On Caltrain southbound platform - very close!&lt;br /&gt;904pm Caltrain 192 is on time.&lt;br /&gt;&lt;br /&gt;Yeah, 30 min is too close to catch a Caltrain from SFO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-3717120169726547470?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/3717120169726547470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=3717120169726547470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/3717120169726547470?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/3717120169726547470?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/12/taking-caltrain-from-sfo.html' title='Taking Caltrain From SFO'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C08NSHk9cSp7ImA9WxNaEUQ.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-5407730639802440464</id><published>2009-11-25T15:30:00.000-08:00</published><updated>2009-11-25T15:31:39.769-08:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-11-25T15:31:39.769-08:00</app:edited><title>Blogs.Perl.Org is MT</title><content type='html'>More incentive to install MT on angrybots.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-5407730639802440464?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/5407730639802440464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=5407730639802440464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5407730639802440464?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5407730639802440464?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/11/blogsperlorg-is-mt.html' title='Blogs.Perl.Org is MT'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C0YBRH04cSp7ImA9WxNVEE0.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-883362495576528453</id><published>2009-10-19T18:10:00.000-07:00</published><updated>2009-10-19T18:12:35.339-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-10-19T18:12:35.339-07:00</app:edited><title>Google Translation Perfected The Art of Lost In Translation</title><content type='html'>Koorts is weg, maar zo slap als een vaatdoek. Mis voor het eerst in lange tijd een TV. Beetje zinloos zappen bij de kachel lijkt me heerlijk&lt;br /&gt;&lt;a href="http://twitter.com/silvertje/status/4998571402"&gt;http://twitter.com/silvertje/status/4998571402&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google Translation sez: &lt;span style="font-style: italic;"&gt;Fever is gone, but as limp as a dish cloth. Mass for the first time in a long time TV. Bit pointless zapping the stove seems wonderful&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;har3 - omg ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-883362495576528453?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/883362495576528453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=883362495576528453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/883362495576528453?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/883362495576528453?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/10/google-translation-perfected-art-of.html' title='Google Translation Perfected The Art of Lost In Translation'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C0YFSX0-fSp7ImA9WxNRFks.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-818847622735956824</id><published>2009-09-11T02:24:00.000-07:00</published><updated>2009-09-11T02:25:18.355-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-11T02:25:18.355-07:00</app:edited><title>Need Editor</title><content type='html'>Re-reading the posts, I realize I need an editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-818847622735956824?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/818847622735956824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=818847622735956824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/818847622735956824?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/818847622735956824?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/need-editor.html' title='Need Editor'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkUARXw9fCp7ImA9WxNRFUo.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-7063672882355618857</id><published>2009-09-10T02:11:00.000-07:00</published><updated>2009-09-10T02:17:24.264-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-10T02:17:24.264-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='loadrunner'/><title>Persisting LR  Data Using MySQL</title><content type='html'>In the beginning it was horrible: not knowing what kind of C compiler LoadRunner is using, I experience with several header files from cygwin and mingw, which I know, deep inside, won’t work.&lt;br /&gt;&lt;br /&gt;But &lt;a href="http://oilynoodle.blogspot.com/2009/09/rtfm-saved-day.html"&gt;RTFM saved the day&lt;/a&gt;, by merging the header files to $LR/include MySQL C code can be compiled by only tweaking one 64 bits reference.&lt;br /&gt;&lt;br /&gt;Below is the final code to commit unique users, I totally rely on MySQL’s ACID to do the right thing. Hopefully I put my belief at the right place.&lt;blockquote&gt;&lt;pre&gt;int commit_user() {&lt;br /&gt;int rc = 0;&lt;br /&gt;char *exec;&lt;br /&gt;int good = 0;&lt;br /&gt;int available = 1;&lt;br /&gt;&lt;br /&gt;db_connection = mysql_init(NULL);&lt;br /&gt;if (db_connection == NULL) {&lt;br /&gt;lr_error_message("Insufficient memory");&lt;br /&gt;return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Connect to the database&lt;br /&gt;if (mysql_real_connect(db_connection, server, user, password, database, port, NULL, 0) == NULL) {&lt;br /&gt;lr_error_message("error on connect: %s", mysql_error(db_connection));&lt;br /&gt;mysql_close(db_connection);&lt;br /&gt;return -1;&lt;br /&gt;}&lt;br /&gt;lr_output_message("Connection to DB is established");&lt;br /&gt;&lt;br /&gt;while (!good) {&lt;br /&gt;available = 1;&lt;br /&gt;&lt;br /&gt;while (available) {&lt;br /&gt; exec = lr_eval_string("SELECT EXISTS (select login from LATLogin WHERE login = '{pUserName}');");&lt;br /&gt; if (mysql_query(db_connection, exec)!= 0) {&lt;br /&gt;  lr_error_message("%s;error on query: %s", exec, mysql_error(db_connection));&lt;br /&gt;  mysql_close(db_connection);&lt;br /&gt;  return -1;&lt;br /&gt; }&lt;br /&gt; lr_output_message("exec: %s", exec);&lt;br /&gt;&lt;br /&gt; if ((query_result = mysql_store_result(db_connection)) == NULL) {&lt;br /&gt;  lr_error_message("%s;error on store: %s", exec, mysql_error(db_connection));&lt;br /&gt;  mysql_close(db_connection);&lt;br /&gt;  return -1;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; result_row = mysql_fetch_row(query_result);&lt;br /&gt; available = atoi(result_row[0]);&lt;br /&gt; lr_output_message("available=%d", available);&lt;br /&gt;&lt;br /&gt; if (available) { //exists&lt;br /&gt;  lr_advance_param("pDataFileUserName");&lt;br /&gt;  lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));&lt;br /&gt;  while (strcmp(lr_eval_string("{pDataFileUserName}"), lr_eval_string("{pUserName}")) == 0) {&lt;br /&gt;   lr_advance_param("pDataFileUserName");&lt;br /&gt;   lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));&lt;br /&gt;  }&lt;br /&gt;  lr_save_string(lr_eval_string("{pDataFileUserName}"), "pUserName");&lt;br /&gt; }&lt;br /&gt; mysql_free_result(query_result);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;exec = lr_eval_string("INSERT INTO LATLogin VALUES('{pUserName}');");&lt;br /&gt;if (mysql_query(db_connection, exec)!= 0) {&lt;br /&gt; rc = mysql_errno(db_connection);&lt;br /&gt;&lt;br /&gt; if (rc == 1062) {&lt;br /&gt;  lr_output_message("%s is too late, duplicate exists", exec);&lt;br /&gt;&lt;br /&gt;  //when pUserName exists, probably some else took it already&lt;br /&gt;  lr_advance_param("pDataFileUserName");&lt;br /&gt;  lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));&lt;br /&gt;  while (strcmp(lr_eval_string("{pDataFileUserName}"), lr_eval_string("{pUserName}")) == 0) {&lt;br /&gt;   lr_advance_param("pDataFileUserName");&lt;br /&gt;   lr_output_message("Advance pDataFileUserName = %s", lr_eval_string("{pDataFileUserName}"));&lt;br /&gt;  }&lt;br /&gt;  lr_save_string(lr_eval_string("{pDataFileUserName}"), "pUserName");&lt;br /&gt; }&lt;br /&gt; else {&lt;br /&gt;  lr_error_message("%s, error(%d): %s", exec, mysql_errno(db_connection), mysql_error(db_connection));&lt;br /&gt;  mysql_close(db_connection);&lt;br /&gt;  return -1;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt; lr_output_message("exec: %s", exec);&lt;br /&gt; good = 1;&lt;br /&gt; user_removed = 0;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;mysql_close(db_connection);&lt;br /&gt;lr_output_message("Connection to DB is closed");&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;The final result: running 90 virtual users (I ran out of login), each running 20 seconds transactions.&lt;br /&gt;GetUniqueUserName&lt;br /&gt;&lt;ul&gt;&lt;li&gt;75% of population: 0.028 +/- 0.02&lt;/li&gt;&lt;li&gt;90Percentile: 0.043&lt;/li&gt;&lt;/ul&gt;The generator machine CPU consumption is hovering around 25% - I give this method of persisting LR data a stamp of approval.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-7063672882355618857?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/7063672882355618857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=7063672882355618857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/7063672882355618857?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/7063672882355618857?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/persisting-lr-data-using-mysql.html' title='Persisting LR  Data Using MySQL'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkEDSH46eyp7ImA9WxNRE0Q.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-5572348745153787490</id><published>2009-09-08T00:16:00.000-07:00</published><updated>2009-09-08T00:24:39.013-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-08T00:24:39.013-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title>Perl Now Runs On Android Scripting Environment (ASE)</title><content type='html'>I think I have heard about &lt;a href="http://code.google.com/p/android-scripting/issues/detail?id=32"&gt;it&lt;/a&gt; before, but I managed to push it down to my subconscious level. Now off to figure out which android phone to throw into the ring of my gadget wishlist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-5572348745153787490?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/5572348745153787490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=5572348745153787490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5572348745153787490?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5572348745153787490?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/perl-now-runs-on-android-scripting.html' title='Perl Now Runs On Android Scripting Environment (ASE)'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUYDR3k4fyp7ImA9WxNREk4.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-3740563243817370324</id><published>2009-09-06T03:29:00.001-07:00</published><updated>2009-09-06T03:32:56.737-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-06T03:32:56.737-07:00</app:edited><title>Internet Is Humming Fine</title><content type='html'>The tech is a magician! He fixed AT&amp;amp;T's crappy DSL line. No red DSL light blinking this week, not once.&lt;br /&gt;&lt;br /&gt;DSL Training Errors, Time Since Last Event: 5 days 6:51:19&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-3740563243817370324?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/3740563243817370324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=3740563243817370324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/3740563243817370324?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/3740563243817370324?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/internet-is-humming-fine.html' title='Internet Is Humming Fine'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;A04HRH0yfSp7ImA9WxNREko.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-4692811971171997146</id><published>2009-09-06T01:06:00.000-07:00</published><updated>2009-09-06T16:32:15.395-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-06T16:32:15.395-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='bay area'/><category scheme='http://www.blogger.com/atom/ns#' term='california'/><category scheme='http://www.blogger.com/atom/ns#' term='san francisco'/><category scheme='http://www.blogger.com/atom/ns#' term='restaurants'/><title>House of Prime Rib</title><content type='html'>1906 Van Ness Ave&lt;br /&gt;San Francisco, CA 94109&lt;br /&gt;Tel:(415) 885-4605&lt;br /&gt;http://houseofprimerib.net&lt;br /&gt;&lt;br /&gt;They are doing a good imitation of Lawry's, or is it the other way around?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-4692811971171997146?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/4692811971171997146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=4692811971171997146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4692811971171997146?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4692811971171997146?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/house-of-prime-rib.html' title='House of Prime Rib'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C0QNQnwzfip7ImA9WxNREk4.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-2154918870132824392</id><published>2009-09-04T17:24:00.000-07:00</published><updated>2009-09-06T03:03:13.286-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-06T03:03:13.286-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='loadrunner'/><title>RTFM Saved The Day</title><content type='html'>Friday afternoon, and I am very down since nothing works.&lt;br /&gt;&lt;br /&gt;I admit, &lt;a href="http://www.wilsonmar.com/1lrscript.htm"&gt;Wilsonmar webpage&lt;/a&gt;'s not the official one, but it's damn close. But then, I noticed this:&lt;br /&gt;&lt;blockquote&gt;LoadRunner uses &lt;img src="http://merc.tv/img/itemexit.gif" alt="A website external to this site" border="0" height="11" width="17" /&gt;&lt;a target="_blank" href="http://gcc.gnu.org/onlinedocs/cpp/"&gt;  1994 GNU C Pre-Processor&lt;/a&gt;&lt;a target="_blank" href="http://www.physics.ucla.edu/picl/info/gnu/cpp/cpp.info-3"&gt;  options&lt;/a&gt; and the &lt;img src="http://merc.tv/img/itemexit.gif" alt="A website external to this site" border="0" height="11" width="17" /&gt;&lt;a target="_blank" href="http://www.cs.virginia.edu/%7Elcc-win32/"&gt;  1995 LCC-win32 Retargetable C Compiler/Linker&lt;/a&gt; from the Free Software Foundation via  Chris Fraser of AT&amp;amp;T and Dave Hanson of Princeton. &lt;/blockquote&gt;MySQL C code is compiling nicely now (after one 64bits ref is tweaked).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-2154918870132824392?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/2154918870132824392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=2154918870132824392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2154918870132824392?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2154918870132824392?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/rtfm-saved-day.html' title='RTFM Saved The Day'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CE8BRH8yfCp7ImA9WxNREk4.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-1321003856943072141</id><published>2009-09-04T15:24:00.000-07:00</published><updated>2009-09-06T03:27:35.194-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-06T03:27:35.194-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='loadrunner'/><title>The New Multi Protocol Script On LR9.1 Is A Useless POS</title><content type='html'>Q: Can I record ODBC traffic for Action1.c and then record Web traffic for Action2.c (or vice versa)?&lt;br /&gt;A: No.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-1321003856943072141?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/1321003856943072141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=1321003856943072141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/1321003856943072141?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/1321003856943072141?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/new-multi-protocol-script-is-useless.html' title='The New Multi Protocol Script On LR9.1 Is A Useless POS'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CEAMQ3g8eSp7ImA9WxNRF00.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-6746726988318840362</id><published>2009-09-03T23:57:00.000-07:00</published><updated>2009-09-11T13:59:42.671-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-11T13:59:42.671-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='mexican'/><category scheme='http://www.blogger.com/atom/ns#' term='campbell'/><category scheme='http://www.blogger.com/atom/ns#' term='bay area'/><category scheme='http://www.blogger.com/atom/ns#' term='california'/><category scheme='http://www.blogger.com/atom/ns#' term='restaurants'/><title>El Burro's Mexican Restaurant</title><content type='html'>1875 S Bascom Ave # 570 (The Pruneyard #570)&lt;br /&gt;Campbell, CA 95008-2389&lt;br /&gt;Tel: (408) 371-5800&lt;br /&gt;&lt;br /&gt;Not bad, not bad at all&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-6746726988318840362?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/6746726988318840362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=6746726988318840362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/6746726988318840362?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/6746726988318840362?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/el-burros-mexican-restaurant.html' title='El Burro&apos;s Mexican Restaurant'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUQERXk-eCp7ImA9WxNRE0s.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-5825197755021693773</id><published>2009-09-03T18:17:00.000-07:00</published><updated>2009-09-07T15:41:44.750-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-07T15:41:44.750-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='loadrunner'/><title>Next Stop: SQLite</title><content type='html'>Actually no, I was thinking about something more ambitious (MySQL). The fact that I have to hunt down other C library files, forces me to consider SQLite. Just drop sqlite3.dll to $LR/bin, sqlite3.h to $LR/include and trim off the 64 bit references in sqlite3.h to make it works.&lt;br /&gt;&lt;br /&gt;But simpler solution doesn’t make my life easier, since writing SQLite code (or any db code), in C, that doesn’t leak memory or crashes the db, is fairly hard.&lt;br /&gt;&lt;br /&gt;But finally, I get this:&lt;blockquote&gt;&lt;pre&gt;rc = sqlite3_open("test.db", &amp;amp;db);&lt;br /&gt;if (rc) {&lt;br /&gt; lr_output_message("Can't open database: %s", sqlite3_errmsg(db));&lt;br /&gt; sqlite3_close(db);&lt;br /&gt; return -1;&lt;br /&gt;}&lt;br /&gt;exec = "NO RESULT QUERY SUCH AS: DELETE, INSERT”; &lt;br /&gt;isPrepared = 0;&lt;br /&gt;while (!isPrepared) {&lt;br /&gt; rc = sqlite3_prepare(db, exec, -1, &amp;amp;stmt, 0);&lt;br /&gt; if (rc == SQLITE_OK) { //SQLITE_OK == 0&lt;br /&gt;  isPrepared = 1;&lt;br /&gt;  isExecuted = 0;&lt;br /&gt;  while (!isExecuted) {&lt;br /&gt;   rc = sqlite3_step(stmt);&lt;br /&gt;   /* uncomment this section when exec is a query that return result&lt;br /&gt;   while ((rc == SQLITE_ROW)||(rc == SQLITE_BUSY) ) {&lt;br /&gt;    if (rc == SQLITE_BUSY ) {&lt;br /&gt;     lr_output_message("SQLITE_BUSY - wait for 0.1 seconds");&lt;br /&gt;     lr_think_time(0.1); // TODO: tweak the wait time to your need&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;     // extract data&lt;br /&gt;     rc = sqlite3_step(stmt);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   */&lt;br /&gt;   if (rc == SQLITE_DONE) {&lt;br /&gt;    isExecuted = 1;&lt;br /&gt;    sqlite3_finalize(stmt);&lt;br /&gt;   }&lt;br /&gt;   else if (rc == SQLITE_BUSY) { // DB is locked&lt;br /&gt;    lr_output_message("SQLITE_BUSY - wait for 0.1 seconds");&lt;br /&gt;    lr_think_time(0.1); // TODO: tweak the wait time to your need&lt;br /&gt;   }&lt;br /&gt;   else { // real bad stuff usually happens here&lt;br /&gt;    lr_output_message("Cannot execute step, rc = %d", rc);&lt;br /&gt;    lr_output_message("sqlite3_errmsg: %s", sqlite3_errmsg(db));&lt;br /&gt;    lr_output_message("sqlite3_extended_errcode, rc = %d", sqlite3_extended_errcode(db));&lt;br /&gt;    sqlite3_finalize(stmt);&lt;br /&gt;    sqlite3_close(db);&lt;br /&gt;    return -1;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; else if (rc == SQLITE_BUSY) { // DB is locked&lt;br /&gt;  lr_output_message("SQLITE_BUSY - wait for 0.1 seconds");&lt;br /&gt;  lr_think_time(0.1); // TODO: tweak the wait time to your need&lt;br /&gt; }&lt;br /&gt; else { // real bad stuff usually happens here&lt;br /&gt;  lr_output_message("Could not prepare statement, rc=%d", rc);&lt;br /&gt;  lr_output_message("sqlite3_errmsg: %s", sqlite3_errmsg(db));&lt;br /&gt;  lr_output_message("sqlite3_extended_errcode, rc = %d", sqlite3_extended_errcode(db));&lt;br /&gt;  sqlite3_close(db);&lt;br /&gt;  return -1;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;sqlite3_close(db);&lt;/pre&gt;&lt;/blockquote&gt;Functionally the script works, at 50 virtual users, each running 20 seconds transactions, even the GetUniqueUserName transaction is fairly fast:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;75% of population: 0.269 +/- 0.731&lt;/li&gt;&lt;li&gt;90Percentile: 0.655&lt;/li&gt;&lt;/ul&gt;But, it doesn’t work at 60 virtual users, it also locks the controller. Not good, need to look into MySQL solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-5825197755021693773?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/5825197755021693773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=5825197755021693773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5825197755021693773?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/5825197755021693773?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/next-stop-sqlite.html' title='Next Stop: SQLite'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;Ak8ERHwycSp7ImA9WxNSGEo.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-3089200417651684403</id><published>2009-09-02T01:03:00.000-07:00</published><updated>2009-09-02T01:06:45.299-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-02T01:06:45.299-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title>ActiveState - People Don't Like You?</title><content type='html'>This is the first time I heard about people emitting strong comments against ActiveState, but I agree with &lt;a href="http://ldami.blogspot.com/2009/08/be-fair-to-activestate.html"&gt;Dami&lt;/a&gt;, ActiveState has been making my life very productive, it's products and business practices has been very satisfactory to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-3089200417651684403?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/3089200417651684403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=3089200417651684403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/3089200417651684403?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/3089200417651684403?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/09/activestate-people-dont-like-you.html' title='ActiveState - People Don&apos;t Like You?'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkMCQ3gyeyp7ImA9WxNSGE4.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-4549683237124232919</id><published>2009-08-31T20:55:00.000-07:00</published><updated>2009-09-01T12:47:42.693-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-01T12:47:42.693-07:00</app:edited><title>Cable Problem Causing The Internet To Fritz</title><content type='html'>Today, the DSL just decided not to work - again - ever. A technician is scheduled and he replaces the cable and everything works - so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-4549683237124232919?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/4549683237124232919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=4549683237124232919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4549683237124232919?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/4549683237124232919?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/cable-problem-causing-internet-to-fritz.html' title='Cable Problem Causing The Internet To Fritz'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkYCQ3o5fSp7ImA9WxNSF04.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-2964287014087133223</id><published>2009-08-28T11:01:00.000-07:00</published><updated>2009-08-31T08:56:02.425-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-08-31T08:56:02.425-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='loadrunner'/><title>LoadRunner Doesn't Like 64 Bit Emulation</title><content type='html'>LoadRunner doesn't like 64 bit emulation over 32 bit machine. It doesn't like long long declaration on .h header file. It spews:&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;invalid use of `long'&lt;/blockquote&gt;Thus begin the hacking and slashing of sqlite3.h&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-2964287014087133223?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/2964287014087133223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=2964287014087133223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2964287014087133223?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2964287014087133223?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/loadrunner-doesnt-like-64-bit-emulation.html' title='LoadRunner Doesn&apos;t Like 64 Bit Emulation'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkEHSH8-fip7ImA9WxNSGUQ.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-2789630688363632327</id><published>2009-08-26T12:25:00.000-07:00</published><updated>2009-09-03T09:17:19.156-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-09-03T09:17:19.156-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='vts'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='loadrunner'/><title>Each VUser Must Use Unique Login ID</title><content type='html'>This is a problem: the web app that I am testing is using the login id as session id. Since I am furnished with data, that has multiple non-unique logins, I have to make sure that all of virtual users are using unique login id.&lt;br /&gt;&lt;br /&gt;Several solutions come to mind, but I decided to give LoadRunner VTS a whirl.&lt;br /&gt;&lt;br /&gt;Perusing VTS2.doc I quickly hone in lrvtc_send_if_unique function:&lt;br /&gt;&lt;blockquote&gt;VTCERR lrvtc_send_if_unique(char *columnName, char *message)&lt;/blockquote&gt;But this function is pretty much useless since the VTCERR equals 1 no matter if the insertion is successful or not. Trying its cousin instead:&lt;br /&gt;&lt;blockquote&gt;VTCERR vtc_send_if_unique(PVCI pvci, char *columnName, char *message, unsigned short *outRc)&lt;/blockquote&gt;This function returns successful insertion status in outRc parameter (1 = Pass, 0 = Fail).&lt;blockquote&gt;&lt;pre&gt;lr_start_transaction("GetUniqueUserName");&lt;br /&gt;status = 0;&lt;br /&gt;while (status == 0) {&lt;br /&gt; lr_save_string(lr_eval_string("{pDATAFILEUserName}"), "pUserName");&lt;br /&gt;&lt;br /&gt; pvci = lrvtc_connect(lr_eval_string("{pVTSServer}"), 8888, 0);&lt;br /&gt; rc = vtc_send_if_unique(pvci, "pUserName1", lr_eval_string("{pUserName}"), &amp;amp;status);&lt;br /&gt; lr_output_message("Insert if unique, rc = %d, status: = %d", rc, status);&lt;br /&gt; lrvtc_disconnect();&lt;br /&gt;  &lt;br /&gt; if (status == 0)  //try another login in the data file if fail&lt;br /&gt;  lr_advance_param("pDATAFILEUserName ");&lt;br /&gt; else&lt;br /&gt;  user_removed = 0; // just another flag&lt;br /&gt;}&lt;br /&gt;lr_end_transaction("GetUniqueUserName", LR_AUTO);&lt;/pre&gt;&lt;/blockquote&gt;The login removal process is a trickier than the insert process, since VTS doesn’t have a function to look up a value in a column, a value has to be looked up (one by one):&lt;blockquote&gt;&lt;pre&gt;int removePreviousUserName() { // to eliviate the nasty side effect of exit when error&lt;br /&gt; int rc = 0;&lt;br /&gt; unsigned short  status;&lt;br /&gt; int EOT = 0;&lt;br /&gt; int i;&lt;br /&gt; int user_removed = 0;&lt;br /&gt;&lt;br /&gt; lr_start_transaction("RemovePreviousUserName");&lt;br /&gt; i=lastrowID;&lt;br /&gt;&lt;br /&gt; while (!EOT) {&lt;br /&gt;  i++;&lt;br /&gt;  pvci = lrvtc_connect(lr_eval_string("{pVTSServer}"), 8888, 0);&lt;br /&gt;  &lt;br /&gt;  rc = lrvtc_query_column("pUserName1", i);&lt;br /&gt;  lr_output_message("query row %d, rc = %d", i, rc);&lt;br /&gt;&lt;br /&gt;  if (rc!=0)&lt;br /&gt;   EOT = 1;&lt;br /&gt;  else {&lt;br /&gt;   if (stricmp(lr_eval_string("{pUserName}"), lr_eval_string("{pUserName1}")) == 0)  {&lt;br /&gt;    lr_output_message("Del msg (%s) at row %d", lr_eval_string("{pUserName1}"), i);&lt;br /&gt;    rc = vtc_clear_message(pvci, "pUserName1", i, &amp;amp;status);&lt;br /&gt;    lr_output_message("Del msg, rc = %d, Status = %d", rc, status);&lt;br /&gt;    lastrowID = i;&lt;br /&gt;    EOT = 1; // exit anyway&lt;br /&gt;    user_removed = 1;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  lrvtc_disconnect();&lt;br /&gt; }&lt;br /&gt; lr_end_transaction("RemovePreviousUserName", LR_AUTO);&lt;br /&gt; return user_removed;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;A little explanation about lastrowID, when a data is deleted from VTS, a value can never be re-inserted into that row again via vtc_send_if_unique function. So, there are lots of empty rows at the lower index after the value is deleted. Thus there is no point for the script to start the search for a login to delete from row 1; instead it should start the search from the last deletion point.&lt;br /&gt;&lt;br /&gt;Functionally the script works, but VTS system is not capable of handling multiple virtual users. At 10 virtual users, each running 20 seconds transactions, VTS is throwing numerous -10003 errors, that causes slow GetUniqueUserName transaction:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;75% of population: 2.201 +/- 2.912&lt;/li&gt;&lt;li&gt;90 Percentile: 6.506&lt;/li&gt;&lt;/ul&gt;2.2 seconds on the average to insert unique value? I don’t think so. I need a better solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-2789630688363632327?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/2789630688363632327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=2789630688363632327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2789630688363632327?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2789630688363632327?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/each-vuser-must-use-unique-login-id.html' title='Each VUser Must Use Unique Login ID'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DUEGQng8fyp7ImA9WxNSEk4.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-707800958000688901</id><published>2009-08-25T14:57:00.000-07:00</published><updated>2009-08-25T15:00:23.677-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-08-25T15:00:23.677-07:00</app:edited><title>Internet Is All Good</title><content type='html'>The Alarm app on my BlackBerry seg-faulted this morning. Too bad I was too groggy &amp; pissed off to take a picture, it would be interesting.&lt;br /&gt;&lt;br /&gt;Note to self: steal an olde alarm clock from Lisa.&lt;br /&gt;&lt;br /&gt;Btw: Internet is all good, looks like I don't need to talk to the good people in St Louis after all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-707800958000688901?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/707800958000688901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=707800958000688901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/707800958000688901?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/707800958000688901?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/internet-all-good.html' title='Internet Is All Good'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;A04FRHs9eyp7ImA9WxNSEUo.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-1845470249079649439</id><published>2009-08-24T22:54:00.000-07:00</published><updated>2009-08-24T22:58:35.563-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-08-24T22:58:35.563-07:00</app:edited><title>AT&amp;T Support, The Competency May Varies</title><content type='html'>AT&amp;T support @ 800-288-2020: FireFox's history/cookies causes the router's red light (DSL) to blink &amp; drop the internet. &lt;br /&gt;&lt;br /&gt;I think I should better wait for the good AT&amp;T support (866-865-7685) in St Louis to wake up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-1845470249079649439?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/1845470249079649439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=1845470249079649439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/1845470249079649439?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/1845470249079649439?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/at-support-competency-may-varies.html' title='AT&amp;T Support, The Competency May Varies'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUIGQ304cCp7ImA9WxNTEU4.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-6044505909379887334</id><published>2009-08-12T20:04:00.000-07:00</published><updated>2009-08-12T20:18:42.338-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-08-12T20:18:42.338-07:00</app:edited><title>Identifying Location Based On The Soil's Microbial Makeup</title><content type='html'>Received this email and it raised little hairs on my neck.&lt;blockquote&gt;from Melanie S &lt;br /&gt;date Wed, Aug 12, 2009 at 6:05 PM&lt;br /&gt;subject JOB: soil microbiome profiling @ LLNL (must be US citizen)&lt;br /&gt;&lt;br /&gt;Tom Slezak, Biodefense Group Leader, Lawrence Livermore National Laboratory, https://www.llnl.gov/str/April04/Slezak.html, mentioned last week at the Microarray World Congress, http://www.selectbiosciences.com/conferences/MWC2009/Agenda.aspx, that he has a funded soil microbiome profiling position currently available.&lt;br /&gt;&lt;br /&gt;The candidate must be a US citizen, and should ideally have a PhD in a related field such as bioinformatics and 1-4 years work experience. Tom’s contact information is here: https://www.llnl.gov/str/April04/Slezak.html&lt;br /&gt;&lt;br /&gt;Specifically, the position/project entails looking at:&lt;br /&gt;&lt;br /&gt;   * Can soil microbiome profiling characterize locations? To what resolution?&lt;br /&gt;   * Determine the ability to characterize locations by analyzing microbial content&lt;br /&gt;   * Utilize microarrays and sequencing to determine the ability to resolve where a soil sample came from or rule out locations&lt;br /&gt;   * Develop a soil microbiome microarray to provide a low-cost way to ‘fingerprint’ locations&lt;br /&gt;   * Determine degree of location resolution possible due to species-level soil microbe differences&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Uh-oh Dexter, beware of that dirt on your shoes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-6044505909379887334?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/6044505909379887334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=6044505909379887334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/6044505909379887334?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/6044505909379887334?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/identifying-soil-based-on-microbial.html' title='Identifying Location Based On The Soil&apos;s Microbial Makeup'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CEYARX46fSp7ImA9WxNTEU0.&quot;'><id>tag:blogger.com,1999:blog-9019574762893471108.post-2460461808865219876</id><published>2009-08-12T11:18:00.000-07:00</published><updated>2009-08-12T11:35:44.015-07:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2009-08-12T11:35:44.015-07:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='datetime'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title>Translating The Name of Month To Number</title><content type='html'>Another Perl code posted since I am getting tired of rewriting it all the time.&lt;blockquote&gt;&lt;pre&gt;my %months = (&lt;br /&gt; Jan=&gt;1, Feb=&gt;2, Mar=&gt;3, Apr=&gt;4,  May=&gt;5,  Jun=&gt;6, &lt;br /&gt; Jul=&gt;7, Aug=&gt;8, Sep=&gt;9, Oct=&gt;10, Nov=&gt;11, Dec=&gt;12,&lt;br /&gt; January=&gt;1,  February=&gt;2,  March=&gt;3, &lt;br /&gt; April=&gt;4,    May=&gt;5,       June=&gt;6, &lt;br /&gt; July=&gt;7,     August=&gt;8,    September=&gt;9, &lt;br /&gt; October=&gt;10, November=&gt;11, December=&gt;12,&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;eg:&lt;blockquote&gt;&lt;pre&gt;parseDate('Jan  1 2009 12:00:00:000AM');&lt;br /&gt;&lt;br /&gt;sub parseSQLDate {&lt;br /&gt; my ($txt) = @_;&lt;br /&gt; &lt;br /&gt; if ($txt =~ /^(\w+)\s+(\d+)\s+(\d+)\s+(\d+):(\d+):(\d+):(\d+)/) {&lt;br /&gt;  use DateTime;&lt;br /&gt; &lt;br /&gt;  my %months = (&lt;br /&gt;   Jan=&gt;1, Feb=&gt;2, Mar=&gt;3, Apr=&gt;4,  May=&gt;5,  Jun=&gt;6, &lt;br /&gt;   Jul=&gt;7, Aug=&gt;8, Sep=&gt;9, Oct=&gt;10, Nov=&gt;11, Dec=&gt;12,&lt;br /&gt;   January=&gt;1,  February=&gt;2,  March=&gt;3, &lt;br /&gt;   April=&gt;4,    May=&gt;5,       June=&gt;6, &lt;br /&gt;   July=&gt;7,     August=&gt;8,    September=&gt;9, &lt;br /&gt;   October=&gt;10, November=&gt;11, December=&gt;12,&lt;br /&gt;  );&lt;br /&gt;  &lt;br /&gt;  my $dt = DateTime-&gt;new( &lt;br /&gt;   year   =&gt; $3,&lt;br /&gt;   month  =&gt; $months{$1},&lt;br /&gt;   day    =&gt; $2,&lt;br /&gt;   time_zone =&gt; 'floating',&lt;br /&gt;  );&lt;br /&gt;  &lt;br /&gt;  return $dt;&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9019574762893471108-2460461808865219876?l=oilynoodle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oilynoodle.blogspot.com/feeds/2460461808865219876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9019574762893471108&amp;postID=2460461808865219876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2460461808865219876?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9019574762893471108/posts/default/2460461808865219876?v=2'/><link rel='alternate' type='text/html' href='http://oilynoodle.blogspot.com/2009/08/translating-name-of-month-to-number.html' title='Translating The Name of Month To Number'/><author><name>nyet</name><email>noreply@blogger.com</email></author><thr:total>0</thr:total></entry></feed>