code: def test_list_tensors(self):
      res = data_provider_pb2.ListTensorsResponse()
      run1 = res.runs.add(run_name="val")
      tag11 = run1.tags.add(tag_name="weights")
      tag11.metadata.max_step = 7
      tag11.metadata.max_wall_time = 7.77
      tag11.metadata.summary_metadata.plugin_data.content = b"magic"
      tag11.metadata.summary_metadata.summary_description = "hey"
      tag12 = run1.tags.add(tag_name="other")
      tag12.metadata.max_step = 8
      tag12.metadata.max_wall_time = 8.88
      run2 = res.runs.add(run_name="test")
      tag21 = run2.tags.add(tag_name="weights")
      tag21.metadata.max_step = 9
      tag21.metadata.max_wall_time = 9.99
      self.stub.ListTensors.return_value = res
  
      actual = self.provider.list_tensors(
          self.ctx,
          experiment_id="123",
          plugin_name="histograms",
          run_tag_filter=provider.RunTagFilter(
              tags=["weights", "other"]
          ),
      )
      expected = {
          "val": {
              "weights": provider.TensorTimeSeries(
                  max_step=7,
                  max_wall_time=7.77,
                  plugin_content=b"magic",
                  description="hey",
                  display_name="",
              ),
              "other": provider.TensorTimeSeries(
                  max_step=8,
                  max_wall_time=8.88,
                  plugin_content=b"",
                  description="",
                  display_name="",
              ),
          },
          "test": {
              "weights": provider.TensorTimeSeries(
                  max_step=9,
                  max_wall_time=9.99,
                  plugin_content=b"",
                  description="",
                  display_name="",
              ),
          },
      }
      self.assertEqual(actual, expected)
  
      req = data_provider_pb2.ListTensorsRequest()
      req.experiment_id = "123"
      req.plugin_filter.plugin_name = "histograms"
      req.run_tag_filter.tags.names.extend(
          ["other", "weights"]
      )  # sorted
      self.stub.ListTensors.assert_called_once_with(req)
  
imports: from unittest import mock
  import grpc
  import grpc_testing
  import numpy
  from tensorboard import errors
  from tensorboard import test
  from tensorboard import context
  from tensorboard.data import grpc_provider
  from tensorboard.data import provider
  from tensorboard.data.proto import data_provider_pb2
  from tensorboard.data.proto import data_provider_pb2_grpc
  from tensorboard.util import tensor_util
label_desc: Use image node_id 10 for calling the GrpcDataProviderTest obj's underlying member method code with example usage: obj.test_list_tensors() without return types