code: def test_max_line_batching(self, tmp):
      it = file_tail_iterator(tmp)
      assert next(it) is None
  
      f = open(tmp, "w")
  
      # Write lines in batches of 50, check that we get them back in batches of 10.
      for _ in range(100):
          num_lines = 50
          for i in range(num_lines):
              f.write(f"{i}\n")
          f.flush()
  
          assert next(it) == [f"{i}\n" for i in range(10)]
          assert next(it) == [f"{i}\n" for i in range(10, 20)]
          assert next(it) == [f"{i}\n" for i in range(20, 30)]
          assert next(it) == [f"{i}\n" for i in range(30, 40)]
          assert next(it) == [f"{i}\n" for i in range(40, 50)]
  
      assert next(it) is None
  
file_path: ray/dashboard/modules/job/tests/test_utils.py
imports: from tempfile import NamedTemporaryFile
  import sys
  import pytest
  from ray.dashboard.modules.job.common import JobSubmitRequest
  from ray.dashboard.modules.job.utils import file_tail_iterator, strip_keys_with_value_none, parse_and_validate_request, redact_url_password
label_desc: Use image node_id 6 for calling the TestIterLine obj's underlying member method code with example usage: obj.test_max_line_batching(tmp) without return types