131
131
info2, err := s.store.CharmInfo(url)
132
132
c.Assert(err, IsNil)
133
c.Assert(info2, Equals, info)
133
c.Assert(info2, DeepEquals, info)
168
168
func (s *StoreSuite) TestCharmInfoNotFound(c *C) {
169
169
info, err := s.store.CharmInfo(charm.MustParseURL("cs:oneiric/wordpress"))
170
c.Assert(err == store.ErrNotFound, Equals, true)
170
c.Assert(err, Equals, store.ErrNotFound)
171
171
c.Assert(info, IsNil)
227
227
// Partially conflicts with locked update above.
228
228
lock2, err := s.store.LockUpdates(urls)
229
c.Check(err == store.ErrUpdateConflict, Equals, true)
229
c.Check(err, Equals, store.ErrUpdateConflict)
230
230
c.Check(lock2, IsNil)
292
292
// since it lost the race and the given revision is already
294
294
err = pub1.Publish(&FakeCharmDir{})
295
c.Assert(err == store.ErrUpdateConflict, Equals, true)
295
c.Assert(err, Equals, store.ErrUpdateConflict)
298
298
func (s *StoreSuite) TestRedundantUpdate(c *C) {
309
309
// All charms are already on digest-0.
310
310
pub, err = s.store.CharmPublisher(urls, "digest-0")
311
311
c.Assert(err, ErrorMatches, "charm is up-to-date")
312
c.Assert(err == store.ErrRedundantUpdate, Equals, true)
312
c.Assert(err, Equals, store.ErrRedundantUpdate)
313
313
c.Assert(pub, IsNil)
315
315
// Now add a second revision just for wordpress-b.
399
399
err := events.Find(bson.M{"digest": "revKey1"}).One(&s1)
400
400
c.Assert(err, IsNil)
401
401
c.Assert(s1["kind"], Equals, int(store.EventPublished))
402
c.Assert(s1["urls"], Equals, []interface{}{"cs:oneiric/wordpress", "cs:oneiric/mysql"})
403
c.Assert(s1["warnings"], Equals, []interface{}{"A warning."})
402
c.Assert(s1["urls"], DeepEquals, []interface{}{"cs:oneiric/wordpress", "cs:oneiric/mysql"})
403
c.Assert(s1["warnings"], DeepEquals, []interface{}{"A warning."})
404
404
c.Assert(s1["errors"], IsNil)
405
405
c.Assert(s1["time"], Equals, time.Unix(1, 0))
407
407
err = events.Find(bson.M{"digest": "revKey2", "kind": store.EventPublishError}).One(&s2)
408
408
c.Assert(err, IsNil)
409
c.Assert(s2["urls"], Equals, []interface{}{"cs:oneiric/wordpress"})
409
c.Assert(s2["urls"], DeepEquals, []interface{}{"cs:oneiric/wordpress"})
410
410
c.Assert(s2["warnings"], IsNil)
411
c.Assert(s2["errors"], Equals, []interface{}{"An error."})
411
c.Assert(s2["errors"], DeepEquals, []interface{}{"An error."})
412
412
c.Assert(s2["time"].(time.Time).After(bson.Now().Add(-10e9)), Equals, true)
414
414
// Mongo stores timestamps in milliseconds, so chop
418
418
event, err := s.store.CharmEvent(urls[0], "revKey2")
419
419
c.Assert(err, IsNil)
420
c.Assert(event, Equals, event3)
420
c.Assert(event, DeepEquals, event3)
422
422
event, err = s.store.CharmEvent(urls[1], "revKey1")
423
423
c.Assert(err, IsNil)
424
c.Assert(event, Equals, event1)
424
c.Assert(event, DeepEquals, event1)
426
426
event, err = s.store.CharmEvent(urls[1], "revKeyX")
427
c.Assert(err == store.ErrNotFound, Equals, true)
427
c.Assert(err, Equals, store.ErrNotFound)
428
428
c.Assert(event, IsNil)