def METHOD_NAME(tmp_path, mcg_job_factory, timeout=60):
    """
    Create buckets with and without objects using RGW storage class before upgrade.
    Save scaled obc data in a file for post upgrade validation.
    Validate objects in buckets in post upgrade.
    """
    # Running hsbench to create buckets with objects before upgrade.
    #  PUT, GET and LIST objects of a bucket.
    namespace = scale_noobaa_lib.create_namespace()
    scale_noobaa_lib.hsbench_setup()
    scale_noobaa_lib.hsbench_io(
        namespace=namespace,
        num_obj=num_objs,
        num_bucket=10,
        object_size="100K",
        run_mode="cxipgl",
        result="result.csv",
        validate=True,
    )
    # Validate objects in bucket(s) after created
    scale_noobaa_lib.validate_bucket(
        num_objs,
        upgrade="pre_upgrade",
        result="result.csv",
        put=True,
        get=True,
        list_obj=True,
    )
    # Create OBC without I/O and ensure OBC in Bound state before upgrade
    obc_scaled_list = []
    log.info(f"Start creating  {scale_obc_count} " f"OBC in a batch of {num_obc_batch}")
    for i in range(int(scale_obc_count / num_obc_batch)):
        obc_dict_list = scale_noobaa_lib.construct_obc_creation_yaml_bulk_for_kube_job(
            no_of_obc=num_obc_batch,
            sc_name=sc_name,
            namespace=namespace,
        )
        # Create job profile
        job_file = ObjectConfFile(
            name="job_profile",
            obj_dict_list=obc_dict_list,
            project=namespace,
            tmp_path=tmp_path,
        )
        # Create kube_job
        job_file.create(namespace=namespace)
        time.sleep(timeout * 5)
        # Check all the OBCs reached Bound state
        obc_bound_list = scale_noobaa_lib.check_all_obc_reached_bound_state_in_kube_job(
            kube_job_obj=job_file,
            namespace=namespace,
            no_of_obc=num_obc_batch,
        )
        obc_scaled_list.extend(obc_bound_list)
    log.info(
        f"Number of OBCs in scaled list: {len(obc_scaled_list)}",
    )
    # Write namespace, OBC data in a OBC_SCALE_DATA_FILE which
    # will be used during post_upgrade validation tests
    with open(obc_scaled_data_file, "a+") as w_obj:
        w_obj.write(str("# Scale Data File\n"))
        w_obj.write(str(f"NAMESPACE: {namespace}\n"))
        w_obj.write(str(f"OBC_SCALE_LIST: {obc_scaled_list}\n"))