You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.4 KiB
135 lines
3.4 KiB
package http |
|
|
|
import ( |
|
"encoding/json" |
|
"io/ioutil" |
|
"mime/multipart" |
|
"time" |
|
|
|
"go-common/app/admin/main/apm/model/ut" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
func upload(c *bm.Context) { |
|
var ( |
|
file multipart.File |
|
body []byte |
|
htmlURL string |
|
reportURL string |
|
dataURL string |
|
err error |
|
pkg = new(ut.PkgAnls) |
|
files []*ut.File |
|
res = &ut.UploadRes{} |
|
header *multipart.FileHeader |
|
) |
|
c.Request.ParseMultipartForm(32 << 20) |
|
if err = c.Bind(res); err != nil { |
|
return |
|
} |
|
log.Info("ut.upload(%d) start! current_time(%d)", res.MergeID, time.Now().Unix()) |
|
defer log.Info("ut.upload(%d) finished. current_time(%d)", res.MergeID, time.Now().Unix()) |
|
if file, _, err = c.Request.FormFile("report_file"); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("report request upload err (%v)", err) |
|
return |
|
} |
|
defer file.Close() |
|
if body, err = ioutil.ReadAll(file); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("ioutil.ReadAll(c.Request().Body) error(%v)", err) |
|
return |
|
} |
|
if body, err = apmSvc.ParseContent(c, body); err != nil { |
|
c.JSON(err.Error(), err) |
|
return |
|
} |
|
if pkg, err = apmSvc.CalcCount(c, body); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if pkg.Assertions == 0 { |
|
c.JSON("no result", nil) |
|
return |
|
} |
|
if reportURL, err = apmSvc.Upload(c, "json", time.Now().Unix(), body); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if file, header, err = c.Request.FormFile("data_file"); err == nil && header.Size > 0 { |
|
defer file.Close() |
|
if body, err = ioutil.ReadAll(file); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("Upload data request error(%v)", err) |
|
return |
|
} |
|
if files, err = apmSvc.CalcCountFiles(c, res, body); err != nil { |
|
c.JSON(nil, err) |
|
log.Error("Upload data calcCount error(%v)", err) |
|
return |
|
} |
|
if dataURL, err = apmSvc.Upload(c, "text/plain", time.Now().Unix(), body); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
} |
|
if file, _, err = c.Request.FormFile("html_file"); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("html request upload err (%v)", err) |
|
return |
|
} |
|
defer file.Close() |
|
if body, err = ioutil.ReadAll(file); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("html read error(%v)", err) |
|
return |
|
} |
|
if htmlURL, err = apmSvc.Upload(c, "html", time.Now().Unix(), body); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
if err = apmSvc.AddUT(c, pkg, files, res, dataURL, reportURL, htmlURL); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
// update ut_app has_ut = 1 && converage |
|
if err = apmSvc.UpdateUTApp(c, pkg); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nil, nil) |
|
} |
|
|
|
// uploadApp upload path to ut_app |
|
func uploadApp(c *bm.Context) { |
|
var ( |
|
file multipart.File |
|
body []byte |
|
apps []*ut.App |
|
err error |
|
) |
|
c.Request.ParseMultipartForm(32 << 20) |
|
if file, _, err = c.Request.FormFile("path_file"); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("path request upload error(%v)", err) |
|
return |
|
} |
|
defer file.Close() |
|
if body, err = ioutil.ReadAll(file); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("path_file read error(%v)", err) |
|
return |
|
} |
|
if err = json.Unmarshal(body, &apps); err != nil { |
|
log.Error("json.Unmarshal error(%v)", err) |
|
return |
|
} |
|
if err = apmSvc.AddUTApp(c, apps); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("apmSvc.AddUtApp error(%v)", err) |
|
return |
|
} |
|
c.JSON(nil, err) |
|
}
|
|
|