Search in sources :

Example 11 with ConnectedSonarLintEngine

use of org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine in project sonarlint-intellij by SonarSource.

the class SonarLintEngineManager method getConnectedEngine.

public synchronized ConnectedSonarLintEngine getConnectedEngine(SonarLintProjectNotifications notifications, String serverId, String projectKey) throws InvalidBindingException {
    Preconditions.checkNotNull(notifications, "notifications");
    Preconditions.checkNotNull(serverId, "serverId");
    Preconditions.checkNotNull(projectKey, "projectKey");
    if (!configuredStorageIds.contains(serverId)) {
        notifications.notifyServerIdInvalid();
        throw new InvalidBindingException("Invalid server name: " + serverId);
    }
    ConnectedSonarLintEngine engine = getConnectedEngine(serverId);
    checkConnectedEngineStatus(engine, notifications, serverId, projectKey);
    return engine;
}
Also used : InvalidBindingException(org.sonarlint.intellij.exception.InvalidBindingException) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine)

Example 12 with ConnectedSonarLintEngine

use of org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine in project sonarlint-intellij by SonarSource.

the class SonarLintEngineManager method disposeComponent.

@Override
public void disposeComponent() {
    for (ConnectedSonarLintEngine e : engines.values()) {
        e.stop(false);
    }
    engines.clear();
    if (standalone != null) {
        standalone.stop();
        standalone = null;
    }
}
Also used : ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine)

Example 13 with ConnectedSonarLintEngine

use of org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine in project sonarlint-intellij by SonarSource.

the class UpdateChecker method checkForUpdate.

void checkForUpdate() {
    ConnectedSonarLintEngine engine;
    try {
        engine = projectBindingManager.getConnectedEngine();
    } catch (Exception e) {
        // happens if project is not bound, binding is invalid, storages are not updated, ...
        log.log("Couldn't get a connected engine to check for update: " + e.getMessage(), LogOutput.Level.DEBUG);
        return;
    }
    try {
        List<String> changelog = new ArrayList<>();
        ServerConfiguration serverConfiguration = SonarLintUtils.getServerConfiguration(projectBindingManager.getSonarQubeServer());
        log.log("Check for updates from server '" + projectBindingManager.getSonarQubeServer().getName() + "'...", LogOutput.Level.INFO);
        boolean hasGlobalUpdates = checkForGlobalUpdates(changelog, engine, serverConfiguration);
        log.log("Check for updates from server '" + projectBindingManager.getSonarQubeServer().getName() + "' for project '" + projectSettings.getProjectKey() + "'...", LogOutput.Level.INFO);
        checkForProjectUpdates(changelog, engine, serverConfiguration);
        if (!changelog.isEmpty()) {
            changelog.forEach(line -> log.log("  - " + line, LogOutput.Level.INFO));
            notifications.notifyServerHasUpdates(projectSettings.getServerId(), engine, projectBindingManager.getSonarQubeServer(), !hasGlobalUpdates);
        }
    } catch (Exception e) {
        log.log("There was an error while checking for updates: " + e.getMessage(), LogOutput.Level.WARN);
    }
}
Also used : ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) ArrayList(java.util.ArrayList) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine)

Example 14 with ConnectedSonarLintEngine

use of org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine in project sonarlint-intellij by SonarSource.

the class ServerIssueUpdaterTest method testDownloadAllServerIssues.

@Test
public void testDownloadAllServerIssues() throws InvalidBindingException {
    List<VirtualFile> files = new LinkedList<>();
    for (int i = 0; i < 10; i++) {
        VirtualFile file = mock(VirtualFile.class);
        String filename = "MyFile" + i + ".txt";
        when(file.getPath()).thenReturn(FileUtil.toSystemIndependentName(projectBaseDir.resolve(filename).toString()));
        files.add(file);
    }
    ServerIssue serverIssue = mock(ServerIssue.class);
    // mock creation of engine / server
    ConnectedSonarLintEngine engine = mock(ConnectedSonarLintEngine.class);
    when(bindingManager.getConnectedEngine()).thenReturn(engine);
    SonarQubeServer server = mock(SonarQubeServer.class);
    when(server.getHostUrl()).thenReturn("http://dummyserver:9000");
    when(bindingManager.getSonarQubeServer()).thenReturn(server);
    // mock issues fetched
    when(engine.getServerIssues(eq(PROJECT_KEY), anyString())).thenReturn(Collections.singletonList(serverIssue));
    // run
    settings.setBindingEnabled(true);
    updater.initComponent();
    updater.fetchAndMatchServerIssues(files, indicator, false);
    verify(issueManager, timeout(3000).times(10)).matchWithServerIssues(any(VirtualFile.class), argThat(issues -> issues.size() == 1));
    verify(engine).downloadServerIssues(any(ServerConfiguration.class), eq(PROJECT_KEY));
    verify(bindingManager).getConnectedEngine();
    verify(console, never()).error(anyString());
    verify(console, never()).error(anyString(), any(Throwable.class));
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) SonarTest(org.sonarlint.intellij.SonarTest) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Mock(org.mockito.Mock) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) Mockito.verifyZeroInteractions(org.mockito.Mockito.verifyZeroInteractions) MockitoAnnotations(org.mockito.MockitoAnnotations) Mockito.timeout(org.mockito.Mockito.timeout) InvalidBindingException(org.sonarlint.intellij.exception.InvalidBindingException) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) Project(com.intellij.openapi.project.Project) FileUtil(com.intellij.openapi.util.io.FileUtil) LinkedList(java.util.LinkedList) Path(java.nio.file.Path) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) Before(org.junit.Before) IssueManager(org.sonarlint.intellij.issue.IssueManager) SonarLintProjectSettings(org.sonarlint.intellij.config.project.SonarLintProjectSettings) SonarApplication(org.sonarlint.intellij.SonarApplication) IOException(java.io.IOException) Test(org.junit.Test) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) SonarLintConsole(org.sonarlint.intellij.ui.SonarLintConsole) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) Mockito.never(org.mockito.Mockito.never) Rule(org.junit.Rule) Collections(java.util.Collections) TemporaryFolder(org.junit.rules.TemporaryFolder) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Mockito.mock(org.mockito.Mockito.mock) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) LinkedList(java.util.LinkedList) SonarTest(org.sonarlint.intellij.SonarTest) Test(org.junit.Test)

Example 15 with ConnectedSonarLintEngine

use of org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine in project sonarlint-intellij by SonarSource.

the class ServerIssueUpdaterTest method testServerIssueTracking.

@Test
public void testServerIssueTracking() throws InvalidBindingException {
    VirtualFile file = mock(VirtualFile.class);
    ServerIssue serverIssue = mock(ServerIssue.class);
    String filename = "MyFile.txt";
    when(file.getPath()).thenReturn(FileUtil.toSystemIndependentName(projectBaseDir.resolve(filename).toString()));
    // mock creation of engine / server
    ConnectedSonarLintEngine engine = mock(ConnectedSonarLintEngine.class);
    when(bindingManager.getConnectedEngine()).thenReturn(engine);
    SonarQubeServer server = mock(SonarQubeServer.class);
    when(server.getHostUrl()).thenReturn("http://dummyserver:9000");
    when(bindingManager.getSonarQubeServer()).thenReturn(server);
    // mock issues downloaded
    when(engine.downloadServerIssues(any(ServerConfiguration.class), eq(PROJECT_KEY), eq(filename))).thenReturn(Collections.singletonList(serverIssue));
    // run
    settings.setBindingEnabled(true);
    updater.initComponent();
    updater.fetchAndMatchServerIssues(Collections.singletonList(file), indicator, false);
    verify(issueManager, timeout(3000).times(1)).matchWithServerIssues(eq(file), argThat(issues -> issues.size() == 1));
    verify(bindingManager).getConnectedEngine();
    verify(console, never()).error(anyString());
    verify(console, never()).error(anyString(), any(Throwable.class));
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) SonarTest(org.sonarlint.intellij.SonarTest) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Mock(org.mockito.Mock) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) Mockito.verifyZeroInteractions(org.mockito.Mockito.verifyZeroInteractions) MockitoAnnotations(org.mockito.MockitoAnnotations) Mockito.timeout(org.mockito.Mockito.timeout) InvalidBindingException(org.sonarlint.intellij.exception.InvalidBindingException) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) Project(com.intellij.openapi.project.Project) FileUtil(com.intellij.openapi.util.io.FileUtil) LinkedList(java.util.LinkedList) Path(java.nio.file.Path) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) Before(org.junit.Before) IssueManager(org.sonarlint.intellij.issue.IssueManager) SonarLintProjectSettings(org.sonarlint.intellij.config.project.SonarLintProjectSettings) SonarApplication(org.sonarlint.intellij.SonarApplication) IOException(java.io.IOException) Test(org.junit.Test) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) SonarLintConsole(org.sonarlint.intellij.ui.SonarLintConsole) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) Mockito.never(org.mockito.Mockito.never) Rule(org.junit.Rule) Collections(java.util.Collections) TemporaryFolder(org.junit.rules.TemporaryFolder) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Mockito.mock(org.mockito.Mockito.mock) ServerConfiguration(org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration) SonarQubeServer(org.sonarlint.intellij.config.global.SonarQubeServer) ServerIssue(org.sonarsource.sonarlint.core.client.api.connected.ServerIssue) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ConnectedSonarLintEngine(org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine) SonarTest(org.sonarlint.intellij.SonarTest) Test(org.junit.Test)

Aggregations

ConnectedSonarLintEngine (org.sonarsource.sonarlint.core.client.api.connected.ConnectedSonarLintEngine)16 Test (org.junit.Test)7 InvalidBindingException (org.sonarlint.intellij.exception.InvalidBindingException)6 SonarQubeServer (org.sonarlint.intellij.config.global.SonarQubeServer)5 ServerConfiguration (org.sonarsource.sonarlint.core.client.api.connected.ServerConfiguration)5 IOException (java.io.IOException)3 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)2 Project (com.intellij.openapi.project.Project)2 FileUtil (com.intellij.openapi.util.io.FileUtil)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 Path (java.nio.file.Path)2 Collections (java.util.Collections)2 LinkedList (java.util.LinkedList)2 List (java.util.List)2 Before (org.junit.Before)2 Rule (org.junit.Rule)2 TemporaryFolder (org.junit.rules.TemporaryFolder)2 ArgumentMatchers.any (org.mockito.ArgumentMatchers.any)2 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)2 ArgumentMatchers.argThat (org.mockito.ArgumentMatchers.argThat)2