code: def test_read_blob_sequences_and_read_blob(self):
      provider = self.create_provider()
  
      with self.subTest("reads all time series for a plugin"):
          result = provider.read_blob_sequences(
              self.ctx,
              experiment_id="unused",
              plugin_name=image_metadata.PLUGIN_NAME,
              downsample=4,
          )
          self.assertCountEqual(result.keys(), ["mondrian"])
          self.assertCountEqual(
              result["mondrian"].keys(), ["red", "blue", "yellow"]
          )
          sample = result["mondrian"]["blue"]
          self.assertLen(sample, 4)  # downsampled from 10
          last = sample[-1]
          self.assertIsInstance(last, base_provider.BlobSequenceDatum)
          self.assertEqual(last.step, 10)
          self.assertLen(last.values, 2 + 2)
          blobs = [
              provider.read_blob(self.ctx, blob_key=v.blob_key)
              for v in last.values
          ]
          self.assertEqual(blobs[0], b"10")
          self.assertEqual(blobs[1], b"10")
          self.assertStartsWith(blobs[2], b"\x89PNG")
          self.assertStartsWith(blobs[3], b"\x89PNG")
  
          blue1 = blobs[2]
          blue2 = blobs[3]
          red1 = provider.read_blob(
              self.ctx,
              blob_key=result["mondrian"]["red"][-1].values[2].blob_key,
          )
          self.assertEqual(blue1, blue2)
          self.assertNotEqual(blue1, red1)
  
      with self.subTest("filters by run/tag"):
          result = provider.read_blob_sequences(
              self.ctx,
              experiment_id="unused",
              plugin_name=image_metadata.PLUGIN_NAME,
              run_tag_filter=base_provider.RunTagFilter(
                  runs=["mondrian", "picasso"],
                  tags=["yellow", "green't"],
              ),
              downsample=1,
          )
          self.assertCountEqual(result.keys(), ["mondrian"])
          self.assertCountEqual(result["mondrian"].keys(), ["yellow"])
          self.assertIsInstance(
              result["mondrian"]["yellow"][0],
              base_provider.BlobSequenceDatum,
          )
  
imports: import os
  import numpy
  from tensorboard import context
  from tensorboard.backend.event_processing import data_provider
  from tensorboard.backend.event_processing import plugin_event_multiplexer
  from tensorboard.compat.proto import summary_pb2
  from tensorboard.data import provider
  from tensorboard.plugins.graph import metadata
  from tensorboard.plugins.histogram import metadata
  from tensorboard.plugins.histogram import summary_v2
  from tensorboard.plugins.scalar import metadata
  from tensorboard.plugins.scalar import summary_v2
  from tensorboard.plugins.image import metadata
  from tensorboard.plugins.image import summary_v2
  from tensorboard.util import tensor_util
  import tensorflow.compat.v1
  import tensorflow.compat.v2
label_desc: Use image node_id 19 for calling the MultiplexerDataProviderTest obj's underlying member method code with example usage: obj.test_read_blob_sequences_and_read_blob() without return types