Skip to content

use Jsonitor instead of encoding/json #285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 4, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cli/upgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package cli
import (
"archive/tar"
"compress/gzip"
"encoding/json"
"fmt"
"io"
"io/ioutil"
Expand All @@ -18,6 +17,7 @@ import (
"github.com/qiniu/log"
"github.com/qiniu/logkit/utils"

"github.com/json-iterator/go"
"github.com/labstack/echo"
"github.com/stretchr/testify/assert"
)
Expand Down Expand Up @@ -355,7 +355,7 @@ func (m *mockGithub) respFunction(c echo.Context, data map[string]interface{}) e
c.Response().Header().Set(RateLimitReset, data[RateLimitReset].(string))
c.Response().Header().Set(RateLimitRemaining, data[RateLimitRemaining].(string))
c.Response().WriteHeader(data["statusCode"].(int))
return json.NewEncoder(c.Response()).Encode(data["data"])
return jsoniter.NewEncoder(c.Response()).Encode(data["data"])
}

// 请求含有错误参数,该函数通过错误参数来构造不同的错误
Expand Down
8 changes: 4 additions & 4 deletions mgr/api_metric_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mgr

import (
"encoding/json"
"net/http"

"github.com/json-iterator/go"
"github.com/qiniu/logkit/metric"
"github.com/qiniu/logkit/utils"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -33,7 +33,7 @@ func metricAPITest(p *testParam) {
respCode, respBody, err := makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got1); err != nil {
if err = jsoniter.Unmarshal(respBody, &got1); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, metric.GetMetricUsages(), got1.Data)
Expand All @@ -43,7 +43,7 @@ func metricAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got2); err != nil {
if err = jsoniter.Unmarshal(respBody, &got2); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, metric.GetMetricOptions(), got2.Data)
Expand All @@ -53,7 +53,7 @@ func metricAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got3); err != nil {
if err = jsoniter.Unmarshal(respBody, &got3); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, metric.GetMetricTypeKey(), got3.Data)
Expand Down
20 changes: 10 additions & 10 deletions mgr/api_parser_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mgr

import (
"encoding/json"
"net/http"

"github.com/json-iterator/go"
conf2 "github.com/qiniu/logkit/conf"
"github.com/qiniu/logkit/parser"
"github.com/qiniu/logkit/sender"
Expand All @@ -24,15 +24,15 @@ func parserParseTest(p *testParam) {
rawConf := conf2.MapConf{}
rawConf[KeySampleLog] = parser.SampleLogs[parser.TypeRaw]
rawConf[parser.KeyParserType] = parser.TypeRaw
rawpst, err := json.Marshal(rawConf)
rawpst, err := jsoniter.Marshal(rawConf)
assert.NoError(t, err)
url := "http://127.0.0.1" + rs.address + "/logkit/parser/parse"
respCode, respBody, err := makeRequest(url, http.MethodPost, rawpst)
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)

var got1 respParserRet
err = json.Unmarshal(respBody, &got1)
err = jsoniter.Unmarshal(respBody, &got1)
assert.NoError(t, err, string(respBody))
assert.Equal(t, 4, len(got1.Data.SamplePoints))

Expand All @@ -41,13 +41,13 @@ func parserParseTest(p *testParam) {
jsonConf := conf2.MapConf{}
jsonConf[KeySampleLog] = parser.SampleLogs[parser.TypeJson]
jsonConf[parser.KeyParserType] = parser.TypeJson
rawpst, err = json.Marshal(jsonConf)
rawpst, err = jsoniter.Marshal(jsonConf)
assert.NoError(t, err)
url = "http://127.0.0.1" + rs.address + "/logkit/parser/parse"
respCode, respBody, err = makeRequest(url, http.MethodPost, rawpst)
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
err = json.Unmarshal(respBody, &got2)
err = jsoniter.Unmarshal(respBody, &got2)
if err != nil {
t.Error(err)
}
Expand All @@ -64,13 +64,13 @@ func parserParseTest(p *testParam) {
grokConf[KeySampleLog] = parser.SampleLogs[parser.TypeGrok]
grokConf[parser.KeyParserType] = parser.TypeGrok
grokConf[parser.KeyGrokPatterns] = "%{COMMON_LOG_FORMAT}"
rawpst, err = json.Marshal(grokConf)
rawpst, err = jsoniter.Marshal(grokConf)
assert.NoError(t, err)
url = "http://127.0.0.1" + rs.address + "/logkit/parser/parse"
respCode, respBody, err = makeRequest(url, http.MethodPost, rawpst)
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
err = json.Unmarshal(respBody, &got3)
err = jsoniter.Unmarshal(respBody, &got3)
if err != nil {
t.Error(err)
}
Expand All @@ -97,7 +97,7 @@ func parserAPITest(p *testParam) {
respCode, respBody, err := makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got1); err != nil {
if err = jsoniter.Unmarshal(respBody, &got1); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, parser.ModeUsages, got1.Data)
Expand All @@ -107,7 +107,7 @@ func parserAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got2); err != nil {
if err = jsoniter.Unmarshal(respBody, &got2); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, parser.ModeKeyOptions, got2.Data)
Expand All @@ -117,7 +117,7 @@ func parserAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got3); err != nil {
if err = jsoniter.Unmarshal(respBody, &got3); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, parser.SampleLogs, got3.Data)
Expand Down
6 changes: 3 additions & 3 deletions mgr/api_reader_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mgr

import (
"encoding/json"
"net/http"

"github.com/json-iterator/go"
"github.com/qiniu/logkit/reader"
"github.com/stretchr/testify/assert"
)
Expand All @@ -18,7 +18,7 @@ func readerAPITest(p *testParam) {
respCode, respBody, err := makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got1); err != nil {
if err = jsoniter.Unmarshal(respBody, &got1); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, reader.ModeUsages, got1.Data)
Expand All @@ -28,7 +28,7 @@ func readerAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got2); err != nil {
if err = jsoniter.Unmarshal(respBody, &got2); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, reader.ModeKeyOptions, got2.Data)
Expand Down
6 changes: 3 additions & 3 deletions mgr/api_sender_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mgr

import (
"encoding/json"
"net/http"

"github.com/json-iterator/go"
"github.com/qiniu/logkit/sender"
"github.com/stretchr/testify/assert"
)
Expand All @@ -18,7 +18,7 @@ func senderAPITest(p *testParam) {
respCode, respBody, err := makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got1); err != nil {
if err = jsoniter.Unmarshal(respBody, &got1); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, sender.ModeUsages, got1.Data)
Expand All @@ -28,7 +28,7 @@ func senderAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got2); err != nil {
if err = jsoniter.Unmarshal(respBody, &got2); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, sender.ModeKeyOptions, got2.Data)
Expand Down
10 changes: 5 additions & 5 deletions mgr/api_transformer.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package mgr

import (
"encoding/json"
"fmt"
"net/http"

"github.com/json-iterator/go"
"github.com/labstack/echo"
"github.com/qiniu/logkit/sender"
"github.com/qiniu/logkit/transforms"
Expand Down Expand Up @@ -93,9 +93,9 @@ func (rs *RestService) PostTransform() echo.HandlerFunc {
if rawLogs, ok = (reqConf[KeySampleLog]).(string); !ok {
return RespError(c, http.StatusBadRequest, utils.ErrTransformTransform, fmt.Sprintf("missing param %s", KeySampleLog))
}
if jsonErr = json.Unmarshal([]byte(rawLogs), &singleData); jsonErr != nil {
if jsonErr = jsoniter.Unmarshal([]byte(rawLogs), &singleData); jsonErr != nil {
// may be multiple sample logs
if jsonErr = json.Unmarshal([]byte(rawLogs), &data); jsonErr != nil {
if jsonErr = jsoniter.Unmarshal([]byte(rawLogs), &data); jsonErr != nil {
// invalid JSON, neither multiple sample logs nor single sample log
return RespError(c, http.StatusBadRequest, utils.ErrTransformTransform, jsonErr.Error())
}
Expand All @@ -107,10 +107,10 @@ func (rs *RestService) PostTransform() echo.HandlerFunc {
trans = create()
reqConf = convertWebTransformerConfig(reqConf)
delete(reqConf, KeySampleLog)
if bts, jsonErr = json.Marshal(reqConf); jsonErr != nil {
if bts, jsonErr = jsoniter.Marshal(reqConf); jsonErr != nil {
return RespError(c, http.StatusBadRequest, utils.ErrTransformTransform, jsonErr.Error())
}
if jsonErr = json.Unmarshal(bts, trans); jsonErr != nil {
if jsonErr = jsoniter.Unmarshal(bts, trans); jsonErr != nil {
return RespError(c, http.StatusBadRequest, utils.ErrTransformTransform, jsonErr.Error())
}
if trans, ok := trans.(transforms.Initialize); ok {
Expand Down
8 changes: 4 additions & 4 deletions mgr/api_transformer_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package mgr

import (
"encoding/json"
"net/http"

"github.com/json-iterator/go"
"github.com/qiniu/logkit/sender"
"github.com/qiniu/logkit/transforms"
_ "github.com/qiniu/logkit/transforms/date"
Expand All @@ -25,7 +25,7 @@ func transformerAPITest(p *testParam) {
respCode, respBody, err := makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got1); err != nil {
if err = jsoniter.Unmarshal(respBody, &got1); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, len(transforms.Transformers), len(got1.Data))
Expand All @@ -35,7 +35,7 @@ func transformerAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodGet, []byte{})
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got2); err != nil {
if err = jsoniter.Unmarshal(respBody, &got2); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
assert.Equal(t, len(transforms.Transformers), len(got2.Data))
Expand All @@ -54,7 +54,7 @@ func transformerAPITest(p *testParam) {
respCode, respBody, err = makeRequest(url, http.MethodPost, []byte(dateTransformerConfig))
assert.NoError(t, err, string(respBody))
assert.Equal(t, http.StatusOK, respCode)
if err = json.Unmarshal(respBody, &got3); err != nil {
if err = jsoniter.Unmarshal(respBody, &got3); err != nil {
t.Fatalf("respBody %v unmarshal failed, error is %v", respBody, err)
}
exp := []sender.Data{{"ts": "2006-01-02T14:04:05Z"}}
Expand Down
38 changes: 17 additions & 21 deletions mgr/cluster.go
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
package mgr

import (
"bytes"
"errors"
"fmt"
"io/ioutil"
"net/http"
"strings"
"sync"

"github.com/qiniu/logkit/utils"

"bytes"
"encoding/json"
"io/ioutil"

"fmt"
"time"

"strings"

"github.com/json-iterator/go"
"github.com/labstack/echo"
"github.com/qiniu/log"
"github.com/qiniu/logkit/utils"
)

type ClusterConfig struct {
Expand Down Expand Up @@ -45,13 +41,13 @@ type Slave struct {
type ClusterStatus struct {
Status map[string]RunnerStatus `json:"status"`
Tag string `json:"tag"`
Err error `json:"error"`
Err string `json:"error"`
}

type SlaveConfig struct {
Configs map[string]RunnerConfig `json:"configs"`
Tag string `json:"tag"`
Err error `json:"error"`
Err string `json:"error"`
}

type respRunnersNameList struct {
Expand Down Expand Up @@ -210,7 +206,7 @@ func (rs *RestService) GetClusterRunners() echo.HandlerFunc {
log.Errorf("get slave(tag='%v', url='%v') runner name list failed, resp is %v, error is %v", v.Tag, v.Url, string(respBody), err.Error())
return
} else {
if err = json.Unmarshal(respBody, &respRss); err != nil {
if err = jsoniter.Unmarshal(respBody, &respRss); err != nil {
log.Errorf("unmarshal slave(tag='%v', url='%v') runner name list failed, error is %v", v.Tag, v.Url, err.Error())
} else {
mutex.Lock()
Expand Down Expand Up @@ -258,10 +254,10 @@ func (rs *RestService) ClusterStatus() echo.HandlerFunc {
respCode, respBody, err := executeToOneCluster(url, http.MethodGet, []byte{})
if err != nil || respCode != http.StatusOK {
errInfo := fmt.Errorf("%v %v", string(respBody), err)
cs.Err = errInfo
cs.Err = errInfo.Error()
} else {
if err = json.Unmarshal(respBody, &respRss); err != nil {
cs.Err = fmt.Errorf("unmarshal query result error %v, body is %v", err, string(respBody))
if err = jsoniter.Unmarshal(respBody, &respRss); err != nil {
cs.Err = fmt.Sprintf("unmarshal query result error %v, body is %v", err, string(respBody))
} else {
cs.Status = respRss.Data
}
Expand Down Expand Up @@ -301,7 +297,7 @@ func (rs *RestService) GetClusterConfig() echo.HandlerFunc {
lastErrMsg = fmt.Sprintf("get slave(tag = '%v'', url = '%v') config failed resp is %v, error is %v", tag, url, string(respBody), err)
continue
} else {
if err = json.Unmarshal(respBody, &respRss); err != nil {
if err = jsoniter.Unmarshal(respBody, &respRss); err != nil {
lastErrMsg = fmt.Sprintf("get slave(tag = '%v'', url = '%v') config unmarshal failed, resp is %v, error is %v", tag, url, string(respBody), err)
continue
} else {
Expand Down Expand Up @@ -346,10 +342,10 @@ func (rs *RestService) GetClusterConfigs() echo.HandlerFunc {
respCode, respBody, err := executeToOneCluster(url, http.MethodGet, []byte{})
if err != nil || respCode != http.StatusOK {
errInfo := fmt.Errorf("%v %v", string(respBody), err)
sc.Err = errInfo
sc.Err = errInfo.Error()
} else {
if err = json.Unmarshal(respBody, &respRss); err != nil {
sc.Err = fmt.Errorf("unmarshal query result error %v, body is %v", err, string(respBody))
if err = jsoniter.Unmarshal(respBody, &respRss); err != nil {
sc.Err = fmt.Sprintf("unmarshal query result error %v, body is %v", err, string(respBody))
} else {
sc.Configs = respRss.Data
}
Expand Down Expand Up @@ -714,7 +710,7 @@ func registerOne(master, myhost, tag string) error {
return errors.New("master host is not configed")
}
req := RegisterReq{Url: myhost, Tag: tag}
data, err := json.Marshal(req)
data, err := jsoniter.Marshal(req)
if err != nil {
return err
}
Expand Down
Loading