/*
* Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florent Guillaume
*/
package org.nuxeo.ecm.core.storage.sql;
import java.util.Arrays;
import org.nuxeo.ecm.core.event.EventService;
import org.nuxeo.ecm.core.storage.sql.RepositoryDescriptor.FieldDescriptor;
import org.nuxeo.ecm.core.storage.sql.coremodel.SQLRepositoryService;
import org.nuxeo.runtime.api.Framework;
import org.nuxeo.runtime.test.NXRuntimeTestCase;
/**
* @author Florent Guillaume
*/
public abstract class SQLBackendTestCase extends NXRuntimeTestCase {
public Repository repository;
public Repository repository2;
/** Set to false for client unit tests */
public boolean initDatabase() {
return true;
}
@Override
public void setUp() throws Exception {
super.setUp();
deployBundle("org.nuxeo.runtime.jtajca");
deployBundle("org.nuxeo.ecm.core.api");
deployBundle("org.nuxeo.ecm.core");
deployBundle("org.nuxeo.ecm.core.schema");
deployBundle("org.nuxeo.ecm.core.event");
deployBundle("org.nuxeo.ecm.core.storage");
deployBundle("org.nuxeo.ecm.core.storage.sql");
if (initDatabase()) {
DatabaseHelper.DATABASE.setUp();
}
repository = newRepository(-1);
}
protected Repository newRepository(long clusteringDelay) throws Exception {
return newRepository(null, clusteringDelay);
}
protected Repository newRepository(String name, long clusteringDelay)
throws Exception {
RepositoryDescriptor descriptor = newDescriptor(name, clusteringDelay);
RepositoryImpl repo = new RepositoryImpl(descriptor);
SQLRepositoryService sqlRepositoryService = Framework.getService(SQLRepositoryService.class);
sqlRepositoryService.registerTestRepository(repo);
return repo;
}
protected RepositoryDescriptor newDescriptor(String name,
long clusteringDelay) {
if (name == null) {
name = DatabaseHelper.DATABASE.repositoryName;
}
RepositoryDescriptor descriptor = DatabaseHelper.DATABASE.getRepositoryDescriptor();
descriptor.name = name;
descriptor.setClusteringEnabled(clusteringDelay != -1);
descriptor.setClusteringDelay(clusteringDelay);
FieldDescriptor schemaField1 = new FieldDescriptor();
schemaField1.field = "tst:bignote";
schemaField1.type = Model.FIELD_TYPE_LARGETEXT;
FieldDescriptor schemaField2 = new FieldDescriptor();
schemaField2.field = "tst:bignotes";
schemaField2.type = Model.FIELD_TYPE_LARGETEXT;
descriptor.schemaFields = Arrays.asList(schemaField1, schemaField2);
descriptor.binaryStorePath = "testbinaries";
// disable fulltext because fulltext workers wouldn't have any
// high-level repository to get a session from anyway.
descriptor.setFulltextDisabled(true);
return descriptor;
}
@Override
public void tearDown() throws Exception {
closeRepository();
super.tearDown();
}
protected void closeRepository() throws Exception {
Framework.getLocalService(EventService.class).waitForAsyncCompletion();
if (repository != null) {
repository.close();
repository = null;
}
if (repository2 != null) {
repository2.close();
repository2 = null;
}
}
public boolean isSoftDeleteEnabled() {
return ((RepositoryImpl) repository).getRepositoryDescriptor().getSoftDeleteEnabled();
}
public boolean isProxiesEnabled() {
return ((RepositoryImpl) repository).getRepositoryDescriptor().getProxiesEnabled();
}
}