本文整理汇总了Golang中github.com/coralproject/shelf/internal/platform/db.NewMGO函数的典型用法代码示例。如果您正苦于以下问题:Golang NewMGO函数的具体用法?Golang NewMGO怎么用?Golang NewMGO使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewMGO函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: setupGraph
// setupGraph initializes an in-memory Cayley graph and logging for an individual test.
func setupGraph(t *testing.T) (*db.DB, *cayley.Handle, []map[string]interface{}) {
tests.ResetLog()
items, _, _, _, err := wirefix.Get()
if err != nil {
t.Fatalf("%s\tShould load item records from the fixture file : %v", tests.Failed, err)
}
t.Logf("%s\tShould load item records from the fixture file.", tests.Success)
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
store, err := cayley.NewMemoryGraph()
if err != nil {
t.Fatalf("\t%s\tShould be able to create a new Cayley graph : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to create a new Cayley graph.", tests.Success)
// Convert the items to maps.
var itemMaps []map[string]interface{}
for _, itm := range items {
itemMap := map[string]interface{}{
"type": itm.Type,
"item_id": itm.ID,
"version": itm.Version,
"data": itm.Data,
}
itemMaps = append(itemMaps, itemMap)
}
return db, store, itemMaps
}
示例2: main
func main() {
app.Init(cfg.EnvProvider{Namespace: Namespace})
// Pull options from the config.
var conn *db.DB
if _, errHost := cfg.String(cfgWebHost); errHost != nil {
xenia.Println("Configuring MongoDB")
mongoURI := cfg.MustURL(cfgMongoURI)
err := db.RegMasterSession("startup", mongoURI.Path, mongoURI.String(), 0)
if err != nil {
xenia.Println("Unable to initialize MongoDB")
os.Exit(1)
}
conn, err = db.NewMGO("startup", mongoURI.Path)
if err != nil {
xenia.Println("Unable to get MongoDB session")
os.Exit(1)
}
defer conn.CloseMGO("startup")
}
xenia.AddCommand(
cmddb.GetCommands(conn),
cmdquery.GetCommands(),
cmdscript.GetCommands(),
cmdregex.GetCommands(),
cmdmask.GetCommands(),
cmdrelationship.GetCommands(),
cmdview.GetCommands(),
)
xenia.Execute()
}
示例3: runTest
// runTest initializes the environment for the tests and allows for
// the proper return code if the test fails or succeeds.
func runTest(m *testing.M) int {
// Initialize MongoDB using the `tests.TestSession` as the name of the
// master session.
if err := db.RegMasterSession(tests.Context, tests.TestSession, cfg.MustURL("MONGO_URI").String(), 0); err != nil {
fmt.Println("Can't register master session: " + err.Error())
return 1
}
// Setup the app for performing tests.
a = routes.API()
// Snatch the mongo session so we can create some test data.
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
fmt.Println("Unable to get Mongo session")
return 1
}
defer db.CloseMGO(tests.Context)
// Generate the test data.
tstdata.Generate(db)
defer tstdata.Drop(db)
// Load in the submissions from the fixture.
if err = loadSubmissions(db); err != nil {
fmt.Println("Unable to load submissions: ", err)
}
defer aggfix.Remove(tests.Context, db, "")
return m.Run()
}
示例4: runTest
// runTest initializes the environment for the tests and allows for
// the proper return code if the test fails or succeeds.
func runTest(m *testing.M) int {
// Initialize the configuration and logging systems. Plus anything
// else the web app layer needs.
tests.Init("XENIA")
// Initialize MongoDB using the `tests.TestSession` as the name of the
// master session.
if err := db.RegMasterSession(tests.Context, tests.TestSession, cfg.MustURL("MONGO_URI").String(), 0); err != nil {
fmt.Println("Can't register master session: " + err.Error())
return 1
}
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
fmt.Println("MongoDB is not configured")
return 1
}
defer db.CloseMGO(tests.Context)
if err := loadTestData(tests.Context, db); err != nil {
fmt.Println("test data is not loaded: " + err.Error())
return 1
}
defer unloadTestData(tests.Context, db)
return m.Run()
}
示例5: runTest
// runTest initializes the environment for the tests and allows for
// the proper return code if the test fails or succeeds.
func runTest(m *testing.M) int {
// Initialize the configuration and logging systems. Plus anything
// else the web app layer needs.
tests.Init("ASK")
// Initialize MongoDB using the `tests.TestSession` as the name of the
// master session.
if err := db.RegMasterSession(tests.Context, tests.TestSession, cfg.MustURL("MONGO_URI").String(), 0); err != nil {
fmt.Println("Can't register master session: " + err.Error())
return 1
}
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
log.Fatalf("Should be able to get a Mongo session : %v", err)
}
defer db.CloseMGO(tests.Context)
// We need the database indexes setup before we can call anything, so do this
// first. This is fairly important, so we want to fail the entire test suite
// if we can't setup the indexes.
if err := submission.EnsureIndexes(tests.Context, db); err != nil {
log.Fatal("Can't ensure the database indexes")
}
return m.Run()
}
示例6: Midware
// Midware handles databse session management and manages a MongoDB session.
func Midware(mongoURI *url.URL) web.Middleware {
// Create the middleware that we can use to create MongoDB sessions with.
m := func(next web.Handler) web.Handler {
// Create the handler that will be attached in the middleware chain.
h := func(c *web.Context) error {
// Pull in the mongo session from the master session so we can load it
// onto the request context. It is keyed by the path on the uri.
db, err := kitdb.NewMGO(c.SessionID, mongoURI.Path)
if err != nil {
log.Error(c.SessionID, "mongo : Midware", err, "Method[%s] URL[%s] RADDR[%s]", c.Request.Method, c.Request.URL.Path, c.Request.RemoteAddr)
return web.ErrDBNotConfigured
}
// Load the mongo database onto the request context.
c.Ctx["DB"] = db
log.Dev(c.SessionID, "mongo : Midware", "Capture Mongo Session")
// Close the MongoDB session when the handler returns.
defer func() {
log.Dev(c.SessionID, "mongo : Midware", "Release Mongo Session")
db.CloseMGO(c.SessionID)
}()
return next(c)
}
return h
}
return m
}
示例7: runTest
// runTest initializes the environment for the tests and allows for
// the proper return code if the test fails or succeeds.
func runTest(m *testing.M) int {
// Initialize MongoDB using the `tests.TestSession` as the name of the
// master session.
if err := db.RegMasterSession(tests.Context, tests.TestSession, cfg.MustURL("MONGO_URI").String(), 0); err != nil {
fmt.Println("Can't register master session: " + err.Error())
return 1
}
// Setup the app for performing tests.
a = routes.API()
// Snatch the mongo session so we can create some test data.
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
fmt.Println("Unable to get Mongo session")
return 1
}
defer db.CloseMGO(tests.Context)
if err := loadItems(tests.Context, db); err != nil {
fmt.Println("Could not load items")
return 1
}
defer itemfix.Remove(tests.Context, db, itemPrefix)
if err := loadPatterns(tests.Context, db); err != nil {
fmt.Println("Could not load patterns")
return 1
}
defer patternfix.Remove(tests.Context, db, patternPrefix)
return m.Run()
}
示例8: ensureDBIndexes
func ensureDBIndexes(mongoURI *url.URL) error {
mgoDB, err := db.NewMGO("startup", mongoURI.Path)
if err != nil {
return err
}
defer mgoDB.CloseMGO("startup")
return submission.EnsureIndexes("startup", mgoDB)
}
示例9: setup
func setup(t *testing.T) *db.DB {
tests.ResetLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("Should be able to get a Mongo session : %v", err)
}
return db
}
示例10: TestGetByID
// TestGetByID tests if we can get a single item from the db.
func TestGetByID(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
defer func() {
if err := itemfix.Remove(tests.Context, db, prefix); err != nil {
t.Fatalf("\t%s\tShould be able to remove the items : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove the items.", tests.Success)
}()
t.Log("Given the need to get an item in the database by ID.")
{
t.Log("\tWhen starting from an empty items collection")
{
items, err := itemfix.Get()
if err != nil {
t.Fatalf("\t%s\tShould be able retrieve item fixture : %s", tests.Failed, err)
}
var itemIDs []string
for _, it := range items {
if err := item.Upsert(tests.Context, db, &it); err != nil {
t.Fatalf("\t%s\tShould be able to upsert items : %s", tests.Failed, err)
}
itemIDs = append(itemIDs, it.ID)
}
t.Logf("\t%s\tShould be able to upsert items.", tests.Success)
itmBack, err := item.GetByID(tests.Context, db, itemIDs[0])
if err != nil {
t.Fatalf("\t%s\tShould be able to get an item by ID : %s", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to get an item by ID.", tests.Success)
// Check equality for all immutable fields: ID, Version, Data. Timestamps will change on Upsert.
if !reflect.DeepEqual(items[0].Data, itmBack.Data) || (items[0].ID != itmBack.ID) || (items[0].Version != itmBack.Version) {
t.Logf("\t%+v", items[0])
t.Logf("\t%+v", itmBack)
t.Fatalf("\t%s\tShould be able to get back the same item.", tests.Failed)
}
t.Logf("\t%s\tShould be able to get back the same item.", tests.Success)
}
}
}
示例11: runTest
// runTest initializes the environment for the tests and allows for
// the proper return code if the test fails or succeeds.
func runTest(m *testing.M) int {
// Create stub server for Sponged.
server := setup()
cfg.SetString("SPONGED_URL", server)
mongoURI := cfg.MustURL("MONGO_URI")
// Initialize MongoDB using the `tests.TestSession` as the name of the
// master session.
if err := db.RegMasterSession(tests.Context, tests.TestSession, mongoURI.String(), 0); err != nil {
fmt.Println("Can't register master session: " + err.Error())
return 1
}
a = routes.API()
// Snatch the mongo session so we can create some test data.
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
fmt.Println("Unable to get Mongo session")
return 1
}
defer db.CloseMGO(tests.Context)
if err = db.NewCayley(tests.Context, tests.TestSession); err != nil {
fmt.Println("Unable to get Cayley support")
}
store, err := db.GraphHandle(tests.Context)
if err != nil {
fmt.Println("Unable to get Cayley handle")
return 1
}
defer store.Close()
if err := tstdata.Generate(db); err != nil {
fmt.Println("Could not generate test data.")
return 1
}
defer tstdata.Drop(db)
if err := loadItems("context", db, store); err != nil {
fmt.Println("Could not import items")
return 1
}
defer unloadItems("context", db, store)
return m.Run()
}
示例12: TestGetByIDs
// TestGetByIDs tests if we can get items from the db.
func TestGetByIDs(t *testing.T) {
tests.ResetLog()
defer tests.DisplayLog()
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("\t%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
defer db.CloseMGO(tests.Context)
defer func() {
if err := itemfix.Remove(tests.Context, db, prefix); err != nil {
t.Fatalf("\t%s\tShould be able to remove the items : %v", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to remove the items.", tests.Success)
}()
t.Log("Given the need to get items in the database by IDs.")
{
t.Log("\tWhen starting from an empty items collection")
{
items1, err := itemfix.Get()
if err != nil {
t.Fatalf("\t%s\tShould be able retrieve item fixture : %s", tests.Failed, err)
}
var itemIDs []string
for _, it := range items1 {
if err := item.Upsert(tests.Context, db, &it); err != nil {
t.Fatalf("\t%s\tShould be able to upsert items : %s", tests.Failed, err)
}
itemIDs = append(itemIDs, it.ID)
}
t.Logf("\t%s\tShould be able to upsert items.", tests.Success)
items2, err := item.GetByIDs(tests.Context, db, itemIDs)
if err != nil {
t.Fatalf("\t%s\tShould be able to get items by IDs : %s", tests.Failed, err)
}
t.Logf("\t%s\tShould be able to get items by IDs.", tests.Success)
if len(items1) != len(items2) {
t.Logf("\t%+v", items1)
t.Logf("\t%+v", items2)
t.Fatalf("\t%s\tShould be able to get back the same items.", tests.Failed)
}
t.Logf("\t%s\tShould be able to get back the same items.", tests.Success)
}
}
}
示例13: setup
func setup(t *testing.T, fixture string) ([]submission.Submission, *db.DB) {
tests.ResetLog()
subs, err := submissionfix.GetMany("submission.json")
if err != nil {
t.Fatalf("%s\tShould be able retrieve submission fixture : %s", tests.Failed, err)
}
t.Logf("%s\tShould be able retrieve submission fixture.", tests.Success)
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("Should be able to get a Mongo session : %v", err)
}
return subs, db
}
示例14: setup
// setup initializes for each indivdual test.
func setup(t *testing.T) ([]relationship.Relationship, *db.DB) {
tests.ResetLog()
rels, err := relationshipfix.Get()
if err != nil {
t.Fatalf("%s\tShould load relationship records from file : %v", tests.Failed, err)
}
t.Logf("%s\tShould load relationship records from file.", tests.Success)
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
return rels, db
}
示例15: setup
// setup initializes for each indivdual test.
func setup(t *testing.T) ([]view.View, *db.DB) {
tests.ResetLog()
views, err := viewfix.Get()
if err != nil {
t.Fatalf("%s\tShould load view records from file : %v", tests.Failed, err)
}
t.Logf("%s\tShould load view records from file.", tests.Success)
db, err := db.NewMGO(tests.Context, tests.TestSession)
if err != nil {
t.Fatalf("%s\tShould be able to get a Mongo session : %v", tests.Failed, err)
}
return views, db
}