code: def test_interrupt_tag(self):
      thread_ids = range(4)
      self.check_job_cancellation(
          lambda job_group: self.spark.addTag(job_group),
          lambda job_group: self.spark.interruptTag(job_group),
          thread_ids,
          [i for i in thread_ids if i % 2 == 0],
          [i for i in thread_ids if i % 2 != 0],
      )
      self.spark.clearTags()
  
imports: import threading
  import time
  import unittest
  from typing import Optional
  from pyspark import InheritableThread, inheritable_thread_target
  from pyspark.sql.connect.client import ChannelBuilder
  from pyspark.sql.connect.session import SparkSession
  from pyspark.testing.connectutils import should_test_connect
label_desc: Use image node_id 2 for calling the JobCancellationTests obj's underlying member method code with example usage: obj.test_interrupt_tag() without return types