mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: remove dbmem (#18803)
Remove the in-memory database. Addresses #15109.
This commit is contained in:
@@ -12,7 +12,7 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/db2sdk"
|
||||
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
||||
"github.com/coder/coder/v2/coderd/database/dbmem"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtestutil"
|
||||
"github.com/coder/coder/v2/coderd/rbac"
|
||||
"github.com/coder/coder/v2/coderd/rbac/policy"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
@@ -202,7 +202,7 @@ func TestInsertCustomRoles(t *testing.T) {
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := dbmem.New()
|
||||
db, _ := dbtestutil.NewDB(t)
|
||||
rec := &coderdtest.RecordingAuthorizer{
|
||||
Wrapped: rbac.NewAuthorizer(prometheus.NewRegistry()),
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import (
|
||||
"cdr.dev/slog"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/database/db2sdk"
|
||||
"github.com/coder/coder/v2/coderd/database/dbmem"
|
||||
"github.com/coder/coder/v2/coderd/notifications"
|
||||
"github.com/coder/coder/v2/coderd/rbac/policy"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
@@ -3661,148 +3660,119 @@ func (s *MethodTestSuite) TestExtraMethods() {
|
||||
func (s *MethodTestSuite) TestTailnetFunctions() {
|
||||
s.Run("CleanTailnetCoordinators", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("CleanTailnetLostPeers", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("CleanTailnetTunnels", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("DeleteAllTailnetClientSubscriptions", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteAllTailnetClientSubscriptionsParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("DeleteAllTailnetTunnels", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteAllTailnetTunnelsParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("DeleteCoordinator", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("DeleteTailnetAgent", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteTailnetAgentParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).Errors(sql.ErrNoRows).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).Errors(sql.ErrNoRows)
|
||||
}))
|
||||
s.Run("DeleteTailnetClient", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteTailnetClientParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).Errors(sql.ErrNoRows).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).Errors(sql.ErrNoRows)
|
||||
}))
|
||||
s.Run("DeleteTailnetClientSubscription", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteTailnetClientSubscriptionParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete)
|
||||
}))
|
||||
s.Run("DeleteTailnetPeer", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteTailnetPeerParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented).
|
||||
ErrorsWithPG(sql.ErrNoRows)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).Errors(sql.ErrNoRows)
|
||||
}))
|
||||
s.Run("DeleteTailnetTunnel", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(database.DeleteTailnetTunnelParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented).
|
||||
ErrorsWithPG(sql.ErrNoRows)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionDelete).Errors(sql.ErrNoRows)
|
||||
}))
|
||||
s.Run("GetAllTailnetAgents", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetTailnetAgents", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetTailnetClientsForAgent", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetTailnetPeers", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetTailnetTunnelPeerBindings", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetTailnetTunnelPeerIDs", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetAllTailnetCoordinators", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetAllTailnetPeers", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetAllTailnetTunnels", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionRead)
|
||||
}))
|
||||
s.Run("UpsertTailnetAgent", s.Subtest(func(db database.Store, check *expects) {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
check.Args(database.UpsertTailnetAgentParams{Node: json.RawMessage("{}")}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate)
|
||||
}))
|
||||
s.Run("UpsertTailnetClient", s.Subtest(func(db database.Store, check *expects) {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
check.Args(database.UpsertTailnetClientParams{Node: json.RawMessage("{}")}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate)
|
||||
}))
|
||||
s.Run("UpsertTailnetClientSubscription", s.Subtest(func(db database.Store, check *expects) {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
check.Args(database.UpsertTailnetClientSubscriptionParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate)
|
||||
}))
|
||||
s.Run("UpsertTailnetCoordinator", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(uuid.New()).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate)
|
||||
}))
|
||||
s.Run("UpsertTailnetPeer", s.Subtest(func(db database.Store, check *expects) {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
check.Args(database.UpsertTailnetPeerParams{
|
||||
Status: database.TailnetStatusOk,
|
||||
}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionCreate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionCreate)
|
||||
}))
|
||||
s.Run("UpsertTailnetTunnel", s.Subtest(func(db database.Store, check *expects) {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
check.Args(database.UpsertTailnetTunnelParams{}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionCreate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionCreate)
|
||||
}))
|
||||
s.Run("UpdateTailnetPeerStatusByCoordinator", s.Subtest(func(db database.Store, check *expects) {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
check.Args(database.UpdateTailnetPeerStatusByCoordinatorParams{Status: database.TailnetStatusOk}).
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTailnetCoordinator, policy.ActionUpdate)
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -4787,21 +4757,18 @@ func (s *MethodTestSuite) TestNotifications() {
|
||||
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
|
||||
user := dbgen.User(s.T(), db, database.User{})
|
||||
check.Args(user.ID).Asserts(rbac.ResourceNotificationTemplate, policy.ActionRead).
|
||||
ErrorsWithPG(sql.ErrNoRows).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
ErrorsWithPG(sql.ErrNoRows)
|
||||
}))
|
||||
s.Run("GetNotificationTemplatesByKind", s.Subtest(func(db database.Store, check *expects) {
|
||||
check.Args(database.NotificationTemplateKindSystem).
|
||||
Asserts().
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts()
|
||||
// TODO(dannyk): add support for other database.NotificationTemplateKind types once implemented.
|
||||
}))
|
||||
s.Run("UpdateNotificationTemplateMethodByID", s.Subtest(func(db database.Store, check *expects) {
|
||||
check.Args(database.UpdateNotificationTemplateMethodByIDParams{
|
||||
Method: database.NullNotificationMethod{NotificationMethod: database.NotificationMethodWebhook, Valid: true},
|
||||
ID: notifications.TemplateWorkspaceDormant,
|
||||
}).Asserts(rbac.ResourceNotificationTemplate, policy.ActionUpdate).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
}).Asserts(rbac.ResourceNotificationTemplate, policy.ActionUpdate)
|
||||
}))
|
||||
|
||||
// Notification preferences
|
||||
@@ -5115,8 +5082,7 @@ func (s *MethodTestSuite) TestPrebuilds() {
|
||||
rbac.ResourceWorkspace.WithOwner(user.ID.String()).InOrg(org.ID), policy.ActionCreate,
|
||||
template, policy.ActionRead,
|
||||
template, policy.ActionUse,
|
||||
).ErrorsWithInMemDB(dbmem.ErrUnimplemented).
|
||||
ErrorsWithPG(sql.ErrNoRows)
|
||||
).Errors(sql.ErrNoRows)
|
||||
}))
|
||||
s.Run("GetPrebuildMetrics", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
@@ -5130,29 +5096,24 @@ func (s *MethodTestSuite) TestPrebuilds() {
|
||||
}))
|
||||
s.Run("CountInProgressPrebuilds", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceWorkspace.All(), policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceWorkspace.All(), policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetPresetsAtFailureLimit", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(int64(0)).
|
||||
Asserts(rbac.ResourceTemplate.All(), policy.ActionViewInsights).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTemplate.All(), policy.ActionViewInsights)
|
||||
}))
|
||||
s.Run("GetPresetsBackoff", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args(time.Time{}).
|
||||
Asserts(rbac.ResourceTemplate.All(), policy.ActionViewInsights).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTemplate.All(), policy.ActionViewInsights)
|
||||
}))
|
||||
s.Run("GetRunningPrebuiltWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
|
||||
check.Args().
|
||||
Asserts(rbac.ResourceWorkspace.All(), policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceWorkspace.All(), policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetTemplatePresetsWithPrebuilds", s.Subtest(func(db database.Store, check *expects) {
|
||||
user := dbgen.User(s.T(), db, database.User{})
|
||||
check.Args(uuid.NullUUID{UUID: user.ID, Valid: true}).
|
||||
Asserts(rbac.ResourceTemplate.All(), policy.ActionRead).
|
||||
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
|
||||
Asserts(rbac.ResourceTemplate.All(), policy.ActionRead)
|
||||
}))
|
||||
s.Run("GetPresetByID", s.Subtest(func(db database.Store, check *expects) {
|
||||
org := dbgen.Organization(s.T(), db, database.Organization{})
|
||||
|
||||
Reference in New Issue
Block a user