@@ -28,6 +28,7 @@ import (
2828 "context"
2929 "errors"
3030 "fmt"
31+ "io"
3132 "os"
3233 "path"
3334 "time"
@@ -43,11 +44,13 @@ import (
4344)
4445
4546type gitClient struct {
47+ writer io.Writer
4648 remote.UnimplementedLoaderServer
4749}
4850
51+ // NewRemoteServer returns a new remote server
4952func NewRemoteServer () remote.LoaderServer {
50- return & gitClient {}
53+ return & gitClient {writer : os . Stdout }
5154}
5255func (s * gitClient ) loadCache (ctx context.Context ) (opt * gitOptions , err error ) {
5356 if opt , err = s .getClient (ctx ); err != nil {
@@ -105,38 +108,33 @@ func (s *gitClient) pushCache(ctx context.Context) (err error) {
105108 var wd * git.Worktree
106109
107110 if wd , err = repo .Worktree (); err == nil {
108- _ , err = wd .Add ("." )
111+ if _ , err = wd .Add ("." ); err != nil {
112+ return
113+ }
109114
110115 if _ , err = wd .Commit (`auto commit by api-testing
111116
112117See also https://github.com/LinuxSuRen/api-testing
113118` , & git.CommitOptions {
114119 Author : & object.Signature {
115- Name : "LinuxSuRen" ,
116- 120+ Name : opt . name ,
121+ Email : opt . email ,
117122 When : time .Now (),
118123 },
119- }); err ! = nil {
120- return
124+ }); err = = nil {
125+ err = repo . Push ( opt . pushOptions )
121126 }
122-
123- err = repo .Push (opt .pushOptions )
124127 }
125128 }
126129 return
127130}
128131func (s * gitClient ) ListTestSuite (ctx context.Context , _ * server.Empty ) (reply * remote.TestSuites , err error ) {
129132 reply = & remote.TestSuites {}
130-
131- var opt * gitOptions
132- if opt , err = s .loadCache (ctx ); err != nil {
133+ var loader testing.Writer
134+ if loader , err = s .newLoader (ctx ); err != nil {
133135 return
134136 }
135137
136- parentDir := path .Join (opt .cache , opt .targetPath )
137- loader := testing .NewFileWriter (parentDir )
138- loader .Put (parentDir + "/*.yaml" )
139-
140138 var suites []testing.TestSuite
141139 if suites , err = loader .ListTestSuite (); err == nil {
142140 for _ , item := range suites {
@@ -147,17 +145,10 @@ func (s *gitClient) ListTestSuite(ctx context.Context, _ *server.Empty) (reply *
147145}
148146func (s * gitClient ) CreateTestSuite (ctx context.Context , testSuite * remote.TestSuite ) (reply * server.Empty , err error ) {
149147 reply = & server.Empty {}
150-
151- var opt * gitOptions
152- if opt , err = s .loadCache (ctx ); err != nil {
153- return
154- }
155-
156- parentDir := path .Join (opt .cache , opt .targetPath )
157- if err = os .MkdirAll (parentDir , 0755 ); err != nil {
148+ var loader testing.Writer
149+ if loader , err = s .newLoader (ctx ); err != nil {
158150 return
159151 }
160- loader := testing .NewFileWriter (parentDir )
161152
162153 if err = loader .CreateSuite (testSuite .Name , testSuite .Api ); err == nil {
163154 s .pushCache (ctx )
@@ -166,16 +157,11 @@ func (s *gitClient) CreateTestSuite(ctx context.Context, testSuite *remote.TestS
166157}
167158func (s * gitClient ) GetTestSuite (ctx context.Context , suite * remote.TestSuite ) (reply * remote.TestSuite , err error ) {
168159 reply = & remote.TestSuite {}
169-
170- var opt * gitOptions
171- if opt , err = s .loadCache (ctx ); err != nil {
160+ var loader testing.Writer
161+ if loader , err = s .newLoader (ctx ); err != nil {
172162 return
173163 }
174164
175- parentDir := path .Join (opt .cache , opt .targetPath )
176- loader := testing .NewFileWriter (parentDir )
177- loader .Put (parentDir + "/*.yaml" )
178-
179165 var normalSuite testing.TestSuite
180166 if normalSuite , err = loader .GetTestSuite (suite .Name , true ); err == nil {
181167 reply = remote .ConvertToGRPCTestSuite (& normalSuite )
@@ -184,33 +170,23 @@ func (s *gitClient) GetTestSuite(ctx context.Context, suite *remote.TestSuite) (
184170}
185171func (s * gitClient ) UpdateTestSuite (ctx context.Context , suite * remote.TestSuite ) (reply * remote.TestSuite , err error ) {
186172 reply = & remote.TestSuite {}
187-
188- var opt * gitOptions
189- if opt , err = s .loadCache (ctx ); err != nil {
173+ var loader testing.Writer
174+ if loader , err = s .newLoader (ctx ); err != nil {
190175 return
191176 }
192177
193- parentDir := path .Join (opt .cache , opt .targetPath )
194- loader := testing .NewFileWriter (parentDir )
195- loader .Put (parentDir + "/*.yaml" )
196-
197178 if err = loader .UpdateSuite (* remote .ConvertToNormalTestSuite (suite )); err == nil {
198179 err = s .pushCache (ctx )
199180 }
200181 return
201182}
202183func (s * gitClient ) DeleteTestSuite (ctx context.Context , suite * remote.TestSuite ) (reply * server.Empty , err error ) {
203184 reply = & server.Empty {}
204-
205- var opt * gitOptions
206- if opt , err = s .loadCache (ctx ); err != nil {
185+ var loader testing.Writer
186+ if loader , err = s .newLoader (ctx ); err != nil {
207187 return
208188 }
209189
210- parentDir := path .Join (opt .cache , opt .targetPath )
211- loader := testing .NewFileWriter (parentDir )
212- loader .Put (parentDir + "/*.yaml" )
213-
214190 if err = loader .DeleteSuite (suite .Name ); err == nil {
215191 err = s .pushCache (ctx )
216192 }
@@ -226,16 +202,11 @@ func (s *gitClient) ListTestCases(ctx context.Context, suite *remote.TestSuite)
226202}
227203func (s * gitClient ) CreateTestCase (ctx context.Context , testcase * server.TestCase ) (reply * server.Empty , err error ) {
228204 reply = & server.Empty {}
229-
230- var opt * gitOptions
231- if opt , err = s .loadCache (ctx ); err != nil {
205+ var loader testing.Writer
206+ if loader , err = s .newLoader (ctx ); err != nil {
232207 return
233208 }
234209
235- parentDir := path .Join (opt .cache , opt .targetPath )
236- loader := testing .NewFileWriter (parentDir )
237- loader .Put (parentDir + "/*.yaml" )
238-
239210 if err = loader .CreateTestCase (testcase .SuiteName , remote .ConvertToNormalTestCase (testcase )); err == nil {
240211 err = s .pushCache (ctx )
241212 }
@@ -257,33 +228,23 @@ func (s *gitClient) GetTestCase(ctx context.Context, testcase *server.TestCase)
257228}
258229func (s * gitClient ) UpdateTestCase (ctx context.Context , testcase * server.TestCase ) (reply * server.TestCase , err error ) {
259230 reply = & server.TestCase {}
260-
261- var opt * gitOptions
262- if opt , err = s .loadCache (ctx ); err != nil {
231+ var loader testing.Writer
232+ if loader , err = s .newLoader (ctx ); err != nil {
263233 return
264234 }
265235
266- parentDir := path .Join (opt .cache , opt .targetPath )
267- loader := testing .NewFileWriter (parentDir )
268- loader .Put (parentDir + "/*.yaml" )
269-
270236 if err = loader .UpdateTestCase (testcase .SuiteName , remote .ConvertToNormalTestCase (testcase )); err == nil {
271237 err = s .pushCache (ctx )
272238 }
273239 return
274240}
275241func (s * gitClient ) DeleteTestCase (ctx context.Context , testcase * server.TestCase ) (reply * server.Empty , err error ) {
276242 reply = & server.Empty {}
277-
278- var opt * gitOptions
279- if opt , err = s .loadCache (ctx ); err != nil {
243+ var loader testing.Writer
244+ if loader , err = s .newLoader (ctx ); err != nil {
280245 return
281246 }
282247
283- parentDir := path .Join (opt .cache , opt .targetPath )
284- loader := testing .NewFileWriter (parentDir )
285- loader .Put (parentDir + "/*.yaml" )
286-
287248 if err = loader .DeleteTestCase (testcase .SuiteName , testcase .Name ); err == nil {
288249 err = s .pushCache (ctx )
289250 }
@@ -292,7 +253,7 @@ func (s *gitClient) DeleteTestCase(ctx context.Context, testcase *server.TestCas
292253func (s * gitClient ) Verify (ctx context.Context , in * server.Empty ) (reply * server.CommonResult , err error ) {
293254 _ , clientErr := s .ListTestSuite (ctx , in )
294255 reply = & server.CommonResult {
295- Success : err == nil ,
256+ Success : clientErr == nil ,
296257 Message : util .OKOrErrorMessage (clientErr ),
297258 }
298259 return
@@ -302,44 +263,69 @@ func (s *gitClient) getClient(ctx context.Context) (opt *gitOptions, err error)
302263 if store == nil {
303264 err = errors .New ("no connect to git server" )
304265 } else {
305- var ok bool
306- if opt , ok = clientCache [store .Name ]; ok && opt != nil {
307- return
308- }
309-
310266 auth := & http.BasicAuth {
311267 Username : store .Username ,
312268 Password : store .Password ,
313269 }
314270
271+ insecure := store .Properties ["insecure" ] == "true"
272+
315273 opt = & gitOptions {
316- cache : "/tmp/" + store .Name ,
274+ cache : path . Join ( os . TempDir (), store .Name ) ,
317275 targetPath : store .Properties ["targetpath" ],
276+ name : store .Properties ["name" ],
277+ email : store .Properties ["email" ],
318278 cloneOptions : & git.CloneOptions {
319- URL : store .URL ,
320- Progress : os .Stdout ,
321- Auth : auth ,
279+ URL : store .URL ,
280+ Progress : s .writer ,
281+ InsecureSkipTLS : insecure ,
282+ Auth : auth ,
322283 },
323284 pushOptions : & git.PushOptions {
324- Progress : os .Stdout ,
325- Auth : auth ,
285+ Progress : s .writer ,
286+ InsecureSkipTLS : insecure ,
287+ Auth : auth ,
326288 },
327289 fetchOptions : & git.FetchOptions {
328- Progress : os .Stdout ,
329- Auth : auth ,
290+ Progress : s .writer ,
291+ InsecureSkipTLS : insecure ,
292+ Auth : auth ,
330293 },
331294 }
332- clientCache [store .Name ] = opt
295+
296+ if opt .name == "" {
297+ opt .name = "LinuxSuRen"
298+ }
299+ if opt .email == "" {
300+ 301+ }
333302 }
334303 return
335304}
336305
337- var clientCache = map [string ]* gitOptions {}
306+ func (s * gitClient ) newLoader (ctx context.Context ) (loader testing.Writer , err error ) {
307+ var opt * gitOptions
308+ if opt , err = s .loadCache (ctx ); err == nil {
309+ loader , err = opt .newLoader ()
310+ }
311+ return
312+ }
338313
339314type gitOptions struct {
340315 cache string
341316 targetPath string
317+ name string
318+ email string
342319 cloneOptions * git.CloneOptions
343320 pushOptions * git.PushOptions
344321 fetchOptions * git.FetchOptions
345322}
323+
324+ func (g * gitOptions ) newLoader () (loader testing.Writer , err error ) {
325+ parentDir := path .Join (g .cache , g .targetPath )
326+ if err = os .MkdirAll (parentDir , 0755 ); err == nil {
327+ loader = testing .NewFileWriter (parentDir )
328+ loader .Put (parentDir + "/*.yaml" )
329+ }
330+ return
331+ }
0 commit comments