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

Side by Side Diff: appengine/cmd/dm/deps/add_deps_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/activate_execution_test.go ('k') | appengine/cmd/dm/deps/common_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 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 "time" 9 "time"
10 10
11 "github.com/luci/gae/service/datastore" 11 "github.com/luci/gae/service/datastore"
12 "github.com/luci/luci-go/appengine/cmd/dm/model" 12 "github.com/luci/luci-go/appengine/cmd/dm/model"
13 "github.com/luci/luci-go/appengine/tumble"
14 "github.com/luci/luci-go/common/api/dm/service/v1" 13 "github.com/luci/luci-go/common/api/dm/service/v1"
15 . "github.com/luci/luci-go/common/testing/assertions" 14 . "github.com/luci/luci-go/common/testing/assertions"
16 . "github.com/smartystreets/goconvey/convey" 15 . "github.com/smartystreets/goconvey/convey"
17 ) 16 )
18 17
19 func TestAddDeps(t *testing.T) { 18 func TestAddDeps(t *testing.T) {
20 t.Parallel() 19 t.Parallel()
21 20
22 Convey("EnsureGraphData (Adding deps)", t, func() { 21 Convey("EnsureGraphData (Adding deps)", t, func() {
23 » » ttest := &tumble.Testing{} 22 » » _, c, _, s := testSetup()
24 » » c := ttest.Context()
25 ds := datastore.Get(c) 23 ds := datastore.Get(c)
26 s := newDecoratedDeps()
27 zt := time.Time{} 24 zt := time.Time{}
28 25
29 a := &model.Attempt{ID: *dm.NewAttemptID("quest", 1)} 26 a := &model.Attempt{ID: *dm.NewAttemptID("quest", 1)}
30 a.CurExecution = 1 27 a.CurExecution = 1
31 a.State = dm.Attempt_EXECUTING 28 a.State = dm.Attempt_EXECUTING
32 ak := ds.KeyForObj(a) 29 ak := ds.KeyForObj(a)
33 30
34 e := &model.Execution{ 31 e := &model.Execution{
35 ID: 1, Attempt: ak, Token: []byte("key"), 32 ID: 1, Attempt: ak, Token: []byte("key"),
36 State: dm.Execution_RUNNING} 33 State: dm.Execution_RUNNING}
37 34
38 toQuestDesc := &dm.Quest_Desc{ 35 toQuestDesc := &dm.Quest_Desc{
39 » » » DistributorConfigName: "foof", 36 » » » DistributorConfigName: "fakeDistributor",
40 JsonPayload: `{"data":"yes"}`, 37 JsonPayload: `{"data":"yes"}`,
41 } 38 }
42 » » toQuest, err := model.NewQuest(c, toQuestDesc) 39 » » So(toQuestDesc.Normalize(), ShouldBeNil)
43 » » So(err, ShouldBeNil) 40 » » toQuest := model.NewQuest(c, toQuestDesc)
44 to := &model.Attempt{ID: *dm.NewAttemptID(toQuest.ID, 1)} 41 to := &model.Attempt{ID: *dm.NewAttemptID(toQuest.ID, 1)}
45 fwd := &model.FwdDep{Depender: ak, Dependee: to.ID} 42 fwd := &model.FwdDep{Depender: ak, Dependee: to.ID}
46 43
47 req := &dm.EnsureGraphDataReq{ 44 req := &dm.EnsureGraphDataReq{
48 ForExecution: &dm.Execution_Auth{ 45 ForExecution: &dm.Execution_Auth{
49 Id: dm.NewExecutionID(a.ID.Quest, a.ID.Id, 1) , 46 Id: dm.NewExecutionID(a.ID.Quest, a.ID.Id, 1) ,
50 Token: []byte("key"), 47 Token: []byte("key"),
51 }, 48 },
52 Attempts: dm.NewAttemptList(map[string][]uint32{ 49 Attempts: dm.NewAttemptList(map[string][]uint32{
53 to.ID.Quest: {to.ID.Id}, 50 to.ID.Quest: {to.ID.Id},
54 }), 51 }),
55 } 52 }
56 53
57 Convey("Bad", func() { 54 Convey("Bad", func() {
58 Convey("No such originating attempt", func() { 55 Convey("No such originating attempt", func() {
59 _, err := s.EnsureGraphData(c, req) 56 _, err := s.EnsureGraphData(c, req)
60 So(err, ShouldBeRPCUnauthenticated) 57 So(err, ShouldBeRPCUnauthenticated)
61 }) 58 })
62 59
63 Convey("No such destination quest", func() { 60 Convey("No such destination quest", func() {
64 So(ds.Put(a, e), ShouldBeNil) 61 So(ds.Put(a, e), ShouldBeNil)
65 62
66 _, err := s.EnsureGraphData(c, req) 63 _, err := s.EnsureGraphData(c, req)
67 » » » » So(err, ShouldBeRPCInvalidArgument, `cannot crea te attempts for absent quest "Q9SgH-f5kraxP_om80CdR9EmAvgmnUws_s5fvRmZiuc"`) 64 » » » » So(err, ShouldBeRPCInvalidArgument, `cannot crea te attempts for absent quest "FwcLo7vH7d24_mnsKIyKswk3NSezONOAKuDZwHrgl7M"`)
68 }) 65 })
69 }) 66 })
70 67
71 Convey("Good", func() { 68 Convey("Good", func() {
72 So(ds.Put(a, e, toQuest), ShouldBeNil) 69 So(ds.Put(a, e, toQuest), ShouldBeNil)
73 70
74 Convey("deps already exist", func() { 71 Convey("deps already exist", func() {
75 So(ds.Put(fwd, to), ShouldBeNil) 72 So(ds.Put(fwd, to), ShouldBeNil)
76 73
77 rsp, err := s.EnsureGraphData(c, req) 74 rsp, err := s.EnsureGraphData(c, req)
78 So(err, ShouldBeNil) 75 So(err, ShouldBeNil)
79 » » » » purgeTimestamps(rsp.Result) 76 » » » » rsp.Result.PurgeTimestamps()
80 So(rsp, ShouldResemble, &dm.EnsureGraphDataRsp{ 77 So(rsp, ShouldResemble, &dm.EnsureGraphDataRsp{
81 Accepted: true, 78 Accepted: true,
82 Result: &dm.GraphData{Quests: map[string ]*dm.Quest{ 79 Result: &dm.GraphData{Quests: map[string ]*dm.Quest{
83 toQuest.ID: { 80 toQuest.ID: {
84 Data: &dm.Quest_Data{ 81 Data: &dm.Quest_Data{
85 Desc: toQuest Desc, 82 Desc: toQuest Desc,
86 BuiltBy: []*dm.Q uest_TemplateSpec{}, 83 BuiltBy: []*dm.Q uest_TemplateSpec{},
87 }, 84 },
88 » » » » » » » Attempts: map[uint32]*dm .Attempt{1: dm.NewAttemptNeedsExecution(zt)}, 85 » » » » » » » Attempts: map[uint32]*dm .Attempt{1: dm.NewAttemptScheduling()},
89 }, 86 },
90 }}, 87 }},
91 }) 88 })
92 }) 89 })
93 90
94 Convey("deps already done", func() { 91 Convey("deps already done", func() {
95 to.State = dm.Attempt_FINISHED 92 to.State = dm.Attempt_FINISHED
96 So(ds.Put(to), ShouldBeNil) 93 So(ds.Put(to), ShouldBeNil)
97 94
98 rsp, err := s.EnsureGraphData(c, req) 95 rsp, err := s.EnsureGraphData(c, req)
99 So(err, ShouldBeNil) 96 So(err, ShouldBeNil)
100 » » » » purgeTimestamps(rsp.Result) 97 » » » » rsp.Result.PurgeTimestamps()
101 So(rsp, ShouldResemble, &dm.EnsureGraphDataRsp{ 98 So(rsp, ShouldResemble, &dm.EnsureGraphDataRsp{
102 Accepted: true, 99 Accepted: true,
103 Result: &dm.GraphData{Quests: map[string ]*dm.Quest{ 100 Result: &dm.GraphData{Quests: map[string ]*dm.Quest{
104 toQuest.ID: { 101 toQuest.ID: {
105 Data: &dm.Quest_Data{ 102 Data: &dm.Quest_Data{
106 Desc: toQuest Desc, 103 Desc: toQuest Desc,
107 BuiltBy: []*dm.Q uest_TemplateSpec{}, 104 BuiltBy: []*dm.Q uest_TemplateSpec{},
108 }, 105 },
109 » » » » » » » Attempts: map[uint32]*dm .Attempt{1: dm.NewAttemptFinished(zt, 0, "")}, 106 » » » » » » » Attempts: map[uint32]*dm .Attempt{1: dm.NewAttemptFinished(zt, 0, "", nil)},
110 }, 107 },
111 }}, 108 }},
112 }) 109 })
113 110
114 So(ds.Get(fwd), ShouldBeNil) 111 So(ds.Get(fwd), ShouldBeNil)
115 }) 112 })
116 113
117 Convey("adding new deps", func() { 114 Convey("adding new deps", func() {
118 So(ds.Put(&model.Quest{ID: "to"}), ShouldBeNil) 115 So(ds.Put(&model.Quest{ID: "to"}), ShouldBeNil)
119 116
120 rsp, err := s.EnsureGraphData(c, req) 117 rsp, err := s.EnsureGraphData(c, req)
121 So(err, ShouldBeNil) 118 So(err, ShouldBeNil)
122 So(rsp, ShouldResemble, &dm.EnsureGraphDataRsp{S houldHalt: true}) 119 So(rsp, ShouldResemble, &dm.EnsureGraphDataRsp{S houldHalt: true})
123 120
124 So(ds.Get(fwd), ShouldBeNil) 121 So(ds.Get(fwd), ShouldBeNil)
125 So(ds.Get(a), ShouldBeNil) 122 So(ds.Get(a), ShouldBeNil)
126 » » » » So(a.State, ShouldEqual, dm.Attempt_ADDING_DEPS) 123 » » » » So(a.State, ShouldEqual, dm.Attempt_EXECUTING)
124 » » » » So(ds.Get(e), ShouldBeNil)
125 » » » » So(e.State, ShouldEqual, dm.Execution_STOPPING)
127 }) 126 })
128 127
129 }) 128 })
130 }) 129 })
131 } 130 }
OLDNEW
« no previous file with comments | « appengine/cmd/dm/deps/activate_execution_test.go ('k') | appengine/cmd/dm/deps/common_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698