mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-09 14:41:02 +00:00
Merge pull request #206 from corylanou/test-helpers
Make better use of t.Helper
This commit is contained in:
commit
2a4088e0ec
6 changed files with 99 additions and 97 deletions
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)",
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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`) {
|
||||
|
|
|
|||
|
|
@ -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)}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue