code: def test_e2e(
      estimator, executor_cls, model_trainer, is_fast, global_tmp_dir
  ):
      setrecursionlimit(RECURSION_LIMIT)
  
      X_test, y_pred_true, fitted_estimator = model_trainer(estimator)
      executor = executor_cls(fitted_estimator)
  
      idxs_to_test = [0] if is_fast else range(len(X_test))
  
      executor.prepare_global(global_tmp_dir=global_tmp_dir)
      with executor.prepare_then_cleanup():
          for idx in idxs_to_test:
              y_pred_executed = executor.predict(X_test[idx])
              y_pred_executed = np.array(
                  y_pred_executed, dtype=y_pred_true.dtype, copy=False
              )
              print(
                  f"expected={y_pred_true[idx]}, actual={y_pred_executed}"
              )
              res = np.isclose(
                  y_pred_true[idx], y_pred_executed, atol=ATOL
              )
              assert res if isinstance(res, bool) else res.all()
  
imports: from sys import setrecursionlimit
  import lightgbm
  import lightning.classification
  import lightning.regression
  import numpy
  import pytest
  import statsmodels.api
  import xgboost
  from sklearn import ensemble, linear_model, svm, tree
  from statsmodels.regression.process_regression import ProcessMLE
  from tests import utils
  from tests.e2e import executors
label_desc: Use image node_id 11 for calling a global function with example usage: test_e2e(estimator, executor_cls, model_trainer, is_fast, global_tmp_dir) without return types