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

Side by Side Diff: common/isolatedclient/isolatedfake/isolatedfake.go

Issue 2884413002: Ensure (de)compressor is always closed. (Closed)
Patch Set: Created 3 years, 7 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 | « common/isolatedclient/isolatedclient.go ('k') | no next file » | 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 isolatedfake implements an in-process fake Isolated server for 5 // Package isolatedfake implements an in-process fake Isolated server for
6 // integration testing. 6 // integration testing.
7 package isolatedfake 7 package isolatedfake
8 8
9 import ( 9 import (
10 "bytes" 10 "bytes"
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 w.WriteHeader(405) 186 w.WriteHeader(405)
187 server.Fail(fmt.Errorf("invalid method: %s", r.Method)) 187 server.Fail(fmt.Errorf("invalid method: %s", r.Method))
188 return 188 return
189 } 189 }
190 decompressor, err := isolated.GetDecompressor(r.Body) 190 decompressor, err := isolated.GetDecompressor(r.Body)
191 if err != nil { 191 if err != nil {
192 w.WriteHeader(500) 192 w.WriteHeader(500)
193 server.Fail(err) 193 server.Fail(err)
194 return 194 return
195 } 195 }
196 defer decompressor.Close()
196 raw, err := ioutil.ReadAll(decompressor) 197 raw, err := ioutil.ReadAll(decompressor)
197 if err != nil { 198 if err != nil {
198 w.WriteHeader(500) 199 w.WriteHeader(500)
199 server.Fail(err) 200 server.Fail(err)
200 return 201 return
201 } 202 }
202 digest := isolated.HexDigest(r.URL.Query().Get("digest")) 203 digest := isolated.HexDigest(r.URL.Query().Get("digest"))
203 if digest != isolated.HashBytes(raw) { 204 if digest != isolated.HashBytes(raw) {
204 w.WriteHeader(400) 205 w.WriteHeader(400)
205 server.Fail(fmt.Errorf("invalid digest %#v", digest)) 206 server.Fail(fmt.Errorf("invalid digest %#v", digest))
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 blob, err := base64.StdEncoding.DecodeString(data.Content) 267 blob, err := base64.StdEncoding.DecodeString(data.Content)
267 if err != nil { 268 if err != nil {
268 server.Fail(err) 269 server.Fail(err)
269 return map[string]string{"err": err.Error()} 270 return map[string]string{"err": err.Error()}
270 } 271 }
271 decompressor, err := isolated.GetDecompressor(bytes.NewReader(blob)) 272 decompressor, err := isolated.GetDecompressor(bytes.NewReader(blob))
272 if err != nil { 273 if err != nil {
273 server.Fail(err) 274 server.Fail(err)
274 return map[string]string{"err": err.Error()} 275 return map[string]string{"err": err.Error()}
275 } 276 }
277 defer decompressor.Close()
276 raw, err := ioutil.ReadAll(decompressor) 278 raw, err := ioutil.ReadAll(decompressor)
277 if err != nil { 279 if err != nil {
278 server.Fail(err) 280 server.Fail(err)
279 return map[string]string{"err": err.Error()} 281 return map[string]string{"err": err.Error()}
280 } 282 }
281 if digest != isolated.HashBytes(raw) { 283 if digest != isolated.HashBytes(raw) {
282 err := fmt.Errorf("invalid digest %#v", digest) 284 err := fmt.Errorf("invalid digest %#v", digest)
283 server.Fail(err) 285 server.Fail(err)
284 return map[string]string{"err": err.Error()} 286 return map[string]string{"err": err.Error()}
285 } 287 }
286 288
287 server.lock.Lock() 289 server.lock.Lock()
288 defer server.lock.Unlock() 290 defer server.lock.Unlock()
289 server.contents[digest] = raw 291 server.contents[digest] = raw
290 //log.Printf(" storing %s = %d bytes", digest, len(raw)) 292 //log.Printf(" storing %s = %d bytes", digest, len(raw))
291 return map[string]string{"ok": "true"} 293 return map[string]string{"ok": "true"}
292 } 294 }
OLDNEW
« no previous file with comments | « common/isolatedclient/isolatedclient.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698