package org.eclipse.buckminster.p2.remote.client.test; import java.io.InputStream; import java.net.URI; import java.net.URL; import java.util.zip.GZIPInputStream; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.buckminster.p2.remote.FacadeAlreadyExistsException; import org.eclipse.buckminster.p2.remote.IRepositoryFacade; import org.eclipse.buckminster.p2.remote.IRepositoryServer; import org.eclipse.buckminster.p2.remote.NoSuchFacadeException; import org.eclipse.buckminster.p2.remote.client.RemoteInputStream; import org.eclipse.buckminster.p2.remote.client.RemoteRepositoryFactory; import org.eclipse.buckminster.runtime.IOUtils; import org.eclipse.core.runtime.Platform; import org.eclipse.equinox.internal.p2.console.ProvisioningHelper; import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery; import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; import org.eclipse.equinox.internal.provisional.p2.query.Collector; import org.eclipse.equinox.internal.provisional.p2.query.Query; import org.osgi.framework.Bundle; public class TestClient extends TestCase { public static final String SERVER_URL = "http://localhost:8080/json-rpc"; public static Test suite() throws Exception { Bundle[] bundles = Platform.getBundles("org.eclipse.equinox.p2.exemplarysetup", null); bundles[0].start(); byte[] a1 = new byte[] { (byte)0x8b }; byte[] a2 = new String(a1, "US-ASCII").getBytes("US-ASCII"); if(a1.length == a2.length) System.out.print("Lenghts are equal"); IRepositoryServer server = RemoteRepositoryFactory.connect(new URI(SERVER_URL)); server.hardReset(); TestSuite suite = new TestSuite("Tests for org.eclipse.buckminster.p2.remote.client"); suite.addTest(new TestClient("testCreateMetadata", server)); suite.addTest(new TestClient("testGetMetadata", server)); suite.addTest(new TestClient("testRegisterMirror", server)); suite.addTest(new TestClient("testRegisterMirror2", server)); suite.addTest(new TestClient("testDeleteMetadata", server)); return suite; } private final IRepositoryServer m_server; public TestClient(String testName, IRepositoryServer server) { super(testName); m_server = server; } public void testCreateMetadata() throws Exception { IRepositoryFacade metatest1; m_server.deleteMetadataRepositoryFacade("metatest-1"); try { metatest1 = m_server.getMetadataRepositoryFacade("metatest-1"); assertTrue("Repository should not be possible to obtain since it does not exist", true); } catch(NoSuchFacadeException e) { } metatest1 = m_server.createMetadataRepositoryFacade("metatest-1"); InputStream input = new GZIPInputStream(new RemoteInputStream(metatest1.getRepositoryData())); IOUtils.copy(input, System.out, null); input.close(); } public void testDeleteMetadata() throws Exception { assertTrue("Expected facade does not exist", m_server.deleteMetadataRepositoryFacade("metatest-1")); } public void testGetMetadata() throws Exception { IRepositoryFacade metatest1; try { metatest1 = m_server.createMetadataRepositoryFacade("metatest-1"); assertTrue("Repository should not be possible to create since it already exists", true); } catch(FacadeAlreadyExistsException e) { } metatest1 = m_server.getMetadataRepositoryFacade("metatest-1"); InputStream input = new GZIPInputStream(new RemoteInputStream(metatest1.getRepositoryData())); IOUtils.copy(input, System.out, null); input.close(); } public void testRegisterMirror() throws Exception { IRepositoryFacade metatest1 = m_server.getMetadataRepositoryFacade("metatest-1"); metatest1.registerMirror(new URI("http://download.eclipse.org/tools/buckminster/updates-3.4/"), null); IMetadataRepository repo = ProvisioningHelper.getMetadataRepository(new URL(SERVER_URL + "#metatest-1")); assertNotNull("Unable to obtain remote repository", repo); Query query = new InstallableUnitQuery("org.eclipse.buckminster.runtime"); Collector collector = new Collector(); repo.query(query, collector, null); assertTrue("Did not find expected bundle", collector.size() > 0); } public void testRegisterMirror2() throws Exception { IRepositoryFacade metatest1 = m_server.getMetadataRepositoryFacade("metatest-1"); metatest1.registerMirror(new URI("http://download.eclipse.org/tools/mylyn/update/ganymede/"), null); IMetadataRepository repo = ProvisioningHelper.getMetadataRepository(new URL(SERVER_URL + "#metatest-1")); assertNotNull("Unable to obtain remote repository", repo); Query query = new InstallableUnitQuery("org.eclipse.mylyn"); Collector collector = new Collector(); repo.query(query, collector, null); assertTrue("Did not find expected bundle", collector.size() > 0); } }