Merge pull request #206 from corylanou/test-helpers

Make better use of t.Helper
This commit is contained in:
Cory LaNou 2020-03-25 07:35:35 -05:00 committed by GitHub
commit 2a4088e0ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 99 additions and 97 deletions

View file

@ -1038,7 +1038,7 @@ func TestExecutor_Execute_TopN(t *testing.T) {
t.Fatal(err)
}
err := c[0].RecalculateCaches()
err := c[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -1082,7 +1082,7 @@ func TestExecutor_Execute_TopN(t *testing.T) {
t.Fatal(err)
}
err := c[0].RecalculateCaches()
err := c[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -1126,7 +1126,7 @@ func TestExecutor_Execute_TopN(t *testing.T) {
t.Fatal(err)
}
err := c[0].RecalculateCaches()
err := c[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -1172,7 +1172,7 @@ func TestExecutor_Execute_TopN(t *testing.T) {
t.Fatal(err)
}
err := c[0].RecalculateCaches()
err := c[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -1207,7 +1207,7 @@ func TestExecutor_Execute_TopN(t *testing.T) {
Set(0, f=1)
`}); err != nil {
t.Fatal(err)
} else if err := c[0].RecalculateCaches(); err != nil {
} else if err := c[0].RecalculateCaches(t); err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -1336,7 +1336,7 @@ func TestExecutor_Execute_TopN_Src(t *testing.T) {
hldr.SetBit("i", "other", 100, ShardWidth+1)
hldr.SetBit("i", "other", 100, ShardWidth+2)
err := c[0].RecalculateCaches()
err := c[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -3459,7 +3459,7 @@ func TestExecutor_Execute_ClearRow(t *testing.T) {
t.Fatal(err)
}
if err := c[0].RecalculateCaches(); err != nil {
if err := c[0].RecalculateCaches(t); err != nil {
t.Fatalf("recalculating caches: %v", err)
}

View file

@ -117,15 +117,15 @@ func TestClient_MultiNode(t *testing.T) {
// Rebuild the RankCache.
// We have to do this to avoid the 10-second cache invalidation delay
// built into cache.Invalidate()
err = c[0].RecalculateCaches()
err = c[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating cache: %v", err)
}
err = c[1].RecalculateCaches()
err = c[1].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating cache: %v", err)
}
err = c[2].RecalculateCaches()
err = c[2].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating cache: %v", err)
}
@ -616,7 +616,7 @@ func TestClient_ImportKeys(t *testing.T) {
t.Fatal(err)
}
cmd.MustRecalculateCaches(t)
resp := cmd.MustQuery(t, &pilosa.QueryRequest{
resp := cmd.QueryAPI(t, &pilosa.QueryRequest{
Index: "keyed",
Query: "TopN(keyedf)",
})
@ -643,7 +643,7 @@ func TestClient_ImportKeys(t *testing.T) {
t.Fatal(err)
}
cmd.MustRecalculateCaches(t)
resp := cmd.MustQuery(t, &pilosa.QueryRequest{
resp := cmd.QueryAPI(t, &pilosa.QueryRequest{
Index: "keyed",
Query: "TopN(unkeyedf)",
})
@ -670,7 +670,7 @@ func TestClient_ImportKeys(t *testing.T) {
t.Fatal(err)
}
cmd.MustRecalculateCaches(t)
resp := cmd.MustQuery(t, &pilosa.QueryRequest{
resp := cmd.QueryAPI(t, &pilosa.QueryRequest{
Index: "unkeyed",
Query: "TopN(keyedf)",
})
@ -715,7 +715,7 @@ func TestClient_ImportKeys(t *testing.T) {
t.Fatal(err)
}
cmd0.MustRecalculateCaches(t)
resp := cmd0.MustQuery(t, &pilosa.QueryRequest{
resp := cmd0.QueryAPI(t, &pilosa.QueryRequest{
Index: "keyed",
Query: "TopN(keyedf0)",
})
@ -747,7 +747,7 @@ func TestClient_ImportKeys(t *testing.T) {
time.Sleep(500 * time.Millisecond)
cmd1.MustRecalculateCaches(t)
resp := cmd1.MustQuery(t, &pilosa.QueryRequest{
resp := cmd1.QueryAPI(t, &pilosa.QueryRequest{
Index: "keyed",
Query: "TopN(keyedf1)",
})

View file

@ -86,7 +86,7 @@ func TestMain_SendReceiveMessage(t *testing.T) {
}
// Write data on first node.
if _, err := m0.Query("i", "", fmt.Sprintf(`
if _, err := m0.Query(t, "i", "", fmt.Sprintf(`
Set(1, f=1)
Set(%d, f=1)
`, 2*pilosa.ShardWidth+1)); err != nil {
@ -117,7 +117,7 @@ func TestMain_SendReceiveMessage(t *testing.T) {
// Ensure that an empty node comes up in a NORMAL state.
func TestClusterResize_EmptyNode(t *testing.T) {
m0 := test.MustRunCommand()
m0 := test.RunCommand(t)
defer m0.Close()
if m0.API.State() != pilosa.ClusterStateNormal {
@ -200,7 +200,7 @@ func TestClusterResize_AddNode(t *testing.T) {
}
// Write data on first node.
if _, err := m0.Query("i", "", `
if _, err := m0.Query(t, "i", "", `
Set(1, f=1)
Set(1300000, f=1)
`); err != nil {
@ -211,7 +211,7 @@ func TestClusterResize_AddNode(t *testing.T) {
exp := `{"results":[{"attrs":{},"columns":[1,1300000]}]}` + "\n"
// Verify the data exists on the single node.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -234,12 +234,12 @@ func TestClusterResize_AddNode(t *testing.T) {
}
// Verify the data exists on both nodes.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
}
if res, err := m1.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m1.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -263,7 +263,7 @@ func TestClusterResize_AddNode(t *testing.T) {
}
// Write data on first node. Note that no data is placed on shard 1.
if _, err := m0.Query("i", "", `
if _, err := m0.Query(t, "i", "", `
Set(1, f=1)
Set(2400000, f=1)
`); err != nil {
@ -274,7 +274,7 @@ func TestClusterResize_AddNode(t *testing.T) {
exp := `{"results":[{"attrs":{},"columns":[1,2400000]}]}` + "\n"
// Verify the data exists on the single node.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -297,12 +297,12 @@ func TestClusterResize_AddNode(t *testing.T) {
}
// Verify the data exists on both nodes.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
}
if res, err := m1.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m1.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -373,7 +373,7 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) {
}
// Write data on first node.
if _, err := m0.Query("i", "", `
if _, err := m0.Query(t, "i", "", `
Set(1, f=1)
Set(1300000, f=1)
`); err != nil {
@ -384,7 +384,7 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) {
exp := `{"results":[{"attrs":{},"columns":[1,1300000]}]}` + "\n"
// Verify the data exists on the single node.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -412,12 +412,12 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) {
}
// Verify the data exists on both nodes.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
}
if res, err := m1.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m1.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -441,7 +441,7 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) {
}
// Write data on first node. Note that no data is placed on shard 1.
if _, err := m0.Query("i", "", `
if _, err := m0.Query(t, "i", "", `
Set(1, f=1)
Set(2400000, f=1)
`); err != nil {
@ -452,7 +452,7 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) {
exp := `{"results":[{"attrs":{},"columns":[1,2400000]}]}` + "\n"
// Verify the data exists on the single node.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -480,12 +480,12 @@ func TestClusterResize_AddNodeConcurrentIndex(t *testing.T) {
}
// Verify the data exists on both nodes.
if res, err := m0.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m0.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
}
if res, err := m1.Query("i", "", `Row(f=1)`); err != nil {
if res, err := m1.Query(t, "i", "", `Row(f=1)`); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result: %s", res)
@ -558,7 +558,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
m1 := cluster[1]
mustNodeID := func(baseURL string) string {
body := test.MustDo("GET", fmt.Sprintf("%s/status", baseURL), "").Body
body := test.Do(t, "GET", fmt.Sprintf("%s/status", baseURL), "").Body
var resp map[string]interface{}
err := json.Unmarshal([]byte(body), &resp)
if err != nil {
@ -571,7 +571,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
}
t.Run("ErrorRemoveInvalidNode", func(t *testing.T) {
resp := test.MustDo("POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), `{"id": "invalid-node-id"}`)
resp := test.Do(t, "POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), `{"id": "invalid-node-id"}`)
expBody := "removing node: finding node to remove: node with provided ID does not exist"
if resp.StatusCode != http.StatusNotFound {
t.Fatalf("expected StatusCode %d but got %d", http.StatusNotFound, resp.StatusCode)
@ -582,7 +582,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
t.Run("ErrorRemoveCoordinator", func(t *testing.T) {
nodeID := mustNodeID(m0.URL())
resp := test.MustDo("POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
resp := test.Do(t, "POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
expBody := "removing node: calling node leave: coordinator cannot be removed; first, make a different node the new coordinator"
if resp.StatusCode != http.StatusInternalServerError {
@ -595,7 +595,7 @@ func TestClusterResize_RemoveNode(t *testing.T) {
t.Run("ErrorRemoveOnNonCoordinator", func(t *testing.T) {
coordinatorNodeID := mustNodeID(m0.URL())
nodeID := mustNodeID(m1.URL())
resp := test.MustDo("POST", m1.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
resp := test.Do(t, "POST", m1.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
expBody := fmt.Sprintf("removing node: calling node leave: node removal requests are only valid on the coordinator node: %s", coordinatorNodeID)
if resp.StatusCode != http.StatusInternalServerError {
@ -622,12 +622,12 @@ func TestClusterResize_RemoveNode(t *testing.T) {
setColumns += fmt.Sprintf("Set(%d, f=1) ", i*pilosa.ShardWidth)
}
if _, err := m0.Query("i", "", setColumns); err != nil {
if _, err := m0.Query(t, "i", "", setColumns); err != nil {
t.Fatal(err)
}
nodeID := mustNodeID(m1.URL())
resp := test.MustDo("POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
resp := test.Do(t, "POST", m0.URL()+fmt.Sprintf("/cluster/resize/remove-node"), fmt.Sprintf(`{"id": "%s"}`, nodeID))
expBody := "not enough data to perform resize"
if resp.StatusCode != http.StatusInternalServerError {
t.Fatalf("expected StatusCode %d but got %d", http.StatusInternalServerError, resp.StatusCode)

View file

@ -1048,7 +1048,7 @@ func TestCluster_TranslateStore(t *testing.T) {
t.Fatalf("starting cluster 0: %v", err)
}
test.MustDo("POST", cluster[0].URL()+"/index/i0", "{\"options\": {\"keys\": true}}")
test.Do(t, "POST", cluster[0].URL()+"/index/i0", "{\"options\": {\"keys\": true}}")
}
func TestClusterTranslator(t *testing.T) {
@ -1076,15 +1076,15 @@ func TestClusterTranslator(t *testing.T) {
t.Fatalf("starting cluster 1: %v", err)
}
test.MustDo("POST", cluster[0].URL()+"/index/i0", "{\"options\": {\"keys\": true}}")
test.MustDo("POST", cluster[0].URL()+"/index/i0/field/f0", "{\"options\": {\"keys\": true}}")
test.Do(t, "POST", cluster[0].URL()+"/index/i0", "{\"options\": {\"keys\": true}}")
test.Do(t, "POST", cluster[0].URL()+"/index/i0/field/f0", "{\"options\": {\"keys\": true}}")
test.MustDo("POST", cluster[0].URL()+"/index/i0/query", "Set(\"foo\", f0=\"bar\")")
test.Do(t, "POST", cluster[0].URL()+"/index/i0/query", "Set(\"foo\", f0=\"bar\")")
var result0, result1 string
if err := test.RetryUntil(2*time.Second, func() error {
result0 = test.MustDo("POST", cluster[0].URL()+"/index/i0/query", "Row(f0=\"bar\")").Body
result1 = test.MustDo("POST", cluster[1].URL()+"/index/i0/query", "Row(f0=\"bar\")").Body
result0 = test.Do(t, "POST", cluster[0].URL()+"/index/i0/query", "Row(f0=\"bar\")").Body
result1 = test.Do(t, "POST", cluster[1].URL()+"/index/i0/query", "Row(f0=\"bar\")").Body
if result0 != result1 {
return fmt.Errorf("`%s` != `%s`", result0, result1)
}

View file

@ -57,7 +57,7 @@ func TestMain_Set_Quick(t *testing.T) {
rand := rand.New(rand.NewSource(int64(i)))
cmds := GenerateSetCommands(1000, rand)
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
// Create client.
@ -74,7 +74,7 @@ func TestMain_Set_Quick(t *testing.T) {
if err := client.CreateField(context.Background(), "i", cmd.Field); err != nil && err != pilosa.ErrFieldExists {
t.Fatal(err)
}
if _, err := m.Query("i", "", fmt.Sprintf(`Set(%d, %s=%d)`, cmd.ColumnID, cmd.Field, cmd.ID)); err != nil {
if _, err := m.Query(t, "i", "", fmt.Sprintf(`Set(%d, %s=%d)`, cmd.ColumnID, cmd.Field, cmd.ID)); err != nil {
t.Fatal(err)
}
}
@ -90,7 +90,7 @@ func TestMain_Set_Quick(t *testing.T) {
},
},
}) + "\n"
if res, err := m.Query("i", "", fmt.Sprintf(`Row(%s=%d)`, field, id)); err != nil {
if res, err := m.Query(t, "i", "", fmt.Sprintf(`Row(%s=%d)`, field, id)); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result:\n\ngot=%s\n\nexp=%s\n\n", res, exp)
@ -113,7 +113,7 @@ func TestMain_Set_Quick(t *testing.T) {
},
},
}) + "\n"
if res, err := m.Query("i", "", fmt.Sprintf(`Row(%s=%d)`, field, id)); err != nil {
if res, err := m.Query(t, "i", "", fmt.Sprintf(`Row(%s=%d)`, field, id)); err != nil {
t.Fatal(err)
} else if res != exp {
t.Fatalf("unexpected result (reopen):\n\ngot=%s\n\nexp=%s\n\n", res, exp)
@ -126,7 +126,7 @@ func TestMain_Set_Quick(t *testing.T) {
// Ensure program can set row attributes and retrieve them.
func TestMain_SetRowAttrs(t *testing.T) {
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
// Create fields.
@ -142,36 +142,36 @@ func TestMain_SetRowAttrs(t *testing.T) {
}
// Set columns on different rows in different fields.
if _, err := m.Query("i", "", `Set(100, x=1)`); err != nil {
if _, err := m.Query(t, "i", "", `Set(100, x=1)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `Set(100, x=2)`); err != nil {
} else if _, err := m.Query(t, "i", "", `Set(100, x=2)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `Set(100, x=2)`); err != nil {
} else if _, err := m.Query(t, "i", "", `Set(100, x=2)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `Set(100, neg=3)`); err != nil {
} else if _, err := m.Query(t, "i", "", `Set(100, neg=3)`); err != nil {
t.Fatal(err)
}
// Set row attributes.
if _, err := m.Query("i", "", `SetRowAttrs(x, 1, x=100)`); err != nil {
if _, err := m.Query(t, "i", "", `SetRowAttrs(x, 1, x=100)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `SetRowAttrs(x, 2, x=-200)`); err != nil {
} else if _, err := m.Query(t, "i", "", `SetRowAttrs(x, 2, x=-200)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `SetRowAttrs(z, 2, x=300)`); err != nil {
} else if _, err := m.Query(t, "i", "", `SetRowAttrs(z, 2, x=300)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `SetRowAttrs(neg, 3, x=-0.44)`); err != nil {
} else if _, err := m.Query(t, "i", "", `SetRowAttrs(neg, 3, x=-0.44)`); err != nil {
t.Fatal(err)
}
// Query row x/1.
if res, err := m.Query("i", "", `Row(x=1)`); err != nil {
if res, err := m.Query(t, "i", "", `Row(x=1)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{"x":100},"columns":[100]}]}`+"\n" {
t.Fatalf("unexpected result: %s", res)
}
// Query row x/2.
if res, err := m.Query("i", "", `Row(x=2)`); err != nil {
if res, err := m.Query(t, "i", "", `Row(x=2)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{"x":-200},"columns":[100]}]}`+"\n" {
t.Fatalf("unexpected result: %s", res)
@ -182,19 +182,19 @@ func TestMain_SetRowAttrs(t *testing.T) {
}
// Query rows after reopening.
if res, err := m.Query("i", "columnAttrs=true", `Row(x=1)`); err != nil {
if res, err := m.Query(t, "i", "columnAttrs=true", `Row(x=1)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{"x":100},"columns":[100]}]}`+"\n" {
t.Fatalf("unexpected result(reopen): %s", res)
}
if res, err := m.Query("i", "columnAttrs=true", `Row(neg=3)`); err != nil {
if res, err := m.Query(t, "i", "columnAttrs=true", `Row(neg=3)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{"x":-0.44},"columns":[100]}]}`+"\n" {
t.Fatalf("unexpected result(reopen): %s", res)
}
// Query row x/2.
if res, err := m.Query("i", "", `Row(x=2)`); err != nil {
if res, err := m.Query(t, "i", "", `Row(x=2)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{"x":-200},"columns":[100]}]}`+"\n" {
t.Fatalf("unexpected result: %s", res)
@ -203,7 +203,7 @@ func TestMain_SetRowAttrs(t *testing.T) {
// Ensure program can set column attributes and retrieve them.
func TestMain_SetColumnAttrs(t *testing.T) {
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
// Create fields.
@ -215,19 +215,19 @@ func TestMain_SetColumnAttrs(t *testing.T) {
}
// Set columns on row.
if _, err := m.Query("i", "", `Set(100, x=1)`); err != nil {
if _, err := m.Query(t, "i", "", `Set(100, x=1)`); err != nil {
t.Fatal(err)
} else if _, err := m.Query("i", "", `Set(101, x=1)`); err != nil {
} else if _, err := m.Query(t, "i", "", `Set(101, x=1)`); err != nil {
t.Fatal(err)
}
// Set column attributes.
if _, err := m.Query("i", "", `SetColumnAttrs(100, foo="bar")`); err != nil {
if _, err := m.Query(t, "i", "", `SetColumnAttrs(100, foo="bar")`); err != nil {
t.Fatal(err)
}
// Query row.
if res, err := m.Query("i", "columnAttrs=true", `Row(x=1)`); err != nil {
if res, err := m.Query(t, "i", "columnAttrs=true", `Row(x=1)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{},"columns":[100,101]}],"columnAttrs":[{"id":100,"attrs":{"foo":"bar"}}]}`+"\n" {
t.Fatalf("unexpected result: %s", res)
@ -238,7 +238,7 @@ func TestMain_SetColumnAttrs(t *testing.T) {
}
// Query row after reopening.
if res, err := m.Query("i", "columnAttrs=true", `Row(x=1)`); err != nil {
if res, err := m.Query(t, "i", "columnAttrs=true", `Row(x=1)`); err != nil {
t.Fatal(err)
} else if res != `{"results":[{"attrs":{},"columns":[100,101]}],"columnAttrs":[{"id":100,"attrs":{"foo":"bar"}}]}`+"\n" {
t.Fatalf("unexpected result(reopen): %s", res)
@ -246,7 +246,7 @@ func TestMain_SetColumnAttrs(t *testing.T) {
}
func TestMain_GroupBy(t *testing.T) {
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
// Create fields.
@ -279,7 +279,7 @@ func TestMain_GroupBy(t *testing.T) {
`
// Set columns on row.
if _, err := m.Query("i", "", query); err != nil {
if _, err := m.Query(t, "i", "", query); err != nil {
t.Fatal(err)
}
@ -299,7 +299,7 @@ func TestMain_GroupBy(t *testing.T) {
}
func TestMain_MinMaxFloat(t *testing.T) {
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
// Create fields.
@ -317,7 +317,7 @@ func TestMain_MinMaxFloat(t *testing.T) {
`
// Set columns on row.
if _, err := m.Query("i", "", query); err != nil {
if _, err := m.Query(t, "i", "", query); err != nil {
t.Fatal(err)
}
@ -396,12 +396,12 @@ func TestMain_RecalculateHashes(t *testing.T) {
data = append(data, fmt.Sprintf(`Set(%d, f=%d)`, columnID, rowID))
}
}
if _, err := cluster[0].Query("i", "", strings.Join(data, "")); err != nil {
if _, err := cluster[0].Query(t, "i", "", strings.Join(data, "")); err != nil {
t.Fatal("setting columns:", err)
}
// Calculate caches on the first node
err := cluster[0].RecalculateCaches()
err := cluster[0].RecalculateCaches(t)
if err != nil {
t.Fatalf("recalculating caches: %v", err)
}
@ -410,7 +410,7 @@ func TestMain_RecalculateHashes(t *testing.T) {
// Run a TopN query on all nodes. The result should be the same as the target.
for _, m := range cluster {
res, err := m.Query("i", "", `TopN(f)`)
res, err := m.Query(t, "i", "", `TopN(f)`)
if err != nil {
t.Fatal(err)
}
@ -737,7 +737,7 @@ func TestRemoveConcurrentIndexCreation(t *testing.T) {
// Ensure program imports timestamps as UTC.
func TestMain_ImportTimestamp(t *testing.T) {
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
indexName := "i"
@ -789,7 +789,7 @@ func TestMain_ImportTimestamp(t *testing.T) {
}
func TestMain_ImportTimestampNoStandardView(t *testing.T) {
m := test.MustRunCommand()
m := test.RunCommand(t)
defer m.Close()
indexName := "i"
@ -1028,7 +1028,7 @@ func TestClusterMinMaxSumDecimal(t *testing.T) {
cmd.MustCreateIndex(t, "testdec", pilosa.IndexOptions{Keys: true, TrackExistence: true})
cmd.MustCreateField(t, "testdec", "adec", pilosa.OptFieldTypeDecimal(2))
test.MustDo("POST", cluster[0].URL()+"/index/testdec/query", `
test.Do(t, "POST", cluster[0].URL()+"/index/testdec/query", `
Set("a", adec=42.2)
Set("b", adec=11.12)
Set("c", adec=13.41)
@ -1039,21 +1039,21 @@ Set("g", adec=15.52)
Set("h", adec=100.22)
`)
result := test.MustDo("POST", cluster[0].URL()+"/index/testdec/query", "Sum(field=adec)")
result := test.Do(t, "POST", cluster[0].URL()+"/index/testdec/query", "Sum(field=adec)")
if !strings.Contains(result.Body, `"floatValue":305.59`) {
t.Fatalf("expected float sum of 305.59, but got: '%s'", result.Body)
} else if !strings.Contains(result.Body, `"count":8`) {
t.Fatalf("expected count 8, but got: '%s'", result.Body)
}
result = test.MustDo("POST", cluster[0].URL()+"/index/testdec/query", "Max(field=adec)")
result = test.Do(t, "POST", cluster[0].URL()+"/index/testdec/query", "Max(field=adec)")
if !strings.Contains(result.Body, `"floatValue":100.22`) {
t.Fatalf("expected float max of 100.22, but got: '%s'", result.Body)
} else if !strings.Contains(result.Body, `"count":1`) {
t.Fatalf("expected count 1, but got: '%s'", result.Body)
}
result = test.MustDo("POST", cluster[0].URL()+"/index/testdec/query", "Min(field=adec)")
result = test.Do(t, "POST", cluster[0].URL()+"/index/testdec/query", "Min(field=adec)")
if !strings.Contains(result.Body, `"floatValue":11.12`) {
t.Fatalf("expected float min of 11.12, but got: '%s'", result.Body)
} else if !strings.Contains(result.Body, `"count":1`) {

View file

@ -99,13 +99,14 @@ func NewCommandNode(isCoordinator bool, opts ...server.CommandOption) *Command {
return m
}
// MustRunCommand returns a new, running Main. Panic on error.
func MustRunCommand() *Command {
// RunCommand returns a new, running Main. Panic on error.
func RunCommand(t *testing.T) *Command {
t.Helper()
m := newCommand(server.OptCommandServerOptions(pilosa.OptServerOpenTranslateStore(pilosa.OpenInMemTranslateStore)))
m.Config.Metric.Diagnostics = false // Disable diagnostics.
m.Config.Gossip.Port = "0"
if err := m.Start(); err != nil {
panic(err)
t.Fatal(err)
}
return m
}
@ -174,9 +175,9 @@ func (m *Command) MustCreateField(tb testing.TB, index, field string, opts ...pi
return f
}
// MustQuery uses this command's API to execute the given query request, failing
// QueryAPI uses this command's API to execute the given query request, failing
// if Query returns a non-nil error, otherwise returning the QueryResponse.
func (m *Command) MustQuery(tb testing.TB, req *pilosa.QueryRequest) pilosa.QueryResponse {
func (m *Command) QueryAPI(tb testing.TB, req *pilosa.QueryRequest) pilosa.QueryResponse {
tb.Helper()
resp, err := m.API.Query(context.Background(), req)
if err != nil {
@ -203,8 +204,8 @@ func (m *Command) Client() *http.InternalClient {
}
// Query executes a query against the program through the HTTP API.
func (m *Command) Query(index, rawQuery, query string) (string, error) {
resp := MustDo("POST", m.URL()+fmt.Sprintf("/index/%s/query?", index)+rawQuery, query)
func (m *Command) Query(t *testing.T, index, rawQuery, query string) (string, error) {
resp := Do(t, "POST", m.URL()+fmt.Sprintf("/index/%s/query?", index)+rawQuery, query)
if resp.StatusCode != gohttp.StatusOK {
return "", fmt.Errorf("invalid status: %d, body=%s", resp.StatusCode, resp.Body)
}
@ -255,8 +256,8 @@ func (m *Command) QueryProtobuf(indexName string, query string) (*pilosa.QueryRe
}
// RecalculateCaches is deprecated. Use MustRecalculateCaches.
func (m *Command) RecalculateCaches() error {
resp := MustDo("POST", fmt.Sprintf("%s/recalculate-caches", m.URL()), "")
func (m *Command) RecalculateCaches(t *testing.T) error {
resp := Do(t, "POST", fmt.Sprintf("%s/recalculate-caches", m.URL()), "")
if resp.StatusCode != 204 {
return fmt.Errorf("invalid status: %d, body=%s", resp.StatusCode, resp.Body)
}
@ -274,7 +275,7 @@ func (c Cluster) Query(t testing.TB, index, query string) pilosa.QueryResponse {
t.Fatal("must have at least one node in cluster to query")
}
return c[0].MustQuery(t, &pilosa.QueryRequest{Index: index, Query: query})
return c[0].QueryAPI(t, &pilosa.QueryRequest{Index: index, Query: query})
}
func (c Cluster) ImportBits(t testing.TB, index, field string, rowcols [][2]uint64) {
@ -454,15 +455,16 @@ func prependWithMemStore(opts []server.CommandOption) []server.CommandOption {
////////////////////////////////////////////////////////////////////////////////////
// MustDo executes http.Do() with an http.NewRequest(). Panic on error.
func MustDo(method, urlStr string, body string) *httpResponse {
// Do executes http.Do() with an http.NewRequest().
func Do(t *testing.T, method, urlStr string, body string) *httpResponse {
t.Helper()
req, err := gohttp.NewRequest(
method,
urlStr,
strings.NewReader(body),
)
if err != nil {
panic(err)
t.Fatal(err)
}
req.Header.Set("Content-Type", "application/json")
@ -470,13 +472,13 @@ func MustDo(method, urlStr string, body string) *httpResponse {
resp, err := gohttp.DefaultClient.Do(req)
if err != nil {
panic(err)
t.Fatal(err)
}
defer resp.Body.Close()
buf, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
t.Fatal(err)
}
return &httpResponse{Response: resp, Body: string(buf)}