mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-23 16:23:52 +02:00
[198859] add/update the JUnit testcases for archive handlers.
This commit is contained in:
parent
7f4ceccfea
commit
9477539b58
7 changed files with 2181 additions and 280 deletions
|
@ -18,7 +18,9 @@ Require-Bundle: org.junit,
|
||||||
org.eclipse.ui.views,
|
org.eclipse.ui.views,
|
||||||
org.eclipse.rse.services;bundle-version="[2.0.0,3.0.0)",
|
org.eclipse.rse.services;bundle-version="[2.0.0,3.0.0)",
|
||||||
org.eclipse.rse.services.files.ftp;bundle-version="[2.0.0,3.0.0)",
|
org.eclipse.rse.services.files.ftp;bundle-version="[2.0.0,3.0.0)",
|
||||||
org.eclipse.rse.subsystems.files.ftp;bundle-version="[2.0.0,3.0.0)"
|
org.eclipse.rse.subsystems.files.ftp;bundle-version="[2.0.0,3.0.0)",
|
||||||
|
org.eclipse.core.filesystem,
|
||||||
|
org.eclipse.rse.files.ui
|
||||||
Eclipse-LazyStart: true
|
Eclipse-LazyStart: true
|
||||||
Bundle-RequiredExecutionEnvironment: J2SE-1.4
|
Bundle-RequiredExecutionEnvironment: J2SE-1.4
|
||||||
Export-Package: org.eclipse.rse.tests,
|
Export-Package: org.eclipse.rse.tests,
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
* David Dykstal (IBM) - initial contribution.
|
* David Dykstal (IBM) - initial contribution.
|
||||||
* Uwe Stieber (Wind River) - refactoring and cleanup.
|
* Uwe Stieber (Wind River) - refactoring and cleanup.
|
||||||
* Martin Oberhuber (Wind River) - [184095] Replace systemTypeName by IRSESystemType
|
* Martin Oberhuber (Wind River) - [184095] Replace systemTypeName by IRSESystemType
|
||||||
|
* Xuan Chen (IBM) - [198859] Update the API doc for getRemoteSystemConnection.
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
package org.eclipse.rse.tests.core.connection;
|
package org.eclipse.rse.tests.core.connection;
|
||||||
|
|
||||||
|
@ -86,10 +87,14 @@ public class RSEBaseConnectionTestCase extends RSECoreTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lookup and return the local system type connection. This connection
|
* Lookup/create and return the remote system connection according to the list of system parameters.
|
||||||
* should be usually available on all systems.
|
* @param systemTypeID The type id string of the remote system.
|
||||||
|
* @param systemAddress The address of the remote system.
|
||||||
|
* @param systemName The connection name.
|
||||||
|
* @param userID The user id used to logon to the remote system.
|
||||||
|
* @param password The password of the user id to logon to the remote system.
|
||||||
*
|
*
|
||||||
* @return The local system type connection or <code>null</code> if the lookup fails.
|
* @return The remote system connection or <code>null</code> if the lookup/creation fails.
|
||||||
*/
|
*/
|
||||||
protected IHost getRemoteSystemConnection(String systemTypeID, String systemAddress, String systemName, String userID, String password) {
|
protected IHost getRemoteSystemConnection(String systemTypeID, String systemAddress, String systemName, String userID, String password) {
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -10,6 +10,8 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.rse.tests.subsystems.files;
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
import org.eclipse.jface.preference.IPreferenceStore;
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
import org.eclipse.rse.core.IRSESystemType;
|
import org.eclipse.rse.core.IRSESystemType;
|
||||||
import org.eclipse.rse.core.model.IHost;
|
import org.eclipse.rse.core.model.IHost;
|
||||||
|
@ -20,22 +22,46 @@ import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||||
import org.eclipse.rse.services.files.IFileService;
|
import org.eclipse.rse.services.files.IFileService;
|
||||||
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||||
import org.eclipse.rse.ui.ISystemPreferencesConstants;
|
import org.eclipse.rse.ui.ISystemPreferencesConstants;
|
||||||
import org.eclipse.rse.ui.RSEUIPlugin;
|
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||||
|
|
||||||
public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest {
|
public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest {
|
||||||
|
|
||||||
|
public static junit.framework.Test suite() {
|
||||||
|
TestSuite suite = new TestSuite("FileServiceArchiveTestDStoreWindows");
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyBatchToArchiveFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyBatchToVirtualFileLevelOne")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyBatchToVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyBatchVirtualFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyBatchVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyToArchiveFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyToVirtualFileLevelOne")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyToVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyVirtualBatchToArchiveFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyVirtualBatchToVirtualFileLevelOne")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyVirtualBatchToVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyVirtualFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCopyVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testCreateZipFile")); //$NON-NLS-1$
|
||||||
|
//suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testDeleteVirtualFileBigZip")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testMoveToArchiveFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testMoveToVirtualFileLevelOne")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testMoveToVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testMoveVirtualFile")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testMoveVirtualFileLevelTwo")); //$NON-NLS-1$
|
||||||
|
suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testRenameVirtualFile")); //$NON-NLS-1$
|
||||||
|
//suite.addTest(TestSuite.createTest(FileServiceArchiveTestDStoreWindows.class, "testRenameVirtualFileBigZip")); //$NON-NLS-1$
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
|
||||||
//We need to delay if it is first case run after a workspace startup
|
//We need to delay if it is first case run after a workspace startup
|
||||||
SYSTEM_TYPE_ID = IRSESystemType.SYSTEMTYPE_WINDOWS_ID;
|
SYSTEM_TYPE_ID = IRSESystemType.SYSTEMTYPE_WINDOWS_ID;
|
||||||
TMP_DIR_PARENT = "D:\\tmp\\junit_test\\";
|
|
||||||
ZIP_SOURCE_DIR = "D:\\tmp\\junit_source\\";
|
|
||||||
SYSTEM_ADDRESS = "LOCALHOST";
|
SYSTEM_ADDRESS = "LOCALHOST";
|
||||||
SYSTEM_NAME = "LOCALHOST_ds";
|
SYSTEM_NAME = "LOCALHOST_ds";
|
||||||
|
|
||||||
|
|
||||||
//We need to delay if it is first case run after a workspace startup
|
//We need to delay if it is first case run after a workspace startup
|
||||||
if (!classBeenRunBefore)
|
if (!classBeenRunBefore)
|
||||||
{
|
{
|
||||||
|
@ -67,7 +93,18 @@ public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest
|
||||||
fs = fss.getFileService();
|
fs = fss.getFileService();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
|
IHost localHost = getLocalSystemConnection();
|
||||||
|
sr = SystemStartHere.getSystemRegistry();
|
||||||
|
ss = sr.getServiceSubSystems(localHost, IFileService.class);
|
||||||
|
for (int i=0; i<ss.length; i++) {
|
||||||
|
if (ss[i] instanceof IFileServiceSubSystem) {
|
||||||
|
localFss = (IFileServiceSubSystem)ss[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
IConnectorService connectionService = fss.getConnectorService();
|
IConnectorService connectionService = fss.getConnectorService();
|
||||||
//If you want to change the daemon to another port, uncomment following statements
|
//If you want to change the daemon to another port, uncomment following statements
|
||||||
/*
|
/*
|
||||||
|
@ -92,17 +129,24 @@ public class FileServiceArchiveTestDStoreWindows extends FileServiceArchiveTest
|
||||||
fss.getSubSystemConfiguration().updateSubSystem(fss, false, "xuanchen", true, 4033);
|
fss.getSubSystemConfiguration().updateSubSystem(fss, false, "xuanchen", true, 4033);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
//End here.
|
||||||
|
|
||||||
connectionService.connect(mon);
|
connectionService.connect(mon);
|
||||||
tempDirPath = TMP_DIR_PARENT;
|
|
||||||
long currentTime = System.currentTimeMillis();
|
//Create a temparory directory in My Home
|
||||||
tempDir = createFileOrFolder(tempDirPath, "rsetest" + currentTime, true);
|
try
|
||||||
assertTrue(tempDir != null);
|
{
|
||||||
assertTrue(tempDir.exists());
|
IRemoteFile homeDirectory = fss.getRemoteFileObject(".", mon);
|
||||||
assertTrue(tempDir.canRead());
|
String baseFolderName = "rsetest";
|
||||||
assertTrue(tempDir.canWrite());
|
String homeFolderName = homeDirectory.getAbsolutePath();
|
||||||
assertTrue(tempDir.isDirectory());
|
String testFolderName = FileServiceHelper.getRandomLocation(fss, homeFolderName, baseFolderName, mon);
|
||||||
tempDirPath = tempDir.getAbsolutePath();
|
tempDir = createFileOrFolder(homeFolderName, testFolderName, true);
|
||||||
|
tempDirPath = tempDir.getAbsolutePath();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Problem encountered: " + e.getStackTrace().toString());
|
||||||
|
}
|
||||||
|
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
assertTrue("Exception creating temp dir " + e.getStackTrace().toString(), false); //$NON-NLS-1$
|
assertTrue("Exception creating temp dir " + e.getStackTrace().toString(), false); //$NON-NLS-1$
|
||||||
|
|
|
@ -7,13 +7,24 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Xuan Chen (IBM) - initial API and implementation
|
* Xuan Chen (IBM) - initial API and implementation
|
||||||
|
* - <copied code from org.eclipse.core.tests.internal.localstore/LocalStoreTest (Copyright IBM)>
|
||||||
|
* - <copied code from org.eclipse.core.tests.harness/CoreTest (Copyright IBM)>
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.rse.tests.subsystems.files;
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.eclipse.core.filesystem.EFS;
|
||||||
|
import org.eclipse.core.filesystem.IFileInfo;
|
||||||
|
import org.eclipse.core.filesystem.IFileStore;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager;
|
import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager;
|
||||||
import org.eclipse.rse.services.files.IFileService;
|
import org.eclipse.rse.services.files.IFileService;
|
||||||
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
@ -24,6 +35,7 @@ import org.eclipse.rse.tests.core.connection.RSEBaseConnectionTestCase;
|
||||||
public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
|
|
||||||
protected IFileServiceSubSystem fss;
|
protected IFileServiceSubSystem fss;
|
||||||
|
protected IFileServiceSubSystem localFss;
|
||||||
protected IFileService fs;
|
protected IFileService fs;
|
||||||
protected IRemoteFile tempDir;
|
protected IRemoteFile tempDir;
|
||||||
protected String tempDirPath;
|
protected String tempDirPath;
|
||||||
|
@ -48,6 +60,7 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
return "a !@#${a}'` file%^&()_ =[]~+-;,."; //$NON-NLS-1$
|
return "a !@#${a}'` file%^&()_ =[]~+-;,."; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public IRemoteFile copySourceFileOrFolder(String sourceFullName, String sourceName, String targetFolderFullName)
|
public IRemoteFile copySourceFileOrFolder(String sourceFullName, String sourceName, String targetFolderFullName)
|
||||||
{
|
{
|
||||||
boolean ok = false;
|
boolean ok = false;
|
||||||
|
@ -65,7 +78,7 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
//Need to call resolveFilterString of the parent to make sure the newly copied child
|
//Need to call resolveFilterString of the parent to make sure the newly copied child
|
||||||
//is added to the DStore map. Otherwise, next time when query it, it will just created a
|
//is added to the DStore map. Otherwise, next time when query it, it will just created a
|
||||||
//default filter string. And the dstore server cannot handler it correctly.
|
//default filter string. And the dstore server cannot handler it correctly.
|
||||||
Object[] children = fss.resolveFilterString(targetFolder, null, mon);
|
fss.resolveFilterString(targetFolder, null, mon);
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
|
@ -99,7 +112,7 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
//Need to call resolveFilterString of the parent to make sure the newly created child
|
//Need to call resolveFilterString of the parent to make sure the newly created child
|
||||||
//is added to the DStore map. Otherwise, next time when query it, it will just created a
|
//is added to the DStore map. Otherwise, next time when query it, it will just created a
|
||||||
//default filter string. And the dstore server cannot handler it correctly.
|
//default filter string. And the dstore server cannot handler it correctly.
|
||||||
Object[] children = fss.resolveFilterString(targetFolder, null, mon);
|
fss.resolveFilterString(targetFolder, null, mon);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -141,6 +154,7 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
//We need to call getRemoteFileObject to get its attribute updated.
|
//We need to call getRemoteFileObject to get its attribute updated.
|
||||||
//Otherwise, will get error "directory not readable"
|
//Otherwise, will get error "directory not readable"
|
||||||
folderToCheck = fss.getRemoteFileObject(folderToCheck.getAbsolutePath(), mon);
|
folderToCheck = fss.getRemoteFileObject(folderToCheck.getAbsolutePath(), mon);
|
||||||
|
System.out.println("verifying the contents for folder: " + folderToCheck.getAbsolutePath());
|
||||||
Object[] children = fss.resolveFilterString(folderToCheck, null, mon);
|
Object[] children = fss.resolveFilterString(folderToCheck, null, mon);
|
||||||
//Make sure the children array includes the copied folder.
|
//Make sure the children array includes the copied folder.
|
||||||
HashMap childrenMap = new HashMap();
|
HashMap childrenMap = new HashMap();
|
||||||
|
@ -154,7 +168,7 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
for (int i=0; i<names.length; i++)
|
for (int i=0; i<names.length; i++)
|
||||||
{
|
{
|
||||||
IRemoteFile found = (IRemoteFile)(childrenMap.get(names[i]));
|
IRemoteFile found = (IRemoteFile)(childrenMap.get(names[i]));
|
||||||
assertTrue(found != null);
|
assertTrue("Could not find " + names[i], found != null);
|
||||||
assertTrue(found.exists());
|
assertTrue(found.exists());
|
||||||
if (types != null && types.length != 0)
|
if (types != null && types.length != 0)
|
||||||
{
|
{
|
||||||
|
@ -192,9 +206,7 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
sep = '/';
|
sep = '/';
|
||||||
parentFolderPath = parentFolderPath + ArchiveHandlerManager.VIRTUAL_SEPARATOR;
|
parentFolderPath = parentFolderPath + ArchiveHandlerManager.VIRTUAL_SEPARATOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// hack by Phil to fix bug when trying to create file inside root "/"... it
|
|
||||||
// tried to create "//file.ext".
|
|
||||||
if ((parentFolderPath.length()==1) && (parentFolderPath.charAt(0)=='/') &&
|
if ((parentFolderPath.length()==1) && (parentFolderPath.charAt(0)=='/') &&
|
||||||
(parentFolderPath.charAt(0)==sep))
|
(parentFolderPath.charAt(0)==sep))
|
||||||
newAbsName = sep + newName;
|
newAbsName = sep + newName;
|
||||||
|
@ -202,5 +214,100 @@ public class FileServiceBaseTest extends RSEBaseConnectionTestCase {
|
||||||
newAbsName = parentFolderPath + sep + newName;
|
newAbsName = parentFolderPath + sep + newName;
|
||||||
return newAbsName;
|
return newAbsName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// <copied code from org.eclipse.core.tests.internal.localstore/LocalStoreTest (Copyright IBM)>
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
protected IFileStore createDir(IFileStore store, boolean clear) throws CoreException {
|
||||||
|
if (clear && store.fetchInfo().exists())
|
||||||
|
store.delete(EFS.NONE, null);
|
||||||
|
store.mkdir(EFS.NONE, null);
|
||||||
|
IFileInfo info = store.fetchInfo();
|
||||||
|
assertTrue("createDir.1", info.exists());
|
||||||
|
assertTrue("createDir.1", info.isDirectory());
|
||||||
|
return store;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// <copied code from org.eclipse.core.tests.internal.localstore/LocalStoreTest (Copyright IBM)>
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
protected IFileStore createDir(String string, boolean clear) throws CoreException {
|
||||||
|
return createDir(EFS.getFileSystem(EFS.SCHEME_FILE).getStore(new Path(string)), clear);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a file with random content. If a resource exists in the same path,
|
||||||
|
* the resource is deleted.
|
||||||
|
* <copied code from org.eclipse.core.tests.internal.localstore/LocalStoreTest (Copyright IBM)>
|
||||||
|
*
|
||||||
|
* @param target the file to create
|
||||||
|
* @param content content of the new file
|
||||||
|
* @throws CoreException
|
||||||
|
*/
|
||||||
|
protected void createFile(IFileStore target, String content) throws CoreException {
|
||||||
|
target.delete(EFS.NONE, null);
|
||||||
|
InputStream input = new ByteArrayInputStream(content.getBytes());
|
||||||
|
transferData(input, target.openOutputStream(EFS.NONE, null));
|
||||||
|
IFileInfo info = target.fetchInfo();
|
||||||
|
assertTrue(info.exists() && !info.isDirectory());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the data from the input stream to the output stream.
|
||||||
|
* Close both streams when finished.
|
||||||
|
* <copied code from org.eclipse.core.tests.harness/CoreTest (Copyright IBM)>
|
||||||
|
*
|
||||||
|
* @param input input stream
|
||||||
|
* @param output output stream
|
||||||
|
*/
|
||||||
|
protected void transferData(InputStream input, OutputStream output) {
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
int c = 0;
|
||||||
|
while ((c = input.read()) != -1)
|
||||||
|
output.write(c);
|
||||||
|
} finally {
|
||||||
|
input.close();
|
||||||
|
output.close();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
assertTrue(e.toString(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return String with some random text to use
|
||||||
|
* as contents for a file resource.
|
||||||
|
* <copied code from org.eclipse.core.tests.harness/CoreTest (Copyright IBM)>
|
||||||
|
*
|
||||||
|
* @return the result random string
|
||||||
|
*/
|
||||||
|
protected String getRandomString() {
|
||||||
|
switch ((int) Math.round(Math.random() * 10)) {
|
||||||
|
case 0 :
|
||||||
|
return "este e' o meu conteudo (portuguese)";
|
||||||
|
case 1 :
|
||||||
|
return "ho ho ho";
|
||||||
|
case 2 :
|
||||||
|
return "I'll be back";
|
||||||
|
case 3 :
|
||||||
|
return "don't worry, be happy";
|
||||||
|
case 4 :
|
||||||
|
return "there is no imagination for more sentences";
|
||||||
|
case 5 :
|
||||||
|
return "customize yours";
|
||||||
|
case 6 :
|
||||||
|
return "foo";
|
||||||
|
case 7 :
|
||||||
|
return "bar";
|
||||||
|
case 8 :
|
||||||
|
return "foobar";
|
||||||
|
case 9 :
|
||||||
|
return "case 9";
|
||||||
|
default :
|
||||||
|
return "these are my contents";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2004, 2007 IBM Corporation 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:
|
||||||
|
* Xuan Chen (IBM) - copied and adapted from org.eclipse.core.tests.harness/FileSystemHelper
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.subsystems.files;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.Path;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
|
||||||
|
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Home for file system-related utility methods.
|
||||||
|
*/
|
||||||
|
public class FileServiceHelper {
|
||||||
|
/** counter for generating unique random file system locations */
|
||||||
|
protected static int nextLocationCounter = 0;
|
||||||
|
private static final long MASK = 0x00000000FFFFFFFFL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the root directory for the temp dir.
|
||||||
|
*/
|
||||||
|
public static IPath getTempDir() {
|
||||||
|
String tempPath = System.getProperty("java.io.tmpdir");
|
||||||
|
try {
|
||||||
|
tempPath = new java.io.File(tempPath).getCanonicalPath();
|
||||||
|
} catch (IOException e) {
|
||||||
|
//ignore and use non-canonical path
|
||||||
|
}
|
||||||
|
return new Path(tempPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a unique location on the remote file system. It is guaranteed that no file currently
|
||||||
|
* exists at that location. The returned location will be unique with respect
|
||||||
|
* to all other locations generated by this method in the current session.
|
||||||
|
* If the caller creates a folder or file at this location, they are responsible for
|
||||||
|
* deleting it when finished.
|
||||||
|
* @param fss The FileServiceSubSystem where we want to get this location
|
||||||
|
* @param parentPath The path of the parent folder
|
||||||
|
* @param baseName the name where the calculated extension will be appended to
|
||||||
|
* @param mon Progress Monitor needed for necessary remote query
|
||||||
|
* @return the generated name of this location
|
||||||
|
*/
|
||||||
|
public static String getRandomLocation(IFileServiceSubSystem fss, String parentPath, String baseName, IProgressMonitor mon) {
|
||||||
|
String resultName = computeRandomLocation(fss, baseName);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IRemoteFile remoteFile = fss.getRemoteFileObject(parentPath + fss.getSeparator() + resultName, mon);
|
||||||
|
boolean fileExist = (remoteFile != null) && remoteFile.exists();
|
||||||
|
while (fileExist)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
resultName = computeRandomLocation(fss, baseName);
|
||||||
|
remoteFile = fss.getRemoteFileObject(parentPath + fss.getSeparator() + resultName, mon);
|
||||||
|
fileExist = (remoteFile != null) && remoteFile.exists();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return resultName;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String computeRandomLocation(IFileServiceSubSystem fss, String path) {
|
||||||
|
long segment = (((long) ++nextLocationCounter) << 32) | (System.currentTimeMillis() & MASK);
|
||||||
|
return path +(Long.toString(segment));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue