blob: bffbe6e8fca407949f249336e0904f92e32e2372 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.util;
import java.io.InputStream;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.jena.rdf.model.Model ;
import org.apache.jena.shared.NotFoundException ;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestFileManager extends TestCase
{
static Logger log = LoggerFactory.getLogger(TestFileManager.class) ;
static final String testingDir = "testing/FileManager" ;
static final String filename = "fmgr-test-file" ;
static final String filenameNonExistent = "fmgr-test-file-1421" ;
static final String fileModel = "foo.n3" ;
static final String zipname = testingDir+"/fmgr-test.zip" ;
public TestFileManager( String name )
{
super(name);
}
public static TestSuite suite()
{
return new TestSuite( TestFileManager.class );
}
public void testFileManagerFileLocator()
{
FileManager fileManager = new FileManagerImpl() ;
fileManager.addLocatorFile() ;
InputStream in = fileManager.open(testingDir+"/"+filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
public void testFileManagerFileLocatorWithDir()
{
FileManager fileManager = new FileManagerImpl() ;
fileManager.addLocatorFile(testingDir) ;
InputStream in = fileManager.open(filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
public void testFileManagerNoFile()
{
FileManager fileManager = new FileManagerImpl() ;
fileManager.addLocatorFile() ;
try {
// Tests either way round - exception or a null return.
InputStream in = fileManager.open(filenameNonExistent) ;
closeInputStream(in) ;
assertNull("Found non-existant file: "+filenameNonExistent, in) ;
} catch (NotFoundException ex) {}
}
public void testFileManagerLocatorClassLoader()
{
FileManager fileManager = new FileManagerImpl() ;
fileManager.addLocatorClassLoader(fileManager.getClass().getClassLoader()) ;
InputStream in = fileManager.open("java/lang/String.class") ;
assertNotNull(in) ;
closeInputStream(in) ;
}
public void testFileManagerLocatorClassLoaderNotFound()
{
FileManager fileManager = new FileManagerImpl() ;
fileManager.addLocatorClassLoader(fileManager.getClass().getClassLoader()) ;
try {
InputStream in = fileManager.open("not/java/lang/String.class") ;
closeInputStream(in) ;
assertNull("Found non-existant class", in) ;
} catch (NotFoundException ex) {}
}
public void testFileManagerLocatorZip()
{
FileManager fileManager = new FileManagerImpl() ;
try {
fileManager.addLocatorZip(zipname) ;
} catch (Exception ex)
{
fail("Failed to create a filemanager and add a zip locator") ;
}
InputStream in = fileManager.open(filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
public void testFileManagerLocatorZipNonFound()
{
FileManager fileManager = new FileManagerImpl() ;
try {
fileManager.addLocatorZip(zipname) ;
} catch (Exception ex)
{ fail("Failed to create a filemanager and add a zip locator") ; }
try {
InputStream in = fileManager.open(filenameNonExistent) ;
closeInputStream(in) ;
assertNull("Found non-existant zip file member", in) ;
} catch (NotFoundException ex) {}
}
public void testFileManagerClone()
{
FileManager fileManager1 = new FileManagerImpl() ;
FileManager fileManager2 = fileManager1.clone() ;
// Should not affect fileManager2
fileManager1.addLocatorFile() ;
{
InputStream in = fileManager1.open(testingDir+"/"+filename) ;
assertNotNull(in) ;
closeInputStream(in) ;
}
// Should not work.
try {
InputStream in = fileManager2.open(testingDir+"/"+filename) ;
closeInputStream(in) ;
assertNull("Found file via wrong FileManager", in) ;
} catch (NotFoundException ex) {}
}
public void testLocationMappingURLtoFileOpen()
{
@SuppressWarnings("deprecation")
LocationMapper locMap = new LocationMapper(TestLocationMapper.mapping) ;
FileManager fileManager = new FileManagerImpl(locMap) ;
fileManager.addLocatorFile() ;
InputStream in = fileManager.open("http://example.org/file") ;
assertNotNull(in) ;
closeInputStream(in) ;
}
public void testLocationMappingURLtoFileOpenNotFound()
{
@SuppressWarnings("deprecation")
LocationMapper locMap = new LocationMapper(TestLocationMapper.mapping) ;
FileManager fileManager = new FileManagerImpl(locMap) ;
fileManager.addLocatorClassLoader(fileManager.getClass().getClassLoader()) ;
try {
InputStream in = fileManager.open("http://example.org/file") ;
closeInputStream(in) ;
assertNull("Found nont-existant URL", null) ;
} catch (NotFoundException ex) {}
}
public void testCache1()
{
FileManager fileManager = new FileManagerImpl() ;
fileManager.addLocatorFile(testingDir) ;
Model m1 = fileManager.loadModelInternal(fileModel) ;
Model m2 = fileManager.loadModelInternal(fileModel) ;
assertNotSame(m1, m2) ;
}
@SuppressWarnings("deprecation")
public void testCache2()
{
FileManager fileManager = FileManager.getInternal() ;
fileManager.addLocatorFile(testingDir) ;
fileManager.setModelCaching(true) ;
Model m1 = fileManager.loadModelInternal(fileModel) ;
Model m2 = fileManager.loadModelInternal(fileModel) ;
assertSame(m1, m2) ;
}
@SuppressWarnings("deprecation")
public void testCache3()
{
FileManager fileManager = FileManager.getInternal() ;
fileManager.addLocatorFile(testingDir) ;
fileManager.setModelCaching(true) ;
Model m1 = fileManager.loadModelInternal(fileModel) ;
Model m2 = fileManager.loadModelInternal(fileModel) ;
assertSame(m1, m2) ;
fileManager.removeCacheModel(fileModel) ;
Model m3 = fileManager.loadModelInternal(fileModel) ;
assertNotSame(m1, m3) ;
fileManager.resetCache() ;
Model m4 = fileManager.loadModelInternal(fileModel) ;
Model m5 = fileManager.loadModelInternal(fileModel) ;
assertSame(m4, m5) ;
assertNotSame(m1, m4) ;
assertNotSame(m3, m4) ;
}
// public void testFileManagerLocatorURL()
// {
// FileManager fileManager = new FileManagerImpl() ;
// fileManager.addLocatorURL() ;
// InputStream in = fileManager.open("http:///www.bbc.co.uk/") ;
// //assertNotNull(in) ;
// // Proxies matter.
// if ( in == null )
// log.warn("Failed to contact http:///www.bbc.co.uk/: maybe due to proxy issues") ;
//
// try { if ( in != null ) in.close() ; }
// catch (Exception ex) {}
// }
// -------- Helpers
private void closeInputStream(InputStream in)
{
try {
if ( in != null )
in.close() ;
}
catch (Exception ex) {}
}
}