code: def test_recover_measure_input_with_task_input():
      auto_scheduler.search_task.TASK_INPUT_BUFFER_TABLE.clear()
  
      # Since this file is tests for search_task, we only check the search_task here
  
      # Log with no task input
      task = auto_scheduler.SearchTask(
          func=matmul_auto_scheduler_test,
          args=(512, 512, 512),
          target="llvm",
      )
      inp = auto_scheduler.measure.MeasureInput(
          task, task.compute_dag.init_state
      )
      res = auto_scheduler.measure.MeasureResult([0.1], 0, "", 0.2, 1)
      measure_record = (
          auto_scheduler.measure_record.dump_record_to_string(inp, res)
      )
      measure_log = (
          auto_scheduler.measure_record.load_record_from_string(
              measure_record
          )
      )
      new_task = measure_log[0].task
      assert task.workload_key == new_task.workload_key
      assert str(task.target) == str(new_task.target)
      assert str(task.target.host) == str(new_task.target.host)
      assert (
          task.layout_rewrite_option == new_task.layout_rewrite_option
      )
  
      # Log with 1 task input
      test_input_0 = tvm.runtime.ndarray.empty((64, 64))
      task = auto_scheduler.SearchTask(
          func=matmul_auto_scheduler_test,
          args=(512, 512, 512),
          target="llvm",
          task_inputs={
              "test_input_0": test_input_0,
          },
          task_inputs_overwrite=True,
      )
      inp = auto_scheduler.measure.MeasureInput(
          task, task.compute_dag.init_state
      )
      res = auto_scheduler.measure.MeasureResult([0.1], 0, "", 0.2, 1)
      measure_record = (
          auto_scheduler.measure_record.dump_record_to_string(inp, res)
      )
      measure_log = (
          auto_scheduler.measure_record.load_record_from_string(
              measure_record
          )
      )
      new_task = measure_log[0].task
      assert task.workload_key == new_task.workload_key
      assert str(task.target) == str(new_task.target)
      assert str(task.target.host) == str(new_task.target.host)
      assert (
          task.layout_rewrite_option == new_task.layout_rewrite_option
      )
      assert len(new_task.task_input_names) == 1
      assert new_task.task_input_names[0] == "test_input_0"
  
      # Log with multiple task inputs
      test_input_1 = tvm.runtime.ndarray.empty((64, 64))
      task = auto_scheduler.SearchTask(
          func=matmul_auto_scheduler_test,
          args=(512, 512, 512),
          target="llvm",
          task_inputs={
              "test_input_0": test_input_0,
              "test_input_1": test_input_1,
          },
          task_inputs_overwrite=True,
      )
      inp = auto_scheduler.measure.MeasureInput(
          task, task.compute_dag.init_state
      )
      res = auto_scheduler.measure.MeasureResult([0.1], 0, "", 0.2, 1)
      measure_record = (
          auto_scheduler.measure_record.dump_record_to_string(inp, res)
      )
      measure_log = (
          auto_scheduler.measure_record.load_record_from_string(
              measure_record
          )
      )
      new_task = measure_log[0].task
      assert task.workload_key == new_task.workload_key
      assert str(task.target) == str(new_task.target)
      assert str(task.target.host) == str(new_task.target.host)
      assert (
          task.layout_rewrite_option == new_task.layout_rewrite_option
      )
      assert len(new_task.task_input_names) == 2
      assert new_task.task_input_names[0] == "test_input_0"
      assert new_task.task_input_names[1] == "test_input_1"
  
      # Log with version 0.5
      v5_log = """{"i": [["[\\\"matmul_auto_scheduler_test\\\", 512, 512, 512]", "llvm -keys=cpu", [6, 64, 64, 0, 0, 0, 0, 0], "", 1], [[], []]], "r": [[0.1], 0, 0.2, 1], "v": "v0.6"}"""
      measure_log = (
          auto_scheduler.measure_record.load_record_from_string(v5_log)
      )
      new_task = measure_log[0].task
      assert task.workload_key == new_task.workload_key
      assert str(task.target) == str(new_task.target)
      assert str(task.target.host) == str(new_task.target.host)
      assert (
          task.layout_rewrite_option == new_task.layout_rewrite_option
      )
      assert len(new_task.task_input_names) == 0
  
file_path: tvm/tests/python/auto_scheduler/test_auto_scheduler_search_task.py
imports: import numpy
  import tempfile
  import tvm
  import tvm.testing
  from tvm import auto_scheduler
  from tvm.auto_scheduler.utils import get_const_tuple
  from tvm.testing.auto_scheduler import matmul_auto_scheduler_test, zero_rank_compute_auto_scheduler_test, zero_rank_reduce_auto_scheduler_test
label_desc: Use image node_id 3 for calling a global function with example usage: test_recover_measure_input_with_task_input() without return types