def test_multiple_pvc_creation_after_deletion_performance( self, teardown_factory ): """ Measuring PVC creation time of 75% of initial PVCs (120) in the same rate after deleting 75% of the initial PVCs. Args: teardown_factory: A fixture used when we want a new resource that was created during the tests to be removed in the teardown phase. Returns: """ initial_number_of_pvcs = 120 number_of_pvcs = math.ceil(initial_number_of_pvcs * 0.75) log.info('Start creating new 120 PVCs') pvc_objs = helpers.create_multiple_pvcs( sc_name=self.sc_obj.name, namespace=defaults.ROOK_CLUSTER_NAMESPACE, number_of_pvc=initial_number_of_pvcs, size=self.pvc_size, ) for pvc_obj in pvc_objs: teardown_factory(pvc_obj) with ThreadPoolExecutor() as executor: for pvc_obj in pvc_objs: executor.submit( helpers.wait_for_resource_state, pvc_obj, constants.STATUS_BOUND ) executor.submit(pvc_obj.reload) log.info('Deleting 75% of the PVCs - 90 PVCs') assert pvc.delete_pvcs(pvc_objs[:number_of_pvcs], True), ( "Deletion of 75% of PVCs failed" ) log.info('Re-creating the 90 PVCs') pvc_objs = helpers.create_multiple_pvcs( sc_name=self.sc_obj.name, namespace=defaults.ROOK_CLUSTER_NAMESPACE, number_of_pvc=number_of_pvcs, size=self.pvc_size, ) start_time = helpers.get_start_creation_time( self.interface, pvc_objs[0].name ) end_time = helpers.get_end_creation_time( self.interface, pvc_objs[number_of_pvcs - 1].name, ) total = end_time - start_time total_time = total.total_seconds() if total_time > 45: raise ex.PerformanceException( f"{number_of_pvcs} PVCs creation (after initial deletion of " f"75%) time is {total_time} and greater than 45 seconds" ) logging.info( f"{number_of_pvcs} PVCs creation time took less than a 45 seconds" )
def test_multiple_pvc_creation_measurement_performance( self, teardown_factory ): """ Measuring PVC creation time of 120 PVCs in 180 seconds Args: teardown_factory: A fixture used when we want a new resource that was created during the tests to be removed in the teardown phase. Returns: """ number_of_pvcs = 120 log.info('Start creating new 120 PVCs') pvc_objs = helpers.create_multiple_pvcs( sc_name=self.sc_obj.name, namespace=defaults.ROOK_CLUSTER_NAMESPACE, number_of_pvc=number_of_pvcs, size=self.pvc_size, ) for pvc_obj in pvc_objs: pvc_obj.reload() teardown_factory(pvc_obj) with ThreadPoolExecutor(max_workers=5) as executor: for pvc_obj in pvc_objs: executor.submit( helpers.wait_for_resource_state, pvc_obj, constants.STATUS_BOUND ) executor.submit(pvc_obj.reload) start_time = helpers.get_start_creation_time( self.interface, pvc_objs[0].name ) end_time = helpers.get_end_creation_time( self.interface, pvc_objs[number_of_pvcs - 1].name, ) total = end_time - start_time total_time = total.total_seconds() if total_time > 180: raise ex.PerformanceException( f"{number_of_pvcs} PVCs creation time is {total_time} and " f"greater than 180 seconds" ) logging.info( f"{number_of_pvcs} PVCs creation time took {total_time} seconds" )