code: def test_reading_key_from_model_list():
      # [PROD TEST CASE]
      # this tests if the router can read key from model list and make completion call, and completion + stream call. This is 90% of the router use case
      # DO NOT REMOVE THIS TEST. It's an IMP ONE. Speak to Ishaan, if you are tring to remove this
      litellm.set_verbose = False
      import openai
  
      try:
          print("testing if router raises an exception")
          old_api_key = os.environ["AZURE_API_KEY"]
          os.environ.pop("AZURE_API_KEY", None)
          model_list = [
              {
                  "model_name": "gpt-3.5-turbo",  # openai model name
                  "litellm_params": {  # params for litellm completion/embedding call
                      "model": "azure/chatgpt-v-2",
                      "api_key": old_api_key,
                      "api_version": os.getenv("AZURE_API_VERSION"),
                      "api_base": os.getenv("AZURE_API_BASE"),
                  },
                  "tpm": 240000,
                  "rpm": 1800,
              }
          ]
  
          router = Router(
              model_list=model_list,
              redis_host=os.getenv("REDIS_HOST"),
              redis_password=os.getenv("REDIS_PASSWORD"),
              redis_port=int(os.getenv("REDIS_PORT")),
              routing_strategy="simple-shuffle",
              set_verbose=True,
              num_retries=1,
          )  # type: ignore
          response = router.completion(
              model="gpt-3.5-turbo",
              messages=[
                  {
                      "role": "user",
                      "content": "hello this request will fail",
                  }
              ],
          )
          print("\n response", response)
          str_response = response.choices[0].message.content
          print("\n str_response", str_response)
          assert len(str_response) > 0
  
          print("\n Testing streaming response")
          response = router.completion(
              model="gpt-3.5-turbo",
              messages=[
                  {
                      "role": "user",
                      "content": "hello this request will fail",
                  }
              ],
              stream=True,
          )
          completed_response = ""
          for chunk in response:
              if chunk is not None:
                  print(chunk)
                  completed_response += (
                      chunk.choices[0].delta.content or ""
                  )
          print("\n completed_response", completed_response)
          assert len(completed_response) > 0
          print("\n Passed Streaming")
          os.environ["AZURE_API_KEY"] = old_api_key
          router.reset()
      except Exception as e:
          os.environ["AZURE_API_KEY"] = old_api_key
          print(f"FAILED TEST")
          pytest.fail(f"Got unexpected exception on router! - {e}")
  
imports: import sys, os, time
  import traceback, asyncio
  import pytest
  import litellm
  from litellm import Router
  from concurrent.futures import ThreadPoolExecutor
  from collections import defaultdict
  from dotenv import load_dotenv
label_desc: Use image node_id 2 for calling a global function with example usage: test_reading_key_from_model_list() without return types