MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / BenchmarkReadOps_RevsDiff

Function BenchmarkReadOps_RevsDiff

rest/api_benchmark_test.go:262–318  ·  view source on GitHub ↗
(b *testing.B)

Source from the content-addressed store, hash-verified

260}
261
262func BenchmarkReadOps_RevsDiff(b *testing.B) {
263
264 base.DisableTestLogging(b)
265
266 rt := NewRestTester(b, nil)
267 defer rt.Close()
268 defer PurgeDoc(rt, "doc1k")
269
270 // Create target doc for revs_diff:
271 doc1k_bulkDocs_meta := `"_id":"doc1k",
272 "_rev":"12-abc",
273 "_revisions":{
274 "start": 12,
275 "ids": ["abc", "eleven", "ten", "nine"]
276 },`
277
278 doc1k_bulkDocs_entry := fmt.Sprintf(doc_1k_format, doc1k_bulkDocs_meta)
279 bulkDocs_body := fmt.Sprintf(`{"new_edits":false, "docs": [%s]}`, doc1k_bulkDocs_entry)
280 response := rt.SendAdminRequest("POST", "/{{.keyspace}}/_bulk_docs", bulkDocs_body)
281 if response.Code != 201 {
282 log.Printf("Unexpected response: %d", response.Code)
283 log.Printf("Response:%s", response.Body.Bytes())
284 }
285
286 // Create user
287 username := "user1"
288 rt.SendAdminRequest("PUT", fmt.Sprintf("/{{.db}}/_user/%s", username), fmt.Sprintf(`{"name":"%s", "password":"letmein", "admin_channels":["channel_1"]}`, username))
289
290 revsDiffBody := `{"doc1k": ["10-ten", "9-nine"]}`
291 revsDiffBenchmarks := []struct {
292 name string
293 URI string
294 asUser string
295 }{
296 {"Admin", "/{{.keyspace}}/_revs_diff", ""},
297 {"User", "/{{.keyspace}}/_revs_diff", username},
298 }
299
300 for _, bm := range revsDiffBenchmarks {
301 b.Run(bm.name, func(b *testing.B) {
302 var getResponse *TestResponse
303 for i := 0; i < b.N; i++ {
304 if bm.asUser == "" {
305 getResponse = rt.SendAdminRequest("POST", bm.URI, revsDiffBody)
306 } else {
307 getResponse = rt.SendUserRequest("POST", bm.URI, revsDiffBody, bm.asUser)
308 }
309 b.StopTimer()
310 if getResponse.Code != 200 {
311 b.Logf("Unexpected response: %v", getResponse)
312 }
313 b.StartTimer()
314 }
315 })
316 }
317
318}
319

Callers

nothing calls this directly

Calls 8

CloseMethod · 0.95
SendAdminRequestMethod · 0.95
SendUserRequestMethod · 0.95
DisableTestLoggingFunction · 0.92
NewRestTesterFunction · 0.85
PurgeDocFunction · 0.85
RunMethod · 0.65
LogfMethod · 0.45

Tested by

no test coverage detected