(b *testing.B)
| 66 | }` |
| 67 | |
| 68 | func BenchmarkReadOps_Get(b *testing.B) { |
| 69 | |
| 70 | base.DisableTestLogging(b) |
| 71 | |
| 72 | rt := NewRestTesterDefaultCollection(b, nil) // use non default in CBG-2618 |
| 73 | defer rt.Close() |
| 74 | defer PurgeDoc(rt, "doc1k") |
| 75 | |
| 76 | doc1k_putDoc := fmt.Sprintf(doc_1k_format, "") |
| 77 | response := rt.SendAdminRequest("PUT", "/{{.keyspace}}/doc1k", doc1k_putDoc) |
| 78 | var body db.Body |
| 79 | require.NoError(b, base.JSONUnmarshal(response.Body.Bytes(), &body)) |
| 80 | revid := body["rev"].(string) |
| 81 | |
| 82 | // Create user |
| 83 | username := "user1" |
| 84 | rt.SendAdminRequest("PUT", "/{{.db}}/_user/"+username, fmt.Sprintf(`{"name":"%s", "password":"letmein", "admin_channels":["channel_1"]}`, username)) |
| 85 | |
| 86 | getBenchmarks := []struct { |
| 87 | name string |
| 88 | URI string |
| 89 | asUser string |
| 90 | }{ |
| 91 | {"Admin_Simple", "/{{.keyspace}}/doc1k", ""}, |
| 92 | {"Admin_WithRev", "/{{.keyspace}}/doc1k?rev=" + revid, ""}, |
| 93 | {"Admin_OpenRevsAll", "/{{.keyspace}}/doc1k?open_revs=all&rev=" + revid, ""}, |
| 94 | {"User_Simple", "/{{.keyspace}}/doc1k", username}, |
| 95 | {"User_WithRev", "/{{.keyspace}}/doc1k?rev=" + revid, username}, |
| 96 | {"User_OpenRevsAll", "/{{.keyspace}}/doc1k?open_revs=all&rev=" + revid, username}, |
| 97 | } |
| 98 | |
| 99 | for _, bm := range getBenchmarks { |
| 100 | b.Run(bm.name, func(b *testing.B) { |
| 101 | var getResponse *TestResponse |
| 102 | for i := 0; i < b.N; i++ { |
| 103 | if bm.asUser == "" { |
| 104 | getResponse = rt.SendAdminRequest("GET", bm.URI, "") |
| 105 | } else { |
| 106 | getResponse = rt.SendUserRequest("GET", bm.URI, "", bm.asUser) |
| 107 | } |
| 108 | b.StopTimer() |
| 109 | if getResponse.Code != 200 { |
| 110 | log.Printf("Unexpected response status code: %d", getResponse.Code) |
| 111 | panic("here") |
| 112 | } |
| 113 | b.StartTimer() |
| 114 | } |
| 115 | }) |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Benchmark 100% rev cache miss scenario |
| 120 | func BenchmarkReadOps_GetRevCacheMisses(b *testing.B) { |
nothing calls this directly
no test coverage detected