Fix linter errors + some general clean up

This commit is contained in:
David Dworken 2022-12-11 20:31:50 -08:00
parent 9ed325e0a5
commit 857e423e10
No known key found for this signature in database
4 changed files with 25 additions and 19 deletions

View File

@ -252,7 +252,7 @@ func apiQueryHandler(ctx context.Context, w http.ResponseWriter, r *http.Request
} else { } else {
err = incrementReadCounts(ctx, deviceId) err = incrementReadCounts(ctx, deviceId)
if err != nil { if err != nil {
panic(fmt.Sprintf("failed to increment read counts")) panic("failed to increment read counts")
} }
} }
@ -453,10 +453,13 @@ func applyDeletionRequestsToBackend(ctx context.Context, request shared.Deletion
return int(result.RowsAffected), nil return int(result.RowsAffected), nil
} }
func wipeDbHandler(ctx context.Context, w http.ResponseWriter, r *http.Request) { func wipeDbEntriesHandler(ctx context.Context, w http.ResponseWriter, r *http.Request) {
if r.Host == "api.hishtory.dev" || isProductionEnvironment() { if r.Host == "api.hishtory.dev" || isProductionEnvironment() {
panic("refusing to wipe the DB for prod") panic("refusing to wipe the DB for prod")
} }
if !isTestEnvironment() {
panic("refusing to wipe the DB non-test environment")
}
checkGormResult(GLOBAL_DB.WithContext(ctx).Exec("DELETE FROM enc_history_entries")) checkGormResult(GLOBAL_DB.WithContext(ctx).Exec("DELETE FROM enc_history_entries"))
} }
@ -478,17 +481,12 @@ func isProductionEnvironment() bool {
func OpenDB() (*gorm.DB, error) { func OpenDB() (*gorm.DB, error) {
if isTestEnvironment() { if isTestEnvironment() {
db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{}) db, err := gorm.Open(sqlite.Open("file::memory:?_journal_mode=WAL&cache=shared"), &gorm.Config{})
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to connect to the DB: %v", err) return nil, fmt.Errorf("failed to connect to the DB: %v", err)
} }
db.AutoMigrate(&shared.EncHistoryEntry{})
db.AutoMigrate(&shared.Device{})
db.AutoMigrate(&UsageData{})
db.AutoMigrate(&shared.DumpRequest{})
db.AutoMigrate(&shared.DeletionRequest{})
db.AutoMigrate(&shared.Feedback{})
db.Exec("PRAGMA journal_mode = WAL") db.Exec("PRAGMA journal_mode = WAL")
AddDatabaseTables(db)
return db, nil return db, nil
} }
@ -506,10 +504,12 @@ func OpenDB() (*gorm.DB, error) {
} }
var db *gorm.DB var db *gorm.DB
var err error
if sqliteDb != "" { if sqliteDb != "" {
var err error
db, err = gorm.Open(sqlite.Open(sqliteDb), &gorm.Config{Logger: customLogger}) db, err = gorm.Open(sqlite.Open(sqliteDb), &gorm.Config{Logger: customLogger})
if err != nil {
return nil, fmt.Errorf("failed to connect to the DB: %v", err)
}
} else { } else {
postgresDb := fmt.Sprintf(PostgresDb, os.Getenv("POSTGRESQL_PASSWORD")) postgresDb := fmt.Sprintf(PostgresDb, os.Getenv("POSTGRESQL_PASSWORD"))
if os.Getenv("HISHTORY_POSTGRES_DB") != "" { if os.Getenv("HISHTORY_POSTGRES_DB") != "" {
@ -521,18 +521,21 @@ func OpenDB() (*gorm.DB, error) {
log.Fatal(err) log.Fatal(err)
} }
db, err = gormtrace.Open(postgres.New(postgres.Config{Conn: sqlDb}), &gorm.Config{Logger: customLogger}) db, err = gormtrace.Open(postgres.New(postgres.Config{Conn: sqlDb}), &gorm.Config{Logger: customLogger})
if err != nil {
return nil, fmt.Errorf("failed to connect to the DB: %v", err)
}
} }
if err != nil { AddDatabaseTables(db)
return nil, fmt.Errorf("failed to connect to the DB: %v", err) return db, nil
} }
func AddDatabaseTables(db *gorm.DB) {
db.AutoMigrate(&shared.EncHistoryEntry{}) db.AutoMigrate(&shared.EncHistoryEntry{})
db.AutoMigrate(&shared.Device{}) db.AutoMigrate(&shared.Device{})
db.AutoMigrate(&UsageData{}) db.AutoMigrate(&UsageData{})
db.AutoMigrate(&shared.DumpRequest{}) db.AutoMigrate(&shared.DumpRequest{})
db.AutoMigrate(&shared.DeletionRequest{}) db.AutoMigrate(&shared.DeletionRequest{})
db.AutoMigrate(&shared.Feedback{}) db.AutoMigrate(&shared.Feedback{})
return db, nil
} }
func init() { func init() {
@ -850,7 +853,7 @@ func main() {
mux.Handle("/internal/api/v1/usage-stats", withLogging(usageStatsHandler)) mux.Handle("/internal/api/v1/usage-stats", withLogging(usageStatsHandler))
mux.Handle("/internal/api/v1/stats", withLogging(statsHandler)) mux.Handle("/internal/api/v1/stats", withLogging(statsHandler))
if isTestEnvironment() { if isTestEnvironment() {
mux.Handle("/api/v1/wipe-db", withLogging(wipeDbHandler)) mux.Handle("/api/v1/wipe-db-entries", withLogging(wipeDbEntriesHandler))
mux.Handle("/api/v1/get-num-connections", withLogging(getNumConnectionsHandler)) mux.Handle("/api/v1/get-num-connections", withLogging(getNumConnectionsHandler))
} }
fmt.Println("Listening on localhost:8080") fmt.Println("Listening on localhost:8080")

View File

@ -525,6 +525,8 @@ func TestHealthcheck(t *testing.T) {
func TestLimitRegistrations(t *testing.T) { func TestLimitRegistrations(t *testing.T) {
// Set up // Set up
InitDB() InitDB()
checkGormResult(GLOBAL_DB.Exec("DELETE FROM enc_history_entries"))
checkGormResult(GLOBAL_DB.Exec("DELETE FROM devices"))
defer testutils.BackupAndRestoreEnv("HISHTORY_MAX_NUM_USERS")() defer testutils.BackupAndRestoreEnv("HISHTORY_MAX_NUM_USERS")()
os.Setenv("HISHTORY_MAX_NUM_USERS", "2") os.Setenv("HISHTORY_MAX_NUM_USERS", "2")

View File

@ -1141,7 +1141,7 @@ echo other`)
restoreFirstInstallation := testutils.BackupAndRestoreWithId(t, "-install1") restoreFirstInstallation := testutils.BackupAndRestoreWithId(t, "-install1")
// Wipe the DB to simulate entries getting deleted because they've already been read and expired // Wipe the DB to simulate entries getting deleted because they've already been read and expired
_, err = lib.ApiGet("/api/v1/wipe-db") _, err = lib.ApiGet("/api/v1/wipe-db-entries")
if err != nil { if err != nil {
t.Fatalf("failed to wipe the DB: %v", err) t.Fatalf("failed to wipe the DB: %v", err)
} }

View File

@ -239,10 +239,11 @@ func RunTestServer() func() {
if err != nil && err.Error() != "os: process already finished" { if err != nil && err.Error() != "os: process already finished" {
panic(fmt.Sprintf("failed to kill server process: %v", err)) panic(fmt.Sprintf("failed to kill server process: %v", err))
} }
if strings.Contains(stderr.String()+stdout.String(), "failed to") && IsOnline() { allOutput := stdout.String() + stderr.String()
if strings.Contains(allOutput, "failed to") && IsOnline() {
panic(fmt.Sprintf("server failed to do something: stderr=%#v, stdout=%#v", stderr.String(), stdout.String())) panic(fmt.Sprintf("server failed to do something: stderr=%#v, stdout=%#v", stderr.String(), stdout.String()))
} }
if strings.Contains(stderr.String()+stdout.String(), "ERROR:") { if strings.Contains(allOutput, "ERROR:") || strings.Contains(allOutput, "http: panic serving") {
panic(fmt.Sprintf("server experienced an error: stderr=%#v, stdout=%#v", stderr.String(), stdout.String())) panic(fmt.Sprintf("server experienced an error: stderr=%#v, stdout=%#v", stderr.String(), stdout.String()))
} }
// fmt.Printf("stderr=%#v, stdout=%#v\n", stderr.String(), stdout.String()) // fmt.Printf("stderr=%#v, stdout=%#v\n", stderr.String(), stdout.String())