For MongoDB < 3.0 explain is not supported

This commit is contained in:
Kamil Dziedzic
2017-08-31 21:05:00 +02:00
parent 8785890189
commit 9af30c010e
2 changed files with 45 additions and 87 deletions

View File

@@ -37,90 +37,6 @@ func TestMain(m *testing.M) {
func TestExplain(t *testing.T) {
t.Parallel()
dir := vars.RootPath + samples + "/doc/out/"
files, err := ioutil.ReadDir(dir)
if err != nil {
t.Fatalf("cannot list samples: %s", err)
}
expectError := map[string]string{
"aggregate_2.6.12": "Cannot explain cmd: aggregate",
"aggregate_3.0.15": "Cannot explain cmd: aggregate",
"aggregate_3.2.16": "Cannot explain cmd: aggregate",
"aggregate_3.4.7": "Cannot explain cmd: aggregate",
"aggregate_3.5.11": "Cannot explain cmd: aggregate",
"count_2.6.12": "<nil>",
"count_3.0.15": "<nil>",
"count_3.2.16": "<nil>",
"count_3.4.7": "<nil>",
"count_3.5.11": "<nil>",
"count_with_query_2.6.12": "<nil>",
"count_with_query_3.0.15": "<nil>",
"count_with_query_3.2.16": "<nil>",
"count_with_query_3.4.7": "<nil>",
"count_with_query_3.5.11": "<nil>",
"delete_2.6.12": "<nil>",
"delete_3.0.15": "<nil>",
"delete_3.2.16": "<nil>",
"delete_3.4.7": "<nil>",
"delete_3.5.11": "<nil>",
"delete_all_2.6.12": "<nil>",
"delete_all_3.0.15": "<nil>",
"delete_all_3.2.16": "<nil>",
"delete_all_3.4.7": "<nil>",
"delete_all_3.5.11": "<nil>",
"distinct_2.6.12": "<nil>",
"distinct_3.0.15": "<nil>",
"distinct_3.2.16": "<nil>",
"distinct_3.4.7": "<nil>",
"distinct_3.5.11": "<nil>",
"find_empty_2.6.12": "<nil>",
"find_empty_3.0.15": "<nil>",
"find_empty_3.2.16": "<nil>",
"find_empty_3.4.7": "<nil>",
"find_empty_3.5.11": "<nil>",
"find_2.6.12": "<nil>",
"find_3.0.15": "<nil>",
"find_3.2.16": "<nil>",
"find_3.4.7": "<nil>",
"find_3.5.11": "<nil>",
"find_andrii_2.6.12": "<nil>",
"find_andrii_3.0.15": "<nil>",
"find_andrii_3.2.16": "<nil>",
"find_andrii_3.4.7": "<nil>",
"find_andrii_3.5.11": "<nil>",
"findandmodify_2.6.12": "<nil>",
"findandmodify_3.0.15": "<nil>",
"findandmodify_3.2.16": "<nil>",
"findandmodify_3.4.7": "<nil>",
"findandmodify_3.5.11": "<nil>",
"geonear_2.6.12": "Cannot explain cmd: geoNear",
"geonear_3.0.15": "Cannot explain cmd: geoNear",
"geonear_3.2.16": "Cannot explain cmd: geoNear",
"geonear_3.4.7": "Cannot explain cmd: geoNear",
"geonear_3.5.11": "Cannot explain cmd: geoNear",
"group_2.6.12": "<nil>",
"group_3.0.15": "<nil>",
"group_3.2.16": "<nil>",
"group_3.4.7": "<nil>",
"group_3.5.11": "<nil>",
"insert_2.6.12": "Cannot explain cmd: insert",
"insert_3.0.15": "Cannot explain cmd: insert",
"insert_3.2.16": "Cannot explain cmd: insert",
"insert_3.4.7": "Cannot explain cmd: insert",
"insert_3.5.11": "Cannot explain cmd: insert",
"mapreduce_2.6.12": "Cannot explain cmd: mapReduce",
"mapreduce_3.0.15": "Cannot explain cmd: mapReduce",
"mapreduce_3.2.16": "Cannot explain cmd: mapReduce",
"mapreduce_3.4.7": "Cannot explain cmd: mapReduce",
"mapreduce_3.5.11": "Cannot explain cmd: mapReduce",
"update_2.6.12": "<nil>",
"update_3.0.15": "<nil>",
"update_3.2.16": "<nil>",
"update_3.4.7": "<nil>",
"update_3.5.11": "<nil>",
}
dialer := pmgo.NewDialer()
dialInfo, err := pmgo.ParseURL("")
if err != nil {
@@ -133,6 +49,12 @@ func TestExplain(t *testing.T) {
}
defer session.Close()
dir := vars.RootPath + samples + "/doc/out/"
files, err := ioutil.ReadDir(dir)
if err != nil {
t.Fatalf("cannot list samples: %s", err)
}
bi, err := session.BuildInfo()
if err != nil {
t.Fatalf("cannot get BuildInfo: %s", err)
@@ -146,10 +68,45 @@ func TestExplain(t *testing.T) {
"3.5.11",
}
// For versions < 3.4 trying to explain "insert" returns different error
if ok, _ := Constraint("< 3.4", bi.Version); ok {
samples := map[string]string{
"aggregate": "Cannot explain cmd: aggregate",
"count": "<nil>",
"count_with_query": "<nil>",
"delete": "<nil>",
"delete_all": "<nil>",
"distinct": "<nil>",
"find_empty": "<nil>",
"find": "<nil>",
"find_andrii": "<nil>",
"findandmodify": "<nil>",
"geonear": "Cannot explain cmd: geoNear",
"group": "<nil>",
"insert": "Cannot explain cmd: insert",
"mapreduce": "Cannot explain cmd: mapReduce",
"update": "<nil>",
}
expectError := map[string]string{}
// For versions < 3.0 explain is not supported
if ok, _ := Constraint("< 3.0", bi.Version); ok {
for _, v := range versions {
expectError["insert_"+v] = "Only update and delete write ops can be explained"
for sample := range samples {
expectError[sample+"_"+v] = "no such cmd: explain"
}
}
} else {
for _, v := range versions {
for sample, msg := range samples {
expectError[sample+"_"+v] = msg
}
}
// For versions >= 3.0, < 3.4 trying to explain "insert" returns different error
if ok, _ := Constraint(">= 3.0, < 3.4", bi.Version); ok {
for _, v := range versions {
expectError["insert_"+v] = "Only update and delete write ops can be explained"
}
}
}