func rootFunc(w http.ResponseWriter, r *http.Request) { g := Load() l := log551.New(&g.config.Framework.SystemLog) l.Open() defer l.Close() cookie := cookie551.New(w, r) sid := g.sid(cookie) l.Debugf("%s SID: %s", sid[:10], sid) session := memcache551.New(&g.config.Framework.Session.Server, sid) route := g.router.FindRouteByPathMatch(r.Method, r.URL.Path) response551.UrlFunction = g.router.Url var data interface{} = nil if route != nil { mysql := mysql551.New(&g.config.Framework.Database) mysql.Open() defer mysql.Close() l.Debugf("%s --[ Routing ]--", sid[:10]) l.Debugf("%s Path: %s", sid[:10], r.URL.Path) l.Debugf("%s Neme: %s", sid[:10], route.Name()) c := container551.New() c.SetSID(sid) c.SetResponseWriter(w) c.SetRequest(r) c.SetLogger(l) c.SetCookie(cookie) c.SetDb(mysql) c.SetSession(session) c.SetModel(g.modelManager) c.SetAuth(g.auth) c.SetUrlFunc(g.router.Url) baseUrl := "https://" + g.config.Framework.WebServerSSL.Host if g.config.Framework.WebServerSSL.Port != "443" { baseUrl = baseUrl + ":" + g.config.Framework.WebServerSSL.Port } c.SetBaseURL(baseUrl) response551.BaseUrl = baseUrl action := route.Action() data = action(c) response551.Response(w, r, data, route.PackageName(), route.Name(), c.User(), g.config.Application) } else { l.Errorf("%s --[ Route not found ]--", sid[:10]) l.Errorf("%s UA: %s", sid[:10], r.UserAgent()) l.Errorf("%s Method: %s", sid[:10], r.Method) l.Errorf("%s Path: %s", sid[:10], r.URL.Path) l.Errorf("%s --[/Route not found ]--", sid[:10]) data = response551.Error(404, "Route not found.") response551.Response(w, r, data, "", "", nil, g.config.Application) } }
func TestMain(m *testing.M) { dbConfig := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "repository551", } db = mysql551.New(dbConfig) db.Open() defer db.Close() // Truncate sql := "TRUNCATE TABLE sample" _, _ = db.Exec(sql) sql = "TRUNCATE TABLE sample_delete" _, _ = db.Exec(sql) // Insert sql = "INSERT INTO sample (`group_id`, `name`, `description`) VALUES (?, ?, ?)" _, _ = db.Exec(sql, 2, "pubapp.biz_1", "domain_1") _, _ = db.Exec(sql, 1, "pubapp.biz_2", "domain_2") _, _ = db.Exec(sql, 2, "pubapp.biz_3", "domain_3") _, _ = db.Exec(sql, 2, "pubapp.biz_4", "domain_4") _, _ = db.Exec(sql, 3, "pubapp.biz_5", "domain_5") mm = model551.Load() mm.Add(NewSampleModel, NewSampleModelPointer) code := m.Run() os.Exit(code) }
func initialize() { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m.Open() defer m.Close() // truncate sql := "truncate table sample_table" _, _ = m.Exec(sql) sql = "truncate table sample_table_cud" _, _ = m.Exec(sql) sql = "truncate table sample_table_tran" _, _ = m.Exec(sql) // Insert sql = "insert into sample_table (name, description) values (?, ?)" _, _ = m.Exec(sql, "pubapp.biz_1", "domain_1") _, _ = m.Exec(sql, "pubapp.biz_2", "domain_2") _, _ = m.Exec(sql, "pubapp.biz_3", "domain_3") _, _ = m.Exec(sql, "pubapp.biz_4", "domain_4") _, _ = m.Exec(sql, "pubapp.biz_5", "domain_5") }
func TestQueryOne(t *testing.T) { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m.Open() defer m.Close() sqlAll := "select id, name, description from sample_table where id = ?" rows := m.Query(sqlAll, 3) defer rows.Close() if rows.Next() { s := sample{} err := rows.Scan(&s.id, &s.name, &s.description) if err != nil { t.Errorf("クエリ実行に失敗しました。") } if s.id != 3 { t.Errorf("クエリ実行に失敗しました。") } if s.name != "pubapp.biz_3" { t.Errorf("クエリ実行に失敗しました。") } if s.description != "domain_3" { t.Errorf("クエリ実行に失敗しました。") } } }
func TestQueryAll(t *testing.T) { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m.Open() defer m.Close() sqlAll := "select id, name, description from sample_table" rows := m.Query(sqlAll) defer rows.Close() i := 0 for rows.Next() { s := sample{} err := rows.Scan(&s.id, &s.name, &s.description) if err != nil { t.Errorf("クエリ実行が失敗しました。\nResult: %d件", i) } i++ } if i != 5 { t.Errorf("クエリ実行が失敗しました。\nResult: %d件", i) } }
func consoleHandler() { g := Load() l := log551.New(&g.config.Framework.CommandLog) l.Open() defer l.Close() sid := secure551.Hash() // Routing name := os.Args[1] l.Debugf("%s [ Command ] %s", sid[:10], name) route := g.router.FindRouteByName(router551.COMMAND.String(), name) if route == nil { l.Errorf("%s %s", sid[:10], "Action not found...") return } // Options optionArgs := os.Args[2:] if len(optionArgs)%2 == 1 { l.Errorf("%s %s", sid[:10], "Missing options.") } options := make(map[string]string, len(optionArgs)/2) for i := 0; i < len(optionArgs); i += 2 { options[optionArgs[i][1:]] = optionArgs[i+1] } mysql := mysql551.New(&g.config.Framework.Database) mysql.Open() defer mysql.Close() session := memcache551.New(&g.config.Framework.Session.Server, sid) c := container551.New() c.SetSID(sid) c.SetResponseWriter(nil) c.SetRequest(nil) c.SetLogger(l) c.SetCookie(nil) c.SetDb(mysql) c.SetSession(session) c.SetModel(g.modelManager) c.SetCommandOptions(options) if g.config.Framework.WebServerSSL.Port == "443" { c.SetBaseURL("https://" + g.config.Framework.WebServerSSL.Host) } else { c.SetBaseURL("https://" + g.config.Framework.WebServerSSL.Host + ":" + g.config.Framework.WebServerSSL.Port) } action := route.Action() action(c) }
func TestNew(t *testing.T) { config := &mysql551.Config{ Host: "localhost", User: "******", Password: "", Database: "mysql551_test", } m1 := mysql551.New(config) m2 := mysql551.New(config) if m1 == nil { t.Errorf("インスタンスの生成に失敗しました。%#v\n", m1) } if m2 == nil { t.Errorf("インスタンスの生成に失敗しました。%#v\n", m2) } if &m1 == &m2 { t.Errorf("インスタンスの生成に失敗しました。\n [%p] != [%p]", &m1, &m2) } }
func TestExecUpdate(t *testing.T) { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m.Open() defer m.Close() update := "update sample_table_cud set name = ?, description = ? where id = ?" affected, id := m.Exec(update, "pubapp.biz_1", "test_1", 1) if affected != 1 { t.Errorf("クエリ実行が失敗しました。\nAffected: %d", affected) } if id != 0 { t.Errorf("クエリ実行が失敗しました。\nId: %d", id) } update = "update sample_table_cud set name = ?, description = ? where id = ?" affected, id = m.Exec(update, "pubapp.biz_2", "test_2", 2) if affected != 0 { t.Errorf("クエリ実行が失敗しました。\nAffected: %d", affected) } if id != 0 { t.Errorf("クエリ実行が失敗しました。\nId: %d", id) } sql := "select id, name, description from sample_table_cud where id = ?" rows := m.Query(sql, 1) if rows.Next() { s := sample{} err := rows.Scan(&s.id, &s.name, &s.description) if err != nil { t.Errorf("クエリ実行に失敗しました。") } if s.id != 1 { t.Errorf("クエリ実行に失敗しました。") } if s.name != "pubapp.biz_1" { t.Errorf("クエリ実行に失敗しました。") } if s.description != "test_1" { t.Errorf("クエリ実行に失敗しました。") } } }
func BenchmarkNew(b *testing.B) { config := &mysql551.Config{ Host: "localhost", User: "******", Password: "", Database: "mysql551_test", } b.ResetTimer() for i := 0; i < b.N; i++ { _ = mysql551.New(config) } }
func BenchmarkOpenClose(b *testing.B) { b.SkipNow() config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) b.ResetTimer() for i := 0; i < b.N; i++ { m.Open() m.Close() } }
func TestOpenClose(t *testing.T) { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m.Open() if !m.IsOpen() { t.Errorf("データベースとの接続に失敗しました。\nResult: %v\n", m.IsOpen()) } m.Close() if m.IsOpen() { t.Errorf("データベースとの切断に失敗しました。\nResult: %v\n", m.IsOpen()) } }
func TestExecInsert(t *testing.T) { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m.Open() defer m.Close() insert := "insert into sample_table_cud (name, description) values (?, ?)" affected, id := m.Exec(insert, "pubapp.biz", "test") if affected != 1 { t.Errorf("クエリ実行が失敗しました。\nAffected: %d", affected) } if id != 1 { t.Errorf("クエリ実行が失敗しました。\nId: %d", id) } }
func TestTransaction(t *testing.T) { config := &mysql551.Config{ Host: "tcp(localhost:3306)", User: "******", Password: "", Database: "mysql551_test", } m := mysql551.New(config) m2 := mysql551.New(config) m.Open() defer m.Close() m2.Open() defer m2.Close() m.Begin() if !m.IsTransaction() { t.Errorf("トランザクションを実施しているはず。") } if m2.IsTransaction() { t.Errorf("トランザクションを実施していないはず。") } insert := "insert into sample_table_tran (name, description) values (?, ?)" _, _ = m.Exec(insert, "pubapp.biz", "domain") var cnt int64 = 0 sql := "select count(*) as cnt from sample_table_tran" rows := m.Query(sql) if rows.Next() { rows.Scan(&cnt) } rows.Close() if cnt != 1 { t.Errorf("トランザクション中のクエリ実行に失敗しました。") } rows = m2.Query(sql) if rows.Next() { rows.Scan(&cnt) } rows.Close() if cnt != 0 { t.Errorf("トランザクション中のクエリ実行に失敗しました。\nCount: %d", cnt) } m.Commit() rows = m2.Query(sql) if rows.Next() { rows.Scan(&cnt) } rows.Close() if cnt != 1 { t.Errorf("トランザクション中のクエリ実行に失敗しました。\nCount: %d", cnt) } m.Begin() delete := "delete from sample_table_tran" _, _ = m.Exec(delete) rows = m.Query(sql) if rows.Next() { rows.Scan(&cnt) } rows.Close() if cnt != 0 { t.Errorf("トランザクション中のクエリ実行に失敗しました。") } m.Rollback() rows = m.Query(sql) if rows.Next() { rows.Scan(&cnt) } rows.Close() if cnt != 1 { t.Errorf("トランザクション中のクエリ実行に失敗しました。") } }