/******************************************************************************* * Copyright (c) 2009, 2013 Tasktop Technologies 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: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.discovery.tests.core; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil; import org.eclipse.mylyn.internal.discovery.core.DiscoveryCore; import org.eclipse.mylyn.internal.discovery.core.model.ConnectorDiscovery; import org.eclipse.mylyn.internal.discovery.core.model.DiscoveryConnector; import org.eclipse.mylyn.internal.discovery.core.model.RemoteBundleDiscoveryStrategy; import junit.framework.TestCase; /** * A test that uses the real discovery directory and verifies that it works, and that all referenced update sites appear * to be available. * * @author David Green */ public class ConnectorDiscoveryRemoteTest extends TestCase { private ConnectorDiscovery connectorDiscovery; @SuppressWarnings("restriction") @Override protected void setUp() throws Exception { if (CommonTestUtil.fixProxyConfiguration()) { CommonTestUtil.dumpSystemInfo(System.err); } connectorDiscovery = new ConnectorDiscovery(); connectorDiscovery.setVerifyUpdateSiteAvailability(false); connectorDiscovery.getDiscoveryStrategies().clear(); RemoteBundleDiscoveryStrategy remoteStrategy = new RemoteBundleDiscoveryStrategy(); remoteStrategy.setDirectoryUrl(DiscoveryCore.getDiscoveryUrl()); connectorDiscovery.getDiscoveryStrategies().add(remoteStrategy); } public void testRemoteDirectory() throws CoreException { connectorDiscovery.performDiscovery(new NullProgressMonitor()); assertFalse(connectorDiscovery.getCategories().isEmpty()); assertFalse(connectorDiscovery.getConnectors().isEmpty()); } public void testVerifyAvailability() throws Exception { connectorDiscovery.performDiscovery(new NullProgressMonitor()); for (DiscoveryConnector connector : connectorDiscovery.getConnectors()) { assertNull(connector.getAvailable()); } connectorDiscovery.verifySiteAvailability(new NullProgressMonitor()); assertFalse(connectorDiscovery.getConnectors().isEmpty()); int unavailableCount = 0; for (DiscoveryConnector connector : connectorDiscovery.getConnectors()) { if (connector.getAvailable() == null) { // connectors that can't be verified need to have a valid install message set assertNotNull("Failed to verify availability for " + connector.getId(), connector.getAttributes().get(DiscoveryConnector.ATTRIBUTE_INSTALL_MESSAGE)); } else if (!connector.getAvailable()) { ++unavailableCount; } } if (unavailableCount > 0) { fail(String.format("%s unavailable: %s", unavailableCount, computeUnavailableConnetorDescriptorNames())); } } private String computeUnavailableConnetorDescriptorNames() { String message = ""; for (DiscoveryConnector connector : connectorDiscovery.getConnectors()) { if (connector.getAvailable() != null && !connector.getAvailable()) { if (message.length() > 0) { message += ", "; } message += connector.getName(); } } return message; } }