| 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()); |
| } |
| } |