Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(680)

Side by Side Diff: impl/memory/taskqueue_test.go

Issue 1285703002: Add testable interface for datastore. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: fixes after Raw change Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « impl/memory/datastore_test.go ('k') | impl/memory/testing_utils_test.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package memory 5 package memory
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 "math/rand" 9 "math/rand"
10 "net/http" 10 "net/http"
(...skipping 13 matching lines...) Expand all
24 func TestTaskQueue(t *testing.T) { 24 func TestTaskQueue(t *testing.T) {
25 t.Parallel() 25 t.Parallel()
26 26
27 Convey("TaskQueue", t, func() { 27 Convey("TaskQueue", t, func() {
28 now := time.Date(2000, time.January, 1, 1, 1, 1, 1, time.UTC) 28 now := time.Date(2000, time.January, 1, 1, 1, 1, 1, time.UTC)
29 c, tc := testclock.UseTime(context.Background(), now) 29 c, tc := testclock.UseTime(context.Background(), now)
30 c = mathrand.Set(c, rand.New(rand.NewSource(clock.Now(c).UnixNan o()))) 30 c = mathrand.Set(c, rand.New(rand.NewSource(clock.Now(c).UnixNan o())))
31 c = Use(c) 31 c = Use(c)
32 32
33 tq := tqS.Get(c) 33 tq := tqS.Get(c)
34 » » tqt := tq.Testable() 34 » » tqt := tq.Raw().Testable()
35 So(tqt, ShouldNotBeNil) 35 So(tqt, ShouldNotBeNil)
36 36
37 So(tq, ShouldNotBeNil) 37 So(tq, ShouldNotBeNil)
38 38
39 Convey("implements TQMultiReadWriter", func() { 39 Convey("implements TQMultiReadWriter", func() {
40 Convey("Add", func() { 40 Convey("Add", func() {
41 t := tq.NewTask("/hello/world") 41 t := tq.NewTask("/hello/world")
42 42
43 Convey("works", func() { 43 Convey("works", func() {
44 t.Delay = 4 * time.Second 44 t.Delay = 4 * time.Second
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 t := &tqS.Task{Path: "/hello/world"} 239 t := &tqS.Task{Path: "/hello/world"}
240 So(tq.Add(t, ""), ShouldBeNil) 240 So(tq.Add(t, ""), ShouldBeNil)
241 241
242 t2 := &tqS.Task{Path: "/hi/city"} 242 t2 := &tqS.Task{Path: "/hi/city"}
243 So(tq.Add(t2, ""), ShouldBeNil) 243 So(tq.Add(t2, ""), ShouldBeNil)
244 244
245 So(tq.Delete(t2, ""), ShouldBeNil) 245 So(tq.Delete(t2, ""), ShouldBeNil)
246 246
247 Convey("can view regular tasks", func() { 247 Convey("can view regular tasks", func() {
248 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error { 248 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error {
249 » » » » » tqt := tqS.Get(c).Testable() 249 » » » » » tqt := tqS.GetRaw(c).Testable()
250 250
251 So(tqt.GetScheduledTasks()["default"][t. Name], ShouldResemble, t) 251 So(tqt.GetScheduledTasks()["default"][t. Name], ShouldResemble, t)
252 So(tqt.GetTombstonedTasks()["default"][t 2.Name], ShouldResemble, t2) 252 So(tqt.GetTombstonedTasks()["default"][t 2.Name], ShouldResemble, t2)
253 So(tqt.GetTransactionTasks()["default"], ShouldBeNil) 253 So(tqt.GetTransactionTasks()["default"], ShouldBeNil)
254 return nil 254 return nil
255 }, nil) 255 }, nil)
256 }) 256 })
257 257
258 Convey("can add a new task", func() { 258 Convey("can add a new task", func() {
259 t3 := &tqS.Task{Path: "/sandwitch/victory"} 259 t3 := &tqS.Task{Path: "/sandwitch/victory"}
260 260
261 err := dsS.Get(c).RunInTransaction(func(c contex t.Context) error { 261 err := dsS.Get(c).RunInTransaction(func(c contex t.Context) error {
262 tq := tqS.Get(c) 262 tq := tqS.Get(c)
263 » » » » » tqt := tq.Testable() 263 » » » » » tqt := tq.Raw().Testable()
264 264
265 So(tq.Add(t3, ""), ShouldBeNil) 265 So(tq.Add(t3, ""), ShouldBeNil)
266 So(t3.Name, ShouldEqual, "") 266 So(t3.Name, ShouldEqual, "")
267 267
268 So(tqt.GetScheduledTasks()["default"][t. Name], ShouldResemble, t) 268 So(tqt.GetScheduledTasks()["default"][t. Name], ShouldResemble, t)
269 So(tqt.GetTombstonedTasks()["default"][t 2.Name], ShouldResemble, t2) 269 So(tqt.GetTombstonedTasks()["default"][t 2.Name], ShouldResemble, t2)
270 So(tqt.GetTransactionTasks()["default"][ 0], ShouldResemble, t3) 270 So(tqt.GetTransactionTasks()["default"][ 0], ShouldResemble, t3)
271 return nil 271 return nil
272 }, nil) 272 }, nil)
273 So(err, ShouldBeNil) 273 So(err, ShouldBeNil)
(...skipping 11 matching lines...) Expand all
285 So(tqt.GetTransactionTasks()["default"], ShouldB eNil) 285 So(tqt.GetTransactionTasks()["default"], ShouldB eNil)
286 }) 286 })
287 287
288 Convey("can add a new task (but reset the state in a tes t)", func() { 288 Convey("can add a new task (but reset the state in a tes t)", func() {
289 t3 := &tqS.Task{Path: "/sandwitch/victory"} 289 t3 := &tqS.Task{Path: "/sandwitch/victory"}
290 290
291 ttq := tqS.Interface(nil) 291 ttq := tqS.Interface(nil)
292 292
293 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error { 293 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error {
294 ttq = tqS.Get(c) 294 ttq = tqS.Get(c)
295 » » » » » tqt := ttq.Testable() 295 » » » » » tqt := ttq.Raw().Testable()
296 296
297 So(ttq.Add(t3, ""), ShouldBeNil) 297 So(ttq.Add(t3, ""), ShouldBeNil)
298 298
299 So(tqt.GetScheduledTasks()["default"][t. Name], ShouldResemble, t) 299 So(tqt.GetScheduledTasks()["default"][t. Name], ShouldResemble, t)
300 So(tqt.GetTombstonedTasks()["default"][t 2.Name], ShouldResemble, t2) 300 So(tqt.GetTombstonedTasks()["default"][t 2.Name], ShouldResemble, t2)
301 So(tqt.GetTransactionTasks()["default"][ 0], ShouldResemble, t3) 301 So(tqt.GetTransactionTasks()["default"][ 0], ShouldResemble, t3)
302 302
303 tqt.ResetTasks() 303 tqt.ResetTasks()
304 304
305 So(len(tqt.GetScheduledTasks()["default" ]), ShouldEqual, 0) 305 So(len(tqt.GetScheduledTasks()["default" ]), ShouldEqual, 0)
306 So(len(tqt.GetTombstonedTasks()["default "]), ShouldEqual, 0) 306 So(len(tqt.GetTombstonedTasks()["default "]), ShouldEqual, 0)
307 So(len(tqt.GetTransactionTasks()["defaul t"]), ShouldEqual, 0) 307 So(len(tqt.GetTransactionTasks()["defaul t"]), ShouldEqual, 0)
308 308
309 return nil 309 return nil
310 }, nil) 310 }, nil)
311 311
312 So(len(tqt.GetScheduledTasks()["default"]), Shou ldEqual, 0) 312 So(len(tqt.GetScheduledTasks()["default"]), Shou ldEqual, 0)
313 So(len(tqt.GetTombstonedTasks()["default"]), Sho uldEqual, 0) 313 So(len(tqt.GetTombstonedTasks()["default"]), Sho uldEqual, 0)
314 So(len(tqt.GetTransactionTasks()["default"]), Sh ouldEqual, 0) 314 So(len(tqt.GetTransactionTasks()["default"]), Sh ouldEqual, 0)
315 315
316 Convey("and reusing a closed context is bad time s", func() { 316 Convey("and reusing a closed context is bad time s", func() {
317 So(ttq.Add(nil, "").Error(), ShouldConta inSubstring, "expired") 317 So(ttq.Add(nil, "").Error(), ShouldConta inSubstring, "expired")
318 }) 318 })
319 }) 319 })
320 320
321 Convey("you can AddMulti as well", func() { 321 Convey("you can AddMulti as well", func() {
322 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error { 322 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error {
323 tq := tqS.Get(c) 323 tq := tqS.Get(c)
324 » » » » » tqt := tq.Testable() 324 » » » » » tqt := tq.Raw().Testable()
325 325
326 t.Name = "" 326 t.Name = ""
327 tasks := []*tqS.Task{t.Duplicate(), t.Du plicate(), t.Duplicate()} 327 tasks := []*tqS.Task{t.Duplicate(), t.Du plicate(), t.Duplicate()}
328 So(tq.AddMulti(tasks, ""), ShouldBeNil) 328 So(tq.AddMulti(tasks, ""), ShouldBeNil)
329 So(len(tqt.GetScheduledTasks()["default" ]), ShouldEqual, 1) 329 So(len(tqt.GetScheduledTasks()["default" ]), ShouldEqual, 1)
330 So(len(tqt.GetTransactionTasks()["defaul t"]), ShouldEqual, 3) 330 So(len(tqt.GetTransactionTasks()["defaul t"]), ShouldEqual, 3)
331 return nil 331 return nil
332 }, nil) 332 }, nil)
333 So(len(tqt.GetScheduledTasks()["default"]), Shou ldEqual, 4) 333 So(len(tqt.GetScheduledTasks()["default"]), Shou ldEqual, 4)
334 So(len(tqt.GetTransactionTasks()["default"]), Sh ouldEqual, 0) 334 So(len(tqt.GetTransactionTasks()["default"]), Sh ouldEqual, 0)
335 }) 335 })
336 336
337 Convey("unless you add too many things", func() { 337 Convey("unless you add too many things", func() {
338 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error { 338 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error {
339 for i := 0; i < 5; i++ { 339 for i := 0; i < 5; i++ {
340 So(tqS.Get(c).Add(t.Duplicate(), ""), ShouldBeNil) 340 So(tqS.Get(c).Add(t.Duplicate(), ""), ShouldBeNil)
341 } 341 }
342 So(tqS.Get(c).Add(t, "").Error(), Should ContainSubstring, "BAD_REQUEST") 342 So(tqS.Get(c).Add(t, "").Error(), Should ContainSubstring, "BAD_REQUEST")
343 return nil 343 return nil
344 }, nil) 344 }, nil)
345 }) 345 })
346 346
347 Convey("unless you Add to a bad queue", func() { 347 Convey("unless you Add to a bad queue", func() {
348 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error { 348 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error {
349 So(tqS.Get(c).Add(t, "meat").Error(), Sh ouldContainSubstring, "UNKNOWN_QUEUE") 349 So(tqS.Get(c).Add(t, "meat").Error(), Sh ouldContainSubstring, "UNKNOWN_QUEUE")
350 350
351 Convey("unless you add it!", func() { 351 Convey("unless you add it!", func() {
352 » » » » » » tqS.Get(c).Testable().CreateQueu e("meat") 352 » » » » » » tqS.GetRaw(c).Testable().CreateQ ueue("meat")
353 So(tqS.Get(c).Add(t, "meat"), Sh ouldBeNil) 353 So(tqS.Get(c).Add(t, "meat"), Sh ouldBeNil)
354 }) 354 })
355 355
356 return nil 356 return nil
357 }, nil) 357 }, nil)
358 }) 358 })
359 359
360 Convey("No other features are available, however", func( ) { 360 Convey("No other features are available, however", func( ) {
361 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error { 361 dsS.Get(c).RunInTransaction(func(c context.Conte xt) error {
362 So(tqS.Get(c).Delete(t, "").Error(), Sho uldContainSubstring, "cannot DeleteMulti from a transaction") 362 So(tqS.Get(c).Delete(t, "").Error(), Sho uldContainSubstring, "cannot DeleteMulti from a transaction")
(...skipping 29 matching lines...) Expand all
392 }() 392 }()
393 393
394 So(tqt.GetScheduledTasks()["default"][t.Name], S houldResemble, t) 394 So(tqt.GetScheduledTasks()["default"][t.Name], S houldResemble, t)
395 So(tqt.GetTombstonedTasks()["default"][t2.Name], ShouldResemble, t2) 395 So(tqt.GetTombstonedTasks()["default"][t2.Name], ShouldResemble, t2)
396 So(tqt.GetTransactionTasks()["default"], ShouldB eNil) 396 So(tqt.GetTransactionTasks()["default"], ShouldB eNil)
397 }) 397 })
398 398
399 }) 399 })
400 }) 400 })
401 } 401 }
OLDNEW
« no previous file with comments | « impl/memory/datastore_test.go ('k') | impl/memory/testing_utils_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698