Revision b998270c

b/qa/ganeti-qa.py
320 320
      qa_config.ReleaseInstance(newinst)
321 321

  
322 322

  
323
def RunDaemonTests(instance, pnode):
323
def RunDaemonTests(instance):
324 324
  """Test the ganeti-watcher script.
325 325

  
326 326
  """
327 327
  RunTest(qa_daemon.TestPauseWatcher)
328 328

  
329 329
  RunTestIf("instance-automatic-restart",
330
            qa_daemon.TestInstanceAutomaticRestart, pnode, instance)
330
            qa_daemon.TestInstanceAutomaticRestart, instance)
331 331
  RunTestIf("instance-consecutive-failures",
332
            qa_daemon.TestInstanceConsecutiveFailures, pnode, instance)
332
            qa_daemon.TestInstanceConsecutiveFailures, instance)
333 333

  
334 334
  RunTest(qa_daemon.TestResumeWatcher)
335 335

  
......
412 412
      RunCommonInstanceTests(instance)
413 413
      RunGroupListTests()
414 414
      RunExportImportTests(instance, pnode, None)
415
      RunDaemonTests(instance, pnode)
415
      RunDaemonTests(instance)
416 416
      RunTest(qa_instance.TestInstanceRemove, instance)
417 417
      del instance
418 418

  
b/qa/qa_daemon.py
1 1
#
2 2
#
3 3

  
4
# Copyright (C) 2007, 2008, 2009, 2010 Google Inc.
4
# Copyright (C) 2007, 2008, 2009, 2010, 2011 Google Inc.
5 5
#
6 6
# This program is free software; you can redistribute it and/or modify
7 7
# it under the terms of the GNU General Public License as published by
......
35 35
from qa_utils import AssertMatch, AssertCommand, StartSSH, GetCommandOutput
36 36

  
37 37

  
38
def _InstanceRunning(node, name):
38
def _InstanceRunning(name):
39 39
  """Checks whether an instance is running.
40 40

  
41
  @param node: node the instance runs on
42
  @param name: full name of the Xen instance
41
  @param name: full name of the instance
43 42

  
44 43
  """
45
  cmd = utils.ShellQuoteArgs(['xm', 'list', name]) + ' >/dev/null'
46
  ret = StartSSH(node['primary'], cmd).wait()
44
  master = qa_config.GetMasterNode()
45

  
46
  cmd = (utils.ShellQuoteArgs(["gnt-instance", "list", "-o", "status", name]) +
47
         ' | grep running')
48
  ret = StartSSH(master["primary"], cmd).wait()
47 49
  return ret == 0
48 50

  
49 51

  
50
def _XmShutdownInstance(node, name):
51
  """Shuts down instance using "xm" and waits for completion.
52
def _ShutdownInstance(name):
53
  """Shuts down instance without recording state and waits for completion.
52 54

  
53
  @param node: node the instance runs on
54
  @param name: full name of Xen instance
55
  @param name: full name of the instance
55 56

  
56 57
  """
57
  AssertCommand(["xm", "shutdown", name], node=node)
58
  AssertCommand(["gnt-instance", "shutdown", "--no-remember", name])
58 59

  
59
  # Wait up to a minute
60
  end = time.time() + 60
61
  while time.time() <= end:
62
    if not _InstanceRunning(node, name):
63
      break
64
    time.sleep(5)
65
  else:
66
    raise qa_error.Error("xm shutdown failed")
60
  if _InstanceRunning(name):
61
    raise qa_error.Error("instance shutdown failed")
67 62

  
68 63

  
69 64
def _ResetWatcherDaemon():
......
108 103
  AssertMatch(output, r"^.*\bis not paused\b.*")
109 104

  
110 105

  
111
def TestInstanceAutomaticRestart(node, instance):
106
def TestInstanceAutomaticRestart(instance):
112 107
  """Test automatic restart of instance by ganeti-watcher.
113 108

  
114 109
  """
115 110
  inst_name = qa_utils.ResolveInstanceName(instance["name"])
116 111

  
117 112
  _ResetWatcherDaemon()
118
  _XmShutdownInstance(node, inst_name)
113
  _ShutdownInstance(inst_name)
119 114

  
120 115
  _RunWatcherDaemon()
121 116
  time.sleep(5)
122 117

  
123
  if not _InstanceRunning(node, inst_name):
118
  if not _InstanceRunning(inst_name):
124 119
    raise qa_error.Error("Daemon didn't restart instance")
125 120

  
126 121
  AssertCommand(["gnt-instance", "info", inst_name])
127 122

  
128 123

  
129
def TestInstanceConsecutiveFailures(node, instance):
124
def TestInstanceConsecutiveFailures(instance):
130 125
  """Test five consecutive instance failures.
131 126

  
132 127
  """
......
135 130
  _ResetWatcherDaemon()
136 131

  
137 132
  for should_start in ([True] * 5) + [False]:
138
    _XmShutdownInstance(node, inst_name)
133
    _ShutdownInstance(inst_name)
139 134
    _RunWatcherDaemon()
140 135
    time.sleep(5)
141 136

  
142
    if bool(_InstanceRunning(node, inst_name)) != should_start:
137
    if bool(_InstanceRunning(inst_name)) != should_start:
143 138
      if should_start:
144 139
        msg = "Instance not started when it should"
145 140
      else:

Also available in: Unified diff