func TestBackend(t *testing.T) { dsn := *dsn if env := os.Getenv("DSN"); env != "" { // for running in CI container dsn = env } db, err := sql.Open("postgres", dsn) if err != nil { t.Fatalf("sql.Open: %s", err) } // Drop all tables. for _, item := range schema { if _, err := db.Exec("DROP TABLE IF EXISTS " + item.Name + " CASCADE"); err != nil { t.Fatalf("failed to drop table %s: %s", item.Name, err) } } if _, err := db.Exec("DROP TABLE IF EXISTS gorp_migrations"); err != nil { t.Fatal(err) } // Recreate all tables. src := migrate.FileMigrationSource{"migrations"} if _, err := migrate.Exec(db, "postgres", src, migrate.Up); err != nil { t.Fatal(err) } // Define backend factory. var b *Backend defer func() { if b != nil { b.Close() } }() factory := func(heim *proto.Heim) (proto.Backend, error) { if b == nil { heim.Cluster = &cluster.TestCluster{} heim.PeerDesc = &cluster.PeerDesc{ ID: "testcase", Era: "era", Version: "testver", } b, err = NewBackend(heim, dsn) if err != nil { return nil, err } } return &nonClosingBackend{b}, nil } // Run test suite. backend.IntegrationTest(t, factory) }
func TestBackend(t *testing.T) { etcd, err := clustertest.StartEtcd() if err != nil { t.Fatal(err) } if etcd == nil { t.Fatal("etcd not available in PATH, can't test backend") } defer etcd.Shutdown() dsn := *dsn if env := os.Getenv("DSN"); env != "" { // for running in CI container dsn = env } db, err := sql.Open("postgres", dsn) if err != nil { t.Fatalf("sql.Open: %s", err) } // Drop all tables. for _, item := range schema { if _, err := db.Exec("DROP TABLE IF EXISTS " + item.Name + " CASCADE"); err != nil { t.Fatalf("failed to drop table %s: %s", item.Name, err) } } if _, err := db.Exec("DROP TABLE IF EXISTS gorp_migrations"); err != nil { t.Fatal(err) } // Recreate all tables. src := migrate.FileMigrationSource{"migrations"} if _, err := migrate.Exec(db, "postgres", src, migrate.Up); err != nil { t.Fatal(err) } // Start up backend. c := etcd.Join("/test", "testcase", "era") desc := &cluster.PeerDesc{ ID: "testcase", Era: "era", Version: "testver", } b, err := NewBackend(scope.New(), dsn, c, desc) if err != nil { t.Fatal(err) } defer b.Close() // Run test suite. backend.IntegrationTest(t, func() proto.Backend { return nonClosingBackend{b} }) }
func TestIntegration(t *testing.T) { etcd, err := clustertest.StartEtcd() if err != nil { t.Fatal(err) } if etcd == nil { t.Fatal("can't test euphoria.io/heim/cluster/etcd: etcd not available in PATH") } defer etcd.Shutdown() backend.IntegrationTest( t, func(heim *proto.Heim) (proto.Backend, error) { heim.Cluster = etcd.Join("/test", "testcase", "era") return &mock.TestBackend{}, nil }) }
func TestIntegration(t *testing.T) { backend.IntegrationTest(t, func() proto.Backend { return &mock.TestBackend{} }) }
func TestBackend(t *testing.T) { backend.IntegrationTest( t, func(*proto.Heim) (proto.Backend, error) { return &mock.TestBackend{}, nil }) }
func TestBackend(t *testing.T) { dsn := *dsn if env := os.Getenv("DSN"); env != "" { // for running in CI container dsn = env } db, err := sql.Open("postgres", dsn) if err != nil { t.Fatalf("sql.Open: %s", err) } // Drop all tables. for _, item := range schema { if _, err := db.Exec("DROP TABLE IF EXISTS " + item.Name + " CASCADE"); err != nil { t.Fatalf("failed to drop table %s: %s", item.Name, err) } } for _, table := range []string{"gorp_migrations", "stats_sessions_analyzed", "stats_sessions_global", "stats_sessions_per_room"} { if _, err := db.Exec("DROP TABLE IF EXISTS " + table); err != nil { t.Fatal(err) } } for _, function := range []string{ "stats_sessions_analyze()", "stats_sessions_global_find(timestamp with time zone, timestamp with time zone)", "stats_sessions_global_extend(timestamp with time zone, timestamp with time zone)", "stats_sessions_per_room_find(timestamp with time zone, timestamp with time zone)", "stats_sessions_per_room_extend(timestamp with time zone, timestamp with time zone)", "job_claim(text, text)", "job_steal(text, text)", "job_complete(bigint, integer, bytea)", "job_fail(bigint, integer, text, bytea)", "job_cancel(bigint)", "virtualize_address(text, inet)", "virtualize_inet4(text, inet)", "virtualize_inet6(text, inet)", "permute32(integer)", } { if _, err := db.Exec("DROP FUNCTION IF EXISTS " + function); err != nil { t.Fatal(err) } } // Recreate all tables. src := migrate.FileMigrationSource{"migrations"} if _, err := migrate.Exec(db, "postgres", src, migrate.Up); err != nil { t.Fatal(err) } // Define backend factory. var b *Backend defer func() { if b != nil { b.Close() } }() factory := func(heim *proto.Heim) (proto.Backend, error) { if b == nil { heim.Cluster = &cluster.TestCluster{} heim.PeerDesc = &cluster.PeerDesc{ ID: "testcase", Era: "era", Version: "testver", } b, err = NewBackend(heim, dsn) if err != nil { return nil, err } } return &nonClosingBackend{b}, nil } // Run test suite. backend.IntegrationTest(t, factory) }