Skip to content

Commit b3cb85f

Browse files
committed
tests: Improve logging for executed commands
We're seeing failures in a recently added tests, 'ServerTests.test_server_add_remove_volume' from 'openstackclient/tests/functional/compute/v2/test_server.py'. These failures are likely the result of slow CI nodes, but we don't have enough information in the CI logs to debug them. Starting logging the various commands executed in tests so that we can see these logs if and when tests fail. Change-Id: I4584dc5e6343fe8c8544431a527d8c3c7e7b3c5b Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
1 parent 4e9b929 commit b3cb85f

2 files changed

Lines changed: 40 additions & 14 deletions

File tree

openstackclient/tests/functional/base.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import logging
1314
import os
1415
import shlex
1516
import subprocess
@@ -18,22 +19,30 @@
1819
from tempest.lib import exceptions
1920
import testtools
2021

21-
2222
ADMIN_CLOUD = os.environ.get('OS_ADMIN_CLOUD', 'devstack-admin')
23+
LOG = logging.getLogger(__name__)
2324

2425

2526
def execute(cmd, fail_ok=False, merge_stderr=False):
2627
"""Executes specified command for the given action."""
28+
LOG.debug('Executing: %s', cmd)
2729
cmdlist = shlex.split(cmd)
2830
stdout = subprocess.PIPE
2931
stderr = subprocess.STDOUT if merge_stderr else subprocess.PIPE
32+
3033
proc = subprocess.Popen(cmdlist, stdout=stdout, stderr=stderr)
31-
result, result_err = proc.communicate()
32-
result = result.decode('utf-8')
34+
35+
result_out, result_err = proc.communicate()
36+
result_out = result_out.decode('utf-8')
37+
LOG.debug('stdout: %s', result_out)
38+
LOG.debug('stderr: %s', result_err)
39+
3340
if not fail_ok and proc.returncode != 0:
34-
raise exceptions.CommandFailed(proc.returncode, cmd, result,
35-
result_err)
36-
return result
41+
raise exceptions.CommandFailed(
42+
proc.returncode, cmd, result_out, result_err,
43+
)
44+
45+
return result_out
3746

3847

3948
class TestCase(testtools.TestCase):

openstackclient/tests/functional/compute/v2/test_server.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,19 +1195,19 @@ def test_server_add_remove_port(self):
11951195
def test_server_add_remove_volume(self):
11961196
volume_wait_for = volume_common.BaseVolumeTests.wait_for_status
11971197

1198-
name = uuid.uuid4().hex
1198+
server_name = uuid.uuid4().hex
11991199
cmd_output = json.loads(self.openstack(
12001200
'server create -f json ' +
12011201
'--network private ' +
12021202
'--flavor ' + self.flavor_name + ' ' +
12031203
'--image ' + self.image_name + ' ' +
12041204
'--wait ' +
1205-
name
1205+
server_name
12061206
))
12071207

12081208
self.assertIsNotNone(cmd_output['id'])
1209-
self.assertEqual(name, cmd_output['name'])
1210-
self.addCleanup(self.openstack, 'server delete --wait ' + name)
1209+
self.assertEqual(server_name, cmd_output['name'])
1210+
self.addCleanup(self.openstack, 'server delete --wait ' + server_name)
12111211
server_id = cmd_output['id']
12121212

12131213
volume_name = uuid.uuid4().hex
@@ -1225,7 +1225,7 @@ def test_server_add_remove_volume(self):
12251225

12261226
cmd_output = json.loads(self.openstack(
12271227
'server add volume -f json ' +
1228-
name + ' ' +
1228+
server_name + ' ' +
12291229
volume_name + ' ' +
12301230
'--tag bar'
12311231
))
@@ -1237,16 +1237,33 @@ def test_server_add_remove_volume(self):
12371237

12381238
cmd_output = json.loads(self.openstack(
12391239
'server volume list -f json ' +
1240-
name
1240+
server_name
12411241
))
12421242

12431243
self.assertEqual(volume_attachment_id, cmd_output[0]['ID'])
12441244
self.assertEqual(server_id, cmd_output[0]['Server ID'])
12451245
self.assertEqual(volume_id, cmd_output[0]['Volume ID'])
12461246

12471247
volume_wait_for('volume', volume_name, 'in-use')
1248-
self.openstack('server remove volume ' + name + ' ' + volume_name)
1248+
1249+
cmd_output = json.loads(self.openstack(
1250+
'server event list -f json ' +
1251+
server_name
1252+
))
1253+
self.assertEqual(2, len(cmd_output))
1254+
self.assertIn('attach_volume', {x['Action'] for x in cmd_output})
1255+
1256+
self.openstack(
1257+
'server remove volume ' + server_name + ' ' + volume_name
1258+
)
12491259
volume_wait_for('volume', volume_name, 'available')
12501260

1251-
raw_output = self.openstack('server volume list ' + name)
1261+
cmd_output = json.loads(self.openstack(
1262+
'server event list -f json ' +
1263+
server_name
1264+
))
1265+
self.assertEqual(3, len(cmd_output))
1266+
self.assertIn('detach_volume', {x['Action'] for x in cmd_output})
1267+
1268+
raw_output = self.openstack('server volume list ' + server_name)
12521269
self.assertEqual('\n', raw_output)

0 commit comments

Comments
 (0)