/
usr
/
lib
/
python2.6
/
site-packages
/
novaclient
/
tests
/
functional
/
v2
/
/usr/lib/python2.6/site-packages/novaclient/tests/functional/v2
mkdir
upload
Name
Size
Mode
Actions
legacy/
-
0755
rm
fake_crypto.py
2655
0644
edit
dl
rm
fake_crypto.pyc
2172
0644
edit
dl
rm
test_consoles.py
1408
0644
edit
dl
rm
test_consoles.pyc
2215
0644
edit
dl
rm
test_extended_attributes.py
2126
0644
edit
dl
rm
test_extended_attributes.pyc
1601
0644
edit
dl
rm
test_fixedips.py
924
0644
edit
dl
rm
test_fixedips.pyc
933
0644
edit
dl
rm
test_flavor_access.py
1506
0644
edit
dl
rm
test_flavor_access.pyc
1451
0644
edit
dl
rm
test_instances.py
733
0644
edit
dl
rm
test_instances.pyc
554
0644
edit
dl
rm
test_instance_action.py
2417
0644
edit
dl
rm
test_instance_action.pyc
2611
0644
edit
dl
rm
test_keypairs.py
1894
0644
edit
dl
rm
test_keypairs.pyc
2223
0644
edit
dl
rm
test_os_services.py
1748
0644
edit
dl
rm
test_os_services.pyc
1524
0644
edit
dl
rm
test_quotas.py
2171
0644
edit
dl
rm
test_quotas.pyc
1907
0644
edit
dl
rm
test_readonly_nova.py
904
0644
edit
dl
rm
test_readonly_nova.pyc
722
0644
edit
dl
rm
test_servers.py
954
0644
edit
dl
rm
test_servers.pyc
929
0644
edit
dl
rm
test_server_groups.py
2290
0644
edit
dl
rm
test_server_groups.pyc
2186
0644
edit
dl
rm
test_trigger_crash_dump.py
5887
0644
edit
dl
rm
test_trigger_crash_dump.pyc
5594
0644
edit
dl
rm
test_virtual_interface.py
1205
0644
edit
dl
rm
test_virtual_interface.pyc
1125
0644
edit
dl
rm
test_volumes_api.py
735
0644
edit
dl
rm
test_volumes_api.pyc
559
0644
edit
dl
rm
__init__.py
0
0644
edit
dl
rm
__init__.pyc
169
0644
edit
dl
rm
Edit:
/usr/lib/python2.6/site-packages/novaclient/tests/functional/v2/test_trigger_crash_dump.py
(5887B)
# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import time from novaclient.tests.functional import base from novaclient.v2 import shell class TestTriggerCrashDumpNovaClientV217(base.TenantTestBase): """Functional tests for trigger crash dump""" COMPUTE_API_VERSION = "2.17" # It's a resource-consuming task to implement full-flow (up to getting # and reading a dump file) functional test for trigger-crash-dump. # We need to upload Ubuntu image for booting an instance based on it, # and to install kdump with its further configuring on this instance. # Here, the "light" version of functional test is proposed. # It's based on knowledge that trigger-crash-dump uses a NMI injection, # and when the 'trigger-crash-dump' operation is executed, # instance's kernel receives the NMI signal, and an appropriate # message will appear in the instance's log. # The server status must be ACTIVE, PAUSED, RESCUED, RESIZED or ERROR. # If not, the conflictingRequest(409) code is returned def _assert_nmi(self, server_id, timeout=60, poll_interval=1): start_time = time.time() while time.time() - start_time < timeout: if 'trigger_crash_dump' in self.nova('instance-action-list %s ' % server_id): break time.sleep(poll_interval) else: self.fail("Trigger crash dump hasn't been executed for server %s" % server_id) def test_trigger_crash_dump_in_active_state(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('trigger-crash-dump %s ' % server.id) self._assert_nmi(server.id) def test_trigger_crash_dump_in_error_state(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('reset-state %s ' % server.id) shell._poll_for_status( self.client.servers.get, server.id, 'active', ['error']) self.nova('trigger-crash-dump %s ' % server.id) self._assert_nmi(server.id) def test_trigger_crash_dump_in_paused_state(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('pause %s ' % server.id) shell._poll_for_status( self.client.servers.get, server.id, 'active', ['paused']) self.nova('trigger-crash-dump %s ' % server.id) self._assert_nmi(server.id) def test_trigger_crash_dump_in_rescued_state(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('rescue %s ' % server.id) shell._poll_for_status( self.client.servers.get, server.id, 'active', ['rescue']) self.wait_for_server_os_boot(server.id) self.nova('trigger-crash-dump %s ' % server.id) self._assert_nmi(server.id) def test_trigger_crash_dump_in_resized_state(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('resize %s %s' % (server.id, 'm1.small')) shell._poll_for_status( self.client.servers.get, server.id, 'active', ['verify_resize']) self.nova('trigger-crash-dump %s ' % server.id) self._assert_nmi(server.id) def test_trigger_crash_dump_in_shutoff_state(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('stop %s ' % server.id) shell._poll_for_status( self.client.servers.get, server.id, 'active', ['shutoff']) output = self.nova('trigger-crash-dump %s ' % server.id, fail_ok=True, merge_stderr=True) self.assertIn("ERROR (Conflict): " "Cannot 'trigger_crash_dump' instance %s " "while it is in vm_state stopped (HTTP 409) " % server.id, output) # If the specified server is locked, the conflictingRequest(409) code # is returned to a user without administrator privileges. def test_trigger_crash_dump_in_locked_state_admin(self): server = self._create_server() self.wait_for_server_os_boot(server.id) self.nova('lock %s ' % server.id) self.nova('trigger-crash-dump %s ' % server.id) self._assert_nmi(server.id) def test_trigger_crash_dump_in_locked_state_nonadmin(self): name = self.name_generate(prefix='server') server = self.another_nova('boot --flavor %s --image %s --poll %s' % (self.flavor.name, self.image.name, name)) self.addCleanup(self.another_nova, 'delete', params=name) server_id = self._get_value_from_the_table( server, 'id') self.wait_for_server_os_boot(server_id) self.another_nova('lock %s ' % server_id) self.addCleanup(self.another_nova, 'unlock', params=name) output = self.another_nova('trigger-crash-dump %s ' % server_id, fail_ok=True, merge_stderr=True) self.assertIn("ERROR (Conflict): Instance %s is in an invalid " "state for 'trigger_crash_dump' (HTTP 409) " % server_id, output)
Save
cmd:
run