1#ifndef YAZE_APP_CORE_SERVICE_IMGUI_TEST_HARNESS_SERVICE_H_
2#define YAZE_APP_CORE_SERVICE_IMGUI_TEST_HARNESS_SERVICE_H_
9#include "absl/status/status.h"
10#include "absl/status/statusor.h"
17#include <grpcpp/impl/service_type.h>
18#include <grpcpp/server.h>
36class FlushUiActionsRequest;
37class FlushUiActionsResponse;
38class WaitForIdleRequest;
39class WaitForIdleResponse;
40class GetUiSyncStateRequest;
41class GetUiSyncStateResponse;
42class ScreenshotRequest;
43class ScreenshotResponse;
44class GetTestStatusRequest;
45class GetTestStatusResponse;
46class ListTestsRequest;
47class ListTestsResponse;
48class GetTestResultsRequest;
49class GetTestResultsResponse;
50class DiscoverWidgetsRequest;
51class DiscoverWidgetsResponse;
52class StartRecordingRequest;
53class StartRecordingResponse;
54class StopRecordingResponse;
55class StopRecordingRequest;
56class ReplayTestRequest;
57class ReplayTestResponse;
61class ImGuiTestHarnessServiceImpl {
64 explicit ImGuiTestHarnessServiceImpl(TestManager* test_manager)
65 : test_manager_(test_manager), test_recorder_(test_manager) {}
66 ~ImGuiTestHarnessServiceImpl() =
default;
69 ImGuiTestHarnessServiceImpl(
const ImGuiTestHarnessServiceImpl&) =
delete;
70 ImGuiTestHarnessServiceImpl& operator=(
const ImGuiTestHarnessServiceImpl&) =
76 absl::Status Ping(
const PingRequest* request, PingResponse* response);
79 absl::Status Click(
const ClickRequest* request, ClickResponse* response);
82 absl::Status Type(
const TypeRequest* request, TypeResponse* response);
85 absl::Status Wait(
const WaitRequest* request, WaitResponse* response);
88 absl::Status Assert(
const AssertRequest* request, AssertResponse* response);
91 absl::Status FlushUiActions(
const FlushUiActionsRequest* request,
92 FlushUiActionsResponse* response);
93 absl::Status WaitForIdle(
const WaitForIdleRequest* request,
94 WaitForIdleResponse* response);
95 absl::Status GetUiSyncState(
const GetUiSyncStateRequest* request,
96 GetUiSyncStateResponse* response);
99 absl::Status Screenshot(
const ScreenshotRequest* request,
100 ScreenshotResponse* response);
103 absl::Status GetTestStatus(
const GetTestStatusRequest* request,
104 GetTestStatusResponse* response);
105 absl::Status ListTests(
const ListTestsRequest* request,
106 ListTestsResponse* response);
107 absl::Status GetTestResults(
const GetTestResultsRequest* request,
108 GetTestResultsResponse* response);
109 absl::Status DiscoverWidgets(
const DiscoverWidgetsRequest* request,
110 DiscoverWidgetsResponse* response);
111 absl::Status StartRecording(
const StartRecordingRequest* request,
112 StartRecordingResponse* response);
113 absl::Status StopRecording(
const StopRecordingRequest* request,
114 StopRecordingResponse* response);
115 absl::Status ReplayTest(
const ReplayTestRequest* request,
116 ReplayTestResponse* response);
119 TestManager* test_manager_;
120 WidgetDiscoveryService widget_discovery_service_;
121 TestRecorder test_recorder_;
129std::unique_ptr<::grpc::Service> CreateImGuiTestHarnessServiceGrpc(
130 ImGuiTestHarnessServiceImpl* impl);
134class ImGuiTestHarnessServer {
137 static ImGuiTestHarnessServer& Instance();
143 absl::Status Start(
int port, TestManager* test_manager);
149 bool IsRunning()
const {
return server_ !=
nullptr; }
152 int Port()
const {
return port_; }
155 ImGuiTestHarnessServer() =
default;
156 ~ImGuiTestHarnessServer();
160 ImGuiTestHarnessServer(
const ImGuiTestHarnessServer&) =
delete;
161 ImGuiTestHarnessServer& operator=(
const ImGuiTestHarnessServer&) =
delete;
163 std::unique_ptr<::grpc::Server> server_;
164 std::unique_ptr<ImGuiTestHarnessServiceImpl> service_;
165 std::unique_ptr<::grpc::Service> grpc_service_;