blob: 16bce60f178fd98ab4755c679f7fc9bf6827c18e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2010 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.text.tests.performance;
import java.io.File;
import junit.framework.Test;
import org.eclipse.test.performance.PerformanceMeter;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.filebuffers.FileBuffers;
import org.eclipse.core.filebuffers.ITextFileBuffer;
import org.eclipse.core.filebuffers.ITextFileBufferManager;
import org.eclipse.core.filebuffers.LocationKind;
import org.eclipse.core.filebuffers.tests.ResourceHelper;
/**
* Performance tests for file buffers.
*
* @since 3.3
*/
public class FileBufferPerformanceTest extends TextPerformanceTestCase2 {
private static final int LONG_REPEAT_COUNT= 1000000;
private static final int UNCONNECTED_REPEAT_COUNT= 100000;
private static final int ALL_REPEAT_COUNT= 5000;
private IProject fProject;
private ITextFileBufferManager fManager;
private IPath fPath;
private File fTempFile;
private IPath fTempFilePath;
private IPath fNonExistingPath;
public static Test suite() {
return new PerfTestSuite(FileBufferPerformanceTest.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
fProject= ResourceHelper.createProject("project");
fManager= FileBuffers.getTextFileBufferManager();
fProject= ResourceHelper.createProject("project");
fPath= createPath(fProject);
fNonExistingPath= new Path("project/folderA/folderB/noFile");
ITextFileBuffer buffer= fManager.getTextFileBuffer(fPath, LocationKind.NORMALIZE);
fTempFile= File.createTempFile("measureGetOldExternal", "txt");
fTempFilePath= new Path(fTempFile.getAbsolutePath());
assertTrue(buffer == null);
}
@Override
protected void tearDown() throws Exception {
ResourceHelper.deleteProject("project");
fTempFile.delete();
super.tearDown();
}
protected IPath createPath(IProject project) throws Exception {
IFolder folder= ResourceHelper.createFolder(project.getName() + "/folderA/folderB/");
IFile file= ResourceHelper.createFile(folder, "WorkspaceFile", "content");
return file.getFullPath();
}
public void measureConnectOld(PerformanceMeter meter) throws CoreException {
meter.start();
for (int i= 0; i < LONG_REPEAT_COUNT; i++)
fManager.connect(fPath, LocationKind.IFILE, null);
meter.stop();
for (int i= 0; i < LONG_REPEAT_COUNT; i++)
fManager.disconnect(fPath, LocationKind.IFILE, null);
assertNull(fManager.getTextFileBuffer(fPath, LocationKind.IFILE));
}
public void measureGetOld(PerformanceMeter meter) throws CoreException {
fManager.connect(fPath, LocationKind.IFILE, null);
meter.start();
for (int i= 0; i < LONG_REPEAT_COUNT; i++)
fManager.getTextFileBuffer(fPath, LocationKind.IFILE);
meter.stop();
fManager.disconnect(fPath, LocationKind.IFILE, null);
assertNull(fManager.getTextFileBuffer(fPath, LocationKind.IFILE));
}
public void measureGetOldNonExist(PerformanceMeter meter) throws CoreException {
fManager.connect(fNonExistingPath, LocationKind.NORMALIZE, null);
meter.start();
for (int i= 0; i < LONG_REPEAT_COUNT; i++)
fManager.getTextFileBuffer(fNonExistingPath, LocationKind.NORMALIZE);
meter.stop();
fManager.disconnect(fNonExistingPath, LocationKind.NORMALIZE, null);
assertNull(fManager.getTextFileBuffer(fNonExistingPath, LocationKind.NORMALIZE));
}
public void measureGetOldExternal(PerformanceMeter meter) throws Exception {
fManager.connect(fTempFilePath, LocationKind.LOCATION, null);
meter.start();
for (int i= 0; i < LONG_REPEAT_COUNT; i++)
fManager.getTextFileBuffer(fTempFilePath, LocationKind.LOCATION);
meter.stop();
fManager.disconnect(fTempFilePath, LocationKind.LOCATION, null);
assertNull(fManager.getTextFileBuffer(fTempFilePath, LocationKind.LOCATION));
}
public void measureAllOld(PerformanceMeter meter) throws CoreException {
meter.start();
for (int i= 0; i < ALL_REPEAT_COUNT; i++) {
fManager.connect(fPath, LocationKind.IFILE, null);
fManager.getTextFileBuffer(fPath, LocationKind.IFILE);
fManager.disconnect(fPath, LocationKind.IFILE, null);
}
meter.stop();
assertNull(fManager.getTextFileBuffer(fPath, LocationKind.IFILE));
}
public void measureGetUnconnectedOld(PerformanceMeter meter) {
meter.start();
for (int i= 0; i < UNCONNECTED_REPEAT_COUNT; i++)
fManager.getTextFileBuffer(fPath, LocationKind.IFILE);
meter.stop();
assertNull(fManager.getTextFileBuffer(fPath, LocationKind.IFILE));
}
public void measureGetUnconnectedOldNonExist(PerformanceMeter meter) {
meter.start();
for (int i= 0; i < UNCONNECTED_REPEAT_COUNT; i++)
fManager.getTextFileBuffer(fNonExistingPath, LocationKind.NORMALIZE);
meter.stop();
assertNull(fManager.getTextFileBuffer(fNonExistingPath, LocationKind.NORMALIZE));
}
public void measureGetUnconnectedOldExternal(PerformanceMeter meter) throws Exception {
meter.start();
for (int i= 0; i < UNCONNECTED_REPEAT_COUNT; i++)
fManager.getTextFileBuffer(fTempFilePath, LocationKind.LOCATION);
meter.stop();
assertNull(fManager.getTextFileBuffer(fTempFilePath, LocationKind.LOCATION));
}
}