code: def test_evict_from_cache(self):
      with self._mlmd_connection as m:
          expected_execution = _write_test_execution(m)
          # Load the execution in cache.
          with mlmd_state.mlmd_execution_atomic_op(
              m, expected_execution.id
          ):
              pass
          # Test that execution is in cache.
          self.assertEqual(
              expected_execution,
              mlmd_state._execution_cache._cache.get(
                  expected_execution.id
              ),
          )
          # Evict from cache and test.
          with mlmd_state.evict_from_cache(expected_execution.id):
              self.assertIsNone(
                  mlmd_state._execution_cache._cache.get(
                      expected_execution.id
                  )
              )
          # Execution should stay evicted.
          self.assertIsNone(
              mlmd_state._execution_cache._cache.get(
                  expected_execution.id
              )
          )
          # Evicting a non-existent execution should not raise any errors.
          with mlmd_state.evict_from_cache(expected_execution.id):
              pass
  
imports: from concurrent import futures
  import os
  import threading
  import tensorflow
  from tfx.orchestration import metadata
  from tfx.orchestration.experimental.core import mlmd_state
  from tfx.orchestration.experimental.core import test_utils
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 4 for calling the MlmdStateTest obj's underlying member method code with example usage: obj.test_evict_from_cache() without return types