@Override public String getVersion() { return server.getVersion(); }
public DefaultHttpDownloader(Server server, Configuration config, @Nullable Integer connectTimeout, @Nullable Integer readTimeout) { this.readTimeout = readTimeout; this.connectTimeout = connectTimeout; downloader = new BaseHttpDownloader(new AuthenticatorFacade(), config, server.getVersion()); }
private void writeVersion(JsonWriter json) { String displayVersion = VersionFormatter.format(server.getVersion()); json.prop("version", displayVersion); }
@Override public void handle(Request request, Response response) throws Exception { System.StatusResponse.Builder protobuf = System.StatusResponse.newBuilder(); ofNullable(server.getId()).ifPresent(protobuf::setId); ofNullable(server.getVersion()).ifPresent(protobuf::setVersion); protobuf.setStatus(computeStatus()); WsUtils.writeProtobuf(protobuf.build(), request, response); }
@Override public void handle(Request request, Response response) throws Exception { response.stream().setMediaType(MediaTypes.TXT); IOUtils.write(server.getVersion(), response.stream().output(), UTF_8); } }
@Test public void functional_version_when_4_digits() { init(); when(server.getVersion()).thenReturn("6.3.1.1234"); String result = call(); assertThat(result).contains("6.3.1 (build 1234)"); }
@Test public void functional_version_when_third_digit_is_0() { init(); when(server.getVersion()).thenReturn("6.3.0.1234"); String result = call(); assertThat(result).contains("6.3 (build 1234)"); }
@VisibleForTesting void writeJson(Writer writer) { try (JsonWriter json = JsonWriter.of(writer)) { json.beginObject(); json.prop("version", server.getVersion()); Set<RuleKey> ruleKeys = new LinkedHashSet<>(); Set<String> userLogins = new LinkedHashSet<>(); writeJsonIssues(json, ruleKeys, userLogins); writeJsonComponents(json); writeJsonRules(json, ruleKeys); writeUsers(json, userLogins); json.endObject(); } }
@VisibleForTesting void logSuccess(@Nullable String taskId) { if (taskId == null) { LOG.info("ANALYSIS SUCCESSFUL"); } else { Map<String, String> metadata = new LinkedHashMap<>(); String effectiveKey = moduleHierarchy.root().getKeyWithBranch(); properties.organizationKey().ifPresent(org -> metadata.put("organization", org)); metadata.put("projectKey", effectiveKey); metadata.put("serverUrl", server.getPublicRootUrl()); metadata.put("serverVersion", server.getVersion()); properties.branch().ifPresent(branch -> metadata.put("branch", branch)); URL dashboardUrl = buildDashboardUrl(server.getPublicRootUrl(), effectiveKey); metadata.put("dashboardUrl", dashboardUrl.toExternalForm()); URL taskUrl = HttpUrl.parse(server.getPublicRootUrl()).newBuilder() .addPathSegment("api").addPathSegment("ce").addPathSegment("task") .addQueryParameter(ID, taskId) .build() .url(); metadata.put("ceTaskId", taskId); metadata.put("ceTaskUrl", taskUrl.toExternalForm()); LOG.info("ANALYSIS SUCCESSFUL, you can browse {}", dashboardUrl); LOG.info("Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report"); LOG.info("More about the report processing at {}", taskUrl); dumpMetadata(metadata); } }
@Test public void userAgent_includes_only_version_when_there_is_no_SERVER_ID_and_server_is_provided() throws URISyntaxException, IOException { Server server = mock(Server.class); when(server.getVersion()).thenReturn("2.2"); InputStream stream = new DefaultHttpDownloader(server, new MapSettings().asConfig()).openStream(new URI(baseUrl)); Properties props = new Properties(); props.load(stream); stream.close(); assertThat(props.getProperty("agent")).isEqualTo("SonarQube 2.2 #"); }
@Test public void return_server_version() { when(server.getVersion()).thenReturn("6.6"); ProtobufSystemInfo.Section section = underTest.toProtobuf(); assertThatAttributeIs(section, "Version", "6.6"); }
@Test public void userAgent_includes_version_and_SERVER_ID_when_server_is_provided() throws URISyntaxException, IOException { Server server = mock(Server.class); when(server.getVersion()).thenReturn("2.2"); MapSettings settings = new MapSettings(); settings.setProperty(CoreProperties.SERVER_ID, "blablabla"); InputStream stream = new DefaultHttpDownloader(server, settings.asConfig()).openStream(new URI(baseUrl)); Properties props = new Properties(); props.load(stream); stream.close(); assertThat(props.getProperty("agent")).isEqualTo("SonarQube 2.2 # blablabla"); }
@Test public void returns_version_as_plain_text() throws Exception { when(server.getVersion()).thenReturn("6.4-SNAPSHOT"); WsTester.Result result = tester.newGetRequest("api/server", "version").execute(); assertThat(result.outputAsString()).isEqualTo("6.4-SNAPSHOT"); }
@Override public ProtobufSystemInfo.Section toProtobuf() { ProtobufSystemInfo.Section.Builder protobuf = ProtobufSystemInfo.Section.newBuilder(); protobuf.setName("System"); setAttribute(protobuf, "Version", server.getVersion()); setAttribute(protobuf, "Official Distribution", officialDistribution.check()); setAttribute(protobuf, "Home Dir", config.get(PATH_HOME.getKey()).orElse(null)); setAttribute(protobuf, "Data Dir", config.get(PATH_DATA.getKey()).orElse(null)); setAttribute(protobuf, "Temp Dir", config.get(PATH_TEMP.getKey()).orElse(null)); setAttribute(protobuf, "Processors", Runtime.getRuntime().availableProcessors()); return protobuf.build(); }
@Before public void setUp() throws IOException { root = new DefaultInputModule(ProjectDefinition.create().setKey("org.sonarsource.sonarqube:sonarqube").setBaseDir(temp.newFolder()).setWorkDir(temp.getRoot())); when(moduleHierarchy.root()).thenReturn(root); when(server.getPublicRootUrl()).thenReturn("https://localhost"); when(server.getVersion()).thenReturn("6.4"); when(properties.metadataFilePath()).thenReturn(temp.newFolder().toPath() .resolve("folder") .resolve("report-task.txt")); }
@Test public void return_sonarqube_version() { init(); when(server.getVersion()).thenReturn("6.2"); assertJson(call()).isSimilarTo("{" + " \"version\": \"6.2\"" + "}"); }
private void init(org.sonar.api.web.page.Page[] pages, ResourceTypeTree[] resourceTypeTrees) { when(dbClient.getDatabase().getDialect()).thenReturn(new H2()); when(server.getVersion()).thenReturn("6.42"); PluginRepository pluginRepository = mock(PluginRepository.class); when(pluginRepository.hasPlugin(any())).thenReturn(true); when(pluginRepository.getPluginInfo(any())).thenReturn(new PluginInfo("unused").setVersion(Version.create("1.0"))); CoreExtensionRepository coreExtensionRepository = mock(CoreExtensionRepository.class); when(coreExtensionRepository.isInstalled(any())).thenReturn(false); PageRepository pageRepository = new PageRepository(pluginRepository, coreExtensionRepository, new PageDefinition[] {context -> { for (Page page : pages) { context.addPage(page); } }}); pageRepository.start(); GlobalAction wsAction = new GlobalAction(pageRepository, settings.asConfig(), new ResourceTypes(resourceTypeTrees), server, webServer, dbClient, organizationFlags, defaultOrganizationProvider, branchFeature, userSession, editionProvider); ws = new WsActionTester(wsAction); wsAction.start(); }
@Before public void before() throws Exception { moduleHierarchy = mock(InputModuleHierarchy.class); File projectBaseDir = temp.newFolder(); fs = new DefaultFileSystem(projectBaseDir.toPath()); SIMPLE_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT+02:00")); when(server.getVersion()).thenReturn("3.6"); ProjectDefinition def = ProjectDefinition.create().setBaseDir(projectBaseDir).setWorkDir(temp.newFolder()).setKey("struts"); DefaultInputProject project = new DefaultInputProject(def, 1); InputComponentStore inputComponentStore = new InputComponentStore(mock(BranchConfiguration.class)); DefaultInputFile inputFile = new TestInputFileBuilder("struts", "src/main/java/org/apache/struts/Action.java") .setModuleBaseDir(projectBaseDir.toPath()).build(); inputFile.setStatus(InputFile.Status.CHANGED); inputFile.setPublished(true); inputComponentStore.put("struts", inputFile); RulesBuilder builder = new RulesBuilder(); builder.add(RuleKey.of("squid", "AvoidCycles")).setName("Avoid Cycles"); rules = builder.build(); jsonReport = new JSONReport(settings.asConfig(), fs, server, rules, issueCache, project, inputComponentStore); }
public TelemetryData load() { TelemetryData.Builder data = TelemetryData.builder(); data.setServerId(server.getId()); data.setVersion(server.getVersion()); data.setEdition(editionProvider.get()); ofNullable(licenseReader) .flatMap(reader -> licenseReader.read()) .ifPresent(license -> data.setLicenseType(license.getType())); Function<PluginInfo, String> getVersion = plugin -> plugin.getVersion() == null ? "undefined" : plugin.getVersion().getName(); Map<String, String> plugins = pluginRepository.getPluginInfos().stream().collect(MoreCollectors.uniqueIndex(PluginInfo::getKey, getVersion)); data.setPlugins(plugins); long userCount = userIndex.search(UserQuery.builder().build(), new SearchOptions().setLimit(1)).getTotal(); data.setUserCount(userCount); ProjectMeasuresStatistics projectMeasuresStatistics = projectMeasuresIndex.searchTelemetryStatistics(); data.setProjectMeasuresStatistics(projectMeasuresStatistics); try (DbSession dbSession = dbClient.openSession(false)) { data.setDatabase(loadDatabaseMetadata(dbSession)); data.setUsingBranches(dbClient.branchDao().hasNonMainBranches(dbSession)); SumNclocDbQuery query = SumNclocDbQuery.builder() .setOnlyPrivateProjects(false) .setOrganizationUuid(defaultOrganizationProvider.get().getUuid()) .build(); data.setNcloc(dbClient.liveMeasureDao().sumNclocOfBiggestLongLivingBranch(dbSession, query)); } return data.build(); }
@Test public void test_example_response() { settings.setProperty("sonar.lf.logoUrl", "http://example.com/my-custom-logo.png"); settings.setProperty("sonar.lf.logoWidthPx", 135); settings.setProperty("sonar.lf.gravatarServerUrl", "http://some-server.tld/logo.png"); settings.setProperty("sonar.lf.enableGravatar", true); settings.setProperty("sonar.updatecenter.activate", false); settings.setProperty("sonar.technicalDebt.ratingGrid", "0.05,0.1,0.2,0.5"); init(createPages(), new ResourceTypeTree[] { ResourceTypeTree.builder() .addType(ResourceType.builder("POL").build()) .addType(ResourceType.builder("LOP").build()) .addRelations("POL", "LOP") .build(), ResourceTypeTree.builder() .addType(ResourceType.builder("PAL").build()) .addType(ResourceType.builder("LAP").build()) .addRelations("PAL", "LAP") .build() }); when(server.getVersion()).thenReturn("6.2"); when(dbClient.getDatabase().getDialect()).thenReturn(new MySql()); when(webServer.isStandalone()).thenReturn(true); when(editionProvider.get()).thenReturn(Optional.of(EditionProvider.Edition.COMMUNITY)); String result = call(); assertJson(result).isSimilarTo(ws.getDef().responseExampleAsString()); }