chromium/ios/build/bots/scripts/plugin/test_plugin_client.py

# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import grpc
import logging
import os
import sys

# if the current directory is in scripts (pwd), then we need to
# add plugin in order to import from that directory
if os.path.split(os.path.dirname(__file__))[1] != 'plugin':
  sys.path.append(
      os.path.join(os.path.abspath(os.path.dirname(__file__)), 'plugin'))
from plugin_constants import PLUGIN_PROTOS_PATH, PLUGIN_SERVICE_ADDRESS

sys.path.append(PLUGIN_PROTOS_PATH)
import test_plugin_service_pb2
import test_plugin_service_pb2_grpc


class TestPluginClient:

  def __init__(self, plugin_service_address):
    self.plugin_service_address = plugin_service_address
    self.channel_stub = test_plugin_service_pb2_grpc.TestPluginServiceStub(
        grpc.insecure_channel(plugin_service_address))

  def ListEnabledPlugins(self, request):
    return self.channel_stub.ListEnabledPlugins(request)

  def TestCaseWillStart(self, request):
    return self.channel_stub.TestCaseWillStart(request)

  def TestCaseDidFinish(self, request):
    return self.channel_stub.TestCaseDidFinish(request)

  def TestCaseDidFail(self, request):
    return self.channel_stub.TestCaseDidFail(request)


# for manual testing purposes
def run():
  plugin_client = TestPluginClient(PLUGIN_SERVICE_ADDRESS)
  response = plugin_client.ListEnabledPlugins(
      test_plugin_service_pb2.ListEnabledPluginsRequest())
  print("Plugin client received: " + str(response))


if __name__ == '__main__':
  logging.basicConfig()
  run()