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

Side by Side Diff: appengine/cmd/dm/deps/finish_attempt_test.go

Issue 1537883002: Initial distributor implementation (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: fix imports and make dummy.go a real file Created 4 years, 6 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 | « appengine/cmd/dm/deps/finish_attempt.go ('k') | appengine/cmd/dm/deps/service.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 LUCI Authors. All rights reserved. 1 // Copyright 2015 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package deps 5 package deps
6 6
7 import ( 7 import (
8 "testing" 8 "testing"
9 9
10 "github.com/luci/gae/impl/memory"
11 "github.com/luci/gae/service/datastore" 10 "github.com/luci/gae/service/datastore"
12 "github.com/luci/luci-go/appengine/cmd/dm/model" 11 "github.com/luci/luci-go/appengine/cmd/dm/model"
13 "github.com/luci/luci-go/common/api/dm/service/v1" 12 "github.com/luci/luci-go/common/api/dm/service/v1"
14 "github.com/luci/luci-go/common/clock/testclock" 13 "github.com/luci/luci-go/common/clock/testclock"
15 google_pb "github.com/luci/luci-go/common/proto/google" 14 google_pb "github.com/luci/luci-go/common/proto/google"
16 . "github.com/luci/luci-go/common/testing/assertions" 15 . "github.com/luci/luci-go/common/testing/assertions"
17 . "github.com/smartystreets/goconvey/convey" 16 . "github.com/smartystreets/goconvey/convey"
18 "golang.org/x/net/context"
19 ) 17 )
20 18
21 func TestFinishAttempt(t *testing.T) { 19 func TestFinishAttempt(t *testing.T) {
22 t.Parallel() 20 t.Parallel()
23 21
24 Convey("FinishAttempt", t, func() { 22 Convey("FinishAttempt", t, func() {
25 » » c := memory.Use(context.Background()) 23 » » _, c, _, s := testSetup()
26 ds := datastore.Get(c) 24 ds := datastore.Get(c)
27 s := newDecoratedDeps()
28 25
29 So(ds.Put(&model.Quest{ID: "quest"}), ShouldBeNil) 26 So(ds.Put(&model.Quest{ID: "quest"}), ShouldBeNil)
30 a := &model.Attempt{ 27 a := &model.Attempt{
31 ID: *dm.NewAttemptID("quest", 1), 28 ID: *dm.NewAttemptID("quest", 1),
32 State: dm.Attempt_EXECUTING, 29 State: dm.Attempt_EXECUTING,
33 CurExecution: 1, 30 CurExecution: 1,
34 } 31 }
32 e := model.ExecutionFromID(c, dm.NewExecutionID("quest", 1, 1))
33 ar := &model.AttemptResult{Attempt: ds.KeyForObj(a)}
35 So(ds.Put(a), ShouldBeNil) 34 So(ds.Put(a), ShouldBeNil)
36 So(ds.Put(&model.Execution{ 35 So(ds.Put(&model.Execution{
37 ID: 1, Attempt: ds.KeyForObj(a), Token: []byte("exKey"), 36 ID: 1, Attempt: ds.KeyForObj(a), Token: []byte("exKey"),
38 State: dm.Execution_RUNNING}), ShouldBeNil) 37 State: dm.Execution_RUNNING}), ShouldBeNil)
39 38
40 req := &dm.FinishAttemptReq{ 39 req := &dm.FinishAttemptReq{
41 Auth: &dm.Execution_Auth{ 40 Auth: &dm.Execution_Auth{
42 Id: dm.NewExecutionID(a.ID.Quest, a.ID.Id, 1) , 41 Id: dm.NewExecutionID(a.ID.Quest, a.ID.Id, 1) ,
43 Token: []byte("exKey"), 42 Token: []byte("exKey"),
44 }, 43 },
45 JsonResult: `{"something": "valid"}`, 44 JsonResult: `{"something": "valid"}`,
46 Expiration: google_pb.NewTimestamp(testclock.TestTimeUTC ), 45 Expiration: google_pb.NewTimestamp(testclock.TestTimeUTC ),
47 } 46 }
48 47
49 Convey("bad", func() { 48 Convey("bad", func() {
50 Convey("bad Token", func() { 49 Convey("bad Token", func() {
51 req.Auth.Token = []byte("fake") 50 req.Auth.Token = []byte("fake")
52 _, err := s.FinishAttempt(c, req) 51 _, err := s.FinishAttempt(c, req)
53 » » » » So(err, ShouldBeRPCUnauthenticated, "execution A uth") 52 » » » » So(err, ShouldBeRPCPermissionDenied, "execution Auth")
54 }) 53 })
55 54
56 Convey("not real json", func() { 55 Convey("not real json", func() {
57 req.JsonResult = `i am not valid json` 56 req.JsonResult = `i am not valid json`
58 _, err := s.FinishAttempt(c, req) 57 _, err := s.FinishAttempt(c, req)
59 So(err, ShouldErrLike, "invalid character 'i'") 58 So(err, ShouldErrLike, "invalid character 'i'")
60 }) 59 })
61 }) 60 })
62 61
63 Convey("good", func() { 62 Convey("good", func() {
64 _, err := s.FinishAttempt(c, req) 63 _, err := s.FinishAttempt(c, req)
65 So(err, ShouldBeNil) 64 So(err, ShouldBeNil)
66 65
67 » » » So(ds.Get(a), ShouldBeNil) 66 » » » So(ds.Get(a, ar, e), ShouldBeNil)
68 » » » So(a.State, ShouldEqual, dm.Attempt_FINISHED) 67 » » » So(a.State, ShouldEqual, dm.Attempt_EXECUTING)
68 » » » So(e.State, ShouldEqual, dm.Execution_STOPPING)
69
70 » » » So(a.ResultSize, ShouldEqual, 21)
71 » » » So(ar.Size, ShouldEqual, 21)
69 }) 72 })
70 73
71 }) 74 })
72 } 75 }
OLDNEW
« no previous file with comments | « appengine/cmd/dm/deps/finish_attempt.go ('k') | appengine/cmd/dm/deps/service.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698