OLD | NEW |
1 // Copyright 2016 The LUCI Authors. All rights reserved. | 1 // Copyright 2016 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 dm | 5 package dm |
6 | 6 |
7 import ( | 7 import ( |
8 "fmt" | 8 "fmt" |
9 | 9 |
10 "github.com/luci/luci-go/common/errors" | 10 "github.com/luci/luci-go/common/errors" |
11 ) | 11 ) |
12 | 12 |
13 // Normalize returns an error iff the TemplateInstantiation is invalid. | 13 // Normalize returns an error iff the TemplateInstantiation is invalid. |
14 func (t *TemplateInstantiation) Normalize() error { | 14 func (t *TemplateInstantiation) Normalize() error { |
15 if t.Project == "" { | 15 if t.Project == "" { |
16 return errors.New("empty project") | 16 return errors.New("empty project") |
17 } | 17 } |
18 return t.Specifier.Normalize() | 18 return t.Specifier.Normalize() |
19 } | 19 } |
20 | 20 |
21 // Normalize returns an error iff the request is invalid. | 21 // Normalize returns an error iff the request is invalid. |
22 func (r *EnsureGraphDataReq) Normalize() error { | 22 func (r *EnsureGraphDataReq) Normalize() error { |
| 23 if r.ForExecution != nil { |
| 24 if err := r.ForExecution.Normalize(); err != nil { |
| 25 return err |
| 26 } |
| 27 } |
| 28 |
23 if err := r.Attempts.Normalize(); err != nil { | 29 if err := r.Attempts.Normalize(); err != nil { |
24 return err | 30 return err |
25 } | 31 } |
26 | 32 |
27 hasAttempts := false | 33 hasAttempts := false |
28 » for _, nums := range r.Attempts.To { | 34 » if r.Attempts != nil { |
29 » » hasAttempts = true | 35 » » for _, nums := range r.Attempts.To { |
30 » » if len(nums.Nums) == 0 { | 36 » » » hasAttempts = true |
31 » » » return errors.New("EnsureGraphDataReq.attempts must only
include valid (non-0, non-empty) attempt numbers") | 37 » » » if len(nums.Nums) == 0 { |
| 38 » » » » return errors.New("EnsureGraphDataReq.attempts m
ust only include valid (non-0, non-empty) attempt numbers") |
| 39 » » » } |
32 } | 40 } |
33 } | 41 } |
34 | 42 |
35 if len(r.TemplateQuest) != len(r.TemplateAttempt) { | 43 if len(r.TemplateQuest) != len(r.TemplateAttempt) { |
36 return errors.New("mismatched template_attempt v. template_quest
lengths") | 44 return errors.New("mismatched template_attempt v. template_quest
lengths") |
37 } | 45 } |
38 | 46 |
39 if len(r.TemplateQuest) > 0 { | 47 if len(r.TemplateQuest) > 0 { |
40 for i, q := range r.TemplateQuest { | 48 for i, q := range r.TemplateQuest { |
41 if err := q.Normalize(); err != nil { | 49 if err := q.Normalize(); err != nil { |
42 return fmt.Errorf("template_quests[%d]: %s", i,
err) | 50 return fmt.Errorf("template_quests[%d]: %s", i,
err) |
43 } | 51 } |
44 if err := r.TemplateAttempt[i].Normalize(); err != nil { | 52 if err := r.TemplateAttempt[i].Normalize(); err != nil { |
45 return fmt.Errorf("template_attempts[%d]: %s", i
, err) | 53 return fmt.Errorf("template_attempts[%d]: %s", i
, err) |
46 } | 54 } |
47 if len(r.TemplateAttempt[i].Nums) == 0 { | 55 if len(r.TemplateAttempt[i].Nums) == 0 { |
48 return fmt.Errorf("template_attempts[%d]: empty
attempt list", i) | 56 return fmt.Errorf("template_attempts[%d]: empty
attempt list", i) |
49 } | 57 } |
50 } | 58 } |
51 } | 59 } |
52 | 60 |
| 61 for i, desc := range r.Quest { |
| 62 if err := desc.Normalize(); err != nil { |
| 63 return fmt.Errorf("quest[%d]: %s", i, err) |
| 64 } |
| 65 } |
| 66 |
53 if len(r.Quest) == 0 && !hasAttempts { | 67 if len(r.Quest) == 0 && !hasAttempts { |
54 return errors.New("EnsureGraphDataReq must have at least one of
quests and attempts") | 68 return errors.New("EnsureGraphDataReq must have at least one of
quests and attempts") |
55 } | 69 } |
56 | 70 |
57 if r.Limit == nil { | 71 if r.Limit == nil { |
58 r.Limit = &EnsureGraphDataReq_Limit{} | 72 r.Limit = &EnsureGraphDataReq_Limit{} |
59 } | 73 } |
60 if r.Limit.MaxDataSize == 0 { | 74 if r.Limit.MaxDataSize == 0 { |
61 r.Limit.MaxDataSize = DefaultLimitMaxDataSize | 75 r.Limit.MaxDataSize = DefaultLimitMaxDataSize |
62 } | 76 } |
63 if r.Limit.MaxDataSize > MaxLimitMaxDataSize { | 77 if r.Limit.MaxDataSize > MaxLimitMaxDataSize { |
64 r.Limit.MaxDataSize = MaxLimitMaxDataSize | 78 r.Limit.MaxDataSize = MaxLimitMaxDataSize |
65 } | 79 } |
66 | 80 |
67 if r.Include == nil { | 81 if r.Include == nil { |
68 r.Include = &EnsureGraphDataReq_Include{} | 82 r.Include = &EnsureGraphDataReq_Include{} |
69 } | 83 } |
70 return nil | 84 return nil |
71 } | 85 } |
OLD | NEW |