func (s *StoreSuite) TestListCounters(c *C) { incs := [][]string{ {"c", "b", "a"}, // Assign internal id c < id b < id a, to make sorting slightly trickier. {"a"}, {"a", "c"}, {"a", "b"}, {"a", "b", "c"}, {"a", "b", "c"}, {"a", "b", "e"}, {"a", "b", "d"}, {"a", "f", "g"}, {"a", "f", "h"}, {"a", "i"}, {"a", "i", "j"}, {"k", "l"}, } for _, key := range incs { err := s.store.IncCounter(key) c.Assert(err, IsNil) } tests := []struct { prefix []string result []store.Counter }{ { []string{"a"}, []store.Counter{ {Key: []string{"a", "b"}, Prefix: true, Count: 4}, {Key: []string{"a", "f"}, Prefix: true, Count: 2}, {Key: []string{"a", "b"}, Prefix: false, Count: 1}, {Key: []string{"a", "c"}, Prefix: false, Count: 1}, {Key: []string{"a", "i"}, Prefix: false, Count: 1}, {Key: []string{"a", "i"}, Prefix: true, Count: 1}, }, }, { []string{"a", "b"}, []store.Counter{ {Key: []string{"a", "b", "c"}, Prefix: false, Count: 2}, {Key: []string{"a", "b", "d"}, Prefix: false, Count: 1}, {Key: []string{"a", "b", "e"}, Prefix: false, Count: 1}, }, }, { []string{"z"}, []store.Counter(nil), }, } // Use a different store to exercise cache filling. st, err := store.Open(s.Addr) c.Assert(err, IsNil) defer st.Close() for i := range tests { req := &store.CounterRequest{Key: tests[i].prefix, Prefix: true, List: true} result, err := st.Counters(req) c.Assert(err, IsNil) c.Assert(result, DeepEquals, tests[i].result) } }
func (s *StoreSuite) SetUpTest(c *C) { s.MgoSuite.SetUpTest(c) s.LoggingSuite.SetUpTest(c) var err error s.store, err = store.Open(s.Addr) c.Assert(err, IsNil) }
func load() error { var confPath string if len(os.Args) == 2 { if _, err := os.Stat(os.Args[1]); err == nil { confPath = os.Args[1] } } if confPath == "" { return fmt.Errorf("usage: %s <config path>", filepath.Base(os.Args[0])) } var conf config err := readConfig(confPath, &conf) if err != nil { return err } if conf.MongoURL == "" { return fmt.Errorf("missing mongo-url in config file") } s, err := store.Open(conf.MongoURL) if err != nil { return err } defer s.Close() err = store.PublishCharmsDistro(s, lpad.Production) if _, ok := err.(store.PublishBranchErrors); ok { // Ignore branch errors since they're commonplace here. // They're logged, though. return nil } return err }
func serve() error { var confPath string if len(os.Args) == 2 { if _, err := os.Stat(os.Args[1]); err == nil { confPath = os.Args[1] } } if confPath == "" { return fmt.Errorf("usage: %s <config path>", filepath.Base(os.Args[0])) } var conf config err := readConfig(confPath, &conf) if err != nil { return err } if conf.MongoURL == "" || conf.APIAddr == "" { return fmt.Errorf("missing mongo-url or api-addr in config file") } s, err := store.Open(conf.MongoURL) if err != nil { return err } defer s.Close() server, err := store.NewServer(s) if err != nil { return err } return http.ListenAndServe(conf.APIAddr, server) }
func (s *StoreSuite) SetUpTest(c *C) { s.MgoSuite.SetUpTest(c) var err error s.store, err = store.Open(s.Addr) c.Assert(err, IsNil) log.Target = c log.Debug = true }
func (s *StoreSuite) SetUpTest(c *gc.C) { s.BaseSuite.SetUpTest(c) s.MgoSuite.SetUpTest(c) s.HTTPSuite.SetUpTest(c) var err error s.store, err = store.Open(testing.MgoServer.Addr()) c.Assert(err, gc.IsNil) }