code: def test_update(self):
      self.__setup()
      test_config = {"config_foo": "bar"}
      test_stats = {"stats_foo": "bar"}
      test_message = "test_message"
      test_label = "test_label"
  
      # Updating all config, stats, message and label
      # Create snapshot in the project
      snapshot_obj = self.__default_create()
  
      # Update snapshot in the project
      self.snapshot_controller.update(
          snapshot_obj.id,
          config=test_config,
          stats=test_stats,
          message=test_message,
          label=test_label,
      )
  
      # Get the updated snapshot obj
      updated_snapshot_obj = (
          self.snapshot_controller.dal.snapshot.get_by_id(
              snapshot_obj.id
          )
      )
      assert updated_snapshot_obj.config == test_config
      assert updated_snapshot_obj.stats == test_stats
      assert updated_snapshot_obj.message == test_message
      assert updated_snapshot_obj.label == test_label
  
      # Updating config, stats
      # Create snapshot in the project
      snapshot_obj = self.__default_create()
  
      # Update snapshot in the project
      self.snapshot_controller.update(
          snapshot_obj.id, config=test_config, stats=test_stats
      )
  
      # Get the updated snapshot obj
      updated_snapshot_obj = (
          self.snapshot_controller.dal.snapshot.get_by_id(
              snapshot_obj.id
          )
      )
      assert updated_snapshot_obj.config == test_config
      assert updated_snapshot_obj.stats == test_stats
  
      # Updating both message and label
      # Create snapshot in the project
      snapshot_obj = self.__default_create()
  
      # Update snapshot in the project
      self.snapshot_controller.update(
          snapshot_obj.id, message=test_message, label=test_label
      )
  
      # Get the updated snapshot obj
      updated_snapshot_obj = (
          self.snapshot_controller.dal.snapshot.get_by_id(
              snapshot_obj.id
          )
      )
  
      assert updated_snapshot_obj.message == test_message
      assert updated_snapshot_obj.label == test_label
  
      # Updating only message
      # Create snapshot in the project
      snapshot_obj_1 = self.__default_create()
  
      # Update snapshot in the project
      self.snapshot_controller.update(
          snapshot_obj_1.id, message=test_message
      )
  
      # Get the updated snapshot obj
      updated_snapshot_obj_1 = (
          self.snapshot_controller.dal.snapshot.get_by_id(
              snapshot_obj_1.id
          )
      )
  
      assert updated_snapshot_obj_1.message == test_message
  
      # Updating only label
      # Create snapshot in the project
      snapshot_obj_2 = self.__default_create()
  
      # Update snapshot in the project
      self.snapshot_controller.update(
          snapshot_obj_2.id, label=test_label
      )
  
      # Get the updated snapshot obj
      updated_snapshot_obj_2 = (
          self.snapshot_controller.dal.snapshot.get_by_id(
              snapshot_obj_2.id
          )
      )
  
      assert updated_snapshot_obj_2.label == test_label
  
imports: import os
  import tempfile
  import platform
  from io import open, TextIOWrapper
  from datmo.config import Config
  from datmo.core.controller.project import ProjectController
  from datmo.core.controller.environment.environment import EnvironmentController
  from datmo.core.controller.task import TaskController
  from datmo.core.controller.snapshot import SnapshotController
  from datmo.core.entity.snapshot import Snapshot
  from datmo.core.util.exceptions import EntityNotFound, RequiredArgumentMissing, TaskNotComplete, InvalidArgumentType, ProjectNotInitialized, InvalidProjectPath, DoesNotExist, UnstagedChanges
  from datmo.core.util.misc_functions import check_docker_inactive, pytest_docker_environment_failed_instantiation
label_desc: Use image node_id 25 for calling the TestSnapshotController obj's underlying member method code with example usage: obj.test_update() without return types