if_,err:=db.ExecuteStringStmt(`INSERT INTO foo(id, name) VALUES(1, "fiona")`);err!=nil{
t.Fatalf("failed to create table: %s",err.Error())
t.Fatalf("failed to insert records into foo: %s",err.Error())
}
}
}()
gofunc(){
deferwg.Done()
deferexWg.Done()
forrangebar{
if_,err:=db.ExecuteStringStmt(`INSERT INTO bar(id, name) VALUES(1, "fiona")`);err!=nil{
t.Fatalf("failed to create table: %s",err.Error())
t.Fatalf("failed to insert records into bar: %s",err.Error())
}
}
}()
gofunc(){
deferwg.Done()
deferexWg.Done()
forrangequx{
if_,err:=db.ExecuteStringStmt(`INSERT INTO qux(id, name) VALUES(1, "fiona")`);err!=nil{
t.Fatalf("failed to create table: %s",err.Error())
t.Fatalf("failed to insert records into qux: %s",err.Error())
}
}
}()
varnint
for{
ifrows,err:=db.QueryStringStmt(`SELECT sql FROM sqlite_master`);err!=nil{
t.Fatalf("failed to query for schema during goroutine execution: %s",err.Error())
}else{
n++
ifexp,got:=`[{"columns":["sql"],"types":["text"],"values":[["CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"],["CREATE TABLE bar (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"],["CREATE TABLE qux (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"]]}]`,asJSON(rows);exp!=got{
t.Fatalf("schema not as expected during goroutine execution, exp %s, got %s, after %d queries",exp,got,n)
varqWgsync.WaitGroup
qWg.Add(3)
fori:=0;i<3;i++{
gofunc(jint){
deferqWg.Done()
varnint
for{
ifrows,err:=db.QueryStringStmt(`SELECT sql FROM sqlite_master`);err!=nil{
t.Fatalf("failed to query for schema during goroutine %d execution: %s",j,err.Error())
}else{
n++
ifexp,got:=`[{"columns":["sql"],"types":["text"],"values":[["CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"],["CREATE TABLE bar (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"],["CREATE TABLE qux (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"]]}]`,asJSON(rows);exp!=got{
t.Fatalf("schema not as expected during goroutine execution, exp %s, got %s, after %d queries",exp,got,n)