/*******************************************************************************
* Copyright (c) 2010 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.usage.test;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.jboss.tools.usage.googleanalytics.IJBossToolsEclipseEnvironment;
import org.jboss.tools.usage.googleanalytics.eclipse.IEclipseUserAgent;
import org.jboss.tools.usage.internal.preferences.GlobalUsageSettings;
import org.jboss.tools.usage.internal.preferences.UsageReportPreferences;
import org.jboss.tools.usage.internal.reporting.UsageReport;
import org.jboss.tools.usage.test.fakes.EclipseUserAgentFake;
import org.jboss.tools.usage.test.fakes.ReportingEclipseEnvironmentFake;
import org.junit.Test;
public class UsageReportIntegrationTest {
private CountDownLatch latch;
private final class UsageReportFake extends UsageReport {
private boolean enabled;
public UsageReportFake(boolean enabled, IEclipseUserAgent userAgent) {
this(enabled, new ReportingEclipseEnvironmentFake(userAgent));
}
public UsageReportFake(boolean enabled, IJBossToolsEclipseEnvironment eclipseEnvironment) {
super(new JBossToolsTestsFocusPoint("UsageReportIntegrationTest"),
eclipseEnvironment,
new GlobalUsageSettings(JBossToolsUsageTestActivator.getDefault()));
latch = new CountDownLatch(1);
this.enabled = enabled;
}
@Override
protected void doReport() {
try {
super.doReport();
} finally {
latch.countDown();
}
}
@Override
protected Boolean askUserForEnablement() {
return enabled;
}
@Override
protected boolean isAskUser() {
// has to be true, askUserForEnablement is not queried otherwise
return true;
}
@Override
protected boolean isReportingGloballyEnabled() {
// has to be true, askUserForEnablement is not queried otherwise
return true;
}
}
@Test
public void shouldReportToTestAccount() throws InterruptedException {
UsageReportPreferences.setEnabled(true);
EclipseUserAgentFake userAgent = new EclipseUserAgentFake(
EclipseUserAgentFake.LOCALE_US,
EclipseUserAgentFake.OS_LINUX,
EclipseUserAgentFake.VERSION_LINUX_FEDORA13,
EclipseUserAgentFake.PROP_SUN_ARCH_32);
new UsageReportFake(true, userAgent).report();
latch.await(300l, TimeUnit.SECONDS);
}
}