code: def test_reduce_needs(port_generator):
      exposed_port = port_generator()
      flow = (
          Flow(port=exposed_port)
          .add(uses=Executor1, name="pod0")
          .add(uses=Executor2, needs="gateway", name="pod1")
          .add(uses=Executor3, needs="gateway", name="pod2")
          .add(needs=["pod0", "pod1", "pod2"], name="pod3")
      )
  
      with flow:
          da = DocumentArray([Document() for _ in range(5)])
          resp = Client(port=exposed_port).post(
              "/", inputs=da, return_responses=True
          )
  
      assert len(resp[0].docs) == 5
      for doc in resp[0].docs:
          assert doc.text == "exec1"
          assert doc.tags == {"a": "b"}
          assert doc.modality == "image"
          assert (doc.embedding == np.zeros(3)).all()
  
imports: import numpy
  import pytest
  from jina import Client, Document, DocumentArray, Executor, Flow, requests
label_desc: Use image node_id 3 for calling a global function with example usage: test_reduce_needs(port_generator) without return types