From: John David Duncan Date: May 16 2011 5:38am Subject: bzr commit into mysql-5.1-telco-7.2 branch (john.duncan:4173) List-Archive: http://lists.mysql.com/commits/137376 Message-Id: <201105160538.p4G5cMrM024749@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1309670371==" --===============1309670371== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/jdd/bzr-repo/working/cluster-7.2-labs-memcached/ based on revid:john.duncan@stripped 4173 John David Duncan 2011-05-15 Improvements to unit-test framework modified: storage/ndb/memcache/unit/all_tests.h storage/ndb/memcache/unit/connpool.cc storage/ndb/memcache/unit/harness.cc === modified file 'storage/ndb/memcache/unit/all_tests.h' --- a/storage/ndb/memcache/unit/all_tests.h 2011-03-30 06:54:53 +0000 +++ b/storage/ndb/memcache/unit/all_tests.h 2011-05-16 05:37:57 +0000 @@ -30,13 +30,19 @@ #define detail(v, fmt, ...) if(v) printf (fmt, ## __VA_ARGS__) #define RESULT getNdbError().code +#define REQ_NONE 0 +#define REQ_NDB_CONNECTION 1 +#define REQ_DEMO_TABLE 2 + void delete_row(QueryPlan *plan, const char * key, int verbose); typedef int TESTCASE(QueryPlan *plan, int verbose); struct test_item { + int enabled; const char *name; TESTCASE *function; + int requires; }; TESTCASE run_cas_test; @@ -48,12 +54,18 @@ TESTCASE run_pool_test; #ifdef HARNESS struct test_item all_tests[] = { - { "cas operation", run_cas_test }, - { "cas bitshifting", test_cas_bitshifts }, - { "incr operation", run_incr_test }, - { "allocator", run_allocator_test }, - { "pool", run_pool_test }, - { NULL, NULL } + { 1, "cas operation", run_cas_test, REQ_DEMO_TABLE }, + { 1, "cas bitshifting", test_cas_bitshifts, REQ_NONE }, + { 1, "incr operation", run_incr_test, REQ_DEMO_TABLE }, + { 1, "allocator", run_allocator_test, REQ_NONE }, + { 0, "pool", run_pool_test, REQ_NDB_CONNECTION }, + { 0, NULL, NULL, NULL } +}; + + +const char * requirements[3] = +{ + "none", "ndb connection", "demo_table" }; #else === modified file 'storage/ndb/memcache/unit/connpool.cc' --- a/storage/ndb/memcache/unit/connpool.cc 2011-03-30 06:54:53 +0000 +++ b/storage/ndb/memcache/unit/connpool.cc 2011-05-16 05:37:57 +0000 @@ -28,7 +28,6 @@ int run_pool_test(QueryPlan *plan, int v int r; Ndb_cluster_connection &main_conn = plan->db->get_ndb_cluster_connection(); - /* The pooled connection */ Ndb_cluster_connection * nc = new Ndb_cluster_connection(connect_string, & main_conn); === modified file 'storage/ndb/memcache/unit/harness.cc' --- a/storage/ndb/memcache/unit/harness.cc 2011-04-19 01:16:36 +0000 +++ b/storage/ndb/memcache/unit/harness.cc 2011-05-16 05:37:57 +0000 @@ -26,10 +26,9 @@ #define HARNESS 1 #include "all_tests.h" -/*** usage: ./run_unit_tests [connectstring] [test-id] - These tests require a running cluster. +/*** These tests require a running cluster. Some of them require the ndbmemcache.demo_table to exist. - If test-id is supplied, run one test verbosely; + If a particular test-id is supplied, run one test verbosely; otherwise run all tests and indicate pass or fail. ***/ @@ -39,32 +38,43 @@ extern EXTENSION_LOGGER_DESCRIPTOR *logg Ndb_cluster_connection * connect(const char *); +int list_tests(void); +int usage(char *); + int main(int argc, char *argv[]) { + connect_string = NULL; int test_number = -1; char * test_name = 0; - if(argc > 1) connect_string = argv[1]; - if(argc > 2) { - test_number = atoi(argv[2]); - if(test_number) test_number -= 1; - else test_name = argv[2]; - } - - ndb_init(); - DEBUG_INIT(NULL, 0); - - printf("Connecting to cluster (%s)\n", connect_string); - - Ndb_cluster_connection * conn = connect(connect_string); - Ndb *db = new Ndb(conn); - db->init(4); - - TableSpec spec("ndbmemcache.demo_table", "mkey", "string_value"); - spec.cas_column = "cas_value"; - spec.math_column = "math_value"; - QueryPlan plan(db, &spec); - + int optc; + int req_level; int npass = 0, nfail = 0; + Ndb_cluster_connection * conn = NULL; + QueryPlan *plan = NULL; + Ndb *db = NULL; + + /* Options */ + while((optc = getopt(argc, argv, "hlc:t:")) != -1) { + switch(optc) { + case 'c': + connect_string = optarg; + break; + case 't': + test_number = atoi(optarg); + if(test_number > 0) test_number -= 1; + else test_name = optarg; + break; + case 'l': + return list_tests(); + break; + case 'h': + default: + return usage(argv[0]); + break; + } + } + + /* If a test name was given, find it by number */ if(test_name) { for(int i = 0; all_tests[i].name; i++) { if(! strcmp(test_name, all_tests[i].name)) { @@ -77,24 +87,78 @@ int main(int argc, char *argv[]) { exit(1); } } + + /* Determine requirements level for this test */ + if(test_number >= 0) + req_level = all_tests[test_number].requires; + else + req_level = REQ_DEMO_TABLE; // highest level - if(test_number > -1) { + ndb_init(); + DEBUG_INIT(NULL, 0); + + if(req_level >= REQ_NDB_CONNECTION) { + printf("Connecting to cluster (%s)\n", connect_string); + conn = connect(connect_string); + db = new Ndb(conn); + db->init(4); + } + + if(req_level >= REQ_DEMO_TABLE) { + TableSpec spec("ndbmemcache.demo_table", "mkey", "string_value"); + spec.cas_column = "cas_value"; + spec.math_column = "math_value"; + plan = new QueryPlan(db, &spec); + } + + if(test_number >= 0) { /* Run a particular test */ printf("%s\n", all_tests[test_number].name); - int r = all_tests[test_number].function(& plan, 1); //verbose + int r = all_tests[test_number].function(plan, 1); //verbose printf(" %s\n", r ? "[PASS]" : "[FAIL]"); if(r) npass++; else nfail++; } - else { + else { /* Run all tests */ for(int i = 0; all_tests[i].name; i++) { - printf("%-30s", all_tests[i].name); - int r = all_tests[i].function(& plan, 0); // quiet - printf(" %s\n", r ? "[PASS]" : "[FAIL]"); - if(r) npass++; - else nfail++; + if(all_tests[i].enabled) { + printf("%-30s", all_tests[i].name); + int r = all_tests[i].function(plan, 0); // quiet + printf(" %s\n", r ? "[PASS]" : "[FAIL]"); + if(r) npass++; + else nfail++; + } } - printf("\nTotals: %d pass ... %d fail\n", npass, nfail); + printf("\nTotals: %d pass ... %d fail\n", npass, nfail); } + + exit((nfail > 0)); +} + + +int list_tests() { + printf("\n"); + printf("No. %-30s %-20s %-10s\n", "Name", "Requires","Enabled"); + printf("----------------------------------------------------------------\n"); + for(int i = 0; all_tests[i].name; i++) + printf("%d %-30s %-20s %-10s\n", i+1, all_tests[i].name, + requirements[all_tests[i].requires], + all_tests[i].enabled ? "Yes" : "No"); + printf("\n"); + return 0; +} + + +int usage(char *prog) { + printf("\n"); + printf("usage %s [options]\n", prog); + printf("options: \n"); + printf(" -c connectstring : specify NDB connect-string\n"); + printf(" -t test-id : run a particular test by number or name\n"); + printf(" -l : list tests\n"); + printf(" -h : help\n"); + printf("\n"); + + return 0; } --===============1309670371== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/john.duncan@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: john.duncan@stripped # target_branch: file:///Users/jdd/bzr-repo/working/cluster-7.2-labs-\ # memcached/ # testament_sha1: 46d8b3d9570097867d1551cfafcb77ba6c2ab08b # timestamp: 2011-05-15 22:38:16 -0700 # base_revision_id: john.duncan@stripped\ # nvv4ukqzag6k7e64 # # Begin bundle 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 p7ayDV1iL9IvWaBj62uhon/xdyRThQkH6sHDgA== --===============1309670371==--