Example #1
0
    def test_pvc_delete_and_verify_size_is_returned_to_backend_pool(
            self, pvc_factory, pod_factory):
        """
        Test case to verify after delete pvc size returned to backend pools
        """
        # TODO: Get exact value of replica size
        replica_size = 3

        used_before_creating_pvc = fetch_used_size()
        logger.info(f"Used before creating PVC {used_before_creating_pvc}")

        pvc_obj = pvc_factory(interface=constants.CEPHBLOCKPOOL,
                              size=10,
                              status=constants.STATUS_BOUND)
        pod_obj = pod_factory(interface=constants.CEPHBLOCKPOOL,
                              pvc=pvc_obj,
                              status=constants.STATUS_RUNNING)
        pvc_obj.reload()

        # Write 3Gb
        pod.run_io_and_verify_mount_point(pod_obj, bs='10M', count='300')
        exp_size = used_before_creating_pvc + (3 * replica_size)
        used_after_io = fetch_used_size(exp_size)
        logger.info(f"Used space after IO {used_after_io}")

        rbd_image_id = pvc_obj.image_uuid
        pod_obj.delete()
        pod_obj.ocp.wait_for_delete(resource_name=pod_obj.name)
        pvc_obj.delete()
        pvc_obj.ocp.wait_for_delete(resource_name=pvc_obj.name)

        verify_pv_not_exists(pvc_obj, constants.DEFAULT_BLOCKPOOL,
                             rbd_image_id)
        used_after_deleting_pvc = fetch_used_size(used_before_creating_pvc)
        logger.info(f"Used after deleting PVC {used_after_deleting_pvc}")
 def test_pvc_delete_and_verify_size_is_returned_to_backend_pool(self):
     """
     Test case to verify after delete pvc size returned to backend pools
     """
     used_before_creating_pvc = check_ceph_used_space()
     logger.info(f"Used before creating pvc {used_before_creating_pvc}")
     pvc_obj = create_pvc_and_verify_pvc_exists(
         self.sc_obj.name, self.cbp_obj.name
     )
     pod_obj = helpers.create_pod(
         interface_type=constants.CEPHBLOCKPOOL, pvc_name=pvc_obj.name
     )
     helpers.wait_for_resource_state(pod_obj, constants.STATUS_RUNNING)
     pod_obj.reload()
     used_percentage = pod.run_io_and_verify_mount_point(pod_obj)
     assert used_percentage > '90%', "I/O's didn't run completely"
     used_after_creating_pvc = check_ceph_used_space()
     logger.info(f"Used after creating pvc {used_after_creating_pvc}")
     assert used_before_creating_pvc < used_after_creating_pvc
     pod_obj.delete()
     pvc_obj.delete()
     verify_pv_not_exists(pvc_obj, self.cbp_obj.name)
     used_after_deleting_pvc = check_ceph_used_space()
     logger.info(f"Used after deleting pvc {used_after_deleting_pvc}")
     assert used_after_deleting_pvc < used_after_creating_pvc
     assert (abs(
         used_after_deleting_pvc - used_before_creating_pvc) < 0.2
     )
 def test_pvc_delete_and_verify_size_is_returned_to_backend_pool(self):
     """
     Test case to verify after delete pvc size returned to backend pools
     """
     used_before_creating_pvc = check_ceph_used_space()
     logger.info(f"Used before creating pvc {used_before_creating_pvc}")
     pvc_obj = create_pvc_and_verify_pvc_exists(
         self.sc_obj.name, self.cbp_obj.name
     )
     pod_data = templating.load_yaml_to_dict(constants.CSI_RBD_POD_YAML)
     pod_data['spec']['volumes'][0]['persistentVolumeClaim'][
         'claimName'
     ] = pvc_obj.name
     pod_obj = helpers.create_pod(**pod_data)
     used_percentage = pod.run_io_and_verify_mount_point(pod_obj)
     assert used_percentage > '90%', "I/O's didn't run completely"
     used_after_creating_pvc = check_ceph_used_space()
     logger.info(f"Used after creating pvc {used_after_creating_pvc}")
     assert used_before_creating_pvc < used_after_creating_pvc
     pod_obj.delete()
     pvc_obj.delete()
     verify_pv_not_exists(pvc_obj.backed_pv, self.cbp_obj.name)
     used_after_deleting_pvc = check_ceph_used_space()
     logger.info(f"Used after deleting pvc {used_after_deleting_pvc}")
     assert used_after_deleting_pvc < used_after_creating_pvc
     assert (abs(
         used_after_deleting_pvc - used_before_creating_pvc) < 0.2)
Example #4
0
    def test_pvc_delete_and_verify_size_is_returned_to_backend_pool(
        self, pause_cluster_load, pvc_factory, pod_factory
    ):
        """
        Test case to verify after delete pvc size returned to backend pools
        """
        cbp_name = helpers.default_ceph_block_pool()

        # TODO: Get exact value of replica size
        replica_size = 3

        pvc_obj = pvc_factory(
            interface=constants.CEPHBLOCKPOOL, size=10,
            status=constants.STATUS_BOUND
        )
        pod_obj = pod_factory(
            interface=constants.CEPHBLOCKPOOL, pvc=pvc_obj,
            status=constants.STATUS_RUNNING
        )
        pvc_obj.reload()

        used_before_io = fetch_used_size(cbp_name)
        logger.info(f"Used before IO {used_before_io}")

        # Write 6Gb
        pod.run_io_and_verify_mount_point(pod_obj, bs='10M', count='600')
        exp_size = used_before_io + (6 * replica_size)
        used_after_io = fetch_used_size(cbp_name, exp_size)
        logger.info(f"Used space after IO {used_after_io}")

        rbd_image_id = pvc_obj.image_uuid
        pod_obj.delete()
        pod_obj.ocp.wait_for_delete(resource_name=pod_obj.name)
        pvc_obj.delete()
        pvc_obj.ocp.wait_for_delete(resource_name=pvc_obj.name)

        verify_pv_not_exists(
            pvc_obj, cbp_name, rbd_image_id
        )
        used_after_deleting_pvc = fetch_used_size(cbp_name, used_before_io)
        logger.info(f"Used after deleting PVC {used_after_deleting_pvc}")
    def test_pvc_delete_and_verify_size_is_returned_to_backend_pool(self):
        """
        Test case to verify after delete pvc size returned to backend pools
        """
        failed_to_delete = []
        ceph_obj1 = CephCluster()
        used_before_creating_pvc = ceph_obj1.check_ceph_pool_used_space(
            cbp_name=self.cbp_obj.name)
        logger.info(f"Used before creating PVC {used_before_creating_pvc}")
        pvc_obj = create_pvc_and_verify_pvc_exists(self.sc_obj.name,
                                                   self.cbp_obj.name)
        pod_obj = helpers.create_pod(interface_type=constants.CEPHBLOCKPOOL,
                                     pvc_name=pvc_obj.name)
        helpers.wait_for_resource_state(pod_obj, constants.STATUS_RUNNING)
        pod_obj.reload()
        pod.run_io_and_verify_mount_point(pod_obj, bs='10M', count='300')
        used_after_creating_pvc = ceph_obj1.check_ceph_pool_used_space(
            cbp_name=self.cbp_obj.name)
        logger.info(f"Used after creating PVC {used_after_creating_pvc}")
        assert used_before_creating_pvc < used_after_creating_pvc
        rbd_image_id = pvc_obj.image_uuid
        for resource in pod_obj, pvc_obj:
            resource.delete()
            try:
                resource.ocp.wait_for_delete(resource)
            except TimeoutError:
                failed_to_delete.append(resource)
        if failed_to_delete:
            raise UnexpectedBehaviour(
                f"Failed to delete resources: {failed_to_delete}")
        verify_pv_not_exists(pvc_obj, self.cbp_obj.name, rbd_image_id)
        ceph_obj2 = CephCluster()
        used_after_deleting_pvc = ceph_obj2.check_ceph_pool_used_space(
            cbp_name=self.cbp_obj.name)

        logger.info(f"Used after deleting PVC {used_after_deleting_pvc}")
        assert used_after_deleting_pvc < used_after_creating_pvc
        assert (abs(used_after_deleting_pvc - used_before_creating_pvc) < 0.5)