code: def test_MakeProtoPlaceholder_BinarySerializationBase64(self):
      actual = resolve(
          ph.make_proto(
              execution_invocation_pb2.ExecutionInvocation(
                  tmp_dir="/foo",
                  pipeline_node=pipeline_pb2.PipelineNode(
                      upstream_nodes=["a", "b"]
                  ),
              ),
              pipeline_node=ph.make_proto(
                  pipeline_pb2.PipelineNode(),
                  upstream_nodes=[
                      ph.execution_invocation().pipeline_run_id
                      + "-foo",
                      ph.execution_invocation().pipeline_run_id
                      + "-bar",
                  ],
              ),
          )
          .serialize(ph.ProtoSerializationFormat.BINARY)
          .b64encode()
      )
  
      expected = execution_invocation_pb2.ExecutionInvocation(
          tmp_dir="/foo",
          pipeline_node=pipeline_pb2.PipelineNode(
              upstream_nodes=[
                  "a",
                  "b",
                  "test-run-id-foo",
                  "test-run-id-bar",
              ]
          ),
      ).SerializeToString()
      expected = base64.urlsafe_b64encode(expected).decode("ascii")
  
      self.assertEqual(expected, actual)
  
imports: import base64
  import functools
  from typing import Any, Dict, Optional, Type, TypeVar
  import tensorflow
  from tfx.dsl.compiler import placeholder_utils
  from tfx.dsl.placeholder import placeholder
  from tfx.dsl.placeholder import proto_placeholder
  from tfx.orchestration.portable import data_types
  from tfx.proto.orchestration import execution_invocation_pb2
  from tfx.proto.orchestration import pipeline_pb2
  from google.protobuf import message
  from google.protobuf import text_format
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 38 for calling the ProtoPlaceholderTest obj's underlying member method code with example usage: obj.test_MakeProtoPlaceholder_BinarySerializationBase64() without return types