/**
* Copyright 2007-2013 University Of Southern California
*
* Licensed 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 edu.isi.pegasus.common.util;
import edu.isi.pegasus.common.logging.LogManager;
import edu.isi.pegasus.planner.test.DefaultTestSetup;
import edu.isi.pegasus.planner.test.TestSetup;
import java.util.LinkedList;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Test class to test the PegasusURL class and check if it parses the various
* URL combinations
*
* @author Karan Vahi
*/
public class PegasusURLTest {
private static int mTestNumber =1 ;
private TestSetup mTestSetup;
private LogManager mLogger;
public PegasusURLTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
mTestSetup = new DefaultTestSetup();
mTestSetup.setInputDirectory( this.getClass() );
System.out.println( "Input Test Dir is " + mTestSetup.getInputDirectory() );
mLogger = mTestSetup.loadLogger( mTestSetup.loadPropertiesFromFile( ".properties", new LinkedList() ));
mLogger.logEventStart( "test.pegasus.url", "setup", "0" );
}
@Test
public void testGridFTPURL() {
//should print
//protocol -> gsiftp , host -> sukhna.isi.edu , path -> /tmp/test.file , url-prefix -> gsiftp://sukhna.isi.edu
mLogger.logEventStart( "test.common.util.PegasusURL", "set", Integer.toString(mTestNumber++) );
testURL( "gsiftp://sukhna.isi.edu/tmp/test.file" , "gsiftp", "sukhna.isi.edu", "/tmp/test.file", "gsiftp://sukhna.isi.edu" );
mLogger.logEventCompletion();
}
@Test
public void testGridFTPULRWithHome() {
//protocol -> gsiftp , host -> dataserver.phys.uwm.edu , path -> /~/griphyn_test/ligodemo_output/ , url-prefix -> gsiftp://dataserver.phys.uwm.edu
// "gsiftp://dataserver.phys.uwm.edu/~/griphyn_test/ligodemo_output/" ;
mLogger.logEventStart( "test.common.util.PegasusURL", "set", Integer.toString(mTestNumber++) );
testURL("gsiftp://dataserver.phys.uwm.edu/~/griphyn_test/ligodemo_output/" , "gsiftp", "dataserver.phys.uwm.edu", "/~/griphyn_test/ligodemo_output/", "gsiftp://dataserver.phys.uwm.edu" );
mLogger.logEventCompletion();
}
@Test
public void testFileURL() {
//protocol -> file , host -> , path -> /tmp/test/k , url-prefix -> file://
mLogger.logEventStart( "test.common.util.PegasusURL", "set", Integer.toString(mTestNumber++) );
testURL( "file:///tmp/test/k" , "file", "", "/tmp/test/k", "file://" );
mLogger.logEventCompletion();
}
@Test
public void testAbsolutePath() {
//protocol -> file , host -> , path -> /tmp/path/to/input/file , url-prefix -> file://
//url = "/tmp/path/to/input/file"
mLogger.logEventStart( "test.common.util.PegasusURL", "set", Integer.toString(mTestNumber++) );
testURL( "/tmp/path/to/input/file" , "file", "", "/tmp/path/to/input/file", "file://" );
mLogger.logEventCompletion();
}
@Test
public void testHttpURLTrailing() {
//url = "http://isis.isi.edu" ;
mLogger.logEventStart( "test.common.util.PegasusURL", "set", Integer.toString(mTestNumber++) );
testURL( "http://isis.isi.edu" , "http", "isis.isi.edu", "", "http://isis.isi.edu" );
mLogger.logEventCompletion();
}
@Test
public void testHttpURLTrailingSlash() {
//url = "http://isis.isi.edu/" ;
mLogger.logEventStart( "test.common.util.PegasusURL", "set", Integer.toString(mTestNumber++) );
testURL( "http://isis.isi.edu/" , "http", "isis.isi.edu", "/", "http://isis.isi.edu" );
mLogger.logEventCompletion();
}
@After
public void tearDown() {
mLogger = null;
mTestSetup = null;
}
private void testURL(String url, String protocol, String host, String path, String urlPrefix ) {
System.out.println( "Testing URL " + url );
PegasusURL pURL = new PegasusURL( url );
assertEquals( url + " unable to parse protocol " , protocol, pURL.getProtocol() );
assertEquals( url + " unable to parse host " , host, pURL.getHost() );
assertEquals( url + " unable to parse path " , path, pURL.getPath() );
assertEquals( url + " unable to parse urlprefix " , urlPrefix, pURL.getURLPrefix() );
}
}