Skip to content

Commit b10916f

Browse files
authored
improve the mock service (#781)
* improve the mock service * remove redundant js dep * improve the autocompletion for mock service * add http header autocomplete * load schema dynamically * fix: cannot start with tls * add tls support for mock server * sort the stores by name * 支持输出 mock 日志 --------- Co-authored-by: rick <[email protected]>
1 parent 44e2796 commit b10916f

23 files changed

+2354
-377
lines changed

.gitignore

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,11 @@ console/atest-desktop/atest.exe
2121
console/atest-desktop/coverage
2222
atest-store-git
2323
.db
24-
.marscode/
24+
.marscode/
25+
e2e/test.pem
26+
e2e/test.csr
27+
e2e/test.key
28+
e2e/server.srl
29+
e2e/server.key
30+
e2e/server.csr
31+
e2e/server.crt

cmd/server.go

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ func createServerCmd(execer fakeruntime.Execer, httpServer server.HTTPServer) (c
109109

110110
// gc related flags
111111
flags.IntVarP(&opt.gcPercent, "gc-percent", "", 100, "The GC percent of Go")
112-
//grpc_tls
113-
flags.BoolVarP(&opt.tls, "tls-grpc", "", false, "Enable TLS mode. Set to true to enable TLS. Alow SAN certificates")
112+
113+
flags.BoolVarP(&opt.tls, "tls", "", false, "Enable TLS mode. Set to true to enable TLS. Alow SAN certificates")
114114
flags.StringVarP(&opt.tlsCert, "cert-file", "", "", "The path to the certificate file, Alow SAN certificates")
115115
flags.StringVarP(&opt.tlsKey, "key-file", "", "", "The path to the key file, Alow SAN certificates")
116116

@@ -124,8 +124,12 @@ type serverOption struct {
124124
httpServer server.HTTPServer
125125
execer fakeruntime.Execer
126126

127-
port int
128-
httpPort int
127+
port int
128+
httpPort int
129+
tls bool
130+
tlsCert string
131+
tlsKey string
132+
129133
printProto bool
130134
localStorage []string
131135
consolePath string
@@ -148,17 +152,12 @@ type serverOption struct {
148152
mockConfig []string
149153
mockPrefix string
150154

151-
gcPercent int
152-
153-
dryRun bool
154-
155+
gcPercent int
156+
dryRun bool
155157
grpcMaxRecvMsgSize int
156158

157159
// inner fields, not as command flags
158160
provider oauth.OAuthProvider
159-
tls bool
160-
tlsCert string
161-
tlsKey string
162161
}
163162

164163
func (o *serverOption) preRunE(cmd *cobra.Command, args []string) (err error) {
@@ -190,15 +189,20 @@ func (o *serverOption) preRunE(cmd *cobra.Command, args []string) (err error) {
190189

191190
grpcOpts = append(grpcOpts, atestoauth.NewAuthInterceptor(o.oauthGroup))
192191
}
192+
193193
if o.tls {
194194
if o.tlsCert != "" && o.tlsKey != "" {
195195
creds, err := credentials.NewServerTLSFromFile(o.tlsCert, o.tlsKey)
196196
if err != nil {
197197
return fmt.Errorf("failed to load credentials: %v", err)
198198
}
199199
grpcOpts = append(grpcOpts, grpc.Creds(creds))
200+
} else {
201+
err = fmt.Errorf("both --cert-file and --key-file flags are required when --tls is enabled")
202+
return
200203
}
201204
}
205+
202206
if o.dryRun {
203207
o.gRPCServer = &fakeGRPCServer{}
204208
} else {
@@ -278,7 +282,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
278282
mockWriter = mock.NewInMemoryReader("")
279283
}
280284

281-
dynamicMockServer := mock.NewInMemoryServer(cmd.Context(), 0)
285+
dynamicMockServer := mock.NewInMemoryServer(cmd.Context(), 0).WithTLS(o.tlsCert, o.tlsKey)
282286
mockServerController := server.NewMockServerController(mockWriter, dynamicMockServer, o.httpPort)
283287

284288
clean := make(chan os.Signal, 1)
@@ -330,15 +334,18 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
330334
gRPCServerAddr := fmt.Sprintf("127.0.0.1:%s", gRPCServerPort)
331335

332336
if o.tls {
333-
creds, err := credentials.NewClientTLSFromFile(o.tlsCert, "localhost")
337+
var creds credentials.TransportCredentials
338+
creds, err = credentials.NewClientTLSFromFile(o.tlsCert, "127.0.0.1")
334339
if err != nil {
335340
return fmt.Errorf("failed to load credentials: %v", err)
336341
}
342+
343+
opts := []grpc.DialOption{grpc.WithTransportCredentials(creds)}
337344
err = errors.Join(
338-
server.RegisterRunnerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
339-
server.RegisterMockHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
340-
server.RegisterThemeExtensionHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
341-
server.RegisterDataServerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}))
345+
server.RegisterRunnerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts),
346+
server.RegisterMockHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts),
347+
server.RegisterThemeExtensionHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts),
348+
server.RegisterDataServerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts))
342349
} else {
343350
dialOption := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials()),
344351
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(math.MaxInt))}

0 commit comments

Comments
 (0)