code: def test_manager_on_update_through_wire_API(self, sentinel):
      s = sentinel(0)
  
      # create a table and view using manager
      make_table = {
          "id": 1,
          "name": "table1",
          "cmd": "table",
          "args": [data],
      }
      manager = PerspectiveManager()
      manager._process(make_table, self.post)
      make_view = {
          "id": 2,
          "table_name": "table1",
          "view_name": "view1",
          "cmd": "view",
      }
      manager._process(make_view, self.post)
  
      def callback(updated):
          assert updated["port_id"] == 0
          s.set(s.get() + 100)
  
      # simulate a client that holds callbacks by id
      callbacks = {3: callback}
  
      def post_update(msg):
          # when `on_update` is triggered, this callback gets the message
          # and has to decide which callback to trigger.
          message = json.loads(msg)
          assert message["id"] is not None
          if message["id"] == 3:
              # trigger callback
              assert message["data"] == {"port_id": 0}
              callbacks[message["id"]](message["data"])
  
      # hook into the created view and pass it the callback
      make_on_update = {
          "id": 3,
          "name": "view1",
          "cmd": "view_method",
          "subscribe": True,
          "method": "on_update",
          "callback_id": "callback_1",
      }
      manager._process(make_on_update, post_update)
  
      # call updates
      update1 = {
          "id": 4,
          "name": "table1",
          "cmd": "table_method",
          "method": "update",
          "args": [{"a": [4], "b": ["d"]}],
      }
      update2 = {
          "id": 5,
          "name": "table1",
          "cmd": "table_method",
          "method": "update",
          "args": [{"a": [5], "b": ["e"]}],
      }
      manager._process(update1, self.post)
      manager._process(update2, self.post)
      assert s.get() == 200
  
imports: import json
  import time
  import numpy
  import pyarrow
  from datetime import datetime
  from functools import partial
  from pytest import raises
  from perspective import Table, PerspectiveError, PerspectiveManager
label_desc: Use image node_id 42 for calling the TestPerspectiveManager obj's underlying member method code with example usage: obj.test_manager_on_update_through_wire_API(sentinel) without return types