mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 12:51:55 +00:00
chore: Cleanup more cross-cmd imports (#64259)
This PR fixes a few more imports from /internal/ packages using /cmd/... contents. Test plan: Mainly moved code around and CI still passes.
This commit is contained in:
parent
889ed1d948
commit
8de09ddbc7
@ -9,13 +9,13 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/sourcegraph/log/logtest"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/bazelbuild/rules_go/go/runfiles"
|
||||
"github.com/sourcegraph/log/logtest"
|
||||
"github.com/sourcegraph/scip/bindings/go/scip"
|
||||
"github.com/stretchr/testify/require"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
codeintelshared "github.com/sourcegraph/sourcegraph/internal/codeintel/shared"
|
||||
stores "github.com/sourcegraph/sourcegraph/internal/codeintel/shared"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/syntactic_indexing/jobstore"
|
||||
testutils "github.com/sourcegraph/sourcegraph/internal/codeintel/syntactic_indexing/testkit"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads"
|
||||
@ -24,9 +24,7 @@ import (
|
||||
"github.com/sourcegraph/sourcegraph/internal/database/dbtest"
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver"
|
||||
"github.com/sourcegraph/sourcegraph/internal/observation"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/lib/iterator"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
func TestIndexingWorker(t *testing.T) {
|
||||
@ -54,7 +52,7 @@ func TestIndexingWorker(t *testing.T) {
|
||||
|
||||
config := IndexingWorkerConfig{}
|
||||
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, sqlDB)
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, db)
|
||||
require.NoError(t, err)
|
||||
|
||||
gitserverClient := gitserver.NewMockClient()
|
||||
@ -78,7 +76,7 @@ func TestIndexingWorker(t *testing.T) {
|
||||
jobStore,
|
||||
config,
|
||||
db,
|
||||
stores.NewCodeIntelDB(logger, sqlDB),
|
||||
codeintelDB,
|
||||
gitserverClient,
|
||||
uploadStore,
|
||||
)
|
||||
|
||||
@ -36,13 +36,12 @@ func Main(ctx context.Context, observationCtx *observation.Context, ready servic
|
||||
|
||||
name := "syntactic-codeintel-worker"
|
||||
|
||||
frontendSqlDB, err := initDB(observationCtx, name)
|
||||
db, err := initDB(observationCtx, name)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "initializing frontend db")
|
||||
}
|
||||
db := database.NewDB(logger, frontendSqlDB)
|
||||
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, frontendSqlDB)
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, db)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "initializing worker store")
|
||||
}
|
||||
@ -92,7 +91,7 @@ func initCodeintelDB(observationCtx *observation.Context, name string) (*sql.DB,
|
||||
return sqlDB, nil
|
||||
}
|
||||
|
||||
func initDB(observationCtx *observation.Context, name string) (*sql.DB, error) {
|
||||
func initDB(observationCtx *observation.Context, name string) (database.DB, error) {
|
||||
dsn := conf.GetServiceConnectionValueAndRestartOnChange(func(serviceConnections conftypes.ServiceConnections) string {
|
||||
return serviceConnections.PostgresDSN
|
||||
})
|
||||
@ -104,5 +103,5 @@ func initDB(observationCtx *observation.Context, name string) (*sql.DB, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return sqlDB, nil
|
||||
return database.NewDB(observationCtx.Logger, sqlDB), nil
|
||||
}
|
||||
|
||||
@ -12,13 +12,8 @@ import (
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
)
|
||||
|
||||
// InitRawDB initializes and returns a connection to the codeintel db.
|
||||
func InitRawDB(observationCtx *observation.Context) (*sql.DB, error) {
|
||||
return initDBMemo.Init(observationCtx)
|
||||
}
|
||||
|
||||
func InitDB(observationCtx *observation.Context) (codeintelshared.CodeIntelDB, error) {
|
||||
rawDB, err := InitRawDB(observationCtx)
|
||||
rawDB, err := initDBMemo.Init(observationCtx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func InitDB(observationCtx *observation.Context) (database.DB, error) {
|
||||
rawDB, err := InitRawDB(observationCtx)
|
||||
rawDB, err := initDatabaseMemo.Init(observationCtx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -21,10 +21,6 @@ func InitDB(observationCtx *observation.Context) (database.DB, error) {
|
||||
return database.NewDB(observationCtx.Logger, rawDB), nil
|
||||
}
|
||||
|
||||
func InitRawDB(observationCtx *observation.Context) (*sql.DB, error) {
|
||||
return initDatabaseMemo.Init(observationCtx)
|
||||
}
|
||||
|
||||
var initDatabaseMemo = memo.NewMemoizedConstructorWithArg(func(observationCtx *observation.Context) (*sql.DB, error) {
|
||||
dsn := conf.GetServiceConnectionValueAndRestartOnChange(func(serviceConnections conftypes.ServiceConnections) string {
|
||||
return serviceConnections.PostgresDSN
|
||||
|
||||
@ -22,11 +22,10 @@ func TestSyntacticIndexingEnqueuer(t *testing.T) {
|
||||
are valid from the point of view of the DB worker interface
|
||||
*/
|
||||
observationCtx := observation.TestContextTB(t)
|
||||
sqlDB := dbtest.NewDB(t)
|
||||
db := database.NewDB(observationCtx.Logger, sqlDB)
|
||||
db := database.NewDB(observationCtx.Logger, dbtest.NewDB(t))
|
||||
ctx := context.Background()
|
||||
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, sqlDB)
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, db)
|
||||
require.NoError(t, err, "unexpected error creating dbworker stores")
|
||||
|
||||
repoSchedulingStore := reposcheduler.NewSyntacticStore(observationCtx, db)
|
||||
|
||||
@ -2,7 +2,6 @@ package jobstore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"github.com/keegancsmith/sqlf"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
@ -37,7 +36,7 @@ func (s *syntacticIndexingJobStoreImpl) DBWorkerStore() dbworkerstore.Store[*Syn
|
||||
return s.store
|
||||
}
|
||||
|
||||
func NewStoreWithDB(observationCtx *observation.Context, db *sql.DB) (SyntacticIndexingJobStore, error) {
|
||||
func NewStoreWithDB(observationCtx *observation.Context, db database.DB) (SyntacticIndexingJobStore, error) {
|
||||
// Make sure this is in sync with the columns of the
|
||||
// syntactic_scip_indexing_jobs_with_repository_name view
|
||||
var columnExpressions = []*sqlf.Query{
|
||||
@ -67,10 +66,9 @@ func NewStoreWithDB(observationCtx *observation.Context, db *sql.DB) (SyntacticI
|
||||
Scan: dbworkerstore.BuildWorkerScan(ScanSyntacticIndexRecord),
|
||||
}
|
||||
|
||||
handle := basestore.NewHandleWithDB(observationCtx.Logger, db, sql.TxOptions{})
|
||||
return &syntacticIndexingJobStoreImpl{
|
||||
store: dbworkerstore.New(observationCtx, handle, storeOptions),
|
||||
db: basestore.NewWithHandle(handle),
|
||||
store: dbworkerstore.New(observationCtx, db.Handle(), storeOptions),
|
||||
db: basestore.NewWithHandle(db.Handle()),
|
||||
operations: newOperations(observationCtx),
|
||||
logger: observationCtx.Logger.Scoped("syntactic_indexing.store"),
|
||||
}, nil
|
||||
|
||||
@ -2,7 +2,6 @@ package syntactic_indexing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"time"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
@ -51,13 +50,9 @@ func NewSyntacticJobScheduler(repoSchedulingSvc reposcheduler.RepositoryScheduli
|
||||
}, nil
|
||||
}
|
||||
|
||||
func BootstrapSyntacticJobScheduler(observationCtx *observation.Context, frontendSQLDB *sql.DB, codeintelSQLDB *sql.DB) (SyntacticJobScheduler, error) {
|
||||
frontendDB := database.NewDB(observationCtx.Logger, frontendSQLDB)
|
||||
|
||||
func BootstrapSyntacticJobScheduler(observationCtx *observation.Context, frontendDB database.DB, codeIntelDB codeintelshared.CodeIntelDB) (SyntacticJobScheduler, error) {
|
||||
gitserverClient := gitserver.NewClient("codeintel-syntactic-indexing")
|
||||
|
||||
codeIntelDB := codeintelshared.NewCodeIntelDB(observationCtx.Logger, codeintelSQLDB)
|
||||
|
||||
uploadsSvc := uploads.NewService(observationCtx, frontendDB, codeIntelDB, gitserverClient.Scoped("uploads"))
|
||||
policiesSvc := policies.NewService(observationCtx, frontendDB, uploadsSvc, gitserverClient.Scoped("policies"))
|
||||
|
||||
@ -71,7 +66,7 @@ func BootstrapSyntacticJobScheduler(observationCtx *observation.Context, fronten
|
||||
repoSchedulingStore := reposcheduler.NewSyntacticStore(observationCtx, frontendDB)
|
||||
repoSchedulingSvc := reposcheduler.NewService(repoSchedulingStore)
|
||||
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, frontendSQLDB)
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationCtx, frontendDB)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -36,12 +36,12 @@ func (job *syntacticIndexingSchedulerJob) Config() []env.Config {
|
||||
}
|
||||
|
||||
func (job *syntacticIndexingSchedulerJob) Routines(_ context.Context, observationCtx *observation.Context) ([]goroutine.BackgroundRoutine, error) {
|
||||
frontendDB, err := workerdb.InitRawDB(observationCtx)
|
||||
frontendDB, err := workerdb.InitDB(observationCtx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
codeintelDB, err := codeinteldb.InitRawDB(observationCtx)
|
||||
codeintelDB, err := codeinteldb.InitDB(observationCtx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -144,7 +144,7 @@ func bootstrapScheduler(t *testing.T, observationCtx *observation.Context,
|
||||
)
|
||||
repoSchedulingStore := reposcheduler.NewSyntacticStore(observationCtx, frontendDB)
|
||||
repoSchedulingSvc := reposcheduler.NewService(repoSchedulingStore)
|
||||
jobStore := unwrap(jobstore.NewStoreWithDB(observationCtx, frontendRawDB))(t)
|
||||
jobStore := unwrap(jobstore.NewStoreWithDB(observationCtx, frontendDB))(t)
|
||||
|
||||
repoStore := frontendDB.Repos()
|
||||
enqueuer := NewIndexEnqueuer(observationCtx, jobStore, repoSchedulingStore, repoStore)
|
||||
|
||||
@ -30,10 +30,9 @@ func TestSyntacticIndexingStoreDequeue(t *testing.T) {
|
||||
schema/implementation drift.
|
||||
*/
|
||||
observationContext := observation.TestContextTB(t)
|
||||
sqlDB := dbtest.NewDB(t)
|
||||
db := database.NewDB(observationContext.Logger, sqlDB)
|
||||
db := database.NewDB(observationContext.Logger, dbtest.NewDB(t))
|
||||
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationContext, sqlDB)
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationContext, db)
|
||||
require.NoError(t, err, "unexpected error creating dbworker stores")
|
||||
store := jobStore.DBWorkerStore()
|
||||
|
||||
@ -117,11 +116,10 @@ func TestSyntacticIndexingStoreEnqueue(t *testing.T) {
|
||||
are valid from the point of view of the DB worker interface
|
||||
*/
|
||||
observationContext := observation.TestContextTB(t)
|
||||
sqlDB := dbtest.NewDB(t)
|
||||
db := database.NewDB(observationContext.Logger, sqlDB)
|
||||
db := database.NewDB(observationContext.Logger, dbtest.NewDB(t))
|
||||
ctx := context.Background()
|
||||
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationContext, sqlDB)
|
||||
jobStore, err := jobstore.NewStoreWithDB(observationContext, db)
|
||||
require.NoError(t, err, "unexpected error creating dbworker stores")
|
||||
store := jobStore.DBWorkerStore()
|
||||
|
||||
|
||||
@ -15,7 +15,6 @@ go_library(
|
||||
tags = [TAG_PLATFORM_GRAPH],
|
||||
visibility = ["//:__subpackages__"],
|
||||
deps = [
|
||||
"//cmd/frontend/backend",
|
||||
"//internal/api",
|
||||
"//internal/codeintel/codegraph",
|
||||
"//internal/codeintel/shared",
|
||||
|
||||
@ -3,7 +3,6 @@ package uploads
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/cmd/frontend/backend"
|
||||
lsifstore "github.com/sourcegraph/sourcegraph/internal/codeintel/codegraph"
|
||||
codeintelshared "github.com/sourcegraph/sourcegraph/internal/codeintel/shared"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads/internal/background"
|
||||
@ -27,13 +26,12 @@ func NewService(
|
||||
gitserverClient gitserver.Client,
|
||||
) *Service {
|
||||
store := uploadsstore.New(scopedContext("uploadsstore", observationCtx), db)
|
||||
repoStore := backend.NewRepos(scopedContext("repos", observationCtx).Logger, db, gitserverClient)
|
||||
lsifStore := lsifstore.New(scopedContext("lsifstore", observationCtx), codeIntelDB)
|
||||
|
||||
svc := newService(
|
||||
scopedContext("service", observationCtx),
|
||||
store,
|
||||
repoStore,
|
||||
db.Repos(),
|
||||
lsifStore,
|
||||
gitserverClient,
|
||||
)
|
||||
|
||||
@ -56,7 +56,6 @@ go_test(
|
||||
embed = [":processor"],
|
||||
tags = [TAG_PLATFORM_GRAPH],
|
||||
deps = [
|
||||
"//cmd/frontend/backend",
|
||||
"//internal/api",
|
||||
"//internal/codeintel/codegraph",
|
||||
"//internal/codeintel/codegraph/codegraphmocks",
|
||||
|
||||
@ -18,7 +18,6 @@ import (
|
||||
"github.com/sourcegraph/scip/bindings/go/scip"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/cmd/frontend/backend"
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/codegraph"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/codegraph/codegraphmocks"
|
||||
@ -39,8 +38,6 @@ import (
|
||||
)
|
||||
|
||||
func TestHandle(t *testing.T) {
|
||||
setupRepoMocks(t)
|
||||
|
||||
upload := shared.Upload{
|
||||
ID: 42,
|
||||
Root: "",
|
||||
@ -56,6 +53,12 @@ func TestHandle(t *testing.T) {
|
||||
mockLSIFStore := codegraphmocks.NewMockDataStore()
|
||||
mockUploadStore := objectmocks.NewMockStorage()
|
||||
gitserverClient := gitserver.NewMockClient()
|
||||
gitserverClient.ResolveRevisionFunc.SetDefaultHook(func(_ context.Context, _ api.RepoName, commit string, _ gitserver.ResolveRevisionOptions) (api.CommitID, error) {
|
||||
if commit != "deadbeef" {
|
||||
t.Errorf("unexpected commit. want=%s have=%s", "deadbeef", commit)
|
||||
}
|
||||
return "", nil
|
||||
})
|
||||
|
||||
// Set default transaction behavior
|
||||
mockDBStore.WithTransactionFunc.SetDefaultHook(func(ctx context.Context, f func(s store.Store) error) error { return f(mockDBStore) })
|
||||
@ -288,8 +291,6 @@ func TestHandle(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestHandleError(t *testing.T) {
|
||||
setupRepoMocks(t)
|
||||
|
||||
upload := shared.Upload{
|
||||
ID: 42,
|
||||
Root: "root/",
|
||||
@ -432,27 +433,6 @@ var scipDirectoryChildren = map[string][]string{
|
||||
},
|
||||
}
|
||||
|
||||
func setupRepoMocks(t *testing.T) {
|
||||
t.Cleanup(func() {
|
||||
backend.Mocks.Repos.Get = nil
|
||||
backend.Mocks.Repos.ResolveRev = nil
|
||||
})
|
||||
|
||||
backend.Mocks.Repos.Get = func(ctx context.Context, repoID api.RepoID) (*types.Repo, error) {
|
||||
if repoID != api.RepoID(50) {
|
||||
t.Errorf("unexpected repository name. want=%d have=%d", 50, repoID)
|
||||
}
|
||||
return &types.Repo{ID: repoID}, nil
|
||||
}
|
||||
|
||||
backend.Mocks.Repos.ResolveRev = func(ctx context.Context, repo api.RepoName, rev string) (api.CommitID, error) {
|
||||
if rev != "deadbeef" {
|
||||
t.Errorf("unexpected commit. want=%s have=%s", "deadbeef", rev)
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
}
|
||||
|
||||
func defaultMockRepoStore() *dbmocks.MockRepoStore {
|
||||
repoStore := dbmocks.NewMockRepoStore()
|
||||
repoStore.GetFunc.SetDefaultHook(func(ctx context.Context, id api.RepoID) (*internaltypes.Repo, error) {
|
||||
|
||||
@ -15,7 +15,6 @@ go_library(
|
||||
tags = [TAG_PLATFORM_GRAPH],
|
||||
visibility = ["//:__subpackages__"],
|
||||
deps = [
|
||||
"//cmd/frontend/backend",
|
||||
"//internal/api",
|
||||
"//internal/codeintel/uploads",
|
||||
"//internal/codeintel/uploads/transport/http/auth",
|
||||
@ -48,7 +47,6 @@ go_test(
|
||||
"requires-network",
|
||||
],
|
||||
deps = [
|
||||
"//cmd/frontend/backend",
|
||||
"//internal/actor",
|
||||
"//internal/api",
|
||||
"//internal/codeintel/uploads",
|
||||
@ -65,6 +63,7 @@ go_test(
|
||||
"//schema",
|
||||
"@com_github_keegancsmith_sqlf//:sqlf",
|
||||
"@com_github_sourcegraph_log//logtest",
|
||||
"@com_github_stretchr_testify//require",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@ -16,7 +16,6 @@ go_library(
|
||||
tags = [TAG_PLATFORM_GRAPH],
|
||||
visibility = ["//:__subpackages__"],
|
||||
deps = [
|
||||
"//cmd/frontend/backend",
|
||||
"//internal/actor",
|
||||
"//internal/api",
|
||||
"//internal/conf",
|
||||
@ -48,7 +47,6 @@ go_test(
|
||||
embed = [":auth"],
|
||||
tags = [TAG_PLATFORM_GRAPH],
|
||||
deps = [
|
||||
"//cmd/frontend/backend",
|
||||
"//internal/actor",
|
||||
"//internal/conf",
|
||||
"//internal/database",
|
||||
|
||||
@ -10,7 +10,6 @@ import (
|
||||
sglog "github.com/sourcegraph/log"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/cmd/frontend/backend"
|
||||
"github.com/sourcegraph/sourcegraph/internal/actor"
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
"github.com/sourcegraph/sourcegraph/internal/conf"
|
||||
@ -24,6 +23,9 @@ import (
|
||||
type (
|
||||
AuthValidator func(context.Context, url.Values, string) (int, error)
|
||||
AuthValidatorMap = map[string]AuthValidator
|
||||
RepoStore interface {
|
||||
GetByName(context.Context, api.RepoName) (*types.Repo, error)
|
||||
}
|
||||
)
|
||||
|
||||
var DefaultValidatorByCodeHost = AuthValidatorMap{
|
||||
@ -45,7 +47,7 @@ var errVerificationNotSupported = errors.New(strings.Join([]string{
|
||||
func AuthMiddleware(
|
||||
next http.Handler,
|
||||
userStore UserStore,
|
||||
repoStore backend.ReposService,
|
||||
repoStore RepoStore,
|
||||
authValidators AuthValidatorMap,
|
||||
operation *observation.Operation,
|
||||
) http.Handler {
|
||||
@ -128,7 +130,7 @@ func isLoggedIn(ctx context.Context, userStore UserStore, trace observation.Trac
|
||||
|
||||
func (u *loggedInUserDoNotCreateThisTypeDirectly) canAccessRepository(
|
||||
ctx context.Context,
|
||||
repoStore backend.ReposService,
|
||||
repoStore RepoStore,
|
||||
repositoryName string,
|
||||
trace observation.TraceLogger,
|
||||
) (int, error) {
|
||||
|
||||
@ -5,7 +5,6 @@ import (
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/cmd/frontend/backend"
|
||||
"github.com/sourcegraph/sourcegraph/internal/actor"
|
||||
"github.com/sourcegraph/sourcegraph/internal/conf"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database"
|
||||
@ -36,7 +35,6 @@ func TestUploadAuthMiddleware(t *testing.T) {
|
||||
}
|
||||
|
||||
userStore := dbmocks.NewMockUserStore()
|
||||
repoStore := backend.NewMockReposService()
|
||||
authValidators := map[string]AuthValidator{}
|
||||
operation := observation.TestContext.Operation(observation.Op{})
|
||||
|
||||
@ -116,6 +114,7 @@ func TestUploadAuthMiddleware(t *testing.T) {
|
||||
userStore.GetByCurrentAuthUserFunc.SetDefaultReturn(nil, database.ErrNoCurrentUser)
|
||||
}
|
||||
|
||||
repoStore := dbmocks.NewMockRepoStore()
|
||||
if testCase.hasRepoAccess {
|
||||
repoStore.GetByNameFunc.SetDefaultReturn(nil, nil)
|
||||
} else {
|
||||
|
||||
@ -9,6 +9,7 @@ import (
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads"
|
||||
"github.com/sourcegraph/sourcegraph/internal/errcode"
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver"
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver/gitdomain"
|
||||
"github.com/sourcegraph/sourcegraph/internal/lazyregexp"
|
||||
"github.com/sourcegraph/sourcegraph/internal/object"
|
||||
@ -22,6 +23,7 @@ var revhashPattern = lazyregexp.New(`^[a-z0-9]{40}$`)
|
||||
func newHandler(
|
||||
observationCtx *observation.Context,
|
||||
repoStore RepoStore,
|
||||
gitserverClient gitserver.Client,
|
||||
uploadStore object.Storage,
|
||||
dbStore uploadhandler.DBStore[uploads.UploadMetadata],
|
||||
operations *uploadhandler.Operations,
|
||||
@ -36,7 +38,7 @@ func newHandler(
|
||||
|
||||
// Ensure that the repository and commit given in the request are resolvable.
|
||||
repositoryName := getQuery(r, "repository")
|
||||
repositoryID, statusCode, err := ensureRepoAndCommitExist(ctx, repoStore, repositoryName, commit, logger)
|
||||
repositoryID, statusCode, err := ensureRepoAndCommitExist(ctx, repoStore, gitserverClient, repositoryName, commit, logger)
|
||||
if err != nil {
|
||||
return uploads.UploadMetadata{}, statusCode, err
|
||||
}
|
||||
@ -69,7 +71,7 @@ func newHandler(
|
||||
return handler
|
||||
}
|
||||
|
||||
func ensureRepoAndCommitExist(ctx context.Context, repoStore RepoStore, repoName, commit string, logger log.Logger) (int, int, error) {
|
||||
func ensureRepoAndCommitExist(ctx context.Context, repoStore RepoStore, gitserverClient gitserver.Client, repoName, commit string, logger log.Logger) (int, int, error) {
|
||||
//
|
||||
// 1. Resolve repository
|
||||
|
||||
@ -85,7 +87,7 @@ func ensureRepoAndCommitExist(ctx context.Context, repoStore RepoStore, repoName
|
||||
//
|
||||
// 2. Resolve commit
|
||||
|
||||
if _, err := repoStore.ResolveRev(ctx, repo.Name, commit); err != nil {
|
||||
if _, err := gitserverClient.ResolveRevision(ctx, repo.Name, commit, gitserver.ResolveRevisionOptions{EnsureRevision: true}); err != nil {
|
||||
var reason string
|
||||
if errors.HasType[*gitdomain.RevisionNotFoundError](err) {
|
||||
reason = "commit not found"
|
||||
|
||||
@ -10,8 +10,8 @@ import (
|
||||
|
||||
"github.com/keegancsmith/sqlf"
|
||||
"github.com/sourcegraph/log/logtest"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/cmd/frontend/backend"
|
||||
"github.com/sourcegraph/sourcegraph/internal/actor"
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads"
|
||||
@ -31,13 +31,17 @@ import (
|
||||
const testCommit = "deadbeef01deadbeef02deadbeef03deadbeef04"
|
||||
|
||||
func TestHandleEnqueueAuth(t *testing.T) {
|
||||
setupRepoMocks(t)
|
||||
|
||||
logger := logtest.Scoped(t)
|
||||
db := database.NewDB(logger, dbtest.NewDB(t))
|
||||
repoStore := backend.NewRepos(logger, db, gitserver.NewMockClient())
|
||||
mockDBStore := NewMockDBStore[uploads.UploadMetadata]()
|
||||
mockUploadStore := objectmocks.NewMockStorage()
|
||||
gitserverClient := gitserver.NewMockClient()
|
||||
gitserverClient.ResolveRevisionFunc.SetDefaultHook(func(_ context.Context, _ api.RepoName, commit string, _ gitserver.ResolveRevisionOptions) (api.CommitID, error) {
|
||||
if commit != testCommit {
|
||||
t.Errorf("unexpected commit. want=%s have=%s", testCommit, commit)
|
||||
}
|
||||
return "", nil
|
||||
})
|
||||
|
||||
conf.Mock(&conf.Unified{
|
||||
SiteConfiguration: schema.SiteConfiguration{
|
||||
@ -46,6 +50,8 @@ func TestHandleEnqueueAuth(t *testing.T) {
|
||||
})
|
||||
t.Cleanup(func() { conf.Mock(nil) })
|
||||
|
||||
require.NoError(t, db.Repos().Create(context.Background(), &types.Repo{Name: "github.com/test/test"}))
|
||||
|
||||
mockDBStore.WithTransactionFunc.SetDefaultHook(func(ctx context.Context, f func(tx uploadhandler.DBStore[uploads.UploadMetadata]) error) error {
|
||||
return f(mockDBStore)
|
||||
})
|
||||
@ -118,13 +124,14 @@ func TestHandleEnqueueAuth(t *testing.T) {
|
||||
auth.AuthMiddleware(
|
||||
newHandler(
|
||||
observation.TestContextTB(t),
|
||||
repoStore,
|
||||
db.Repos(),
|
||||
gitserverClient,
|
||||
mockUploadStore,
|
||||
mockDBStore,
|
||||
uploadhandler.NewOperations(observation.TestContextTB(t), "test"),
|
||||
),
|
||||
db.Users(),
|
||||
repoStore,
|
||||
db.Repos(),
|
||||
authValidators,
|
||||
newOperations(observation.TestContextTB(t)).authMiddleware,
|
||||
).ServeHTTP(w, r)
|
||||
@ -135,27 +142,6 @@ func TestHandleEnqueueAuth(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func setupRepoMocks(t testing.TB) {
|
||||
t.Cleanup(func() {
|
||||
backend.Mocks.Repos.GetByName = nil
|
||||
backend.Mocks.Repos.ResolveRev = nil
|
||||
})
|
||||
|
||||
backend.Mocks.Repos.GetByName = func(ctx context.Context, name api.RepoName) (*types.Repo, error) {
|
||||
if name != "github.com/test/test" {
|
||||
t.Errorf("unexpected repository name. want=%s have=%s", "github.com/test/test", name)
|
||||
}
|
||||
return &types.Repo{ID: 50}, nil
|
||||
}
|
||||
|
||||
backend.Mocks.Repos.ResolveRev = func(ctx context.Context, repo api.RepoName, rev string) (api.CommitID, error) {
|
||||
if rev != testCommit {
|
||||
t.Errorf("unexpected commit. want=%s have=%s", testCommit, rev)
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
}
|
||||
|
||||
func insertTestUser(t *testing.T, db database.DB, name string, isAdmin bool) (userID int32) {
|
||||
t.Helper()
|
||||
|
||||
|
||||
@ -9,5 +9,4 @@ import (
|
||||
|
||||
type RepoStore interface {
|
||||
GetByName(ctx context.Context, name api.RepoName) (*types.Repo, error)
|
||||
ResolveRev(ctx context.Context, repo api.RepoName, rev string) (api.CommitID, error)
|
||||
}
|
||||
|
||||
@ -6,7 +6,6 @@ import (
|
||||
|
||||
"github.com/sourcegraph/log"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/cmd/frontend/backend"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads/transport/http/auth"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database"
|
||||
@ -34,11 +33,11 @@ func GetHandler(svc *uploads.Service, db database.DB, gitserverClient gitserver.
|
||||
uploadHandlerOperations := uploadhandler.NewOperations(observationCtx, "codeintel")
|
||||
|
||||
userStore := db.Users()
|
||||
repoStore := backend.NewRepos(logger, db, gitserverClient)
|
||||
repoStore := db.Repos()
|
||||
|
||||
// Construct base handler, used in internal routes and as internal handler wrapped
|
||||
// in the auth middleware defined on the next few lines
|
||||
handler = newHandler(observationCtx, repoStore, uploadStore, svc.UploadHandlerStore(), uploadHandlerOperations)
|
||||
handler = newHandler(observationCtx, repoStore, gitserverClient, uploadStore, svc.UploadHandlerStore(), uploadHandlerOperations)
|
||||
|
||||
// 🚨 SECURITY: Non-internal installations of this handler will require a user/repo
|
||||
// visibility check with the remote code host (if enabled via site configuration).
|
||||
|
||||
@ -7,11 +7,11 @@ go_library(
|
||||
tags = [TAG_INFRA_RELEASE],
|
||||
visibility = ["//:__subpackages__"],
|
||||
deps = [
|
||||
"//cmd/worker/shared/init/codeinsights",
|
||||
"//cmd/worker/shared/init/codeintel",
|
||||
"//internal/conf",
|
||||
"//internal/conf/conftypes",
|
||||
"//internal/database",
|
||||
"//internal/database/basestore",
|
||||
"//internal/database/connections/live",
|
||||
"//internal/encryption/keyring",
|
||||
"//internal/insights",
|
||||
"//internal/observation",
|
||||
@ -23,6 +23,7 @@ go_library(
|
||||
"//internal/oobmigration/migrations/insights",
|
||||
"//internal/oobmigration/migrations/insights/backfillv2",
|
||||
"//internal/oobmigration/migrations/insights/recording_times",
|
||||
"//lib/errors",
|
||||
"@com_github_derision_test_glock//:glock",
|
||||
"@com_github_sourcegraph_log//:log",
|
||||
],
|
||||
|
||||
@ -8,11 +8,11 @@ import (
|
||||
"github.com/derision-test/glock"
|
||||
"github.com/sourcegraph/log"
|
||||
|
||||
workerCodeInsights "github.com/sourcegraph/sourcegraph/cmd/worker/shared/init/codeinsights"
|
||||
workerCodeIntel "github.com/sourcegraph/sourcegraph/cmd/worker/shared/init/codeintel"
|
||||
"github.com/sourcegraph/sourcegraph/internal/conf"
|
||||
"github.com/sourcegraph/sourcegraph/internal/conf/conftypes"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database/basestore"
|
||||
connections "github.com/sourcegraph/sourcegraph/internal/database/connections/live"
|
||||
"github.com/sourcegraph/sourcegraph/internal/encryption/keyring"
|
||||
internalinsights "github.com/sourcegraph/sourcegraph/internal/insights"
|
||||
"github.com/sourcegraph/sourcegraph/internal/observation"
|
||||
@ -24,6 +24,7 @@ import (
|
||||
"github.com/sourcegraph/sourcegraph/internal/oobmigration/migrations/insights"
|
||||
insightsBackfiller "github.com/sourcegraph/sourcegraph/internal/oobmigration/migrations/insights/backfillv2"
|
||||
insightsrecordingtimes "github.com/sourcegraph/sourcegraph/internal/oobmigration/migrations/insights/recording_times"
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
)
|
||||
|
||||
func RegisterOSSMigrators(ctx context.Context, db database.DB, runner *oobmigration.Runner) error {
|
||||
@ -90,14 +91,14 @@ func RegisterAll(runner *oobmigration.Runner, noDelay bool, migrators []TaggedMi
|
||||
}
|
||||
|
||||
func RegisterEnterpriseMigrators(ctx context.Context, db database.DB, runner *oobmigration.Runner) error {
|
||||
codeIntelDB, err := workerCodeIntel.InitRawDB(&observation.TestContext)
|
||||
codeIntelDB, err := initCodeintelDB(&observation.TestContext)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var insightsStore *basestore.Store
|
||||
if internalinsights.IsEnabled() {
|
||||
insightsDB, err := workerCodeInsights.InitRawDB(&observation.TestContext)
|
||||
insightsDB, err := initCodeInsightsDB(&observation.TestContext)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -177,3 +178,29 @@ func registerEnterpriseMigrators(runner *oobmigration.Runner, noDelay bool, deps
|
||||
}
|
||||
return RegisterAll(runner, noDelay, migrators)
|
||||
}
|
||||
|
||||
func initCodeintelDB(observationCtx *observation.Context) (*sql.DB, error) {
|
||||
dsn := conf.GetServiceConnectionValueAndRestartOnChange(func(serviceConnections conftypes.ServiceConnections) string {
|
||||
return serviceConnections.CodeIntelPostgresDSN
|
||||
})
|
||||
|
||||
db, err := connections.EnsureNewCodeIntelDB(observationCtx, dsn, "oobmigration")
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to connect to codeintel database: %s", err)
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
|
||||
func initCodeInsightsDB(observationCtx *observation.Context) (*sql.DB, error) {
|
||||
dsn := conf.GetServiceConnectionValueAndRestartOnChange(func(serviceConnections conftypes.ServiceConnections) string {
|
||||
return serviceConnections.CodeInsightsDSN
|
||||
})
|
||||
|
||||
db, err := connections.EnsureNewCodeInsightsDB(observationCtx, dsn, "oobmigration")
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("failed to connect to codeinsights database: %s", err)
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user