code: def test_attributes_from_environment_variables(caplog):
      """Test that the torchelastic cluster environment takes the attributes from the environment variables."""
      env = KubeflowEnvironment()
      assert env.main_address == "1.2.3.4"
      assert env.main_port == 500
      assert env.world_size() == 20
      assert env.global_rank() == 1
      assert env.local_rank() == 0
      assert env.node_rank() == 1
      # setter should be no-op
      with caplog.at_level(
          logging.DEBUG, logger="lightning.fabric.plugins.environments"
      ):
          env.set_global_rank(100)
      assert env.global_rank() == 1
      assert "setting global rank is not allowed" in caplog.text
  
      caplog.clear()
  
      with caplog.at_level(
          logging.DEBUG, logger="lightning.fabric.plugins.environments"
      ):
          env.set_world_size(100)
      assert env.world_size() == 20
      assert "setting world size is not allowed" in caplog.text
  
file_path: pytorch-lightning/tests/tests_fabric/plugins/environments/test_kubeflow.py
imports: import logging
  import os
  from unittest import mock
  import pytest
  from lightning.fabric.plugins.environments import KubeflowEnvironment
label_desc: Use image node_id 2 for calling a global function with example usage: test_attributes_from_environment_variables(caplog) without return types