summaryrefslogtreecommitdiff
diff options
authorMichael Vogt <mvo@ubuntu.com>2017-11-16 17:05:55 +0100
committerMichael Vogt <mvo@ubuntu.com>2017-11-16 17:05:55 +0100
commit4eb1eae4cd3d62d4ebb72bc63cdc40635c909f37 (patch)
tree15b727ee72c8060ff3e255cfb402d8e27a37b225
parent9eb5314f9ea4719312a2092dccc55a4383920d4d (diff)
use struct with bools instead of bitflags (thanks Chipaca)refresh-candidates-managed
-rw-r--r--daemon/api_test.go2
-rw-r--r--overlord/snapstate/backend.go2
-rw-r--r--overlord/snapstate/backend_test.go2
-rw-r--r--overlord/snapstate/snapstate.go2
-rw-r--r--store/store.go22
-rw-r--r--store/store_test.go58
-rw-r--r--store/storetest/storetest.go2
7 files changed, 45 insertions, 45 deletions
diff --git a/daemon/api_test.go b/daemon/api_test.go
index 284091fa96..c9b652646d 100644
--- a/daemon/api_test.go
+++ b/daemon/api_test.go
@@ -129,7 +129,7 @@ func (s *apiBaseSuite) LookupRefresh(snap *store.RefreshCandidate, user *auth.Us
return s.rsnaps[0], s.err
}
-func (s *apiBaseSuite) ListRefresh(snaps []*store.RefreshCandidate, user *auth.UserState, flags store.RefreshFlags) ([]*snap.Info, error) {
+func (s *apiBaseSuite) ListRefresh(snaps []*store.RefreshCandidate, user *auth.UserState, flags *store.RefreshOptions) ([]*snap.Info, error) {
s.refreshCandidates = snaps
s.user = user
diff --git a/overlord/snapstate/backend.go b/overlord/snapstate/backend.go
index 748db5a5a0..1fa9305b3f 100644
--- a/overlord/snapstate/backend.go
+++ b/overlord/snapstate/backend.go
@@ -37,7 +37,7 @@ type StoreService interface {
SnapInfo(spec store.SnapSpec, user *auth.UserState) (*snap.Info, error)
Find(search *store.Search, user *auth.UserState) ([]*snap.Info, error)
LookupRefresh(*store.RefreshCandidate, *auth.UserState) (*snap.Info, error)
- ListRefresh([]*store.RefreshCandidate, *auth.UserState, store.RefreshFlags) ([]*snap.Info, error)
+ ListRefresh([]*store.RefreshCandidate, *auth.UserState, *store.RefreshOptions) ([]*snap.Info, error)
Sections(user *auth.UserState) ([]string, error)
WriteCatalogs(names io.Writer) error
Download(context.Context, string, string, *snap.DownloadInfo, progress.Meter, *auth.UserState) error
diff --git a/overlord/snapstate/backend_test.go b/overlord/snapstate/backend_test.go
index 2b118bfa74..460b531d8c 100644
--- a/overlord/snapstate/backend_test.go
+++ b/overlord/snapstate/backend_test.go
@@ -227,7 +227,7 @@ func (f *fakeStore) LookupRefresh(cand *store.RefreshCandidate, user *auth.UserS
return nil, store.ErrNoUpdateAvailable
}
-func (f *fakeStore) ListRefresh(cands []*store.RefreshCandidate, _ *auth.UserState, flags store.RefreshFlags) ([]*snap.Info, error) {
+func (f *fakeStore) ListRefresh(cands []*store.RefreshCandidate, _ *auth.UserState, flags *store.RefreshOptions) ([]*snap.Info, error) {
f.pokeStateLock()
if len(cands) == 0 {
diff --git a/overlord/snapstate/snapstate.go b/overlord/snapstate/snapstate.go
index b3e2aee4c7..61c7e70346 100644
--- a/overlord/snapstate/snapstate.go
+++ b/overlord/snapstate/snapstate.go
@@ -612,7 +612,7 @@ func refreshCandidates(st *state.State, names []string, user *auth.UserState) ([
theStore := Store(st)
st.Unlock()
- updates, err := theStore.ListRefresh(candidatesInfo, user, 0)
+ updates, err := theStore.ListRefresh(candidatesInfo, user, nil)
st.Lock()
if err != nil {
return nil, nil, nil, err
diff --git a/store/store.go b/store/store.go
index 8d98956a23..cb372aa475 100644
--- a/store/store.go
+++ b/store/store.go
@@ -69,15 +69,11 @@ const (
UbuntuCoreWireProtocol = "1"
)
-type RefreshFlags int
-
-const (
- _ = iota
-
+type RefreshOptions struct {
// RefreshManaged indicates to the store that the refresh is
// managed via snapd-control.
- RefreshManaged
-)
+ RefreshManaged bool
+}
// the LimitTime should be slightly more than 3 times of our http.Client
// Timeout value
@@ -1287,7 +1283,11 @@ func currentSnap(cs *RefreshCandidate) *currentSnapJSON {
}
// query the store for the information about currently offered revisions of snaps
-func (s *Store) refreshForCandidates(currentSnaps []*currentSnapJSON, user *auth.UserState, flags RefreshFlags) ([]*snapDetails, error) {
+func (s *Store) refreshForCandidates(currentSnaps []*currentSnapJSON, user *auth.UserState, flags *RefreshOptions) ([]*snapDetails, error) {
+ if flags == nil {
+ flags = &RefreshOptions{}
+ }
+
if len(currentSnaps) == 0 {
// nothing to do
return nil, nil
@@ -1314,7 +1314,7 @@ func (s *Store) refreshForCandidates(currentSnaps []*currentSnapJSON, user *auth
logger.Debugf("Deltas enabled. Adding header X-Ubuntu-Delta-Formats: %v", s.deltaFormat)
reqOptions.addHeader("X-Ubuntu-Delta-Formats", s.deltaFormat)
}
- if flags&RefreshManaged != 0 {
+ if flags.RefreshManaged {
reqOptions.addHeader("X-Ubuntu-Refresh-Managed", "true")
}
@@ -1342,7 +1342,7 @@ func (s *Store) LookupRefresh(installed *RefreshCandidate, user *auth.UserState)
return nil, ErrLocalSnap
}
- latest, err := refreshForCandidates(s, []*currentSnapJSON{cur}, user, 0)
+ latest, err := refreshForCandidates(s, []*currentSnapJSON{cur}, user, nil)
if err != nil {
return nil, err
}
@@ -1361,7 +1361,7 @@ func (s *Store) LookupRefresh(installed *RefreshCandidate, user *auth.UserState)
// ListRefresh returns the available updates for a list of refresh candidates.
// NOTE ListRefresh can return nil, nil if e.g. all local snaps are passed in
-func (s *Store) ListRefresh(installed []*RefreshCandidate, user *auth.UserState, flags RefreshFlags) (snaps []*snap.Info, err error) {
+func (s *Store) ListRefresh(installed []*RefreshCandidate, user *auth.UserState, flags *RefreshOptions) (snaps []*snap.Info, err error) {
candidateMap := map[string]*RefreshCandidate{}
currentSnaps := make([]*currentSnapJSON, 0, len(installed))
for _, cs := range installed {
diff --git a/store/store_test.go b/store/store_test.go
index 4315a58c62..976f9d4b31 100644
--- a/store/store_test.go
+++ b/store/store_test.go
@@ -3121,7 +3121,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryRefreshForCandidates(c *C
Channel: "stable",
Revision: 1,
},
- }, nil, 0)
+ }, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 1)
@@ -3169,14 +3169,14 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryRefreshForCandidatesRetri
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 1,
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
c.Assert(n, Equals, 4)
c.Assert(results, HasLen, 1)
c.Assert(results[0].Name, Equals, "hello-world")
}
-func mockRFC(newRFC func(*Store, []*currentSnapJSON, *auth.UserState, RefreshFlags) ([]*snapDetails, error)) func() {
+func mockRFC(newRFC func(*Store, []*currentSnapJSON, *auth.UserState, *RefreshOptions) ([]*snapDetails, error)) func() {
oldRFC := refreshForCandidates
refreshForCandidates = newRFC
return func() {
@@ -3185,7 +3185,7 @@ func mockRFC(newRFC func(*Store, []*currentSnapJSON, *auth.UserState, RefreshFla
}
func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefresh(c *C) {
- defer mockRFC(func(_ *Store, currentSnaps []*currentSnapJSON, _ *auth.UserState, _ RefreshFlags) ([]*snapDetails, error) {
+ defer mockRFC(func(_ *Store, currentSnaps []*currentSnapJSON, _ *auth.UserState, _ *RefreshOptions) ([]*snapDetails, error) {
c.Check(currentSnaps, DeepEquals, []*currentSnapJSON{{
SnapID: helloWorldSnapID,
Channel: "stable",
@@ -3220,7 +3220,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefresh(c *C) {
}
func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshIgnoreValidation(c *C) {
- defer mockRFC(func(_ *Store, currentSnaps []*currentSnapJSON, _ *auth.UserState, _ RefreshFlags) ([]*snapDetails, error) {
+ defer mockRFC(func(_ *Store, currentSnaps []*currentSnapJSON, _ *auth.UserState, _ *RefreshOptions) ([]*snapDetails, error) {
c.Check(currentSnaps, DeepEquals, []*currentSnapJSON{{
SnapID: helloWorldSnapID,
Channel: "stable",
@@ -3254,7 +3254,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshIgnoreValida
}
func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshLocalSnap(c *C) {
- defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ RefreshFlags) ([]*snapDetails, error) {
+ defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ *RefreshOptions) ([]*snapDetails, error) {
panic("unexpected call to refreshForCandidates")
})()
@@ -3270,7 +3270,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshLocalSnap(c
func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshRFCError(c *C) {
anError := errors.New("ouchie")
- defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ RefreshFlags) ([]*snapDetails, error) {
+ defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ *RefreshOptions) ([]*snapDetails, error) {
return nil, anError
})()
@@ -3286,7 +3286,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshRFCError(c *
}
func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshEmptyResponse(c *C) {
- defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ RefreshFlags) ([]*snapDetails, error) {
+ defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ *RefreshOptions) ([]*snapDetails, error) {
return nil, nil
})()
@@ -3302,7 +3302,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshEmptyRespons
}
func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryLookupRefreshNoUpdate(c *C) {
- defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ RefreshFlags) ([]*snapDetails, error) {
+ defer mockRFC(func(_ *Store, _ []*currentSnapJSON, _ *auth.UserState, _ *RefreshOptions) ([]*snapDetails, error) {
return []*snapDetails{{
SnapID: helloWorldDeveloperID,
Revision: 1,
@@ -3366,7 +3366,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefresh(c *C) {
Channel: "stable",
Revision: snap.R(1),
},
- }, nil, 0)
+ }, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 1)
c.Assert(results[0].Name(), Equals, "hello-world")
@@ -3425,7 +3425,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshIgnoreValidati
Revision: snap.R(1),
IgnoreValidation: true,
},
- }, nil, 0)
+ }, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 1)
c.Assert(results[0].Name(), Equals, "hello-world")
@@ -3478,7 +3478,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshDefaultChannel
SnapID: helloWorldSnapID,
Revision: snap.R(1),
},
- }, nil, 0)
+ }, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 1)
c.Assert(results[0].Name(), Equals, "hello-world")
@@ -3525,7 +3525,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshRetryOnEOF(c *
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: snap.R(1),
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
c.Assert(n, Equals, 4)
c.Assert(results, HasLen, 1)
@@ -3567,7 +3567,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreUnexpectedEOFhandling(c *C) {
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 1,
- }}, nil, 0)
+ }}, nil, nil)
return err
}
@@ -3612,7 +3612,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryRefreshForCandidatesEOF(c
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 1,
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, NotNil)
c.Assert(err, ErrorMatches, `^Post http://127.0.0.1:.*?/metadata: EOF$`)
c.Assert(n, Equals, 5)
@@ -3644,7 +3644,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryRefreshForCandidatesUnaut
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 24,
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(n, Equals, 1)
c.Assert(err, ErrorMatches, `cannot query the store for updates: got unexpected HTTP status code 401 via POST to "http://.*?/metadata"`)
}
@@ -3663,7 +3663,7 @@ func (t *remoteRepoTestSuite) TestRefreshForCandidatesFailOnDNS(c *C) {
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 24,
- }}, nil, 0)
+ }}, nil, nil)
// the error differs depending on whether a proxy is in use (e.g. on travis), so don't inspect error message
c.Assert(err, NotNil)
}
@@ -3690,7 +3690,7 @@ func (t *remoteRepoTestSuite) TestRefreshForCandidates500(c *C) {
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 24,
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, ErrorMatches, `cannot query the store for updates: got unexpected HTTP status code 500 via POST to "http://.*?/metadata"`)
c.Assert(n, Equals, 5)
}
@@ -3718,7 +3718,7 @@ func (t *remoteRepoTestSuite) TestRefreshForCandidates500DurationExceeded(c *C)
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 24,
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, ErrorMatches, `cannot query the store for updates: got unexpected HTTP status code 500 via POST to "http://.*?/metadata"`)
c.Assert(n, Equals, 1)
}
@@ -3775,7 +3775,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshSkipCurrent(c
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: snap.R(26),
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 0)
}
@@ -3820,7 +3820,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshSkipBlocked(c
Channel: "stable",
Revision: snap.R(25),
Block: []snap.Revision{snap.R(26)},
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 0)
}
@@ -3910,7 +3910,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryDefaultsDeltasOnClassicOn
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: 1,
- }}, nil, 0)
+ }}, nil, nil)
}
}
@@ -3959,7 +3959,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshWithDeltas(c *
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: snap.R(24),
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 1)
c.Assert(results[0].Deltas, HasLen, 2)
@@ -4029,7 +4029,7 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshWithoutDeltas(
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: snap.R(24),
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
c.Assert(results, HasLen, 1)
c.Assert(results[0].Deltas, HasLen, 0)
@@ -4055,17 +4055,17 @@ func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryUpdateNotSendLocalRevs(c
SnapID: helloWorldSnapID,
Channel: "stable",
Revision: snap.R(-2),
- }}, nil, 0)
+ }}, nil, nil)
c.Assert(err, IsNil)
}
-func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshFlags(c *C) {
+func (t *remoteRepoTestSuite) TestUbuntuStoreRepositoryListRefreshOptions(c *C) {
for _, t := range []struct {
- flag RefreshFlags
+ flag *RefreshOptions
header string
}{
- {0, ""},
- {RefreshManaged, "X-Ubuntu-Refresh-Managed"},
+ {nil, ""},
+ {&RefreshOptions{RefreshManaged: true}, "X-Ubuntu-Refresh-Managed"},
} {
mockServerHit := false
diff --git a/store/storetest/storetest.go b/store/storetest/storetest.go
index 89f1bb743c..58e5b80501 100644
--- a/store/storetest/storetest.go
+++ b/store/storetest/storetest.go
@@ -53,7 +53,7 @@ func (Store) LookupRefresh(*store.RefreshCandidate, *auth.UserState) (*snap.Info
panic("Store.LookupRefresh not expected")
}
-func (Store) ListRefresh([]*store.RefreshCandidate, *auth.UserState, store.RefreshFlags) ([]*snap.Info, error) {
+func (Store) ListRefresh([]*store.RefreshCandidate, *auth.UserState, *store.RefreshOptions) ([]*snap.Info, error) {
panic("Store.ListRefresh not expected")
}