code: def test_correct_filtering(filter_string, matching_runs):
      runs = [
          Run(
              run_info=RunInfo(
                  run_uuid="hi",
                  run_id="hi",
                  experiment_id=0,
                  user_id="user-id",
                  status=RunStatus.to_string(RunStatus.FAILED),
                  start_time=0,
                  end_time=1,
                  lifecycle_stage=LifecycleStage.ACTIVE,
              ),
              run_data=RunData(
                  metrics=[Metric("key1", 121, 1, 0)],
                  params=[Param("my_param", "A")],
                  tags=[],
              ),
              run_inputs=RunInputs(
                  dataset_inputs=[
                      DatasetInput(
                          dataset=Dataset(
                              name="name1",
                              digest="digest1",
                              source_type="my_source_type",
                              source="source",
                          ),
                          tags=[
                              InputTag(MLFLOW_DATASET_CONTEXT, "train")
                          ],
                      )
                  ]
              ),
          ),
          Run(
              run_info=RunInfo(
                  run_uuid="hi2",
                  run_id="hi2",
                  experiment_id=0,
                  user_id="user-id",
                  status=RunStatus.to_string(RunStatus.FINISHED),
                  start_time=0,
                  end_time=1,
                  lifecycle_stage=LifecycleStage.ACTIVE,
              ),
              run_data=RunData(
                  metrics=[Metric("key1", 123, 1, 0)],
                  params=[Param("my_param", "A")],
                  tags=[RunTag("tag1", "C")],
              ),
              run_inputs=RunInputs(
                  dataset_inputs=[
                      DatasetInput(
                          dataset=Dataset(
                              name="name1",
                              digest="digest1",
                              source_type="my_source_type",
                              source="source",
                          ),
                          tags=[],
                      )
                  ]
              ),
          ),
          Run(
              run_info=RunInfo(
                  run_uuid="hi3",
                  run_id="hi3",
                  experiment_id=1,
                  user_id="user-id",
                  status=RunStatus.to_string(RunStatus.FAILED),
                  start_time=0,
                  end_time=1,
                  lifecycle_stage=LifecycleStage.ACTIVE,
              ),
              run_data=RunData(
                  metrics=[Metric("key1", 125, 1, 0)],
                  params=[Param("my_param", "B")],
                  tags=[RunTag("tag1", "D")],
              ),
              run_inputs=RunInputs(
                  dataset_inputs=[
                      DatasetInput(
                          dataset=Dataset(
                              name="name2",
                              digest="digest2",
                              source_type="my_source_type",
                              source="source",
                          ),
                          tags=[],
                      )
                  ]
              ),
          ),
      ]
      filtered_runs = SearchUtils.filter(runs, filter_string)
      assert set(filtered_runs) == {runs[i] for i in matching_runs}
  
imports: import base64
  import json
  import re
  import pytest
  from mlflow.entities import Dataset, DatasetInput, InputTag, LifecycleStage, Metric, Param, Run, RunData, RunInfo, RunInputs, RunStatus, RunTag
  from mlflow.exceptions import MlflowException
  from mlflow.utils.mlflow_tags import MLFLOW_DATASET_CONTEXT
  from mlflow.utils.search_utils import SearchUtils
label_desc: Use image node_id 8 for calling a global function with example usage: test_correct_filtering(filter_string, matching_runs) without return types