code: def test_read_session_data(self):
      self.assertEqual(3, len(list(self.data.train)))
      # validate multiple iteration
      self.assertEqual(3, len(list(self.data.train)))
      it = iter(self.data.train)
      example = next(it)
      self.assertEqual(4, len(example))
      self.assertEqual("id1", example["session_id"])
      self.assertEqual(["int11", "int12"], example["intent"])
      self.assertEqual(["g11", "g12"], example["goals"])
      self.assertEqual(["0", "0"], example["label"])
      example = next(it)
      example = next(it)
      self.assertEqual("id3", example["session_id"])
      self.assertEqual(["int31", "int32", "int33"], example["intent"])
      self.assertEqual(["g31", "g32", "g33"], example["goals"])
      self.assertEqual(["0", "1", "1"], example["label"])
  
imports: import unittest
  from typing import List
  from pytext.data.sources.data_source import SafeFileWrapper
  from pytext.data.sources.tsv import BlockShardedTSVDataSource, SessionTSVDataSource, TSVDataSource
  from pytext.utils.test import import_tests_module
label_desc: Use image node_id 2 for calling the SessionTSVDataSourceTest obj's underlying member method code with example usage: obj.test_read_session_data() without return types