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  }