diff --git a/crm/pengine/ptest.c b/crm/pengine/ptest.c index 5c3b919497..f29da0adce 100644 --- a/crm/pengine/ptest.c +++ b/crm/pengine/ptest.c @@ -1,423 +1,430 @@ -/* $Id: ptest.c,v 1.77 2006/06/08 13:39:10 andrew Exp $ */ +/* $Id: ptest.c,v 1.78 2006/06/21 08:31:27 andrew Exp $ */ /* * Copyright (C) 2004 Andrew Beekhof * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include -#define OPTARGS "V?X:D:G:I:Lwx" +#define OPTARGS "V?X:D:G:I:Lwxd:" #ifdef HAVE_GETOPT_H # include #endif #include #include #include #include gboolean use_stdin = FALSE; gboolean inhibit_exit = FALSE; extern crm_data_t * do_calculations( pe_working_set_t *data_set, crm_data_t *xml_input, ha_time_t *now); extern void cleanup_calculations(pe_working_set_t *data_set); +char *use_date = NULL; FILE *dot_strm = NULL; #define DOT_PREFIX "PE_DOT: " /* #define DOT_PREFIX "" */ #define dot_write(fmt...) if(dot_strm != NULL) { \ fprintf(dot_strm, fmt); \ fprintf(dot_strm, "\n"); \ fflush(dot_strm); \ } else { \ crm_debug(DOT_PREFIX""fmt); \ } static void init_dotfile(void) { dot_write("digraph \"g\" {"); dot_write(" size = \"30,30\""); /* dot_write(" graph ["); */ /* dot_write(" fontsize = \"12\""); */ /* dot_write(" fontname = \"Times-Roman\""); */ /* dot_write(" fontcolor = \"black\""); */ /* dot_write(" bb = \"0,0,398.922306,478.927856\""); */ /* dot_write(" color = \"black\""); */ /* dot_write(" ]"); */ /* dot_write(" node ["); */ /* dot_write(" fontsize = \"12\""); */ /* dot_write(" fontname = \"Times-Roman\""); */ /* dot_write(" fontcolor = \"black\""); */ /* dot_write(" shape = \"ellipse\""); */ /* dot_write(" color = \"black\""); */ /* dot_write(" ]"); */ /* dot_write(" edge ["); */ /* dot_write(" fontsize = \"12\""); */ /* dot_write(" fontname = \"Times-Roman\""); */ /* dot_write(" fontcolor = \"black\""); */ /* dot_write(" color = \"black\""); */ /* dot_write(" ]"); */ } static void usage(const char *cli, int exitcode) { FILE *out = exitcode?stderr:stdout; fprintf(out, "Usage: %s -(?|L|X|x) [-V] [-D] [-G] [-I]\n", cli); fprintf(out, " --%s (-%c): This text\n\n", "help", '?'); fprintf(out, " --%s (-%c): Increase verbosity (can be supplied multiple times)\n\n", "verbose", 'V'); fprintf(out, " --%s (-%c): Connect to the CIB and use the current contents as input\n", "live-check", 'L'); fprintf(out, " --%s (-%c): Look for xml on stdin\n", "xml-stream", 'x'); fprintf(out, " --%s (-%c)\t : Look for xml in the named file\n\n", "xml-file", 'X'); fprintf(out, " --%s (-%c)\t : Save the transition graph to the named file\n", "save-graph", 'G'); fprintf(out, " --%s (-%c)\t : Save the DOT formatted transition graph to the named file\n", "save-dotfile", 'D'); fprintf(out, " --%s (-%c)\t : Save the input to the named file\n", "save-input", 'I'); exit(exitcode); } static char * create_action_name(action_t *action) { char *action_name = NULL; const char *action_host = NULL; if(action->node) { action_host = action->node->details->uname; action_name = crm_concat(action->uuid, action_host, ' '); } else if(action->pseudo) { action_name = crm_strdup(action->uuid); } else { action_host = ""; action_name = crm_concat(action->uuid, action_host, ' '); } return action_name; } gboolean USE_LIVE_CIB = FALSE; int main(int argc, char **argv) { + gboolean all_good = TRUE; enum transition_status graph_rc = -1; crm_graph_t *transition = NULL; - const char *fake_now = NULL; ha_time_t *a_date = NULL; cib_t * cib_conn = NULL; crm_data_t * cib_object = NULL; int argerr = 0; int flag; char *msg_buffer = NULL; gboolean optional = FALSE; pe_working_set_t data_set; const char *xml_file = NULL; const char *dot_file = NULL; const char *graph_file = NULL; const char *input_file = NULL; cl_log_set_entity("ptest"); cl_log_set_facility(LOG_USER); set_crm_log_level(LOG_CRIT-1); while (1) { #ifdef HAVE_GETOPT_H int option_index = 0; static struct option long_options[] = { /* Top-level Options */ {"help", 0, 0, '?'}, {"verbose", 0, 0, 'V'}, {"live-check", 0, 0, 'L'}, {"xml-stream", 0, 0, 'x'}, {"xml-file", 1, 0, 'X'}, {"save-graph", 1, 0, 'G'}, {"save-dotfile",1, 0, 'D'}, {"save-input", 1, 0, 'I'}, {0, 0, 0, 0} }; #endif #ifdef HAVE_GETOPT_H flag = getopt_long(argc, argv, OPTARGS, long_options, &option_index); #else flag = getopt(argc, argv, OPTARGS); #endif if (flag == -1) break; switch(flag) { #ifdef HAVE_GETOPT_H case 0: printf("option %s", long_options[option_index].name); if (optarg) printf(" with arg %s", optarg); printf("\n"); break; #endif case 'w': inhibit_exit = TRUE; break; case 'x': use_stdin = TRUE; break; case 'X': xml_file = crm_strdup(optarg); break; + case 'd': + use_date = crm_strdup(optarg); + break; case 'D': dot_file = crm_strdup(optarg); break; case 'G': graph_file = crm_strdup(optarg); break; case 'I': input_file = crm_strdup(optarg); break; case 'V': cl_log_enable_stderr(TRUE); alter_debug(DEBUG_INC); break; case 'L': USE_LIVE_CIB = TRUE; break; case '?': usage("ptest", 0); break; default: printf("?? getopt returned character code 0%o ??\n", flag); ++argerr; break; } } if (optind < argc) { printf("non-option ARGV-elements: "); while (optind < argc) { printf("%s ", argv[optind++]); } printf("\n"); } if (optind > argc) { ++argerr; } if (argerr) { crm_err("%d errors in option parsing", argerr); usage("ptest", 1); } crm_info("=#=#=#=#= Getting XML =#=#=#=#="); if(USE_LIVE_CIB) { int rc = cib_ok; cib_conn = cib_new(); rc = cib_conn->cmds->signon( cib_conn, "ptest", cib_command_synchronous); if(rc == cib_ok) { crm_info("Reading XML from: live cluster"); cib_object = get_cib_copy(cib_conn); } else { fprintf(stderr, "Live CIB query failed: %s\n", cib_error2string(rc)); return 3; } if(cib_object == NULL) { fprintf(stderr, "Live CIB query failed: empty result\n"); return 3; } } else if(xml_file != NULL) { FILE *xml_strm = fopen(xml_file, "r"); cib_object = file2xml(xml_strm); } else if(use_stdin) { cib_object = stdin2xml(); } else { usage("ptest", 1); } #ifdef MCHECK mtrace(); #endif CRM_CHECK(cib_object != NULL, return 4); crm_notice("Required feature set: %s", feature_set(cib_object)); do_id_check(cib_object, NULL, FALSE, FALSE); - + if(!validate_with_dtd(cib_object,FALSE,HA_LIBDIR"/heartbeat/crm.dtd")) { + crm_crit("%s is not a valid configuration", xml_file?xml_file:"stding"); + all_good = FALSE; + } + if(input_file != NULL) { FILE *input_strm = fopen(input_file, "w"); msg_buffer = dump_xml_formatted(cib_object); fprintf(input_strm, "%s\n", msg_buffer); fflush(input_strm); fclose(input_strm); crm_free(msg_buffer); } crm_zero_mem_stats(NULL); - fake_now = crm_element_value(cib_object, "fake_now"); - if(fake_now != NULL) { - char *fake_now_copy = crm_strdup(fake_now); - char *fake_now_mutable = fake_now_copy; - a_date = parse_date(&fake_now_mutable); + if(use_date != NULL) { + a_date = parse_date(&use_date); log_date(LOG_WARNING, "Set fake 'now' to", a_date, ha_log_date|ha_log_time); log_date(LOG_WARNING, "Set fake 'now' to (localtime)", a_date, ha_log_date|ha_log_time|ha_log_local); - crm_free(fake_now_copy); } do_calculations(&data_set, cib_object, a_date); msg_buffer = dump_xml_formatted(data_set.graph); if(graph_file != NULL) { FILE *graph_strm = fopen(graph_file, "w"); fprintf(graph_strm, "%s\n", msg_buffer); fflush(graph_strm); fclose(graph_strm); } else { fprintf(stdout, "%s\n", msg_buffer); fflush(stdout); } crm_free(msg_buffer); dot_strm = fopen(dot_file, "w"); init_dotfile(); slist_iter( action, action_t, data_set.actions, lpc, char *action_name = create_action_name(action); crm_debug_3("Action %d: %p", action->id, action); if(action->dumped == FALSE) { if(action->rsc != NULL && action->rsc->is_managed == FALSE) { dot_write("\"%s\" [ font_color=black style=filled fillcolor=%s ]", action_name, "purple"); } else if(action->optional) { dot_write("\"%s\" [ style=\"dashed\" color=\"%s\" fontcolor=\"%s\" ]", action_name, "blue", action->pseudo?"orange":"black"); } else { dot_write("\"%s\" [ font_color=purple style=filled fillcolor=%s ]", action_name, "red"); CRM_CHECK(action->runnable == FALSE, ;); } } else { dot_write("\"%s\" [ style=bold color=\"%s\" fontcolor=\"%s\" ]", action_name, "green", action->pseudo?"orange":"black"); } crm_free(action_name); ); slist_iter( action, action_t, data_set.actions, lpc, int last_action = -1; slist_iter( before, action_wrapper_t, action->actions_before, lpc2, char *before_name = NULL; char *after_name = NULL; optional = FALSE; if(last_action == before->action->id) { continue; } last_action = before->action->id; if(action->dumped && before->action->dumped) { } else if(action->optional || before->action->optional) { optional = TRUE; } before_name = create_action_name(before->action); after_name = create_action_name(action); dot_write("\"%s\" -> \"%s\" [ style = %s]", before_name, after_name, optional?"dashed":"bold"); crm_free(before_name); crm_free(after_name); ); ); dot_write("}"); transition = unpack_graph(data_set.graph); print_graph(LOG_NOTICE, transition); do { graph_rc = run_graph(transition); } while(graph_rc == transition_active); if(graph_rc != transition_complete) { crm_crit("Transition failed: %s", transition_status(graph_rc)); print_graph(LOG_ERR, transition); } data_set.input = NULL; cleanup_alloc_calculations(&data_set); destroy_graph(transition); crm_mem_stats(NULL); - CRM_CHECK(crm_mem_stats(NULL) == FALSE, crm_err("Memory leak detected")); - CRM_CHECK(graph_rc == transition_complete, crm_err("An invalid transition was produced")); + CRM_CHECK(crm_mem_stats(NULL) == FALSE, all_good = FALSE; crm_err("Memory leak detected")); + CRM_CHECK(graph_rc == transition_complete, all_good = FALSE; crm_err("An invalid transition was produced")); crm_free(cib_object); #ifdef MCHECK muntrace(); #endif /* required for MallocDebug.app */ if(inhibit_exit) { GMainLoop* mainloop = g_main_new(FALSE); g_main_run(mainloop); } - - return 0; + + if(all_good) { + return 0; + } + return 5; } diff --git a/crm/pengine/regression.core.sh b/crm/pengine/regression.core.sh index 1c3032cc4a..c3e290b72a 100755 --- a/crm/pengine/regression.core.sh +++ b/crm/pengine/regression.core.sh @@ -1,195 +1,168 @@ #!/bin/bash # Copyright (C) 2004 Andrew Beekhof # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # verbose=$1 io_dir=testcases -diff_opts="--ignore-all-space -u" +diff_opts="--ignore-all-space -u -N" failed=.regression.failed.diff # zero out the error log > $failed num_failed=0 function ptest() { build_dir=`pwd | sed -e "s/Development/build/"` if [ -x ptest ]; then ./ptest $* elif [ -x $build_dir/ptest ]; then $build_dir/ptest $* else echo No build directory found, using installed version `which ptest` $* fi } function do_test { - base=$1; - name=$2; + base=$1; shift + name=$1; shift input=$io_dir/${base}.xml output=$io_dir/${base}.pe.out expected=$io_dir/${base}.exp te_output=$io_dir/${base}.te.out te_expected=$io_dir/${base}.te.exp dot_output=$io_dir/${base}.pe.dot dot_expected=$io_dir/${base}.dot dot_png=$io_dir/${base}.png if [ ! -f $input ]; then echo "Test $name ($base)... Error (PE : input)"; + num_failed=`expr $num_failed + 1` return; fi + echo "Test $base : $name"; if [ "$create_mode" != "true" -a ! -f $expected ]; then - echo "Test $name ($base)... Error (PE : expected)"; + echo " Error (PE : expected)"; # return; fi # ../admin/crm_verify -X $input - ptest -V -X $input -D $dot_output -G $output + ptest -V -X $input -D $dot_output -G $output $* + if [ $? != 0 ]; then + echo " * Failed (PE : rc)"; + num_failed=`expr $num_failed + 1` + fi if [ -s core ]; then - echo "Test $name ($base)... Moved core to core.${base}"; + echo " Moved core to core.${base}"; + num_failed=`expr $num_failed + 1` rm -f core.$base mv core core.$base - return; fi if [ ! -s $output ]; then - echo "Test $name ($base)... Error (PE : raw output)"; + echo " Error (PE : no graph)"; + num_failed=`expr $num_failed + 1` rm $output return; fi if [ ! -s $dot_output ]; then - echo "Test $name ($base)... Error (PE : dot output)"; - rm $output - return; - fi - - if [ ! -s $output ]; then - echo "Test $name ($base)... Error (PE : fixed output)"; + echo " Error (PE : no dot-file)"; + num_failed=`expr $num_failed + 1` rm $output return; fi if [ "$create_mode" = "true" ]; then cp "$output" "$expected" cp "$dot_output" "$dot_expected" + echo " Created expected output (PE)" fi - rc=2 - #dot -Tpng $dot_output 2>/dev/null > $dot_png - if [ -f $dot_expected ]; then - diff $diff_opts $dot_expected $dot_output >/dev/null - rc=$? - if [ $rc != 0 ]; then - echo "Test $name ($base)... * Failed (PE : dot)"; - diff $diff_opts $dot_expected $dot_output 2>/dev/null >> $failed - num_failed=`expr $num_failed + 1` - else - rm $dot_output - fi - else - echo "Test $name ($base)... * No expected dot output"; - echo "==== Raw results for PE test ($base) ====" >> $failed - cat $dot_output 2>/dev/null >> $failed + diff $diff_opts $dot_expected $dot_output >/dev/null + rc=$? + if [ $rc != 0 ]; then + echo " * Failed (PE : dot)"; + diff $diff_opts $dot_expected $dot_output 2>/dev/null >> $failed + num_failed=`expr $num_failed + 1` + else rm $dot_output fi - rc2=2 - if [ -f $expected ]; then - diff $diff_opts $expected $output >/dev/null - rc2=$? - if [ $rc2 != 0 ]; then - echo "Test $name ($base)... * Failed (PE : raw)"; - diff $diff_opts $expected $output 2>/dev/null >> $failed - num_failed=`expr $num_failed + 1` - else - rm $output - fi - else - echo "Test $name ($base)... * No expected raw output"; - echo "==== Raw results for PE test ($base) ====" >> $failed - cat $output 2>/dev/null >> $failed + diff $diff_opts $expected $output >/dev/null + rc2=$? + if [ $rc2 != 0 ]; then + echo " * Failed (PE : raw)"; + diff $diff_opts $expected $output 2>/dev/null >> $failed + num_failed=`expr $num_failed + 1` + else rm $output fi - if [ "$create_mode" = "true" ]; then - echo "Test $name ($base)... Created expected output (PE)" - elif [ "$rc" = 0 -a "$rc2" = 0 ]; then - echo "Test $name ($base)... Passed (PE)"; - fi - if [ "$test_te" = "true" ]; then ../tengine/ttest -X $output 2> $te_output # if [ "$create_mode" = "true" ]; then if [ "$create_mode" = "true" -a ! -f $te_expected ]; then cp "$te_output" "$te_expected" fi if [ -f $te_expected ]; then diff $diff_opts -q $te_expected $te_output >/dev/null rc=$? fi if [ "$create_mode" = "true" ]; then echo "Test $name ($base)... Created expected output (PE)" elif [ ! -f $te_expected ]; then echo "==== Raw results for TE test ($base) ====" >> $failed cat $te_output 2>/dev/null >> $failed elif [ "$rc" = 0 ]; then - echo "Test $name ($base)... Passed (TE)"; + : elif [ "$rc" = 1 ]; then echo "Test $name ($base)... * Failed (TE)"; diff $diff_opts $te_expected $te_output 2>/dev/null >> $failed diff $diff_opts $te_expected $te_output else echo "Test $name ($base)... Error TE (diff: $rc)"; echo "==== Raw results for test ($base) TE ====" >> $failed cat $te_output 2>/dev/null >> $failed fi fi rm -f $output $te_output } - -#function do_test { -# base=$1; -# input=$io_dir/${base}.xml -# expected=$io_dir/${base}.exp -# te_expected=$io_dir/${base}.te.exp -# mv $input $expected $te_expected testcases.saved -#} - function test_results { - - if [ -s $failed ]; then - if [ "$verbose" = "-v" ]; then - echo "Results of $num_failed failed tests...." - less $failed + if [ $num_failed != 0 ]; then + if [ -s $failed ]; then + if [ "$verbose" = "-v" ]; then + echo "Results of $num_failed failed tests...." + less $failed + else + echo "Results of $num_failed failed tests are in $failed...." + echo "Use $0 -v to display them automatically." + fi else - echo "Results of $num_failed failed tests are in $failed...." - echo "Use $0 -v to display them automatically." + echo "$num_failed tests failed (no diff results)" + rm $failed fi - else - rm $failed fi } diff --git a/crm/pengine/regression.sh b/crm/pengine/regression.sh index 27d9019330..141ea81274 100755 --- a/crm/pengine/regression.sh +++ b/crm/pengine/regression.sh @@ -1,221 +1,217 @@ #!/bin/bash # Copyright (C) 2004 Andrew Beekhof # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . regression.core.sh create_mode="true" echo Generating test outputs for these tests... echo "" echo Done. echo "" echo Performing the following tests... create_mode="false" echo "" do_test simple1 "Offline " do_test simple2 "Start " do_test simple3 "Start 2 " do_test simple4 "Start Failed" do_test simple6 "Stop Start " do_test simple7 "Shutdown " #do_test simple8 "Stonith " #do_test simple9 "Lower version" #do_test simple10 "Higher version" do_test simple11 "Priority (ne)" do_test simple12 "Priority (eq)" do_test simple8 "Stickiness" echo "" -do_test date-1 "Dates" -do_test standby "Standby" -do_test comments "Comments" do_test params-0 "Params: No change" do_test params-1 "Params: Changed" do_test params-2 "Params: Resource definition" + +echo "" do_test orphan-0 "Orphan ignore" do_test orphan-1 "Orphan stop" -do_test probe-0 "Probe (anon clone)" +echo "" do_test target-0 "Target Role : baseline" do_test target-1 "Target Role : test" +echo "" +do_test date-1 "Dates" -d "2005-020" +do_test probe-0 "Probe (anon clone)" +do_test standby "Standby" +do_test comments "Comments" echo "" do_test master-0 "Stopped -> Slave" do_test master-1 "Stopped -> Promote" do_test master-2 "Stopped -> Promote : notify" do_test master-3 "Stopped -> Promote : master location" do_test master-4 "Started -> Promote : master location" do_test master-5 "Promoted -> Promoted" do_test master-6 "Promoted -> Promoted (2)" do_test master-7 "Promoted -> Fenced" do_test master-8 "Promoted -> Fenced -> Moved" do_test master-9 "Stopped + Promotable + No quorum" do_test master-10 "Stopped -> Promotable : notify with monitor" echo "" do_test rsc_dep1 "Must not " do_test rsc_dep3 "Must " do_test rsc_dep5 "Must not 3 " do_test rsc_dep7 "Must 3 " do_test rsc_dep10 "Must (but cant)" do_test rsc_dep2 "Must (running) " do_test rsc_dep8 "Must (running : alt) " do_test rsc_dep4 "Must (running + move)" echo "" do_test order1 "Order start 1 " do_test order2 "Order start 2 " do_test order3 "Order stop " do_test order4 "Order (multiple) " do_test order5 "Order (move) " do_test order6 "Order (move w/ restart) " do_test order7 "Order (manditory) " #echo "" #do_test agent1 "version: lt (empty)" #do_test agent2 "version: eq " #do_test agent3 "version: gt " echo "" do_test attrs1 "string: eq (and) " do_test attrs2 "string: lt / gt (and)" do_test attrs3 "string: ne (or) " do_test attrs4 "string: exists " do_test attrs5 "string: not_exists " do_test attrs6 "is_dc: true " do_test attrs7 "is_dc: false " do_test attrs8 "score_attribute " echo "" do_test mon-rsc-1 "Schedule Monitor - start" do_test mon-rsc-2 "Schedule Monitor - move " do_test mon-rsc-3 "Schedule Monitor - pending start " do_test mon-rsc-4 "Schedule Monitor - move/pending start" echo "" do_test rec-rsc-0 "Resource Recover - no start " do_test rec-rsc-1 "Resource Recover - start " do_test rec-rsc-2 "Resource Recover - monitor " do_test rec-rsc-3 "Resource Recover - stop - ignore" do_test rec-rsc-4 "Resource Recover - stop - block " do_test rec-rsc-5 "Resource Recover - stop - fence " do_test rec-rsc-6 "Resource Recover - multiple - restart" do_test rec-rsc-7 "Resource Recover - multiple - stop " do_test rec-rsc-8 "Resource Recover - multiple - block " echo "" do_test quorum-1 "No quorum - ignore" do_test quorum-2 "No quorum - freeze" do_test quorum-3 "No quorum - stop " do_test quorum-4 "No quorum - start anyway" do_test quorum-5 "No quorum - start anyway (group)" do_test quorum-6 "No quorum - start anyway (clone)" echo "" do_test rec-node-1 "Node Recover - Startup - no fence" do_test rec-node-2 "Node Recover - Startup - fence " do_test rec-node-3 "Node Recover - HA down - no fence" do_test rec-node-4 "Node Recover - HA down - fence " do_test rec-node-5 "Node Recover - CRM down - no fence" do_test rec-node-6 "Node Recover - CRM down - fence " do_test rec-node-7 "Node Recover - no quorum - ignore " do_test rec-node-8 "Node Recover - no quorum - freeze " do_test rec-node-9 "Node Recover - no quorum - stop " do_test rec-node-10 "Node Recover - no quorum - stop w/fence" do_test rec-node-11 "Node Recover - CRM down w/ group - fence " do_test rec-node-12 "Node Recover - nothing active - fence " do_test rec-node-13 "Node Recover - failed resource + shutdown - fence " do_test rec-node-14 "Serialize all stonith's" echo "" do_test multi1 "Multiple Active (stop/start)" #echo "" #do_test complex1 "Complex " echo "" do_test group1 "Group " do_test group2 "Group + Native " do_test group3 "Group + Group " do_test group4 "Group + Native (nothing)" do_test group5 "Group + Native (move) " do_test group6 "Group + Group (move) " do_test group7 "Group colocation" do_test group8 "Group anti-colocation" do_test group9 "Group recovery" do_test group10 "Group partial recovery" do_test group11 "Group target_role" echo "" do_test inc0 "Incarnation start " do_test inc1 "Incarnation start order " do_test inc2 "Incarnation silent restart, stop, move " do_test inc3 "Inter-incarnation ordering, silent restart, stop, move" do_test inc4 "Inter-incarnation ordering, silent restart, stop, move (ordered)" do_test inc5 "Inter-incarnation ordering, silent restart, stop, move (restart 1)" do_test inc6 "Inter-incarnation ordering, silent restart, stop, move (restart 2)" do_test inc7 "Clone colocation" do_test inc8 "Clone anti-colocation" do_test inc9 "Non-unique clone" echo "" do_test managed-0 "Managed (reference)" do_test managed-1 "Not managed - down " do_test managed-2 "Not managed - up " echo "" do_test interleave-0 "Interleave (reference)" do_test interleave-1 "coloc - not interleaved" do_test interleave-2 "coloc - interleaved " do_test interleave-3 "coloc - interleaved (2)" echo "" do_test notify-0 "Notify reference" do_test notify-1 "Notify simple" do_test notify-2 "Notify simple, confirm" do_test notify-3 "Notify move, confirm" #do_test notify-2 "Notify - 764" echo "" do_test 594 "Bugzilla 594" do_test 662 "Bugzilla 662" do_test 696 "Bugzilla 696" do_test 726 "Bugzilla 726" do_test 735 "Bugzilla 735" do_test 764 "Bugzilla 764" do_test 797 "Bugzilla 797" do_test 829 "Bugzilla 829" do_test 994 "Bugzilla 994" do_test unrunnable-1 "Unrunnable" -echo "" -do_test bad1 "Bad node " -do_test bad2 "Bad rsc " -do_test bad3 "No rsc class " -do_test bad4 "Bad data " -do_test bad5 "Bad data " -do_test bad6 "Bad lrm_rsc " - echo "" test_results diff --git a/crm/pengine/testcases/date-1.xml b/crm/pengine/testcases/date-1.xml index ef614356d5..20d3f01bde 100644 --- a/crm/pengine/testcases/date-1.xml +++ b/crm/pengine/testcases/date-1.xml @@ -1,70 +1,70 @@ - + diff --git a/crm/pengine/testcases/group11.xml b/crm/pengine/testcases/group11.xml index c681e369c4..bbb460c6fc 100644 --- a/crm/pengine/testcases/group11.xml +++ b/crm/pengine/testcases/group11.xml @@ -1,54 +1,54 @@ + + + + + - - - - - diff --git a/crm/pengine/testcases/quorum-2.exp b/crm/pengine/testcases/quorum-2.exp index db86c999e0..112c0f7c20 100644 --- a/crm/pengine/testcases/quorum-2.exp +++ b/crm/pengine/testcases/quorum-2.exp @@ -1,109 +1,109 @@ - + diff --git a/crm/pengine/testcases/quorum-2.xml b/crm/pengine/testcases/quorum-2.xml index cbd0d304f1..3d2d07c55e 100644 --- a/crm/pengine/testcases/quorum-2.xml +++ b/crm/pengine/testcases/quorum-2.xml @@ -1,46 +1,46 @@ - + diff --git a/crm/pengine/testcases/rsc_dep8.xml b/crm/pengine/testcases/rsc_dep8.xml index a6c49594c8..2f589b1a0e 100644 --- a/crm/pengine/testcases/rsc_dep8.xml +++ b/crm/pengine/testcases/rsc_dep8.xml @@ -1,76 +1,68 @@ - - - - - - - - - - + +