示例#1
0
    def test_renaming_node(self):
        """Rename node name

        Scenario:
            1. Click on node name
            2. Change name and click on node area - name isn't changed
            3. Click on node name again
            4. Change name and hit enter
            5. Verify that name is correctly changed
        """
        name = 'new node name'
        with Nodes() as n:
            old_name = n.nodes_discovered[0].name.text
            n.nodes_discovered[0].name.click()
            self.assertTrue(n.nodes_discovered[0].name_input.is_displayed(),
                            'input visible')
            n.nodes_discovered[0].name_input.send_keys(name)
            n.nodes_discovered[0].parent.click()
            self.assertRaises(NoSuchElementException, getattr,
                              n.nodes_discovered[0], 'name_input')
            self.assertEqual(old_name, n.nodes_discovered[0].name.text,
                             'Node has old name')
            n.nodes_discovered[0].name.click()
            n.nodes_discovered[0].name_input.clear()
            n.nodes_discovered[0].name_input.send_keys(name)
            n.nodes_discovered[0].name_input.send_keys(Keys.ENTER)
            time.sleep(2)
        self.assertEqual(name,
                         Nodes().nodes_discovered[0].name.text,
                         'New node name')
示例#2
0
    def test_edit_role_add_new_role(self):
        """Edit node by adding new role to it

        Scenario:
            1. Select Controller role and select node
            2. Click Apply Changes
            3. Select added node and click Edit Roles
            4. Select Cinder Role and click Apply Changes
            5. Verify that roles of node are Controller, Cinder
        """
        # Add node with controller role
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # Add cinder role
        with Nodes() as n:
            n.nodes[0].checkbox.click()
            n.edit_roles.click()
        RolesPanel().cinder.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertIn(ROLE_CONTROLLER, n.nodes[0].roles.text,
                          'Controller role')
            self.assertIn(ROLE_CINDER, n.nodes[0].roles.text, 'Cinder role')
示例#3
0
    def test_several_nodes(self):
        """Check multiroles for many nodes

        Scenario:
            1. Select three nodes and assign controller, ceph, cinder roles
            2. Verify that role of the nodes is changed
            3. Deselect nodes
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
            n.nodes_discovered[1].checkbox.click()
            n.nodes_discovered[2].checkbox.click()
        with RolesPanel() as r:
            r.compute.click()
            r.cinder.click()
            r.ceph_osd.click()
        with Nodes()as n:
            self.assertNodeInRoles(
                n.nodes_discovered[0],
                [ROLE_COMPUTE, ROLE_CINDER, ROLE_CEPH])
            self.assertNodeInRoles(
                n.nodes_discovered[1],
                [ROLE_COMPUTE, ROLE_CINDER, ROLE_CEPH])
            self.assertNodeInRoles(
                n.nodes_discovered[2],
                [ROLE_COMPUTE, ROLE_CINDER, ROLE_CEPH])
示例#4
0
    def test_edit_role_change_role(self):
        """Edit node by removing old role and adding two new roles to it

        Scenario:
            1. Select Controller role and select node
            2. Click Apply Changes
            3. Select added node and click Edit Roles
            4. Unselect Controller and select Cinder and Ceph Role
            5. Click Apply Changes
            6. Verify that roles of node are Cinder and Ceph
        """
        # Add node with controller role
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # Remove controller, Add cinder and ceph-osd roles
        with Nodes() as n:
            n.nodes[0].checkbox.click()
            n.edit_roles.click()
        with RolesPanel() as r:
            r.controller.click()
            r.cinder.click()
            r.ceph_osd.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertNotIn(ROLE_CONTROLLER, n.nodes[0].roles.text,
                             'Controller role has been removed')
            self.assertIn(ROLE_CINDER, n.nodes[0].roles.text, 'Cinder role')
            self.assertIn(ROLE_CEPH, n.nodes[0].roles.text, 'Ceph-osd role')
示例#5
0
    def test_delete_node(self):
        """Delete one node and deploy changes

        Scenario:
            1. Add controller and compute node
            2. Deploy changes
            3. Delete one node
            4. Deploy changes
            5. Verify that only one node is present
        """
        self.test_add_nodes()

        with Nodes() as n:
            n.nodes[1].checkbox.click()
            n.delete_nodes.click()
        with DeleteNodePopup() as p:
            p.delete.click()
            p.wait_until_exists()
            time.sleep(1)

        self.assertEqual(
            'pending deletion', Nodes().nodes[1].status.text.lower(),
            'Node status is Pending Deletion')

        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()

        with Nodes() as n:
            self.assertEqual(1, len(n.nodes), 'Nodes amount')
            for node in n.nodes:
                self.assertEqual('ready', node.status.text.lower(),
                                 'Node status is READY')
示例#6
0
    def test_compute(self):
        """Check compute node

        Scenario:
            1. Select first node and assign compute role
            2. Verify that role of the node is changed,
               controller role is disabled
            3. Deselect node
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.compute.click()
            self.assertFalse(r.controller.is_enabled())
            self.assertIn(
                ERROR_ROLE_CANNOT_COMBINE,
                r.controller.find_element_by_xpath('../..').text,
                'error "{}" is visible'.format(ERROR_ROLE_CANNOT_COMBINE))
        with Nodes()as n:
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_COMPUTE])
            self.assertTrue(n.apply_changes.is_enabled())
            n.nodes_discovered[0].checkbox.click()
            self.assertFalse(n.apply_changes.is_enabled())
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_UNALLOCATED])
示例#7
0
    def test_two_nodes(self):
        """Verify network with two added nodes

        Scenario:
            1. Add two compute nodes
            2. Open Networks tab
            3. Click Verify Networks
            4. Verify that message 'Verification succeeded.
               Your network is configured correctly' appears
        """
        Tabs().nodes.click()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        Nodes().nodes_discovered[1].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        Tabs().networks.click()
        time.sleep(1)
        with Networks() as n:
            n.verify_networks.click()
            self.assertIn(
                'Verification succeeded. '
                'Your network is configured correctly.',
                n.verification_alert.text, 'Verification succeeded')
示例#8
0
    def test_configure_disks_of_several_nodes(self):
        """Configure disks for several nodes

        Scenario:
            1. Add two compute nodes
            2. Select this two nodes and click configure disks
            3. Allocate size for Base system volume
            4. Click apply changes
            5. Verify that changes are correctly applied
        """
        values = [random.randint(100000, 500000) for i in range(4)]

        # Go back to nodes page
        Tabs().nodes.click()
        time.sleep(1)
        # Add second node
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().select_all_in_group[1].click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # change volumes size
        with Nodes() as n:
            n.select_all_in_group[1].click()
            n.configure_disks.click()
            time.sleep(1)

        with DisksSettings() as s:
            for i, v in enumerate(values):
                s.disks[i].volume_storage.parent.click()
                time.sleep(1)
                s.disks[i].volume_group_storage.input.\
                    clear()
                s.disks[i].volume_group_storage.input.\
                    send_keys(v)
            s.apply.click()
            time.sleep(1)

        for i in range(1, 3):
            # Go to nodes page
            Tabs().nodes.click()
            time.sleep(1)
            # Verify disks settings of each node
            Nodes().nodes[i].details.click()
            NodeInfo().edit_disks.click()
            time.sleep(1)

            for j, v in enumerate(values):
                self.assertEqual(
                    "{:,}".format(v),
                    s.disks[j].volume_group_storage.input.get_attribute(
                        'value'),
                    'Image volume size of disk {0} of node {0} is correct'.
                    format(j, i))
示例#9
0
    def test_add_nodes(self):
        """Deploy environment with controller and compute nodes

        Scenario:
            1. Add controller and compute node
            2. Deploy changes
            3. Verify that nodes statuses are ready
        """
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(2)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)

        for node in Nodes().nodes:
            self.assertEqual(
                'pending addition', node.status.text.lower(),
                'Node status is Pending Addition')

        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()

        with Nodes() as n:
            self.assertEqual(2, len(n.nodes), 'Nodes amount')
            for node in n.nodes:
                self.assertEqual('ready', node.status.text.lower(),
                                 'Node status is READY')
示例#10
0
    def test_reset_redeploy(self):
        """Reset environment after deploy changes

        Scenario:
            1. Add controller and compute nodes
            2. Click deploy
            3. Add new compute node and deploy changes
            4. Reset environment
            4. Verify that environment is reseted
        """
        Tabs().nodes.click()
        Nodes().add_controller_compute_nodes()
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        PageObject.wait_until_exists(Nodes().apply_changes)
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()
        Tabs().actions.click()
        Actions().reset_env()
        Tabs().nodes.click()
        for node in Nodes().nodes:
            self.assertEqual('pending addition', node.status.text.lower(),
                             'Node status is Pending Addition')
        self.assertTrue(Nodes().deploy_changes.is_enabled())
示例#11
0
        def add(role, amount):
            if amount < 1:
                return

            Nodes().add_nodes.click()
            time.sleep(1)
            for i in range(amount):
                Nodes().nodes_discovered[i].checkbox.click()
            getattr(RolesPanel(), role).click()
            Nodes().apply_changes.click()
            time.sleep(1)
    def _discard_changes(self):
        Nodes().discard_changes.click()
        with DiscardChangesPopup() as p:
            p.discard.click()
            p.wait_until_exists()

        time.sleep(2)
        self.assertEqual(3, len(Nodes().nodes), 'Nodes amount')
        for node in Nodes().nodes:
            self.assertEqual('ready', node.status.text.lower(),
                             'Node status is READY')
示例#13
0
    def test_configure_interfaces_of_several_nodes(self):
        """Configure interfaces on several nodes

        Scenario:
            1. Add compute node
            2. Select compute and controller node
               and click Configure interfaces
            3. Drag and drop Public network from eth0 to eth1
            4. Drag and drop Storage network from eth0 to eth2
            5. Drag and drop Management network from eth0 to eth1
            6. Click Apply
            7. Verify that Public and Management networks
               are on eth1 interface, Storage is on eth2
        """
        # Go back to nodes page
        Tabs().nodes.click()
        # Add second node
        time.sleep(1)
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # rearrange interfaces
        with Nodes() as n:
            n.select_all.click()
            n.configure_interfaces.click()
        with InterfacesSettings() as s:
            ActionChains(browser.driver).drag_and_drop(
                s.interfaces[0].networks['public'],
                s.interfaces[1].networks_box).perform()
            ActionChains(browser.driver).drag_and_drop(
                s.interfaces[0].networks['management'],
                s.interfaces[1].networks_box).perform()
            ActionChains(browser.driver).drag_and_drop(
                s.interfaces[0].networks['storage'],
                s.interfaces[2].networks_box).perform()
            s.apply.click()
            time.sleep(1)

        for i in range(2):
            # Go to nodes page
            Tabs().nodes.click()
            # Verify interfaces settings of each node
            Nodes().nodes[i].details.click()
            NodeInfo().edit_networks.click()
            self.assertIn('public', s.interfaces[1].networks,
                          'public at eht1. Node #{0}'.format(i))
            self.assertIn('management', s.interfaces[1].networks,
                          'management at eht1. Node #{0}'.format(i))
            self.assertIn('storage', s.interfaces[2].networks,
                          'storage at eht2. Node #{0}'.format(i))
    def test_discard_adding_node(self):
        """Discard changes after adding new node

        Scenario:
            1. Add compute node
            2. Discard changes
            3. Verify that there are 3 nodes and their statuses are ready
        """
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        self._discard_changes()
示例#15
0
    def test_one_controller_allowed_nodes_disabled(self):
        """Check that only one controller node is possible

        Scenario:
            1. Select first node and assign controller role
            2. Verify that checkboxes of other nodes are disabled
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.controller.click()
        for n in Nodes().nodes_discovered[1:]:
            self.assertFalse(
                n.checkbox.find_element_by_tag_name('input').is_enabled(),
                'Checkbox is disabled')
    def setUpClass(cls):
        """Global precondition

        Steps:
            1. Create simple environment with default values
            2. Add one controller node
        """
        BaseTestCase.setUpClass()
        preconditions.Environment.simple_flat()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
示例#17
0
    def test_vlan_id_labels_visibility(self):
        """Checking vlan id label when vlan tagging is disabled

        Scenario:
            1. Open Networks tab
            2. Disable vlan tagging for Management, Storage, VM(Fixed)
            3. Open Nodes tab
            4. Select controller node
            5. Click configure interfaces
            6. Verify that 'Vlan Id' isn't visible on Storage,
               Management, VM(Fixed) network boxes
        """
        label = 'VLAN ID'
        Tabs().networks.click()
        with Networks() as n:
            n.management.vlan_tagging.click()
            n.storage.vlan_tagging.click()
            n.fixed.vlan_tagging.click()
            n.save_settings.click()
            time.sleep(1)
        Tabs().nodes.click()
        Nodes().nodes[0].details.click()
        NodeInfo().edit_networks.click()
        with InterfacesSettings() as s:
            self.assertNotIn(label, s.interfaces[0].networks['storage'].text,
                             'vlan id is visible. Storage network')
            self.assertNotIn(label,
                             s.interfaces[0].networks['management'].text,
                             'vlan id is visible. Management network')
            self.assertNotIn(label,
                             s.interfaces[0].networks['vm (fixed)'].text,
                             'vlan id is visible. VM (Fixed) network')
    def test_simple_mode(self):
        """Create environment with simple mode

        Scenario:
            1. Create environment with simple mode
            2. Click on created environment
            3. Verify that correct environment name is displayed
            4. Verify all information is displayed correctly
        """
        with Wizard() as w:
            w.name.send_keys(OPENSTACK_CENTOS)
            w.release.select_by_visible_text(OPENSTACK_RELEASE_CENTOS)
            w.next.click()
            w.mode_multinode.click()
            for i in range(5):
                w.next.click()
            w.create.click()
            w.wait_until_exists()

        self.get_home()
        cb = Environments().create_cluster_boxes[0]
        cb.click()

        with Nodes() as n:
            self.assertIn(OPENSTACK_CENTOS,
                          PageObject.get_text(n, 'env_summary'))
            self.assertIn('Multi-node', n.env_summary.text)
示例#19
0
    def test_ha_mode(self):
        """Create environment with HA mode

        Scenario:
            1. Create environment with HA mode
            2. Click on created environment
            3. Verify that correct environment name is displayed
            4. Click on information icon and verify
               all information is displayed correctly
        """
        with Wizard() as w:
            w.name.send_keys(OPENSTACK_CENTOS)
            w.release.select_by_visible_text(OPENSTACK_RELEASE_CENTOS)
            w.next.click()
            w.mode_ha_compact.click()
            for i in range(5):
                w.next.click()
            w.create.click()
            w.wait_until_exists()

        cb = Environments().create_cluster_boxes[0]
        cb.click()

        with Nodes() as n:
            self.assertEqual(PageObject.get_text(n, 'env_name'),
                             OPENSTACK_CENTOS)
            PageObject.click_element(n, 'info_icon')
            self.assertIn(OPENSTACK_CENTOS, PageObject.get_text
                          (n, 'env_details'))
            self.assertIn('Multi-node with HA', n.env_details.text)
示例#20
0
    def test_select_all(self):
        """Check Select All checkbox

        Scenario:
            1. Click Select All checkbox
            2. Verify that group Select All checkboxes are selected
            3. Verify that discovered nodes checkboxes are selected
            4. Verify that offline and error nodes checkboxes aren't selected
        """
        with Nodes() as n:
            n.select_all.click()
            for selects in n.select_all_in_group:
                self.assertTrue(selects.is_selected(),
                                'Select all in group is selected')
            for node in n.nodes_discovered:
                self.assertTrue(
                    node.checkbox.find_element_by_tag_name(
                        'input').is_selected(), 'Discovered node is selected')
            for node in n.nodes_offline:
                self.assertTrue(
                    node.checkbox.find_element_by_tag_name(
                        'input').is_selected(), 'Offline node is not selected')
            for node in n.nodes_error:
                self.assertFalse(
                    node.checkbox.find_element_by_tag_name(
                        'input').is_selected(), 'Error node is not selected')
示例#21
0
    def test_ceph(self):
        """Check ceph node

        Scenario:
            1. Select first node and assign ceph role
            2. Verify that role of the node is changed
            3. Deselect node
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.ceph_osd.click()
        with Nodes()as n:
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_CEPH])
            self.assertTrue(n.apply_changes.is_enabled())
            n.nodes_discovered[0].checkbox.click()
            self.assertFalse(n.apply_changes.is_enabled())
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_UNALLOCATED])
示例#22
0
    def test_multiroles(self):
        """Check multiroles node

        Scenario:
            1. Select first node and assign controller, ceph, cinder roles
            2. Verify that role of the node is changed
            3. Deselect node
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.controller.click()
            r.cinder.click()
            r.ceph_osd.click()
        with Nodes()as n:
            self.assertNodeInRoles(
                n.nodes_discovered[0],
                [ROLE_CONTROLLER, ROLE_CINDER, ROLE_CEPH])
    def setUp(self):
        """Each test precondition

        Steps:
            1. Create environment with Neutron gre
            2. Open created environment
            3. Add controller node
            4. Open interface configuration of the node
        """
        BaseTestCase.clear_nailgun_database()
        BaseTestCase.setUp(self)
        preconditions.Environment.simple_neutron_gre()
        PageObject.click_element(Nodes(), 'add_nodes')
        PageObject.click_element(Nodes(), 'nodes_discovered', 'checkbox', 0)
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        PageObject.wait_until_exists(Nodes().apply_changes)
        Nodes().nodes[0].details.click()
        NodeInfo().edit_networks.click()
示例#24
0
    def test_stop_deploy(self):
        """Stop deploy

        Scenario:
            1. Add controller and compute nodes
            2. Click deploy
            3. Click stop
            4. Verify that environment isn't deployed
        """
        Tabs().nodes.click()
        Nodes().add_controller_compute_nodes()
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        Actions().cancel_popup.click()
        Actions().stop_deploy_process()
        PageObject.find_element(Nodes(), 'nodes', 'status', 0)
        for node in Nodes().nodes:
            self.assertEqual('pending addition', node.status.text.lower(),
                             'Node status is Pending Addition')
        self.assertTrue(Nodes().deploy_changes.is_enabled())
示例#25
0
    def test_error_nodes_disabled(self):
        """Check that error nodes checkboxes are disabled

        Scenario:
            1. Verify error nodes checkboxes are inactive
        """
        with Nodes() as n:
            for node in n.nodes_error:
                self.assertFalse(
                    node.checkbox.find_element_by_tag_name(
                        'input').is_enabled(), 'Node disabled')
示例#26
0
    def test_offline_nodes_disabled(self):
        """Check that offline nodes checkboxes are disabled

        Scenario:
            1. Verify offline nodes checkboxes are inactive
        """
        with Nodes() as n:
            for node in n.nodes_offline:
                self.assertTrue(
                    node.checkbox.find_element_by_tag_name(
                        'input').is_enabled(), 'Node disabled')
示例#27
0
 def _test_group_by(self, group_by, nodes_in_groups):
     with Nodes() as n:
         time.sleep(1)
         n.group_by.select_by_visible_text(group_by)
         time.sleep(1)
         self.assertEqual(len(nodes_in_groups), len(n.node_groups),
                          'Groups amount')
         for i, group in enumerate(n.node_groups):
             self.assertEqual(
                 nodes_in_groups[i], len(group.nodes),
                 'Group #{0} has {1} nodes'.format(i, nodes_in_groups[i]))
示例#28
0
    def test_discovered_nodes_enabled(self):
        """Check that discovered nodes checkboxes are enabled

        Scenario:
            1. Verify discovered nodes checkboxes are active
        """
        with Nodes() as n:
            for node in n.nodes_discovered:
                self.assertTrue(
                    node.checkbox.find_element_by_tag_name(
                        'input').is_enabled(), 'Node enabled')
示例#29
0
    def test_adding_node_single_role(self):
        """Add one controller node

        Scenario:
            1. Select Controller role and select node
            2. Click Apply Changes
            3. Verify that Nodes page is open
            4. Amount of nodes is 1
            5. Node is the same that was selected
            6. Role of node is Controller
        """
        name = Nodes().nodes_discovered[0].name.text
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertTrue(n.env_summary.is_displayed())
            self.assertEqual(len(n.nodes), 1, 'Nodes amount')
            self.assertEqual(n.nodes[0].name.text, name, 'Node name')
            self.assertIn(ROLE_CONTROLLER, n.nodes[0].roles.text, 'Node role')
示例#30
0
    def setUp(self):
        """Each test precondition

        Steps:
            1. Click on created simple environment
            2. Click 'Add nodes'
        """
        BaseTestCase.setUp(self)
        Environments().create_cluster_boxes[0].click()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)