diff --git a/glide.lock b/glide.lock index df2f8cc26b..94c6ed94ae 100644 --- a/glide.lock +++ b/glide.lock @@ -74,7 +74,6 @@ imports: version: a646b13548ec0aa812fe805b2780f460dd2771b6 subpackages: - dialects/mysql - - dialects/sqlite - name: github.com/jinzhu/inflection version: 8f4d3a0d04ce0b7c0cf3126fb98524246d00d102 - name: github.com/jordan-wright/email @@ -87,8 +86,6 @@ imports: version: 61b492c03cf472e0c6419be5899b8e0dc28b1b88 - name: github.com/manucorporat/sse version: ee05b128a739a0fb76c7ebd3ae4810c1de808d6d -- name: github.com/mattn/go-sqlite3 - version: e118d4451349065b8e7ce0f0af32e033995363f8 - name: github.com/matttproud/golang_protobuf_extensions version: c12348ce28de40eed0136aa2b644d0ee0650e56c subpackages: diff --git a/glide.yaml b/glide.yaml index 8bd475ab00..333e66f0b2 100644 --- a/glide.yaml +++ b/glide.yaml @@ -35,13 +35,10 @@ import: version: a646b13548ec0aa812fe805b2780f460dd2771b6 subpackages: - dialects/mysql - - dialects/sqlite - package: github.com/jinzhu/inflection version: 8f4d3a0d04ce0b7c0cf3126fb98524246d00d102 - package: github.com/manucorporat/sse version: ee05b128a739a0fb76c7ebd3ae4810c1de808d6d -- package: github.com/mattn/go-sqlite3 - version: e118d4451349065b8e7ce0f0af32e033995363f8 - package: github.com/pmezard/go-difflib version: ~1.0.0 subpackages: diff --git a/server/datastore/datastore.go b/server/datastore/datastore.go index 6c0dbde5a7..826e9eb7df 100644 --- a/server/datastore/datastore.go +++ b/server/datastore/datastore.go @@ -54,24 +54,6 @@ func New(driver, conn string, opts ...DBOption) (kolide.Datastore, error) { return nil, err } return ds, nil - case "gorm-sqlite3": - db, err := openGORM("sqlite3", conn, opt.maxAttempts) - if err != nil { - return nil, err - } - ds := gormDB{ - DB: db, - Driver: "sqlite3", - } - // configure logger - if opt.logger != nil { - db.SetLogger(opt.logger) - db.LogMode(opt.debug) - } - if err := ds.Migrate(); err != nil { - return nil, err - } - return ds, nil case "inmem": ds := &inmem{ Driver: "inmem", diff --git a/server/datastore/gorm.go b/server/datastore/gorm.go index 1fd35353b8..62f6e399a0 100644 --- a/server/datastore/gorm.go +++ b/server/datastore/gorm.go @@ -5,7 +5,6 @@ import ( "time" _ "github.com/go-sql-driver/mysql" // db driver - _ "github.com/mattn/go-sqlite3" // db driver "github.com/jinzhu/gorm" "github.com/kolide/kolide-ose/server/config" diff --git a/server/datastore/gorm_labels.go b/server/datastore/gorm_labels.go index e72f163970..eb26403dfa 100644 --- a/server/datastore/gorm_labels.go +++ b/server/datastore/gorm_labels.go @@ -107,20 +107,9 @@ func (orm gormDB) RecordLabelQueryExecutions(host *kolide.Host, results map[stri } insert := new(bytes.Buffer) - switch orm.Driver { - case "mysql": - insert.WriteString("INSERT ") - case "sqlite3": - insert.WriteString("REPLACE ") - default: - return errors.New( - "Unknown DB driver", - "Tried to use unknown DB driver in RecordLabelQueryExecutions: "+orm.Driver, - ) - } insert.WriteString( - "INTO label_query_executions (updated_at, matches, label_id, host_id) VALUES", + "INSERT INTO label_query_executions (updated_at, matches, label_id, host_id) VALUES", ) // Build up all the values and the query string @@ -133,14 +122,11 @@ func (orm gormDB) RecordLabelQueryExecutions(host *kolide.Host, results map[stri queryString := insert.String() queryString = strings.TrimSuffix(queryString, ",") - switch orm.Driver { - case "mysql": - queryString += ` + queryString += ` ON DUPLICATE KEY UPDATE updated_at = VALUES(updated_at), matches = VALUES(matches) ` - } if err := orm.DB.Exec(queryString, vals...).Error; err != nil { return errors.DatabaseError(err) diff --git a/server/datastore/gorm_test.go b/server/datastore/gorm_test.go index 26c9f8f723..8cf0ed5269 100644 --- a/server/datastore/gorm_test.go +++ b/server/datastore/gorm_test.go @@ -1,19 +1,28 @@ package datastore import ( + "fmt" + "os" "testing" - "github.com/jinzhu/gorm" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func setupGorm(t *testing.T) kolide.Datastore { - db, err := gorm.Open("sqlite3", ":memory:") - require.Nil(t, err) + user := "kolide" + password := "kolide" + dbName := "kolide" - ds := gormDB{DB: db, Driver: "sqlite3"} + // try container first + host := os.Getenv("MYSQL_PORT_3306_TCP_ADDR") + if host == "" { + host = "127.0.0.1" + } + host = fmt.Sprintf("%s:3306", host) + + connString := fmt.Sprintf("%s:%s@(%s)/%s?charset=utf8&parseTime=True&loc=Local", user, password, host, dbName) + ds, err := New("gorm-mysql", connString) err = ds.Migrate() assert.Nil(t, err) @@ -26,6 +35,10 @@ func teardownGorm(t *testing.T, ds kolide.Datastore) { } func TestGorm(t *testing.T) { + address := os.Getenv("MYSQL_ADDR") + if address == "" { + t.SkipNow() + } for _, f := range testFunctions { t.Run(functionName(f), func(t *testing.T) { ds := setupGorm(t) diff --git a/server/service/endpoint_middleware_test.go b/server/service/endpoint_middleware_test.go index 1fa432d4d7..b22a39a5a9 100644 --- a/server/service/endpoint_middleware_test.go +++ b/server/service/endpoint_middleware_test.go @@ -184,7 +184,7 @@ func TestGetNodeKey(t *testing.T) { } func TestAuthenticatedHost(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", "") + ds, err := datastore.New("inmem", "") require.Nil(t, err) svc, err := newTestService(ds) require.Nil(t, err) diff --git a/server/service/handler_test.go b/server/service/handler_test.go index 46c5146a08..69ef28875f 100644 --- a/server/service/handler_test.go +++ b/server/service/handler_test.go @@ -12,7 +12,7 @@ import ( ) func TestAPIRoutes(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) diff --git a/server/service/service_hosts_test.go b/server/service/service_hosts_test.go index 1b0ce84f22..03bee09738 100644 --- a/server/service/service_hosts_test.go +++ b/server/service/service_hosts_test.go @@ -10,7 +10,7 @@ import ( ) func TestListHosts(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -33,7 +33,7 @@ func TestListHosts(t *testing.T) { } func TestGetHost(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -54,7 +54,7 @@ func TestGetHost(t *testing.T) { } func TestDeleteHost(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) diff --git a/server/service/service_labels_test.go b/server/service/service_labels_test.go index 83c2300e2d..e1f192a893 100644 --- a/server/service/service_labels_test.go +++ b/server/service/service_labels_test.go @@ -10,7 +10,7 @@ import ( ) func TestListLabels(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -35,7 +35,7 @@ func TestListLabels(t *testing.T) { } func TestGetLabel(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -57,7 +57,7 @@ func TestGetLabel(t *testing.T) { } func TestNewLabel(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -82,7 +82,7 @@ func TestNewLabel(t *testing.T) { } func TestModifyLabel(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -108,7 +108,7 @@ func TestModifyLabel(t *testing.T) { } func TestDeleteLabel(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) diff --git a/server/service/service_osquery_test.go b/server/service/service_osquery_test.go index 0734df5474..4b6f6a59c3 100644 --- a/server/service/service_osquery_test.go +++ b/server/service/service_osquery_test.go @@ -18,7 +18,7 @@ import ( ) func TestEnrollAgent(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -40,7 +40,7 @@ func TestEnrollAgent(t *testing.T) { } func TestEnrollAgentIncorrectEnrollSecret(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -62,7 +62,7 @@ func TestEnrollAgentIncorrectEnrollSecret(t *testing.T) { } func TestSubmitStatusLogs(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -134,7 +134,7 @@ func TestSubmitStatusLogs(t *testing.T) { } func TestSubmitResultLogs(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -235,7 +235,7 @@ func TestHostDetailQueries(t *testing.T) { } func TestLabelQueries(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -400,7 +400,7 @@ func TestLabelQueries(t *testing.T) { } func TestGetClientConfig(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -484,7 +484,7 @@ func TestGetClientConfig(t *testing.T) { } func TestDetailQueries(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) mockClock := clock.NewMockClock() diff --git a/server/service/service_packs_test.go b/server/service/service_packs_test.go index 9c8cc6ce80..f558652657 100644 --- a/server/service/service_packs_test.go +++ b/server/service/service_packs_test.go @@ -10,7 +10,7 @@ import ( ) func TestListPacks(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -33,7 +33,7 @@ func TestListPacks(t *testing.T) { } func TestGetPack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -55,7 +55,7 @@ func TestGetPack(t *testing.T) { } func TestNewPack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -76,7 +76,7 @@ func TestNewPack(t *testing.T) { } func TestModifyPack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -102,7 +102,7 @@ func TestModifyPack(t *testing.T) { } func TestDeletePack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -127,7 +127,7 @@ func TestDeletePack(t *testing.T) { } func TestAddQueryToPack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -146,7 +146,7 @@ func TestAddQueryToPack(t *testing.T) { Name: "bar", Query: "select * from time;", } - _, err = ds.NewQuery(query) + query, err = ds.NewQuery(query) assert.Nil(t, err) assert.NotZero(t, query.ID) @@ -163,7 +163,7 @@ func TestAddQueryToPack(t *testing.T) { } func TestGetQueriesInPack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -182,7 +182,7 @@ func TestGetQueriesInPack(t *testing.T) { Name: "bar", Query: "select * from time;", } - _, err = ds.NewQuery(query) + query, err = ds.NewQuery(query) assert.Nil(t, err) assert.NotZero(t, query.ID) @@ -195,7 +195,7 @@ func TestGetQueriesInPack(t *testing.T) { } func TestRemoveQueryFromPack(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -214,7 +214,7 @@ func TestRemoveQueryFromPack(t *testing.T) { Name: "bar", Query: "select * from time;", } - _, err = ds.NewQuery(query) + query, err = ds.NewQuery(query) assert.Nil(t, err) assert.NotZero(t, query.ID) diff --git a/server/service/service_queries_test.go b/server/service/service_queries_test.go index b1a3652ae1..3ad39a2f75 100644 --- a/server/service/service_queries_test.go +++ b/server/service/service_queries_test.go @@ -10,7 +10,7 @@ import ( ) func TestListQueries(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -34,7 +34,7 @@ func TestListQueries(t *testing.T) { } func TestGetQuery(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -46,7 +46,7 @@ func TestGetQuery(t *testing.T) { Name: "foo", Query: "select * from time;", } - _, err = ds.NewQuery(query) + query, err = ds.NewQuery(query) assert.Nil(t, err) assert.NotZero(t, query.ID) @@ -57,7 +57,7 @@ func TestGetQuery(t *testing.T) { } func TestNewQuery(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -80,7 +80,7 @@ func TestNewQuery(t *testing.T) { } func TestModifyQuery(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -92,7 +92,7 @@ func TestModifyQuery(t *testing.T) { Name: "foo", Query: "select * from time;", } - _, err = ds.NewQuery(query) + query, err = ds.NewQuery(query) assert.Nil(t, err) assert.NotZero(t, query.ID) @@ -107,7 +107,7 @@ func TestModifyQuery(t *testing.T) { } func TestDeleteQuery(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") assert.Nil(t, err) svc, err := newTestService(ds) @@ -119,7 +119,7 @@ func TestDeleteQuery(t *testing.T) { Name: "foo", Query: "select * from time;", } - _, err = ds.NewQuery(query) + query, err = ds.NewQuery(query) assert.Nil(t, err) assert.NotZero(t, query.ID) diff --git a/server/service/service_sessions_test.go b/server/service/service_sessions_test.go index d20fc4c901..9f7b44693a 100644 --- a/server/service/service_sessions_test.go +++ b/server/service/service_sessions_test.go @@ -14,7 +14,7 @@ import ( const bcryptCost = 6 func TestAuthenticate(t *testing.T) { - ds, err := datastore.New("gorm-sqlite3", ":memory:") + ds, err := datastore.New("inmem", "") require.Nil(t, err) svc, err := newTestService(ds) require.Nil(t, err)