github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/container/kvm/sync_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package kvm_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 . "github.com/juju/juju/container/kvm" 13 "github.com/juju/juju/environs/imagedownloads" 14 ) 15 16 // cacheSuite is gocheck boilerplate. 17 type cacheSuite struct { 18 testing.IsolationSuite 19 } 20 21 // _ is gocheck boilerplate. 22 var _ = gc.Suite(&cacheSuite{}) 23 24 func (cacheSuite) TestSyncOnerErrors(c *gc.C) { 25 o := fakeParams{FakeData: nil, Err: errors.New("oner failed")} 26 u := fakeFetcher{} 27 got := Sync(o, u, "", nil) 28 c.Assert(got, gc.ErrorMatches, "oner failed") 29 } 30 31 func (cacheSuite) TestSyncOnerExists(c *gc.C) { 32 o := fakeParams{ 33 FakeData: nil, 34 Err: errors.AlreadyExistsf("exists")} 35 u := fakeFetcher{} 36 got := Sync(o, u, "", nil) 37 c.Assert(got, jc.ErrorIsNil) 38 } 39 40 func (cacheSuite) TestSyncUpdaterErrors(c *gc.C) { 41 o := fakeParams{FakeData: &imagedownloads.Metadata{}, Err: nil} 42 u := fakeFetcher{Err: errors.New("updater failed")} 43 got := Sync(o, u, "", nil) 44 c.Assert(got, gc.ErrorMatches, "updater failed") 45 } 46 47 func (cacheSuite) TestSyncSucceeds(c *gc.C) { 48 o := fakeParams{FakeData: &imagedownloads.Metadata{}} 49 u := fakeFetcher{} 50 got := Sync(o, u, "", nil) 51 c.Assert(got, jc.ErrorIsNil) 52 } 53 54 type fakeParams struct { 55 FakeData *imagedownloads.Metadata 56 Err error 57 } 58 59 func (f fakeParams) One() (*imagedownloads.Metadata, error) { 60 if f.Err != nil { 61 return nil, f.Err 62 } 63 return f.FakeData, nil 64 } 65 66 type fakeFetcher struct { 67 // Used to return an error 68 Err error 69 } 70 71 func (f fakeFetcher) Fetch() error { 72 if f.Err != nil { 73 return f.Err 74 } 75 return nil 76 } 77 78 func (f fakeFetcher) Close() { 79 return 80 }