commit bb448289eb4aefd29cb9b8e075e9017c72b9ab7f
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Thu Oct 5 15:52:02 2017 -0500

    Test: pengine: add tests for no-quorum-policy=suicide

Index: pacemaker/pengine/regression.sh
===================================================================
--- pacemaker.orig/pengine/regression.sh
+++ pacemaker/pengine/regression.sh
@@ -239,6 +239,10 @@ do_test quorum-4 "No quorum - start anyw
 do_test quorum-5 "No quorum - start anyway (group)"
 do_test quorum-6 "No quorum - start anyway (clone)"
 do_test bug-cl-5212 "No promotion with no-quorum-policy=freeze"
+do_test suicide-needed-inquorate "no-quorum-policy=suicide: suicide necessary"
+do_test suicide-not-needed-initial-quorum "no-quorum-policy=suicide: suicide not necessary at initial quorum"
+do_test suicide-not-needed-never-quorate "no-quorum-policy=suicide: suicide not necessary if never quorate"
+do_test suicide-not-needed-quorate "no-quorum-policy=suicide: suicide necessary if quorate"
 
 echo ""
 do_test rec-node-1 "Node Recover - Startup   - no fence"
Index: pacemaker/pengine/test10/suicide-needed-inquorate.dot
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-needed-inquorate.dot
@@ -0,0 +1,11 @@
+digraph "g" {
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
+"stonith 'reboot' node1" -> "stonith 'reboot' node3" [ style = bold]
+"stonith 'reboot' node1" [ style=bold color="green" fontcolor="black"]
+"stonith 'reboot' node2" -> "stonith_complete" [ style = bold]
+"stonith 'reboot' node2" [ style=bold color="green" fontcolor="black"]
+"stonith 'reboot' node3" -> "stonith 'reboot' node2" [ style = bold]
+"stonith 'reboot' node3" [ style=bold color="green" fontcolor="black"]
+"stonith_complete" -> "all_stopped" [ style = bold]
+"stonith_complete" [ style=bold color="green" fontcolor="orange"]
+}
Index: pacemaker/pengine/test10/suicide-needed-inquorate.exp
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-needed-inquorate.exp
@@ -0,0 +1,67 @@
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY"  transition_id="0">
+  <synapse id="0">
+    <action_set>
+      <crm_event id="5" operation="stonith" operation_key="stonith-node3-reboot" on_node="node3" on_node_uuid="3">
+        <attributes CRM_meta_on_node="node3" CRM_meta_on_node_uuid="3" CRM_meta_stonith_action="reboot" />
+        <downed>
+          <node id="3"/>
+        </downed>
+      </crm_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="3" operation="stonith" operation_key="stonith-node1-reboot" on_node="node1" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="1">
+    <action_set>
+      <crm_event id="4" operation="stonith" operation_key="stonith-node2-reboot" on_node="node2" on_node_uuid="2">
+        <attributes CRM_meta_on_node="node2" CRM_meta_on_node_uuid="2" CRM_meta_op_no_wait="true" CRM_meta_stonith_action="reboot" />
+        <downed>
+          <node id="2"/>
+        </downed>
+      </crm_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="5" operation="stonith" operation_key="stonith-node3-reboot" on_node="node3" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="2">
+    <action_set>
+      <crm_event id="3" operation="stonith" operation_key="stonith-node1-reboot" on_node="node1" on_node_uuid="1">
+        <attributes CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_stonith_action="reboot" />
+        <downed>
+          <node id="1"/>
+        </downed>
+      </crm_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="3">
+    <action_set>
+      <pseudo_event id="2" operation="stonith_complete" operation_key="stonith_complete">
+        <attributes />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="4" operation="stonith" operation_key="stonith-node2-reboot" on_node="node2" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="4">
+    <action_set>
+      <pseudo_event id="1" operation="all_stopped" operation_key="all_stopped">
+        <attributes />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="2" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+</transition_graph>
Index: pacemaker/pengine/test10/suicide-needed-inquorate.scores
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-needed-inquorate.scores
@@ -0,0 +1,5 @@
+Allocation scores:
+Using the original execution date of: 2017-08-21 17:12:54Z
+native_color: Fencing allocation score on node1: 0
+native_color: Fencing allocation score on node2: 0
+native_color: Fencing allocation score on node3: 0
Index: pacemaker/pengine/test10/suicide-needed-inquorate.summary
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-needed-inquorate.summary
@@ -0,0 +1,27 @@
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Current cluster status:
+Node node1 (1): UNCLEAN (online)
+Node node2 (2): UNCLEAN (online)
+Node node3 (3): UNCLEAN (online)
+
+ Fencing	(stonith:fence_xvm):	Stopped
+
+Transition Summary:
+ * Fence (reboot) node3
+ * Fence (reboot) node2
+ * Fence (reboot) node1
+
+Executing cluster transition:
+ * Fencing node1 (reboot)
+ * Fencing node3 (reboot)
+ * Fencing node2 (reboot)
+ * Pseudo action:   stonith_complete
+ * Pseudo action:   all_stopped
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Revised cluster status:
+OFFLINE: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Stopped
+
Index: pacemaker/pengine/test10/suicide-needed-inquorate.xml
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-needed-inquorate.xml
@@ -0,0 +1,42 @@
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.5" epoch="49" num_updates="13" admin_epoch="0" cib-last-written="Mon Aug 21 12:12:00 2017" update-origin="node1" update-client="crm_resource" update-user="remote1" have-quorum="0" dc-uuid="2" execution-date="1503335574" no-quorum-panic="1">
+  <configuration>
+    <crm_config>
+      <cluster_property_set id="cib-bootstrap-options">
+        <nvpair id="cts-expected-quorum-votes" name="expected-quorum-votes" value="3"/>
+        <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
+        <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.17-1"/>
+        <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+        <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="suicide"/>
+      </cluster_property_set>
+    </crm_config>
+    <nodes>
+      <node id="1" uname="node1"/>
+      <node id="2" uname="node2"/>
+      <node id="3" uname="node3"/>
+    </nodes>
+    <resources>
+      <primitive id="Fencing" class="stonith" type="fence_xvm">
+        <meta_attributes id="Fencing-meta">
+        </meta_attributes>
+        <instance_attributes id="Fencing-params">
+          <nvpair id="Fencing-multicast_address" name="multicast_address" value="239.255.100.100"/>
+          <nvpair id="Fencing-pcmk_host_list" name="pcmk_host_list" value="node1 node2 node3"/>
+        </instance_attributes>
+        <operations>
+          <op id="Fencing-monitor-120s" interval="120s" name="monitor" timeout="120s"/>
+          <op id="Fencing-stop-0" interval="0" name="stop" timeout="60s"/>
+          <op id="Fencing-start-0" interval="0" name="start" timeout="60s"/>
+        </operations>
+      </primitive>
+    </resources>
+    <constraints/>
+  </configuration>
+  <status>
+    <node_state id="1" uname="node1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="2" uname="node2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="3" uname="node3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+  </status>
+</cib>
Index: pacemaker/pengine/test10/suicide-not-needed-initial-quorum.dot
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-initial-quorum.dot
@@ -0,0 +1,11 @@
+digraph "g" {
+"Fencing_monitor_0 node1" -> "Fencing_start_0 node1" [ style = bold]
+"Fencing_monitor_0 node1" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_0 node2" -> "Fencing_start_0 node1" [ style = bold]
+"Fencing_monitor_0 node2" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_0 node3" -> "Fencing_start_0 node1" [ style = bold]
+"Fencing_monitor_0 node3" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_120000 node1" [ style=bold color="green" fontcolor="black"]
+"Fencing_start_0 node1" -> "Fencing_monitor_120000 node1" [ style = bold]
+"Fencing_start_0 node1" [ style=bold color="green" fontcolor="black"]
+}
Index: pacemaker/pengine/test10/suicide-not-needed-initial-quorum.exp
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-initial-quorum.exp
@@ -0,0 +1,61 @@
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY"  transition_id="0">
+  <synapse id="0">
+    <action_set>
+      <rsc_op id="6" operation="monitor" operation_key="Fencing_monitor_120000" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_interval="120000" CRM_meta_name="monitor" CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="5" operation="start" operation_key="Fencing_start_0" on_node="node1" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="1">
+    <action_set>
+      <rsc_op id="5" operation="start" operation_key="Fencing_start_0" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_timeout="60000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="2" operation="monitor" operation_key="Fencing_monitor_0" on_node="node1" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="3" operation="monitor" operation_key="Fencing_monitor_0" on_node="node2" on_node_uuid="2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="4" operation="monitor" operation_key="Fencing_monitor_0" on_node="node3" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="2">
+    <action_set>
+      <rsc_op id="4" operation="monitor" operation_key="Fencing_monitor_0" on_node="node3" on_node_uuid="3">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node3" CRM_meta_on_node_uuid="3" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="3">
+    <action_set>
+      <rsc_op id="3" operation="monitor" operation_key="Fencing_monitor_0" on_node="node2" on_node_uuid="2">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node2" CRM_meta_on_node_uuid="2" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="4">
+    <action_set>
+      <rsc_op id="2" operation="monitor" operation_key="Fencing_monitor_0" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+</transition_graph>
Index: pacemaker/pengine/test10/suicide-not-needed-initial-quorum.scores
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-initial-quorum.scores
@@ -0,0 +1,5 @@
+Allocation scores:
+Using the original execution date of: 2017-08-21 17:12:54Z
+native_color: Fencing allocation score on node1: 0
+native_color: Fencing allocation score on node2: 0
+native_color: Fencing allocation score on node3: 0
Index: pacemaker/pengine/test10/suicide-not-needed-initial-quorum.summary
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-initial-quorum.summary
@@ -0,0 +1,23 @@
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Current cluster status:
+Online: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Stopped
+
+Transition Summary:
+ * Start      Fencing     ( node1 )  
+
+Executing cluster transition:
+ * Resource action: Fencing         monitor on node3
+ * Resource action: Fencing         monitor on node2
+ * Resource action: Fencing         monitor on node1
+ * Resource action: Fencing         start on node1
+ * Resource action: Fencing         monitor=120000 on node1
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Revised cluster status:
+Online: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Started node1
+
Index: pacemaker/pengine/test10/suicide-not-needed-initial-quorum.xml
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-initial-quorum.xml
@@ -0,0 +1,42 @@
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.5" epoch="49" num_updates="13" admin_epoch="0" cib-last-written="Mon Aug 21 12:12:00 2017" update-origin="node1" update-client="crm_resource" update-user="remote1" have-quorum="1" dc-uuid="2" execution-date="1503335574">
+  <configuration>
+    <crm_config>
+      <cluster_property_set id="cib-bootstrap-options">
+        <nvpair id="cts-expected-quorum-votes" name="expected-quorum-votes" value="3"/>
+        <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
+        <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.17-1"/>
+        <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+        <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="suicide"/>
+      </cluster_property_set>
+    </crm_config>
+    <nodes>
+      <node id="1" uname="node1"/>
+      <node id="2" uname="node2"/>
+      <node id="3" uname="node3"/>
+    </nodes>
+    <resources>
+      <primitive id="Fencing" class="stonith" type="fence_xvm">
+        <meta_attributes id="Fencing-meta">
+        </meta_attributes>
+        <instance_attributes id="Fencing-params">
+          <nvpair id="Fencing-multicast_address" name="multicast_address" value="239.255.100.100"/>
+          <nvpair id="Fencing-pcmk_host_list" name="pcmk_host_list" value="node1 node2 node3"/>
+        </instance_attributes>
+        <operations>
+          <op id="Fencing-monitor-120s" interval="120s" name="monitor" timeout="120s"/>
+          <op id="Fencing-stop-0" interval="0" name="stop" timeout="60s"/>
+          <op id="Fencing-start-0" interval="0" name="start" timeout="60s"/>
+        </operations>
+      </primitive>
+    </resources>
+    <constraints/>
+  </configuration>
+  <status>
+    <node_state id="1" uname="node1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="2" uname="node2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="3" uname="node3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+  </status>
+</cib>
Index: pacemaker/pengine/test10/suicide-not-needed-never-quorate.dot
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-never-quorate.dot
@@ -0,0 +1,6 @@
+digraph "g" {
+"Fencing_monitor_0 node1" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_0 node2" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_0 node3" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_120000 node1" [ style=dashed color="red" fontcolor="black"]
+}
Index: pacemaker/pengine/test10/suicide-not-needed-never-quorate.exp
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-never-quorate.exp
@@ -0,0 +1,29 @@
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY"  transition_id="0">
+  <synapse id="0">
+    <action_set>
+      <rsc_op id="4" operation="monitor" operation_key="Fencing_monitor_0" on_node="node3" on_node_uuid="3">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node3" CRM_meta_on_node_uuid="3" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="1">
+    <action_set>
+      <rsc_op id="3" operation="monitor" operation_key="Fencing_monitor_0" on_node="node2" on_node_uuid="2">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node2" CRM_meta_on_node_uuid="2" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="2">
+    <action_set>
+      <rsc_op id="2" operation="monitor" operation_key="Fencing_monitor_0" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+</transition_graph>
Index: pacemaker/pengine/test10/suicide-not-needed-never-quorate.scores
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-never-quorate.scores
@@ -0,0 +1,5 @@
+Allocation scores:
+Using the original execution date of: 2017-08-21 17:12:54Z
+native_color: Fencing allocation score on node1: 0
+native_color: Fencing allocation score on node2: 0
+native_color: Fencing allocation score on node3: 0
Index: pacemaker/pengine/test10/suicide-not-needed-never-quorate.summary
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-never-quorate.summary
@@ -0,0 +1,21 @@
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Current cluster status:
+Online: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Stopped
+
+Transition Summary:
+ * Start   Fencing	(node1 - blocked)
+
+Executing cluster transition:
+ * Resource action: Fencing         monitor on node3
+ * Resource action: Fencing         monitor on node2
+ * Resource action: Fencing         monitor on node1
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Revised cluster status:
+Online: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Stopped
+
Index: pacemaker/pengine/test10/suicide-not-needed-never-quorate.xml
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-never-quorate.xml
@@ -0,0 +1,42 @@
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.5" epoch="49" num_updates="13" admin_epoch="0" cib-last-written="Mon Aug 21 12:12:00 2017" update-origin="node1" update-client="crm_resource" update-user="remote1" have-quorum="0" dc-uuid="2" execution-date="1503335574">
+  <configuration>
+    <crm_config>
+      <cluster_property_set id="cib-bootstrap-options">
+        <nvpair id="cts-expected-quorum-votes" name="expected-quorum-votes" value="3"/>
+        <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
+        <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.17-1"/>
+        <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+        <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="suicide"/>
+      </cluster_property_set>
+    </crm_config>
+    <nodes>
+      <node id="1" uname="node1"/>
+      <node id="2" uname="node2"/>
+      <node id="3" uname="node3"/>
+    </nodes>
+    <resources>
+      <primitive id="Fencing" class="stonith" type="fence_xvm">
+        <meta_attributes id="Fencing-meta">
+        </meta_attributes>
+        <instance_attributes id="Fencing-params">
+          <nvpair id="Fencing-multicast_address" name="multicast_address" value="239.255.100.100"/>
+          <nvpair id="Fencing-pcmk_host_list" name="pcmk_host_list" value="node1 node2 node3"/>
+        </instance_attributes>
+        <operations>
+          <op id="Fencing-monitor-120s" interval="120s" name="monitor" timeout="120s"/>
+          <op id="Fencing-stop-0" interval="0" name="stop" timeout="60s"/>
+          <op id="Fencing-start-0" interval="0" name="start" timeout="60s"/>
+        </operations>
+      </primitive>
+    </resources>
+    <constraints/>
+  </configuration>
+  <status>
+    <node_state id="1" uname="node1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="2" uname="node2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="3" uname="node3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+  </status>
+</cib>
Index: pacemaker/pengine/test10/suicide-not-needed-quorate.dot
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-quorate.dot
@@ -0,0 +1,11 @@
+digraph "g" {
+"Fencing_monitor_0 node1" -> "Fencing_start_0 node1" [ style = bold]
+"Fencing_monitor_0 node1" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_0 node2" -> "Fencing_start_0 node1" [ style = bold]
+"Fencing_monitor_0 node2" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_0 node3" -> "Fencing_start_0 node1" [ style = bold]
+"Fencing_monitor_0 node3" [ style=bold color="green" fontcolor="black"]
+"Fencing_monitor_120000 node1" [ style=bold color="green" fontcolor="black"]
+"Fencing_start_0 node1" -> "Fencing_monitor_120000 node1" [ style = bold]
+"Fencing_start_0 node1" [ style=bold color="green" fontcolor="black"]
+}
Index: pacemaker/pengine/test10/suicide-not-needed-quorate.exp
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-quorate.exp
@@ -0,0 +1,61 @@
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY"  transition_id="0">
+  <synapse id="0">
+    <action_set>
+      <rsc_op id="6" operation="monitor" operation_key="Fencing_monitor_120000" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_interval="120000" CRM_meta_name="monitor" CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="5" operation="start" operation_key="Fencing_start_0" on_node="node1" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="1">
+    <action_set>
+      <rsc_op id="5" operation="start" operation_key="Fencing_start_0" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_timeout="60000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="2" operation="monitor" operation_key="Fencing_monitor_0" on_node="node1" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="3" operation="monitor" operation_key="Fencing_monitor_0" on_node="node2" on_node_uuid="2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="4" operation="monitor" operation_key="Fencing_monitor_0" on_node="node3" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="2">
+    <action_set>
+      <rsc_op id="4" operation="monitor" operation_key="Fencing_monitor_0" on_node="node3" on_node_uuid="3">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node3" CRM_meta_on_node_uuid="3" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="3">
+    <action_set>
+      <rsc_op id="3" operation="monitor" operation_key="Fencing_monitor_0" on_node="node2" on_node_uuid="2">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node2" CRM_meta_on_node_uuid="2" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="4">
+    <action_set>
+      <rsc_op id="2" operation="monitor" operation_key="Fencing_monitor_0" on_node="node1" on_node_uuid="1">
+        <primitive id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_on_node="node1" CRM_meta_on_node_uuid="1" CRM_meta_op_target_rc="7" CRM_meta_timeout="120000"  multicast_address="239.255.100.100" pcmk_host_list="node1 node2 node3"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+</transition_graph>
Index: pacemaker/pengine/test10/suicide-not-needed-quorate.scores
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-quorate.scores
@@ -0,0 +1,5 @@
+Allocation scores:
+Using the original execution date of: 2017-08-21 17:12:54Z
+native_color: Fencing allocation score on node1: 0
+native_color: Fencing allocation score on node2: 0
+native_color: Fencing allocation score on node3: 0
Index: pacemaker/pengine/test10/suicide-not-needed-quorate.summary
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-quorate.summary
@@ -0,0 +1,23 @@
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Current cluster status:
+Online: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Stopped
+
+Transition Summary:
+ * Start      Fencing     ( node1 )  
+
+Executing cluster transition:
+ * Resource action: Fencing         monitor on node3
+ * Resource action: Fencing         monitor on node2
+ * Resource action: Fencing         monitor on node1
+ * Resource action: Fencing         start on node1
+ * Resource action: Fencing         monitor=120000 on node1
+Using the original execution date of: 2017-08-21 17:12:54Z
+
+Revised cluster status:
+Online: [ node1 node2 node3 ]
+
+ Fencing	(stonith:fence_xvm):	Started node1
+
Index: pacemaker/pengine/test10/suicide-not-needed-quorate.xml
===================================================================
--- /dev/null
+++ pacemaker/pengine/test10/suicide-not-needed-quorate.xml
@@ -0,0 +1,42 @@
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.5" epoch="49" num_updates="13" admin_epoch="0" cib-last-written="Mon Aug 21 12:12:00 2017" update-origin="node1" update-client="crm_resource" update-user="remote1" have-quorum="1" dc-uuid="2" execution-date="1503335574" no-quorum-panic="1">
+  <configuration>
+    <crm_config>
+      <cluster_property_set id="cib-bootstrap-options">
+        <nvpair id="cts-expected-quorum-votes" name="expected-quorum-votes" value="3"/>
+        <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
+        <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.17-1"/>
+        <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+        <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="suicide"/>
+      </cluster_property_set>
+    </crm_config>
+    <nodes>
+      <node id="1" uname="node1"/>
+      <node id="2" uname="node2"/>
+      <node id="3" uname="node3"/>
+    </nodes>
+    <resources>
+      <primitive id="Fencing" class="stonith" type="fence_xvm">
+        <meta_attributes id="Fencing-meta">
+        </meta_attributes>
+        <instance_attributes id="Fencing-params">
+          <nvpair id="Fencing-multicast_address" name="multicast_address" value="239.255.100.100"/>
+          <nvpair id="Fencing-pcmk_host_list" name="pcmk_host_list" value="node1 node2 node3"/>
+        </instance_attributes>
+        <operations>
+          <op id="Fencing-monitor-120s" interval="120s" name="monitor" timeout="120s"/>
+          <op id="Fencing-stop-0" interval="0" name="stop" timeout="60s"/>
+          <op id="Fencing-start-0" interval="0" name="start" timeout="60s"/>
+        </operations>
+      </primitive>
+    </resources>
+    <constraints/>
+  </configuration>
+  <status>
+    <node_state id="1" uname="node1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="2" uname="node2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+    <node_state id="3" uname="node3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+    </node_state>
+  </status>
+</cib>
