summaryrefslogtreecommitdiffstats
path: root/test/features/resource_set.feature
blob: a6726d712b8c5f7aaa8fb74f81cb02276a973a9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
@resource
Feature: Use "crm configure set" to update attributes and operations

  Tag @clean means need to stop cluster service if the service is available
  Need nodes: hanode1 hanode2

  Background: Setup cluster and configure some resources
    Given     Cluster service is "stopped" on "hanode1"
    When      Run "crm cluster init -y" on "hanode1"
    Then      Cluster service is "started" on "hanode1"
    When      Run "crm cluster join -c hanode1 -y" on "hanode2"
    Then      Cluster service is "started" on "hanode2"
    When      Run "crm configure primitive d Dummy op monitor interval=3s" on "hanode1"
    Then      Resource "d" type "Dummy" is "Started"
    When      Run "crm configure primitive vip IPaddr2 params ip=@vip.0 op monitor interval=3s" on "hanode1"
    Then      Resource "vip" type "IPaddr2" is "Started"
    And       Cluster virtual IP is "@vip.0"
    When      Run "crm configure primitive s ocf:pacemaker:Stateful op monitor role=Promoted interval=3s op monitor role=Unpromoted interval=5s" on "hanode1"
    Then      Resource "s" type "Stateful" is "Started"

  @clean
  Scenario: Validation, input the wrong parameters
    When    Try "crm configure set path"
    Then    Except "ERROR: configure.set: Expected (path value), takes exactly 2 arguments (1 given)"
    When    Try "crm configure set xxxx value"
    Then    Except "ERROR: configure.set: Invalid path: "xxxx"; Valid path: "id.[op_type.][interval.]name""
    When    Try "crm configure set xxxx.name value"
    Then    Except "ERROR: configure.set: Object xxxx not found"
    When    Try "crm configure set d.name value"
    Then    Except "ERROR: configure.set: Attribute not found: d.name"
    When    Try "crm configure set d.monitor.100.timeout 10"
    Then    Except "ERROR: configure.set: Operation "monitor" interval "100" not found for resource d"
    When    Try "crm configure set s.monitor.interval 20"
    Then    Except "ERROR: configure.set: Should specify interval of monitor"

  @clean
  Scenario: Using configure.set to update resource parameters and operation values
    When    Run "crm configure set vip.ip @vip.0" on "hanode1"
    Then    Cluster virtual IP is "@vip.0"
    When    Run "crm configure set d.monitor.on-fail ignore" on "hanode1"
    And     Run "crm configure show d" on "hanode1"
    Then    Expected "on-fail=ignore" in stdout
    When    Run "crm configure set s.monitor.5s.interval 20s" on "hanode1"
    And     Run "crm configure show s" on "hanode1"
    Then    Expected "interval=20s" in stdout
    When    Run "crm configure set op-options.timeout 101" on "hanode1"
    And     Run "crm configure show op-options" on "hanode1"
    Then    Expected "timeout=101" in stdout

  @clean
  Scenario: Parse node and lifetime correctly (bsc#1192618)
    Given   Resource "d" is started on "hanode1"
    # move <res> <node>
    When    Run "crm resource move d hanode2" on "hanode1"
    When    Run "sleep 2" on "hanode1"
    Then    Resource "d" is started on "hanode2"
    When    Run "crm resource clear d" on "hanode1"

    # move <res> <node> force
    When    Run "crm resource move d hanode1" on "hanode1"
    When    Run "sleep 2" on "hanode1"
    Then    Resource "d" is started on "hanode1"
    When    Run "crm resource clear d" on "hanode1"

    # move <res> force
    When    Run "crm resource move d force" on "hanode1"
    When    Run "sleep 2" on "hanode1"
    Then    Resource "d" is started on "hanode2"
    When    Run "crm resource clear d" on "hanode1"

    # move <res> <lifetime> force
    When    Run "crm resource move d PT5M force" on "hanode1"
    When    Run "sleep 2" on "hanode1"
    Then    Resource "d" is started on "hanode1"
    When    Run "crm resource clear d" on "hanode1"

    # move <res> <node> <lifetime>
    When    Run "crm resource move d hanode2 PT5M" on "hanode1"
    When    Run "sleep 2" on "hanode1"
    Then    Resource "d" is started on "hanode2"
    When    Run "crm resource clear d" on "hanode1"

    # move <res> <node> <lifetime> force
    When    Run "crm resource move d hanode1 PT5M force" on "hanode1"
    When    Run "sleep 2" on "hanode1"
    Then    Resource "d" is started on "hanode1"
    When    Run "crm resource clear d" on "hanode1"

    When    Try "crm resource move d hanode2 PT5M force xxx"
    Then    Except "ERROR: resource.move: usage: move <rsc> [<node>] [<lifetime>] [force]"
    When    Try "crm resource move d hanode2 PT5M forcd"
    Then    Except "ERROR: resource.move: usage: move <rsc> [<node>] [<lifetime>] [force]"
    When    Try "crm resource move d xxxx PT5M force"
    Then    Except "ERROR: resource.move: Not our node: xxxx"
    When    Try "crm resource move d"
    Then    Except "ERROR: resource.move: No target node: Move requires either a target node or 'force'"

  @clean
  Scenario: promote and demote promotable clone resource (bsc#1194125)
    When    Run "crm configure primitive s2 ocf:pacemaker:Stateful op monitor role=Promoted interval=3s op monitor role=Unpromoted interval=5s" on "hanode1"
    And     Run "crm configure clone p2 s2 meta promotable=true" on "hanode1"
    And     Run "crm resource demote p2" on "hanode1"
    Then    Run "sleep 2;! crm_resource --locate -r p2|grep -E 'Master|Promoted'" OK
    When    Run "crm resource promote p2" on "hanode2"
    Then    Run "sleep 2;crm_resource --locate -r p2|grep -E 'Master|Promoted'" OK

  @clean
  Scenario: operation warning
    When    Run "crm configure primitive id=d2 Dummy op start interval=5s" on "hanode1"
    Then    Expected "WARNING: d2: Specified interval for start is 5s, it must be 0" in stderr
    When    Run "crm configure primitive id=d3 Dummy op monitor interval=0" on "hanode1"
    Then    Expected "WARNING: d3: interval in monitor should be larger than 0, advised is 10s" in stderr
    When    Run "crm configure primitive s2 ocf:pacemaker:Stateful op monitor role=Promoted interval=3s op monitor role=Unpromoted interval=3s" on "hanode1"
    Then    Expected "WARNING: s2: interval in monitor must be unique, advised is 11s" in stderr
    When    Run "crm configure primitive id=d4 Dummy op start timeout=10s" on "hanode1"
    Then    Expected "WARNING: d4: specified timeout 10s for start is smaller than the advised 20s" in stderr

  @clean
  Scenario: trace ra with specific directory
    When    Run "crm resource trace d monitor" on "hanode1"
    Then    Expected "Trace for d:monitor is written to /var/lib/heartbeat/trace_ra/Dummy" in stdout
    When    Wait "10" seconds
    Then    Run "bash -c 'ls /var/lib/heartbeat/trace_ra/Dummy/d.monitor.*'" OK
    When    Run "crm resource untrace d" on "hanode1"
    Then    Expected "Stop tracing d" in stdout
    When    Run "crm resource trace d monitor /trace_log_d" on "hanode1"
    Then    Expected "Trace for d:monitor is written to /trace_log_d/Dummy" in stdout
    When    Wait "10" seconds
    Then    Run "bash -c 'ls /trace_log_d/Dummy/d.monitor.*'" OK
    When    Run "crm resource untrace d" on "hanode1"
    Then    Expected "Stop tracing d" in stdout

  @clean
  Scenario: Add promotable=true and interleave=true automatically (bsc#1205522)
    When    Run "crm configure primitive s2 ocf:pacemaker:Stateful" on "hanode1"
    And     Run "crm configure clone p2 s2" on "hanode1"
    Then    Run "sleep 2;crm configure show|grep -A1 'clone p2 s2'|grep 'promotable=true interleave=true'" OK
    When    Run "crm configure primitive s3 ocf:pacemaker:Stateful" on "hanode1"
    And     Run "crm configure clone p3 s3 meta promotable=false" on "hanode1"
    Then    Run "sleep 2;crm configure show|grep -A1 'clone p3 s3'|grep 'promotable=false interleave=true'" OK
    When    Run "crm configure primitive d2 Dummy" on "hanode1"
    And     Run "crm configure clone p4 d2" on "hanode1"
    Then    Run "sleep 2;crm configure show|grep -A1 'clone p4 d2'|grep 'interleave=true'" OK

  @clean
  Scenario: Run rsctest
    When    Run "crm resource stop d vip" on "hanode1"
    When    Run "crm configure rsctest d vip" on "hanode1"
    Then    Expected multiple lines in output
      """
      INFO: Probing resources
      INFO: Testing on hanode1: d vip
      INFO: Testing on hanode2: d vip
      """