@@ -102,6 +102,7 @@ func createServerCmd(execer fakeruntime.Execer, httpServer server.HTTPServer) (c
102102	flags .StringArrayVarP (& opt .mockConfig , "mock-config" , "" , nil , "The mock config files" )
103103	flags .StringVarP (& opt .mockPrefix , "mock-prefix" , "" , "/mock" , "The mock server API prefix" )
104104	flags .StringVarP (& opt .extensionRegistry , "extension-registry" , "" , "docker.io" , "The extension registry URL" )
105+ 	flags .DurationVarP (& opt .downloadTimeout , "download-timeout" , "" , time .Second * 10 , "The timeout of extension download" )
105106
106107	// gc related flags 
107108	flags .IntVarP (& opt .gcPercent , "gc-percent" , "" , 100 , "The GC percent of Go" )
@@ -129,6 +130,7 @@ type serverOption struct {
129130	configDir          string 
130131	skyWalking         string 
131132	extensionRegistry  string 
133+ 	downloadTimeout    time.Duration 
132134
133135	auth           string 
134136	oauthProvider  string 
@@ -251,6 +253,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
251253
252254	extDownloader  :=  downloader .NewStoreDownloader ()
253255	extDownloader .WithRegistry (o .extensionRegistry )
256+ 	extDownloader .WithTimeout (o .downloadTimeout )
254257	storeExtMgr  :=  server .NewStoreExtManager (o .execer )
255258	storeExtMgr .WithDownloader (extDownloader )
256259	remoteServer  :=  server .NewRemoteServer (loader , remote .NewGRPCloaderFromStore (), secretServer , storeExtMgr , o .configDir , o .grpcMaxRecvMsgSize )
@@ -264,9 +267,16 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
264267	}
265268
266269	// create mock server controller 
267- 	mockInMemoryReader  :=  mock .NewInMemoryReader ("" )
270+ 	var  mockWriter  mock.ReaderAndWriter 
271+ 	if  len (o .mockConfig ) >  0  {
272+ 		cmd .Println ("currently only one mock config is supported, will take the first one" )
273+ 		mockWriter  =  mock .NewLocalFileReader (o .mockConfig [0 ])
274+ 	} else  {
275+ 		mockWriter  =  mock .NewInMemoryReader ("" )
276+ 	}
277+ 
268278	dynamicMockServer  :=  mock .NewInMemoryServer (0 )
269- 	mockServerController  :=  server .NewMockServerController (mockInMemoryReader , dynamicMockServer )
279+ 	mockServerController  :=  server .NewMockServerController (mockWriter , dynamicMockServer ,  o . httpPort )
270280
271281	clean  :=  make (chan  os.Signal , 1 )
272282	signal .Notify (clean , syscall .SIGINT , syscall .SIGTERM , syscall .SIGHUP , syscall .SIGQUIT )
@@ -363,17 +373,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
363373		combineHandlers  :=  server .NewDefaultCombineHandler ()
364374		combineHandlers .PutHandler ("" , mux )
365375
366- 		if  len (o .mockConfig ) >  0  {
367- 			cmd .Println ("currently only one mock config is supported, will take the first one" )
368- 			var  mockServerHandler  http.Handler 
369- 			if  mockServerHandler , err  =  mock .NewInMemoryServer (0 ).
370- 				SetupHandler (mock .NewLocalFileReader (o .mockConfig [0 ]), o .mockPrefix ); err  !=  nil  {
371- 				return 
372- 			}
373- 			combineHandlers .PutHandler (o .mockPrefix , mockServerHandler )
374- 		}
375- 
376- 		if  handler , hErr  :=  dynamicMockServer .SetupHandler (mockInMemoryReader , o .mockPrefix + "/server" ); hErr  !=  nil  {
376+ 		if  handler , hErr  :=  dynamicMockServer .SetupHandler (mockWriter , o .mockPrefix + "/server" ); hErr  !=  nil  {
377377			err  =  hErr 
378378			return 
379379		} else  {
0 commit comments