[WIP] migration to psql
TODO: [ ] stats [ ] indexes
This commit is contained in:
parent
e1bd235785
commit
e72de38725
24 changed files with 648 additions and 936 deletions
|
@ -1,24 +1,71 @@
|
|||
package database
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
|
||||
mgo "gopkg.in/mgo.v2"
|
||||
)
|
||||
|
||||
const (
|
||||
test_coll = "test_trantor"
|
||||
test_host = "127.0.0.1"
|
||||
)
|
||||
func testDbInit(t *testing.T) (DB, func()) {
|
||||
db, err := Init(Options{
|
||||
Name: "test_trantor",
|
||||
// TODO: can it be done with a local user?
|
||||
User: "trantor",
|
||||
Password: "trantor",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal("Init() return an error: ", err)
|
||||
}
|
||||
pgdb, _ := db.(*pgDB)
|
||||
|
||||
buf, err := ioutil.ReadFile("../../createdb.sql")
|
||||
if err != nil {
|
||||
t.Fatal("error reading sql schema: ", err)
|
||||
}
|
||||
schema := string(buf)
|
||||
_, err = pgdb.sql.Exec(schema)
|
||||
if err != nil {
|
||||
t.Fatal("error setting up sql schema: ", err)
|
||||
}
|
||||
|
||||
cleanFn := func() {
|
||||
entities := []struct {
|
||||
name string
|
||||
query string
|
||||
}{
|
||||
{"table", "select tablename from pg_tables where schemaname = 'public'"},
|
||||
{"index", "select indexname from pg_indexes where schemaname = 'public'"},
|
||||
{"function", `SELECT format('%s(%s)', p.proname, pg_get_function_identity_arguments(p.oid))
|
||||
FROM pg_catalog.pg_namespace n
|
||||
JOIN pg_catalog.pg_proc p
|
||||
ON p.pronamespace = n.oid
|
||||
WHERE n.nspname = 'public'`},
|
||||
{"trigger", "select tgname from pg_trigger"},
|
||||
}
|
||||
|
||||
for _, entity := range entities {
|
||||
var items []string
|
||||
_, err = pgdb.sql.Query(&items, entity.query)
|
||||
if err != nil {
|
||||
t.Error("get the list of "+entity.name+"return an error: ", err)
|
||||
}
|
||||
for _, item := range items {
|
||||
_, err = pgdb.sql.Exec("drop " + entity.name + " " + item + " cascade")
|
||||
if err != nil {
|
||||
t.Error("drop ", entity.name, " ", item, " return an error: ", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
t.Error("db.Close() return an error: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
return db, cleanFn
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db := Init(test_host, test_coll)
|
||||
defer db.Close()
|
||||
}
|
||||
|
||||
func del(db DB) {
|
||||
db.Close()
|
||||
session, _ := mgo.Dial(test_host)
|
||||
defer session.Close()
|
||||
session.DB(test_coll).DropDatabase()
|
||||
_, dbclose := testDbInit(t)
|
||||
defer dbclose()
|
||||
}
|
||||
|
|
Reference in a new issue