code: def test_sched_config_parse_reduce_on_plateau(self):
      model = TempModel()
      opt_cls = optim.get_optimizer("novograd")
      opt = opt_cls(model.parameters(), lr=self.INITIAL_LR)
      reduce_on_plateau_parameters = {
          "mode": "min",
          "factor": 0.5,
          "patience": 1,
          "threshold": 1e-4,
          "threshold_mode": "rel",
          "min_lr": 1e-6,
          "eps": 1e-7,
          "verbose": True,
          "cooldown": 1,
      }
      basic_sched_config = {
          "name": "ReduceLROnPlateau",
          "monitor": "val_loss",
          "reduce_on_plateau": True,
          "max_steps": self.MAX_STEPS,
      }
      basic_sched_config.update(reduce_on_plateau_parameters)
      scheduler_setup = optim.lr_scheduler.prepare_lr_scheduler(
          opt, basic_sched_config
      )
      assert isinstance(
          scheduler_setup["scheduler"],
          torch.optim.lr_scheduler.ReduceLROnPlateau,
      )
      for k, v in reduce_on_plateau_parameters.items():
          if k == "min_lr":
              k += "s"
              v = [v]
          found_v = getattr(scheduler_setup["scheduler"], k)
          assert (
              found_v == v
          ), f"Wrong value `{repr(found_v)}` for `ReduceLROnPlateau` parameter `{k}`. Expected `{repr(v)}`."
      dict_config = omegaconf.OmegaConf.create(basic_sched_config)
      scheduler_setup = optim.lr_scheduler.prepare_lr_scheduler(
          opt, dict_config
      )
      assert isinstance(
          scheduler_setup["scheduler"],
          torch.optim.lr_scheduler.ReduceLROnPlateau,
      )
      for k, v in reduce_on_plateau_parameters.items():
          if k == "min_lr":
              k += "s"
              v = [v]
          found_v = getattr(scheduler_setup["scheduler"], k)
          assert (
              found_v == v
          ), f"Wrong value `{repr(found_v)}` for `ReduceLROnPlateau` parameter `{k}`. Expected `{repr(v)}`."
  
imports: import math
  import random
  import omegaconf
  import pytest
  import pytorch_lightning
  import torch
  import torch.optim
  from pytorch_lightning.utilities import rank_zero_only
  from nemo.core import config, optim
  from nemo.core.optim.lr_scheduler import AVAILABLE_SCHEDULERS
  from nemo.core.optim.optimizers import AVAILABLE_OPTIMIZERS
  from nemo.utils import logging
label_desc: Use image node_id 10 for calling the TestOptimizersSchedulers obj's underlying member method code with example usage: obj.test_sched_config_parse_reduce_on_plateau() without return types