| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |