code: def test_cbmt008_direct_chain(dash_duo):
      app = Dash(__name__)
      app.layout = html.Div(
          [
              dcc.Input(id="input-1", value="input 1"),
              dcc.Input(id="input-2"),
              html.Div("test", id="output"),
          ]
      )
  
      call_counts = {"output": Value("i", 0), "input-2": Value("i", 0)}
  
      @app.callback(
          Output("input-2", "value"), Input("input-1", "value")
      )
      def update_input(input1):
          call_counts["input-2"].value += 1
          return "<<{}>>".format(input1)
  
      @app.callback(
          Output("output", "children"),
          Input("input-1", "value"),
          Input("input-2", "value"),
      )
      def update_output(input1, input2):
          call_counts["output"].value += 1
          return "{} + {}".format(input1, input2)
  
      dash_duo.start_server(app)
  
      dash_duo.wait_for_text_to_equal("#input-1", "input 1")
      dash_duo.wait_for_text_to_equal("#input-2", "<<input 1>>")
      dash_duo.wait_for_text_to_equal(
          "#output", "input 1 + <<input 1>>"
      )
      assert call_counts["output"].value == 1
      assert call_counts["input-2"].value == 1
  
      dash_duo.find_element("#input-1").send_keys("x")
      dash_duo.wait_for_text_to_equal("#input-1", "input 1x")
      dash_duo.wait_for_text_to_equal("#input-2", "<<input 1x>>")
      dash_duo.wait_for_text_to_equal(
          "#output", "input 1x + <<input 1x>>"
      )
      assert call_counts["output"].value == 2
      assert call_counts["input-2"].value == 2
  
      dash_duo.find_element("#input-2").send_keys("y")
      dash_duo.wait_for_text_to_equal("#input-2", "<<input 1x>>y")
      dash_duo.wait_for_text_to_equal(
          "#output", "input 1x + <<input 1x>>y"
      )
      dash_duo.wait_for_text_to_equal("#input-1", "input 1x")
      assert call_counts["output"].value == 3
      assert call_counts["input-2"].value == 2
  
file_path: dash/tests/integration/callbacks/test_multiple_callbacks.py
imports: import time
  from multiprocessing import Value, Lock
  import pytest
  from dash import Dash, Input, Output, State, callback_context, html, dcc, dash_table
  from dash.exceptions import PreventUpdate
  import dash.testing.wait
label_desc: Use image node_id 8 for calling a global function with example usage: test_cbmt008_direct_chain(dash_duo) and returns: str, str