Merge "pytest-based selenium tests add default network + video recording fix"
This commit is contained in:
@@ -124,10 +124,10 @@ def record_video(request, report_dir, xdisplay):
|
|||||||
display, width, height = xdisplay
|
display, width, height = xdisplay
|
||||||
command = [
|
command = [
|
||||||
'ffmpeg',
|
'ffmpeg',
|
||||||
'-video_size', '{}x{}'.format(width, height),
|
'-video_size', f'{width}x{height}',
|
||||||
'-framerate', str(frame_rate),
|
'-framerate', str(frame_rate),
|
||||||
'-f', 'x11grab',
|
'-f', 'x11grab',
|
||||||
'-i', display,
|
'-i', f':{display}',
|
||||||
filepath,
|
filepath,
|
||||||
]
|
]
|
||||||
fnull = open(os.devnull, 'w')
|
fnull = open(os.devnull, 'w')
|
||||||
|
@@ -114,3 +114,72 @@ def pytest_assertrepr_compare(op, left, right):
|
|||||||
"Comparing TableDefinition instances:",
|
"Comparing TableDefinition instances:",
|
||||||
" vals: {} != {}".format(left, right),
|
" vals: {} != {}".format(left, right),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Create default test network (contains subnet and is connected to public
|
||||||
|
# network via router)
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session')
|
||||||
|
def new_default_test_network(openstack_admin):
|
||||||
|
network = openstack_admin.network.create_network(
|
||||||
|
name="default_test_network",
|
||||||
|
is_shared=True,
|
||||||
|
)
|
||||||
|
yield network
|
||||||
|
openstack_admin.network.delete_network(network)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session')
|
||||||
|
def new_default_test_subnet(new_default_test_network, openstack_admin):
|
||||||
|
subnet_name = "default_test_subnet"
|
||||||
|
subnet = openstack_admin.network.create_subnet(
|
||||||
|
name=subnet_name,
|
||||||
|
network_id=new_default_test_network.id,
|
||||||
|
ip_version=4,
|
||||||
|
cidr="10.10.0.0/16",
|
||||||
|
)
|
||||||
|
yield subnet
|
||||||
|
openstack_admin.delete_subnet(subnet)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session')
|
||||||
|
def new_default_test_router(openstack_admin):
|
||||||
|
public_network = openstack_admin.network.find_network('public')
|
||||||
|
public_subnet = openstack_admin.network.find_subnet('public-subnet')
|
||||||
|
router = openstack_admin.network.post("/routers", json={
|
||||||
|
"router": {
|
||||||
|
"name": "default_test_router",
|
||||||
|
"external_gateway_info": {
|
||||||
|
"network_id": public_network.id,
|
||||||
|
"enable_snat": True,
|
||||||
|
"external_fixed_ips": [{
|
||||||
|
"subnet_id": public_subnet.id
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
"admin_state_up": True
|
||||||
|
}
|
||||||
|
}).json()
|
||||||
|
yield router
|
||||||
|
openstack_admin.network.delete_router(router['router']['id'])
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session')
|
||||||
|
def new_default_test_interface_for_router(new_default_test_router,
|
||||||
|
new_default_test_subnet,
|
||||||
|
openstack_admin):
|
||||||
|
interface = openstack_admin.network.add_interface_to_router(
|
||||||
|
router=new_default_test_router['router']['id'],
|
||||||
|
subnet_id=new_default_test_subnet.id,
|
||||||
|
)
|
||||||
|
yield interface
|
||||||
|
openstack_admin.network.remove_interface_from_router(
|
||||||
|
router=new_default_test_router['router']['id'],
|
||||||
|
subnet_id=new_default_test_subnet.id)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='session')
|
||||||
|
def complete_default_test_network(new_default_test_network,
|
||||||
|
new_default_test_subnet,
|
||||||
|
new_default_test_router,
|
||||||
|
new_default_test_interface_for_router):
|
||||||
|
yield new_default_test_network
|
||||||
|
@@ -111,8 +111,6 @@ def test_release_floatingip(login, driver, openstack_demo, config,
|
|||||||
new_floating_ip.floating_ip_address) is None
|
new_floating_ip.floating_ip_address) is None
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('new_instance_demo', [(1, "private", False)],
|
|
||||||
indirect=True)
|
|
||||||
def test_associate_floatingip(login, driver, openstack_demo, new_floating_ip,
|
def test_associate_floatingip(login, driver, openstack_demo, new_floating_ip,
|
||||||
config, instance_name, new_instance_demo):
|
config, instance_name, new_instance_demo):
|
||||||
login('user')
|
login('user')
|
||||||
@@ -142,7 +140,7 @@ def test_associate_floatingip(login, driver, openstack_demo, new_floating_ip,
|
|||||||
new_floating_ip.floating_ip_address).port_details['device_id'])
|
new_floating_ip.floating_ip_address).port_details['device_id'])
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('new_instance_demo', [(1, "private", True)],
|
@pytest.mark.parametrize('new_instance_demo', [(1, True)],
|
||||||
indirect=True)
|
indirect=True)
|
||||||
def test_disassociate_floatingip(login, driver, openstack_demo, config,
|
def test_disassociate_floatingip(login, driver, openstack_demo, config,
|
||||||
instance_name, new_instance_demo,
|
instance_name, new_instance_demo,
|
||||||
|
@@ -17,32 +17,31 @@ from selenium.webdriver.support import expected_conditions as EC
|
|||||||
from selenium.webdriver.support.wait import WebDriverWait
|
from selenium.webdriver.support.wait import WebDriverWait
|
||||||
import test_volumes
|
import test_volumes
|
||||||
|
|
||||||
|
|
||||||
from openstack_dashboard.test.selenium import widgets
|
from openstack_dashboard.test.selenium import widgets
|
||||||
|
|
||||||
# Imported fixtures
|
# Imported fixtures
|
||||||
volume_name = test_volumes.volume_name
|
volume_name = test_volumes.volume_name
|
||||||
new_volume_demo = test_volumes.new_volume_demo
|
new_volume_demo = test_volumes.new_volume_demo
|
||||||
|
|
||||||
default_network = "shared"
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def instance_name():
|
def instance_name():
|
||||||
return 'horizon_instance_%s' % uuidutils.generate_uuid(dashed=False)
|
return 'horizon_instance_%s' % uuidutils.generate_uuid(dashed=False)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[(1, default_network, False)])
|
@pytest.fixture(params=[(1, False)])
|
||||||
def new_instance_demo(request, instance_name, openstack_demo, config):
|
def new_instance_demo(complete_default_test_network, request, instance_name,
|
||||||
|
openstack_demo, config):
|
||||||
|
|
||||||
count = request.param[0]
|
count = request.param[0]
|
||||||
network_param = request.param[1]
|
auto_ip_param = request.param[1]
|
||||||
auto_ip_param = request.param[2]
|
|
||||||
instance = openstack_demo.create_server(
|
instance = openstack_demo.create_server(
|
||||||
instance_name,
|
instance_name,
|
||||||
image=config.image.images_list[0],
|
image=config.image.images_list[0],
|
||||||
flavor=config.launch_instances.flavor,
|
flavor=config.launch_instances.flavor,
|
||||||
availability_zone=config.launch_instances.available_zone,
|
availability_zone=config.launch_instances.available_zone,
|
||||||
network=network_param,
|
network=complete_default_test_network.name,
|
||||||
auto_ip=auto_ip_param,
|
auto_ip=auto_ip_param,
|
||||||
wait=True,
|
wait=True,
|
||||||
max_count=count,
|
max_count=count,
|
||||||
@@ -55,18 +54,18 @@ def new_instance_demo(request, instance_name, openstack_demo, config):
|
|||||||
openstack_demo.delete_server(instance_name)
|
openstack_demo.delete_server(instance_name)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[(1, default_network, False)])
|
@pytest.fixture(params=[(1, False)])
|
||||||
def new_instance_admin(request, instance_name, openstack_admin, config):
|
def new_instance_admin(complete_default_test_network, request, instance_name,
|
||||||
|
openstack_admin, config):
|
||||||
|
|
||||||
count = request.param[0]
|
count = request.param[0]
|
||||||
network_param = request.param[1]
|
auto_ip_param = request.param[1]
|
||||||
auto_ip_param = request.param[2]
|
|
||||||
instance = openstack_admin.create_server(
|
instance = openstack_admin.create_server(
|
||||||
instance_name,
|
instance_name,
|
||||||
image=config.image.images_list[0],
|
image=config.image.images_list[0],
|
||||||
flavor=config.launch_instances.flavor,
|
flavor=config.launch_instances.flavor,
|
||||||
availability_zone=config.launch_instances.available_zone,
|
availability_zone=config.launch_instances.available_zone,
|
||||||
network=network_param,
|
network=complete_default_test_network.name,
|
||||||
auto_ip=auto_ip_param,
|
auto_ip=auto_ip_param,
|
||||||
wait=True,
|
wait=True,
|
||||||
max_count=count,
|
max_count=count,
|
||||||
@@ -130,10 +129,11 @@ def delete_volume_on_instance_delete(driver, required_state):
|
|||||||
delete_volume_btn.click()
|
delete_volume_btn.click()
|
||||||
|
|
||||||
|
|
||||||
def test_create_instance_demo(login, driver, instance_name, openstack_demo,
|
def test_create_instance_demo(complete_default_test_network, login, driver,
|
||||||
|
instance_name, openstack_demo,
|
||||||
clear_instance_demo, config):
|
clear_instance_demo, config):
|
||||||
image = config.image.images_list[0]
|
image = config.image.images_list[0]
|
||||||
network = default_network
|
network = complete_default_test_network.name
|
||||||
flavor = config.launch_instances.flavor
|
flavor = config.launch_instances.flavor
|
||||||
|
|
||||||
login('user')
|
login('user')
|
||||||
@@ -181,11 +181,11 @@ def test_create_instance_demo(login, driver, instance_name, openstack_demo,
|
|||||||
assert openstack_demo.compute.find_server(instance_name) is not None
|
assert openstack_demo.compute.find_server(instance_name) is not None
|
||||||
|
|
||||||
|
|
||||||
def test_create_instance_from_volume_demo(login, driver, instance_name,
|
def test_create_instance_from_volume_demo(complete_default_test_network, login,
|
||||||
volume_name, new_volume_demo,
|
driver, volume_name, new_volume_demo,
|
||||||
clear_instance_demo, config,
|
clear_instance_demo, config,
|
||||||
openstack_demo):
|
openstack_demo, instance_name):
|
||||||
network = default_network
|
network = complete_default_test_network.name
|
||||||
flavor = config.launch_instances.flavor
|
flavor = config.launch_instances.flavor
|
||||||
volume_name = volume_name[0]
|
volume_name = volume_name[0]
|
||||||
|
|
||||||
@@ -251,7 +251,7 @@ def test_delete_instance_demo(login, driver, instance_name, openstack_demo,
|
|||||||
assert openstack_demo.compute.find_server(instance_name) is None
|
assert openstack_demo.compute.find_server(instance_name) is None
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('new_instance_demo', [(2, default_network, False)],
|
@pytest.mark.parametrize('new_instance_demo', [(2, False)],
|
||||||
indirect=True)
|
indirect=True)
|
||||||
def test_instance_pagination_demo(login, driver, instance_name,
|
def test_instance_pagination_demo(login, driver, instance_name,
|
||||||
new_instance_demo, change_page_size_demo,
|
new_instance_demo, change_page_size_demo,
|
||||||
@@ -303,13 +303,14 @@ def test_instance_pagination_demo(login, driver, instance_name,
|
|||||||
assert first_page_definition == actual_page1_definition
|
assert first_page_definition == actual_page1_definition
|
||||||
|
|
||||||
|
|
||||||
# Admin tests
|
# # Admin tests
|
||||||
|
|
||||||
|
|
||||||
def test_create_instance_admin(login, driver, instance_name, openstack_admin,
|
def test_create_instance_admin(complete_default_test_network, login, driver,
|
||||||
|
instance_name, openstack_admin,
|
||||||
clear_instance_admin, config):
|
clear_instance_admin, config):
|
||||||
image = config.image.images_list[0]
|
image = config.image.images_list[0]
|
||||||
network = default_network
|
network = complete_default_test_network.name
|
||||||
flavor = config.launch_instances.flavor
|
flavor = config.launch_instances.flavor
|
||||||
|
|
||||||
login('admin')
|
login('admin')
|
||||||
@@ -371,7 +372,7 @@ def test_delete_instance_admin(login, driver, instance_name, openstack_admin,
|
|||||||
assert openstack_admin.compute.find_server(instance_name) is None
|
assert openstack_admin.compute.find_server(instance_name) is None
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('new_instance_admin', [(2, default_network, False)],
|
@pytest.mark.parametrize('new_instance_admin', [(2, False)],
|
||||||
indirect=True)
|
indirect=True)
|
||||||
def test_instance_pagination_admin(login, driver, instance_name,
|
def test_instance_pagination_admin(login, driver, instance_name,
|
||||||
new_instance_admin, change_page_size_admin,
|
new_instance_admin, change_page_size_admin,
|
||||||
|
Reference in New Issue
Block a user