@@ -160,12 +160,22 @@ func CompareMeasures(prefix string, hash string, storedm []Measure, computedm []
160160 return computedm , errors .New ("No stored measures to compare against." )
161161 }
162162
163- failing := make ([]string , 0 )
163+ excuses , err := GetExclusions (prefix , hash )
164+
165+ if err != nil {
166+ return computedm , err
167+ }
168+
169+ log .INFO .Printf ("Total excuses %s" , excuses )
170+
171+ failing := make ([]* Measure , 0 )
164172 zeroMes := make ([]Measure , 0 )
165173
166174 i := 0
167175 j := 0
168176
177+ exc := 0
178+
169179 for i < len (storedm ) && j < len (computedm ) {
170180 stored := storedm [i ]
171181 computed := computedm [j ]
@@ -176,7 +186,7 @@ func CompareMeasures(prefix string, hash string, storedm []Measure, computedm []
176186 if zeroOnMissing {
177187 zeroMes = append (zeroMes , Measure {Name : stored .Name , Value : 0 , Baseline : 0 })
178188 } else {
179- failing = append (failing , stored . Name )
189+ failing = append (failing , & stored )
180190 }
181191 i ++
182192 } else if computed .Name < stored .Name {
@@ -191,7 +201,28 @@ func CompareMeasures(prefix string, hash string, storedm []Measure, computedm []
191201 // Compare the value
192202 if computed .Value > (stored .Baseline + slack ) {
193203 log .ERROR .Printf ("Measure rising: %s, delta %d" , computed .Name , (computed .Value - stored .Baseline ))
194- failing = append (failing , computed .Name )
204+
205+ if exc < len (excuses ) {
206+ ex := excuses [exc ]
207+
208+ log .INFO .Printf ("Checking excuses: %s %s" , ex , computed )
209+ if ex < computed .Name {
210+ log .WARN .Printf ("Exclusion found for not failing measure: %s" , ex )
211+ exc ++
212+ failing = append (failing , & computed )
213+ } else if computed .Name < ex {
214+ log .ERROR .Printf ("No exclusion for failing measure: %s" , computed .Name )
215+ failing = append (failing , & computed )
216+ } else {
217+ log .WARN .Printf ("Exclusion found for failing measure: %s" , computed .Name )
218+ computed .Baseline = computed .Value
219+ computedm [j ].Baseline = computed .Value
220+ exc ++
221+ }
222+ } else {
223+ failing = append (failing , & computed )
224+ }
225+
195226 }
196227 i ++
197228 j ++
@@ -204,7 +235,7 @@ func CompareMeasures(prefix string, hash string, storedm []Measure, computedm []
204235 if zeroOnMissing {
205236 zeroMes = append (zeroMes , Measure {Name : stored .Name , Value : 0 , Baseline : 0 })
206237 } else {
207- failing = append (failing , stored . Name )
238+ failing = append (failing , & stored )
208239 }
209240 i ++
210241 }
@@ -216,41 +247,7 @@ func CompareMeasures(prefix string, hash string, storedm []Measure, computedm []
216247 }
217248
218249 if len (failing ) > 0 {
219- log .INFO .Printf ("Checking for excuses" )
220-
221- exclusions , err := GetExclusions (prefix , hash )
222-
223- if err != nil {
224- return computedm , err
225- }
226-
227- log .INFO .Printf ("Total excuses %s" , exclusions )
228-
229- i = 0
230- j = 0
231-
232- missingexclusion := false
233-
234- for i < len (exclusions ) && j < len (failing ) {
235- ex := exclusions [i ]
236- fail := failing [j ]
237- log .INFO .Printf ("Checking excuses: %s %s" , ex , fail )
238- if ex < fail {
239- log .WARN .Printf ("Exclusion found for not failing measure: %s" , ex )
240- i ++
241- } else if fail < ex {
242- log .ERROR .Printf ("No exclusion for failing measure: %s" , fail )
243- missingexclusion = true
244- j ++
245- } else {
246- i ++
247- j ++
248- }
249- }
250-
251- if missingexclusion || j < len (failing ) {
252- return computedm , errors .New ("One or more metrics currently failing." )
253- }
250+ return computedm , errors .New ("One or more metrics currently failing." )
254251 }
255252
256253 computedm = append (computedm , zeroMes ... )
0 commit comments