blob: 5eae48beabe0c251da662bc6eeb80639a85812dd [file] [log] [blame]
package org.eclipse.epp.internal.logging.aeri.ide.server.mars;
import static org.eclipse.epp.logging.aeri.core.SendMode.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.*;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import org.eclipse.epp.internal.logging.aeri.ide.IIdeFactory;
import org.eclipse.epp.internal.logging.aeri.ide.IServerDescriptor;
import org.eclipse.epp.logging.aeri.core.IModelFactory;
import org.eclipse.epp.logging.aeri.core.ISystemSettings;
import org.eclipse.epp.logging.aeri.core.SendMode;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class ServerConnectionDatabaseDownloadTest {
private static final boolean ENABLED = true;
private static final boolean NOT_ENABLED = false;
private static final boolean CONFIGURED = true;
private static final boolean NOT_CONFIGURED = false;
private static final boolean ENABLED_AFTER_START = true;
private static final boolean NOT_ENABLED_AFTER_START = false;
private static final boolean CONFIGURED_AFTER_START = true;
private static final boolean NOT_CONFIGURED_AFTER_START = false;
@Parameters(name = "{0}, {1}, {2}, {3}, {4}, {5}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
//
{ BACKGROUND, ENABLED, CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 3 },
{ BACKGROUND, ENABLED, CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 2 },
{ BACKGROUND, ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 1 },
{ BACKGROUND, ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 1 },
{ BACKGROUND, ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 1 },
{ BACKGROUND, ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, NOT_ENABLED, CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 2 },
{ BACKGROUND, NOT_ENABLED, CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 1 },
{ BACKGROUND, NOT_ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, NOT_ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, NOT_ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 1 },
{ BACKGROUND, NOT_ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, NOT_ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ BACKGROUND, NOT_ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NEVER, NOT_ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NOTIFY, ENABLED, CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 3 },
{ NOTIFY, ENABLED, CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 2 },
{ NOTIFY, ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 1 },
{ NOTIFY, ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 1 },
{ NOTIFY, ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 1 },
{ NOTIFY, ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NOTIFY, ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NOTIFY, ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NOTIFY, NOT_ENABLED, CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 2 },
{ NOTIFY, NOT_ENABLED, CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 1 },
{ NOTIFY, NOT_ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NOTIFY, NOT_ENABLED, CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NOTIFY, NOT_ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, CONFIGURED_AFTER_START, 1 },
{ NOTIFY, NOT_ENABLED, NOT_CONFIGURED, ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
{ NOTIFY, NOT_ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, CONFIGURED_AFTER_START, 0 },
{ NOTIFY, NOT_ENABLED, NOT_CONFIGURED, NOT_ENABLED_AFTER_START, NOT_CONFIGURED_AFTER_START, 0 },
//
});
}
@Parameter(0)
public SendMode sendMode;
@Parameter(1)
public boolean isInitialEnabled;
@Parameter(2)
public boolean isInitialConfigured;
@Parameter(3)
public boolean isEnabledAfterStartup;
@Parameter(4)
public boolean isConfiguredAfterStartup;
@Parameter(5)
public int expectedSyncCalls;
private IModelFactory mFac = IModelFactory.eINSTANCE;
private IIdeFactory iFac = IIdeFactory.eINSTANCE;
private ServerConnection sut;
private IO io;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
private IServerDescriptor descriptor;
private ISystemSettings settings;
private IProblemsHistory serverProblemsHistory;
private boolean syncCalled = false;
@Before
public void setup() throws IOException {
descriptor = createServerDescriptor();
settings = createSystemSettings();
File configurationArea = temporaryFolder.newFolder();
sut = spy(new ServerConnection(descriptor, settings, configurationArea));
ServerConfiguration serverConfiguration = new ServerConfiguration();
serverConfiguration.setProblemsUrl("http://example.org/problems.zip");
io = mock(IO.class);
when(io.getConfiguration()).thenReturn(serverConfiguration);
when(sut.createIO(any())).thenReturn(io);
serverProblemsHistory = mock(IProblemsHistory.class);
when(sut.createServerProblemsHistory()).thenReturn(serverProblemsHistory);
}
private IServerDescriptor createServerDescriptor() {
IServerDescriptor descriptor = iFac.createServerDescriptor();
descriptor.setEnabled(false);
descriptor.setConfigured(false);
return descriptor;
}
private ISystemSettings createSystemSettings() {
ISystemSettings settings = mFac.createSystemSettings();
settings.setConfigured(true);
return settings;
}
@After
public void tearDown() throws Exception {
sut.shutDown();
}
@Test
public void test() throws Exception {
settings.setSendMode(sendMode);
descriptor.setEnabled(isInitialEnabled);
descriptor.setConfigured(isInitialConfigured);
sut.startUp();
descriptor.setEnabled(isEnabledAfterStartup);
descriptor.setConfigured(isConfiguredAfterStartup);
verify(serverProblemsHistory, times(expectedSyncCalls)).sync(any(), any());
}
}