func (s *ResizeSuite) TestResizeCropColdCache(c *C) { // A single, unresized image is in the database/store mockCtx, err := s.insertMockImage() c.Assert(err, IsNil) for width, height := range sizes { ctx := &fetch.CacheContext{ ImageId: mockCtx.ImageId, Bucket: mockCtx.Bucket, Width: width, Crop: true, } // Run the image resize request data, err := fetch.ImageData(storage, ctx) c.Assert(err, IsNil) // Verify the size of the resulting byte slice img, _, err := image.Decode(bytes.NewReader(data)) c.Assert(err, IsNil) c.Assert(img.Bounds().Size().X, Equals, img.Bounds().Size().Y) c.Assert(img.Bounds().Size().X > 0, Equals, true) c.Assert(img.Bounds().Size().X <= height, Equals, true) } }
func (s *ResizeSuite) TestOriginalColdCache(c *C) { // Open the file once to get it's size file, err := ioutil.ReadFile("test/exif_test_img.jpg") c.Assert(err, IsNil) img, _, err := image.Decode(bytes.NewReader(file)) c.Assert(err, IsNil) // Since this image should be rotated, height should equal // width after it's uploaded. originalSize := img.Bounds().Size().Y // A single, unresized image is in the database/store ctx, err := s.insertMockImage() c.Assert(err, IsNil) // Run the image resize request data, err := fetch.ImageData(storage, ctx) c.Assert(err, IsNil) // Verify the size of the resulting byte slice img, _, err = image.Decode(bytes.NewReader(data)) c.Assert(err, IsNil) c.Assert(img.Bounds().Size().X, Equals, originalSize) }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) awsAuth, err := aws.EnvAuth() if err != nil { log.Fatalf(err.Error()) } s3conn := s3.New(awsAuth, getRegion()) storage = store.NewS3Store(s3conn) peers = peer.DebugPool() peers.SetContext(func(r *http.Request) groupcache.Context { return fetch.RequestContext(r) }) cache = groupcache.NewGroup("ImageProxyCache", 64<<20, groupcache.GetterFunc( func(c groupcache.Context, key string, dest groupcache.Sink) error { log.Printf("Cache MISS for key -> %s", key) // Get image data from S3 b, err := fetch.ImageData(storage, c) if err != nil { return err } return dest.SetBytes(b) })) if !*verbose { logwriter, err := syslog.Dial("udp", "app_syslog:514", syslog.LOG_NOTICE, "vip") if err != nil { log.Println(err.Error()) log.Println("using default logger") } else { log.SetOutput(logwriter) } } go peers.Listen() go listenHttp() go Queue.Start(4) log.Println("Cache listening on port :" + peers.Port()) s := &http.Server{ Addr: ":" + peers.Port(), Handler: peers, } s.ListenAndServe() }