Search in sources :

Example 1 with NotesMigration

use of com.google.gerrit.server.notedb.NotesMigration in project gerrit by GerritCodeReview.

the class InMemoryModule method configure.

@Override
protected void configure() {
    // Do NOT bind @RemotePeer, as it is bound in a child injector of
    // ChangeMergeQueue (bound via GerritGlobalModule below), so there cannot be
    // a binding in the parent injector. If you need @RemotePeer, you must bind
    // it in a child injector of the one containing InMemoryModule. But unless
    // you really need to test something request-scoped, you likely don't
    // actually need it.
    // For simplicity, don't create child injectors, just use this one to get a
    // few required modules.
    Injector cfgInjector = Guice.createInjector(new AbstractModule() {

        @Override
        protected void configure() {
            bind(Config.class).annotatedWith(GerritServerConfig.class).toInstance(cfg);
        }
    });
    bind(MetricMaker.class).to(DisabledMetricMaker.class);
    install(cfgInjector.getInstance(GerritGlobalModule.class));
    install(new DefaultPermissionBackendModule());
    install(new SearchingChangeCacheImpl.Module());
    factory(GarbageCollection.Factory.class);
    bindScope(RequestScoped.class, PerThreadRequestScope.REQUEST);
    // TODO(dborowitz): Use jimfs.
    bind(Path.class).annotatedWith(SitePath.class).toInstance(Paths.get("."));
    bind(Config.class).annotatedWith(GerritServerConfig.class).toInstance(cfg);
    bind(GerritOptions.class).toInstance(new GerritOptions(cfg, false, false, false));
    bind(PersonIdent.class).annotatedWith(GerritPersonIdent.class).toProvider(GerritPersonIdentProvider.class);
    bind(String.class).annotatedWith(AnonymousCowardName.class).toProvider(AnonymousCowardNameProvider.class);
    bind(String.class).annotatedWith(GerritServerId.class).toInstance("gerrit");
    bind(AllProjectsName.class).toProvider(AllProjectsNameProvider.class);
    bind(AllUsersName.class).toProvider(AllUsersNameProvider.class);
    bind(GitRepositoryManager.class).to(InMemoryRepositoryManager.class);
    bind(InMemoryRepositoryManager.class).in(SINGLETON);
    bind(TrackingFooters.class).toProvider(TrackingFootersProvider.class).in(SINGLETON);
    bind(NotesMigration.class).toInstance(notesMigration);
    bind(ListeningExecutorService.class).annotatedWith(ChangeUpdateExecutor.class).toInstance(MoreExecutors.newDirectExecutorService());
    bind(DataSourceType.class).to(InMemoryH2Type.class);
    bind(ChangeBundleReader.class).to(GwtormChangeBundleReader.class);
    bind(SecureStore.class).to(DefaultSecureStore.class);
    TypeLiteral<SchemaFactory<ReviewDb>> schemaFactory = new TypeLiteral<SchemaFactory<ReviewDb>>() {
    };
    bind(schemaFactory).to(NotesMigrationSchemaFactory.class);
    bind(Key.get(schemaFactory, ReviewDbFactory.class)).to(InMemoryDatabase.class);
    install(NoSshKeyCache.module());
    install(new CanonicalWebUrlModule() {

        @Override
        protected Class<? extends Provider<String>> provider() {
            return CanonicalWebUrlProvider.class;
        }
    });
    //Replacement of DiffExecutorModule to not use thread pool in the tests
    install(new AbstractModule() {

        @Override
        protected void configure() {
        }

        @Provides
        @Singleton
        @DiffExecutor
        public ExecutorService createDiffExecutor() {
            return MoreExecutors.newDirectExecutorService();
        }
    });
    install(new DefaultCacheFactory.Module());
    install(new FakeEmailSender.Module());
    install(new SignedTokenEmailTokenVerifier.Module());
    install(new GpgModule(cfg));
    install(new H2AccountPatchReviewStore.InMemoryModule());
    bind(AllAccountsIndexer.class).toProvider(Providers.of(null));
    bind(AllChangesIndexer.class).toProvider(Providers.of(null));
    bind(AllGroupsIndexer.class).toProvider(Providers.of(null));
    IndexType indexType = null;
    try {
        indexType = cfg.getEnum("index", null, "type", IndexType.LUCENE);
    } catch (IllegalArgumentException e) {
    // Custom index type, caller must provide their own module.
    }
    if (indexType != null) {
        switch(indexType) {
            case LUCENE:
                install(luceneIndexModule());
                break;
            case ELASTICSEARCH:
                install(elasticIndexModule());
                break;
            default:
                throw new ProvisionException("index type unsupported in tests: " + indexType);
        }
    }
}
Also used : MetricMaker(com.google.gerrit.metrics.MetricMaker) DisabledMetricMaker(com.google.gerrit.metrics.DisabledMetricMaker) GerritServerId(com.google.gerrit.server.config.GerritServerId) GwtormChangeBundleReader(com.google.gerrit.server.notedb.GwtormChangeBundleReader) ChangeBundleReader(com.google.gerrit.server.notedb.ChangeBundleReader) GerritGlobalModule(com.google.gerrit.server.config.GerritGlobalModule) Injector(com.google.inject.Injector) DataSourceType(com.google.gerrit.server.schema.DataSourceType) DefaultPermissionBackendModule(com.google.gerrit.server.project.DefaultPermissionBackendModule) NotesMigrationSchemaFactory(com.google.gerrit.server.schema.NotesMigrationSchemaFactory) SchemaFactory(com.google.gwtorm.server.SchemaFactory) AllProjectsName(com.google.gerrit.server.config.AllProjectsName) DefaultCacheFactory(com.google.gerrit.server.cache.h2.DefaultCacheFactory) GerritOptions(com.google.gerrit.server.config.GerritOptions) SecureStore(com.google.gerrit.server.securestore.SecureStore) DefaultSecureStore(com.google.gerrit.server.securestore.DefaultSecureStore) ChangeUpdateExecutor(com.google.gerrit.server.update.ChangeUpdateExecutor) Singleton(com.google.inject.Singleton) SitePath(com.google.gerrit.server.config.SitePath) DiffExecutor(com.google.gerrit.server.patch.DiffExecutor) Config(org.eclipse.jgit.lib.Config) GerritServerConfig(com.google.gerrit.server.config.GerritServerConfig) TrackingFootersProvider(com.google.gerrit.server.config.TrackingFootersProvider) AllChangesIndexer(com.google.gerrit.server.index.change.AllChangesIndexer) GarbageCollection(com.google.gerrit.server.git.GarbageCollection) AllAccountsIndexer(com.google.gerrit.server.index.account.AllAccountsIndexer) SignedTokenEmailTokenVerifier(com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier) ProvisionException(com.google.inject.ProvisionException) TypeLiteral(com.google.inject.TypeLiteral) GpgModule(com.google.gerrit.gpg.GpgModule) IndexType(com.google.gerrit.server.index.IndexModule.IndexType) ReviewDb(com.google.gerrit.reviewdb.server.ReviewDb) GerritPersonIdent(com.google.gerrit.server.GerritPersonIdent) SearchingChangeCacheImpl(com.google.gerrit.server.git.SearchingChangeCacheImpl) GerritServerConfig(com.google.gerrit.server.config.GerritServerConfig) AnonymousCowardName(com.google.gerrit.server.config.AnonymousCowardName) GitRepositoryManager(com.google.gerrit.server.git.GitRepositoryManager) Provides(com.google.inject.Provides) H2AccountPatchReviewStore(com.google.gerrit.server.schema.H2AccountPatchReviewStore) AbstractModule(com.google.inject.AbstractModule) NotesMigration(com.google.gerrit.server.notedb.NotesMigration) CanonicalWebUrlModule(com.google.gerrit.server.config.CanonicalWebUrlModule) AllUsersNameProvider(com.google.gerrit.server.config.AllUsersNameProvider) CanonicalWebUrlProvider(com.google.gerrit.server.config.CanonicalWebUrlProvider) GerritPersonIdentProvider(com.google.gerrit.server.GerritPersonIdentProvider) AllProjectsNameProvider(com.google.gerrit.server.config.AllProjectsNameProvider) TrackingFootersProvider(com.google.gerrit.server.config.TrackingFootersProvider) AnonymousCowardNameProvider(com.google.gerrit.server.config.AnonymousCowardNameProvider) Provider(com.google.inject.Provider) AllGroupsIndexer(com.google.gerrit.server.index.group.AllGroupsIndexer) ListeningExecutorService(com.google.common.util.concurrent.ListeningExecutorService) ExecutorService(java.util.concurrent.ExecutorService) AllUsersName(com.google.gerrit.server.config.AllUsersName)

Example 2 with NotesMigration

use of com.google.gerrit.server.notedb.NotesMigration in project gerrit by GerritCodeReview.

the class TestChanges method newUpdate.

public static ChangeUpdate newUpdate(Injector injector, Change c, final CurrentUser user) throws Exception {
    injector = injector.createChildInjector(new FactoryModule() {

        @Override
        public void configure() {
            bind(CurrentUser.class).toInstance(user);
        }
    });
    ChangeUpdate update = injector.getInstance(ChangeUpdate.Factory.class).create(stubChangeControl(injector.getInstance(AbstractChangeNotes.Args.class), c, user), TimeUtil.nowTs(), Ordering.<String>natural());
    ChangeNotes notes = update.getNotes();
    boolean hasPatchSets = notes.getPatchSets() != null && !notes.getPatchSets().isEmpty();
    NotesMigration migration = injector.getInstance(NotesMigration.class);
    if (hasPatchSets || !migration.readChanges()) {
        return update;
    }
    // Change doesn't exist yet. NoteDb requires that there be a commit for the
    // first patch set, so create one.
    GitRepositoryManager repoManager = injector.getInstance(GitRepositoryManager.class);
    try (Repository repo = repoManager.openRepository(c.getProject())) {
        TestRepository<Repository> tr = new TestRepository<>(repo);
        PersonIdent ident = user.asIdentifiedUser().newCommitterIdent(update.getWhen(), TimeZone.getDefault());
        TestRepository<Repository>.CommitBuilder<Repository> cb = tr.commit().author(ident).committer(ident).message(firstNonNull(c.getSubject(), "Test change"));
        Ref parent = repo.exactRef(c.getDest().get());
        if (parent != null) {
            cb.parent(tr.getRevWalk().parseCommit(parent.getObjectId()));
        }
        update.setBranch(c.getDest().get());
        update.setChangeId(c.getKey().get());
        update.setCommit(tr.getRevWalk(), cb.create());
        return update;
    }
}
Also used : TestRepository(org.eclipse.jgit.junit.TestRepository) CurrentUser(com.google.gerrit.server.CurrentUser) FactoryModule(com.google.gerrit.extensions.config.FactoryModule) AbstractChangeNotes(com.google.gerrit.server.notedb.AbstractChangeNotes) GitRepositoryManager(com.google.gerrit.server.git.GitRepositoryManager) ChangeNotes(com.google.gerrit.server.notedb.ChangeNotes) AbstractChangeNotes(com.google.gerrit.server.notedb.AbstractChangeNotes) ChangeUpdate(com.google.gerrit.server.notedb.ChangeUpdate) NotesMigration(com.google.gerrit.server.notedb.NotesMigration) TestRepository(org.eclipse.jgit.junit.TestRepository) Repository(org.eclipse.jgit.lib.Repository) Ref(org.eclipse.jgit.lib.Ref) PersonIdent(org.eclipse.jgit.lib.PersonIdent)

Aggregations

GitRepositoryManager (com.google.gerrit.server.git.GitRepositoryManager)2 NotesMigration (com.google.gerrit.server.notedb.NotesMigration)2 ListeningExecutorService (com.google.common.util.concurrent.ListeningExecutorService)1 FactoryModule (com.google.gerrit.extensions.config.FactoryModule)1 GpgModule (com.google.gerrit.gpg.GpgModule)1 DisabledMetricMaker (com.google.gerrit.metrics.DisabledMetricMaker)1 MetricMaker (com.google.gerrit.metrics.MetricMaker)1 ReviewDb (com.google.gerrit.reviewdb.server.ReviewDb)1 CurrentUser (com.google.gerrit.server.CurrentUser)1 GerritPersonIdent (com.google.gerrit.server.GerritPersonIdent)1 GerritPersonIdentProvider (com.google.gerrit.server.GerritPersonIdentProvider)1 DefaultCacheFactory (com.google.gerrit.server.cache.h2.DefaultCacheFactory)1 AllProjectsName (com.google.gerrit.server.config.AllProjectsName)1 AllProjectsNameProvider (com.google.gerrit.server.config.AllProjectsNameProvider)1 AllUsersName (com.google.gerrit.server.config.AllUsersName)1 AllUsersNameProvider (com.google.gerrit.server.config.AllUsersNameProvider)1 AnonymousCowardName (com.google.gerrit.server.config.AnonymousCowardName)1 AnonymousCowardNameProvider (com.google.gerrit.server.config.AnonymousCowardNameProvider)1 CanonicalWebUrlModule (com.google.gerrit.server.config.CanonicalWebUrlModule)1 CanonicalWebUrlProvider (com.google.gerrit.server.config.CanonicalWebUrlProvider)1