code: def test_count_tumbling_window(self):
      data_stream = self.env.from_collection(
          [
              (1, "hi"),
              (2, "hello"),
              (3, "hi"),
              (4, "hello"),
              (5, "hi"),
              (6, "hello"),
              (6, "hello"),
          ],
          type_info=Types.TUPLE([Types.INT(), Types.STRING()]),
      )  # type: DataStream
      data_stream.key_by(
          lambda x: x[1], key_type=Types.STRING()
      ).count_window(3).apply(
          SumWindowFunction(),
          Types.TUPLE([Types.STRING(), Types.INT()]),
      ).add_sink(
          self.test_sink
      )
  
      self.env.execute("test_count_tumbling_window")
      results = self.test_sink.get_results()
      expected = ["(hi,9)", "(hello,12)"]
      self.assert_equals_sorted(expected, results)
  
imports: from typing import Iterable, Tuple, Dict
  from pyflink.common import Configuration
  from pyflink.common.time import Time
  from pyflink.common.typeinfo import Types
  from pyflink.common.watermark_strategy import WatermarkStrategy, TimestampAssigner
  from pyflink.datastream.data_stream import DataStream
  from pyflink.datastream.functions import ProcessWindowFunction, WindowFunction, AggregateFunction, ProcessAllWindowFunction
  from pyflink.datastream.output_tag import OutputTag
  from pyflink.datastream.window import TumblingEventTimeWindows, SlidingEventTimeWindows, EventTimeSessionWindows, CountSlidingWindowAssigner, SessionWindowTimeGapExtractor, CountWindow, PurgingTrigger, EventTimeTrigger, TimeWindow, GlobalWindows, CountTrigger
  from pyflink.datastream.tests.test_util import DataStreamTestSinkFunction
  from pyflink.java_gateway import get_gateway
  from pyflink.testing.test_case_utils import PyFlinkStreamingTestCase
  from pyflink.util.java_utils import get_j_env_configuration
label_desc: Use image node_id 5 for calling the WindowTests obj's underlying member method code with example usage: obj.test_count_tumbling_window() without return types