storage: prepare for parallel testing of sqlite and pgsql
This commit is contained in:
		
							parent
							
								
									ecceb9803b
								
							
						
					
					
						commit
						f1ce07fd7e
					
				
					 3 changed files with 50 additions and 24 deletions
				
			
		|  | @ -15,12 +15,13 @@ type Storage struct { | |||
| } | ||||
| 
 | ||||
| func Open(cfg *Cfg) *Storage { | ||||
| 	driver := cfg.Driver | ||||
| 	connStr := cfg.Connstr | ||||
| 	db, err := sql.Open(driver, connStr) | ||||
| 	db, err := sql.Open(cfg.Driver, cfg.Connstr) | ||||
| 	if err != nil { | ||||
| 		log.Error(err).Msg("sql.Open") | ||||
| 		return nil | ||||
| 	} | ||||
| 	return &Storage{db} | ||||
| } | ||||
| 
 | ||||
| func Exec(db *Storage, s string) { | ||||
| } | ||||
|  |  | |||
|  | @ -6,24 +6,34 @@ import ( | |||
| ) | ||||
| 
 | ||||
| func ConfigSqlite() *sql.Cfg { | ||||
| 	ovr := OverridesSqlite().Use | ||||
| 
 | ||||
| 	ovr := OverridesSql().Use | ||||
| 	return &sql.Cfg{ | ||||
| 		Driver:  "sqlite", | ||||
| 		Connstr: ovr("somefile.sqlite", SQLITE_CONNSTR), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func ConfigPgsql() *sql.Cfg { | ||||
| 	ovr := OverridesSql().Use | ||||
| 	return &sql.Cfg{ | ||||
| 		Driver:  "postgres", | ||||
| 		Connstr: ovr("user=ccotest password=cco dbname=ccotest", PGSQL_CONNSTR), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // collect here the names of fields that may be overridden via | ||||
| // explicit Override() or SCOPES_* environment settings. | ||||
| const ( | ||||
| 	SQLITE_CONNSTR = "sqlite_connstr" | ||||
| 	PGSQL_CONNSTR  = "pgsql_connstr" | ||||
| ) | ||||
| 
 | ||||
| // in a production scenario this should be put in a separate | ||||
| // file `settings.go` that should not be stored in code repository. | ||||
| func OverridesSqlite() config.Settings { | ||||
| func OverridesSql() config.Settings { | ||||
| 	return config.Settings{ | ||||
| 		SQLITE_CONNSTR: ":memory", | ||||
| 		//SQLITE_CONNSTR: ":memory", | ||||
| 		SQLITE_CONNSTR: "data/scopes.sqlite", | ||||
| 		PGSQL_CONNSTR:  "user=ccotest password=cco dbname=ccotest", | ||||
| 	} | ||||
| } | ||||
|  | @ -6,38 +6,53 @@ import ( | |||
| 
 | ||||
| 	"git.sr.ht/~cco/go-scopes/common/testing" | ||||
| 	"git.sr.ht/~cco/go-scopes/storage/sql" | ||||
| 	_ "git.sr.ht/~cco/go-scopes/storage/sql/pgsql" | ||||
| 	_ "git.sr.ht/~cco/go-scopes/storage/sql/sqlite" | ||||
| 	"git.sr.ht/~cco/go-scopes/tests/etc" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	cfg_sqlite *sql.Cfg | ||||
| 	db_sqlite  *sql.Storage | ||||
| ) | ||||
| 
 | ||||
| func TestSqlite(tb *tbase.T) { | ||||
| 	cfg_sqlite = etc.ConfigSqlite() | ||||
| 	db_sqlite = sql.Open(cfg_sqlite) | ||||
| 	t := testing.SetUp(tb) | ||||
| 	t.Run("sqlite-base", SqliteBaseTest) | ||||
| 	cfg := etc.ConfigSqlite() | ||||
| 	db := sql.Open(cfg) | ||||
| 	// resetSqlite(db) | ||||
| 	DoTests(t, cfg, db) | ||||
| } | ||||
| 
 | ||||
| func SqliteBaseTest(t *testing.T) { | ||||
| 	fmt.Println(cfg_sqlite.Connstr) | ||||
| func TestPgsql(tb *tbase.T) { | ||||
| 	t := testing.SetUp(tb) | ||||
| 	cfg := etc.ConfigPgsql() | ||||
| 	db := sql.Open(cfg) | ||||
| 	// resetPgsql(db) | ||||
| 	DoTests(t, cfg, db) | ||||
| } | ||||
| 
 | ||||
| func DoTests(t *testing.T, cfg *sql.Cfg, db *sql.Storage) { | ||||
| 	t.Run("base", func(t *testing.T) { BaseTest(t, cfg, db) }) | ||||
| } | ||||
| 
 | ||||
| func BaseTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) { | ||||
| 	fmt.Println(cfg.Connstr) | ||||
| } | ||||
| 
 | ||||
| // SQL statements | ||||
| 
 | ||||
| var sqlite_drop_table = `drop table test` | ||||
| var drop_table = `drop table test` | ||||
| 
 | ||||
| var insert = `insert into test (label) values | ||||
| 	('Hello World'), | ||||
| 	('Good Afternoon')` | ||||
| 
 | ||||
| var query = `select label from test  | ||||
| 	where id = $1` | ||||
| 
 | ||||
| // database-specific SQL statements | ||||
| 
 | ||||
| // note: ... integer ... primary key ... automatically fills row sequentially | ||||
| var sqlite_create_table = `create table test ( | ||||
| 	id integer not null primary key, | ||||
| 	label text)` | ||||
| 
 | ||||
| var sqlite_insert = `insert into test (label) values | ||||
| 	('Hello World'), | ||||
| 	('Good Afternoon')` | ||||
| 
 | ||||
| var sqlite_query = `select label from test  | ||||
| 	where id = $1` | ||||
| var pgsql_create_table = `create table test ( | ||||
| 	id serial not null primary key, | ||||
| 	label text)` | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue