code: def test_comprehensive(ray_start_regular, use_force):
      signaler = SignalActor.remote()
  
      @ray.remote
      def wait_for(t):
          ray.get(t[0])
          return "Result"
  
      @ray.remote
      def combine(a, b):
          return str(a) + str(b)
  
      a = wait_for.remote([signaler.wait.remote()])
      b = wait_for.remote([signaler.wait.remote()])
      combo = combine.remote(a, b)
      a2 = wait_for.remote([a])
  
      assert len(ray.wait([a, b, a2, combo], timeout=1)[0]) == 0
  
      ray.cancel(a, force=use_force)
      with pytest.raises(valid_exceptions(use_force)):
          ray.get(a, timeout=10)
  
      with pytest.raises(valid_exceptions(use_force)):
          ray.get(a2, timeout=40)
  
      signaler.send.remote()
  
      with pytest.raises(valid_exceptions(use_force)):
          ray.get(combo)
  
imports: import os
  import random
  import signal
  import sys
  import threading
  import _thread
  import time
  import pytest
  import ray
  from ray.exceptions import TaskCancelledError, RayTaskError, GetTimeoutError, WorkerCrashedError, ObjectLostError
  from ray._private.utils import DeferSigint
  from ray._private.test_utils import SignalActor, wait_for_condition
  from ray.util.state import list_tasks
label_desc: Use image node_id 10 for calling a global function with example usage: test_comprehensive(ray_start_regular, use_force) and returns: str, unknown