Repository: incubator-htrace Updated Branches: refs/heads/master f425e63c3 -> a9eb2316c
htraced: put query parameters in the URL, not in the GET request body (abe via cmccabe) Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/a9eb2316 Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/a9eb2316 Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/a9eb2316 Branch: refs/heads/master Commit: a9eb2316c70e990e074ce47f85529a48b271e453 Parents: f425e63 Author: Colin P. Mccabe <[email protected]> Authored: Mon Feb 2 11:25:34 2015 -0800 Committer: Colin P. Mccabe <[email protected]> Committed: Mon Feb 2 11:25:34 2015 -0800 ---------------------------------------------------------------------- .../src/go/src/org/apache/htrace/client/client.go | 3 ++- .../src/go/src/org/apache/htrace/common/log_test.go | 6 +++--- .../src/go/src/org/apache/htrace/htraced/client_test.go | 12 ++++++++++++ .../src/go/src/org/apache/htrace/htraced/rest.go | 12 ++++++++---- 4 files changed, 25 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/a9eb2316/htrace-core/src/go/src/org/apache/htrace/client/client.go ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/src/org/apache/htrace/client/client.go b/htrace-core/src/go/src/org/apache/htrace/client/client.go index 52fe78e..82400fe 100644 --- a/htrace-core/src/go/src/org/apache/htrace/client/client.go +++ b/htrace-core/src/go/src/org/apache/htrace/client/client.go @@ -113,7 +113,8 @@ func (hcl *Client) Query(query *common.Query) ([]common.Span, error) { return nil, errors.New(fmt.Sprintf("Error marshalling query: %s", err.Error())) } var out []byte - out, _, err = hcl.makeRestRequest("GET", "query", bytes.NewReader(in)) + var url = fmt.Sprintf("query?query=%s", in) + out, _, err = hcl.makeGetRequest(url) if err != nil { return nil, err } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/a9eb2316/htrace-core/src/go/src/org/apache/htrace/common/log_test.go ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/src/org/apache/htrace/common/log_test.go b/htrace-core/src/go/src/org/apache/htrace/common/log_test.go index 64d6a3f..b415ce2 100644 --- a/htrace-core/src/go/src/org/apache/htrace/common/log_test.go +++ b/htrace-core/src/go/src/org/apache/htrace/common/log_test.go @@ -53,7 +53,7 @@ func verifyLines(t *testing.T, rdr io.Reader, lines []string) { line := scanner.Text() if !strings.Contains(line, lines[lineIdx]) { t.Fatalf("Error on line %d: didn't find substring '%s' in line '%s'\n", - (lineIdx + 1), lines[lineIdx], line) + (lineIdx + 1), lines[lineIdx], line) } lineIdx++ } @@ -80,7 +80,7 @@ func TestFileLogs(t *testing.T) { if err != nil { t.Fatalf("failed to open file %s: %s\n", logPath, err.Error()) } - verifyLines(t, logFile, []string { + verifyLines(t, logFile, []string{ "problem with the foobar", "and another problem with the foobar", }) @@ -110,7 +110,7 @@ func TestMultipleFileLogs(t *testing.T) { } fooLg.Tracef("Fizz buzz2\n") barLg.Tracef("Fizz buzz3\n") - verifyLines(t, logFile, []string { + verifyLines(t, logFile, []string{ "The foo needs maintenance.", "The bar is open", "Fizz buzz", http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/a9eb2316/htrace-core/src/go/src/org/apache/htrace/htraced/client_test.go ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/src/org/apache/htrace/htraced/client_test.go b/htrace-core/src/go/src/org/apache/htrace/htraced/client_test.go index 15fbe89..044c7ba 100644 --- a/htrace-core/src/go/src/org/apache/htrace/htraced/client_test.go +++ b/htrace-core/src/go/src/org/apache/htrace/htraced/client_test.go @@ -124,4 +124,16 @@ func TestClientOperations(t *testing.T) { t.Fatalf("FindChildren(%d) returned an invalid number of "+ "children: expected %d, got %d\n", childlessSpan.Id, 0, len(children)) } + + // Test Query + var query common.Query + query = common.Query{Lim: 10} + spans, err := hcl.Query(&query) + if err != nil { + t.Fatalf("Query({lim: %d}) failed: %s\n", 10, err.Error()) + } + if len(spans) != 10 { + t.Fatalf("Query({lim: %d}) returned an invalid number of "+ + "children: expected %d, got %d\n", 10, 10, len(spans)) + } } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/a9eb2316/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go b/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go index 3ecb14b..9cdab20 100644 --- a/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go +++ b/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go @@ -20,6 +20,7 @@ package main import ( + "bytes" "encoding/json" "fmt" "github.com/gorilla/mux" @@ -176,17 +177,20 @@ func (hand *writeSpansHandler) ServeHTTP(w http.ResponseWriter, req *http.Reques } type queryHandler struct { + lg *common.Logger dataStoreHandler } func (hand *queryHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { setResponseHeaders(w.Header()) - _, ok := hand.getReqField32("lim", w, req) - if !ok { + queryString := req.FormValue("query") + if queryString == "" { + writeError(hand.lg, w, http.StatusBadRequest, "No query provided.\n") return } var query common.Query - dec := json.NewDecoder(req.Body) + reader := bytes.NewBufferString(queryString) + dec := json.NewDecoder(reader) err := dec.Decode(&query) if err != nil { writeError(hand.lg, w, http.StatusBadRequest, @@ -262,7 +266,7 @@ func CreateRestServer(cnf *conf.Config, store *dataStore) (*RestServer, error) { store: store, lg: rsv.lg}} r.Handle("/writeSpans", writeSpansH).Methods("POST") - queryH := &queryHandler{dataStoreHandler: dataStoreHandler{store: store}} + queryH := &queryHandler{lg: rsv.lg, dataStoreHandler: dataStoreHandler{store: store}} r.Handle("/query", queryH).Methods("GET") span := r.PathPrefix("/span").Subrouter()
