code: def test_finish_experiment(self):
      with self.get_provider() as fb:
          experiment, experiment_name, _, _ = get_test_experiment()
  
          fb._delete(fb._get_experiments_keybase() + experiment_name)
          fb.add_experiment(experiment)
          fb.start_experiment(experiment)
          fb.finish_experiment(experiment)
  
          self.assertTrue(experiment.status == "finished")
          self.assertTrue(experiment.time_added <= time.time())
          self.assertTrue(experiment.time_started <= time.time())
          self.assertTrue(experiment.time_finished <= time.time())
  
          actual_experiment_dict = fb._get(
              fb._get_experiments_keybase() + experiment_name
          )
          self._compare_experiment_data(
              experiment, actual_experiment_dict
          )
  
          fb.delete_experiment(experiment)
  
imports: import unittest
  import inspect
  import yaml
  import uuid
  import os
  import time
  import six
  import shutil
  from studio import model
  from studio.firebase_provider import FirebaseProvider
  from studio.postgres_provider import PostgresProvider
  from studio.db_providers.s3_provider import S3Provider
  from studio.auth import remove_all_keys
  from studio.extra_util import has_aws_credentials
  from env_detect import on_gcp, on_aws
  from model_test import get_test_experiment
label_desc: Use image node_id 9 for calling the KeyValueProviderTest obj's underlying member method code with example usage: obj.test_finish_experiment() without return types