docstr: Get the op info of an op with no inputs.
docstr_tok: ["Get","the","op","info","of","an","op","with","no","inputs","."]
code: def testServeGraphOpInfoRespondsWithErrorForInvalidOpName(self):
      """Get the op info of an op with no inputs."""
      _generate_tfdbg_v2_data(self.logdir)
      run = self._getExactlyOneRun()
      # First, look up the valid graph_id.
      response = self.server.get(
          _ROUTE_PREFIX + "/graph_execution/digests?run=%s" % run
      )
      data = json.loads(response.get_data())
      digests = data["graph_execution_digests"]
      op_types = [digest["op_type"] for digest in digests]
      op_index = op_types.index("Placeholder")
      graph_id = digests[op_index]["graph_id"]
      # Query the/graphs/op_info route with a valid graph_id and
      # a nonexistent op_name.
      response = self.server.get(
          _ROUTE_PREFIX
          + "/graphs/op_info?run=%s&graph_id=%s&op_name=%s"
          % (run, graph_id, "nonexistent-op-name")
      )
  
      self.assertEqual(400, response.status_code)
      self.assertEqual(
          "application/json", response.headers.get("content-type")
      )
      self.assertEqual(
          json.loads(response.get_data()),
          {
              "error": 'Not found: There is no op named "nonexistent-op-name" '
              'in graph with ID "%s"' % graph_id
          },
      )
  
imports: import collections
  import json
  import os
  import socket
  import threading
  import tensorflow
  from werkzeug import test
  from werkzeug import wrappers
  from tensorboard.backend import application
  from tensorboard.plugins import base_plugin
  from tensorboard.plugins.debugger_v2 import debug_data_multiplexer
  from tensorboard.plugins.debugger_v2 import debugger_v2_plugin
label_desc: Use image node_id 40 for calling the DebuggerV2PluginTest obj's underlying member method code with example usage: obj.testServeGraphOpInfoRespondsWithErrorForInvalidOpName() without return types