From: Simon Brandhof Date: Fri, 29 Jul 2016 12:54:27 +0000 (+0200) Subject: Fix property sonar.core.startTime X-Git-Tag: 6.1-RC1~477 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f6f754fc4a291b18ea4c9d183b7a2bfecbe1e2e3;p=sonarqube.git Fix property sonar.core.startTime --- diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java index dd5d7c14038..151742f4c37 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java @@ -21,6 +21,7 @@ package org.sonar.ce.container; import java.io.File; import java.io.IOException; +import java.util.Date; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; import org.junit.Rule; @@ -29,6 +30,7 @@ import org.junit.rules.TemporaryFolder; import org.picocontainer.MutablePicoContainer; import org.sonar.api.CoreProperties; import org.sonar.api.database.DatabaseProperties; +import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; import org.sonar.db.DbTester; import org.sonar.db.property.PropertyDto; @@ -75,7 +77,7 @@ public class ComputeEngineContainerImplTest { properties.setProperty(DatabaseProperties.PROP_USER, "sonar"); properties.setProperty(DatabaseProperties.PROP_PASSWORD, "sonar"); insertProperty(CoreProperties.SERVER_ID, "a_startup_id"); - insertProperty("sonar.core.startedAt", "123456789"); + insertProperty(CoreProperties.SERVER_STARTTIME, DateUtils.formatDateTime(new Date())); underTest .start(new Props(properties)); diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataPersister.java b/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataPersister.java index 7c3017dab6b..dfb371cd14f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataPersister.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataPersister.java @@ -19,9 +19,11 @@ */ package org.sonar.server.platform; +import java.util.Date; import org.sonar.api.CoreProperties; import org.sonar.api.Startable; import org.sonar.api.server.ServerSide; +import org.sonar.api.utils.DateUtils; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.property.PropertiesDao; @@ -47,9 +49,10 @@ public class StartupMetadataPersister implements Startable { @Override public void start() { try (DbSession dbSession = dbClient.openSession(false)) { + String startedAt = DateUtils.formatDateTime(new Date(metadata.getStartedAt())); PropertiesDao dao = dbClient.propertiesDao(); dao.insertProperty(dbSession, new PropertyDto().setKey(CoreProperties.SERVER_ID).setValue(metadata.getStartupId())); - dao.insertProperty(dbSession, new PropertyDto().setKey(StartupMetadataProvider.PROPERTY_STARTED_AT).setValue(String.valueOf(metadata.getStartedAt()))); + dao.insertProperty(dbSession, new PropertyDto().setKey(CoreProperties.SERVER_STARTTIME).setValue(startedAt)); dbSession.commit(); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataProvider.java b/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataProvider.java index f1ccde603b0..3471353721f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataProvider.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataProvider.java @@ -25,6 +25,7 @@ import org.sonar.api.SonarQubeSide; import org.sonar.api.SonarRuntime; import org.sonar.api.ce.ComputeEngineSide; import org.sonar.api.server.ServerSide; +import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; import org.sonar.core.util.UuidFactory; import org.sonar.db.DbClient; @@ -39,8 +40,6 @@ import static org.apache.commons.lang.StringUtils.isBlank; @ServerSide public class StartupMetadataProvider extends ProviderAdapter { - public static final String PROPERTY_STARTED_AT = "sonar.core.startedAt"; - private StartupMetadata cache = null; public StartupMetadata provide(UuidFactory uuidFactory, System2 system, SonarRuntime runtime, Cluster cluster, DbClient dbClient) { @@ -70,8 +69,8 @@ public class StartupMetadataProvider extends ProviderAdapter { private static StartupMetadata load(DbClient dbClient) { try (DbSession dbSession = dbClient.openSession(false)) { String startupId = selectProperty(dbClient, dbSession, CoreProperties.SERVER_ID); - String startedAt = selectProperty(dbClient, dbSession, PROPERTY_STARTED_AT); - return new StartupMetadata(startupId, Long.parseLong(startedAt)); + String startedAt = selectProperty(dbClient, dbSession, CoreProperties.SERVER_STARTTIME); + return new StartupMetadata(startupId, DateUtils.parseDateTime(startedAt).getTime()); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataPersisterTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataPersisterTest.java index 4fba9c60f5e..364d0126b17 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataPersisterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataPersisterTest.java @@ -23,6 +23,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.api.CoreProperties; +import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; import org.sonar.db.DbTester; import org.sonar.db.property.PropertyDto; @@ -45,7 +46,7 @@ public class StartupMetadataPersisterTest { underTest.start(); assertPersistedProperty(CoreProperties.SERVER_ID, metadata.getStartupId()); - assertPersistedProperty("sonar.core.startedAt", String.valueOf(metadata.getStartedAt())); + assertPersistedProperty(CoreProperties.SERVER_STARTTIME, DateUtils.formatDateTime(metadata.getStartedAt())); underTest.stop(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataProviderTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataProviderTest.java index 4e5e7a6708a..a0e5b13e044 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataProviderTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataProviderTest.java @@ -26,6 +26,7 @@ import org.sonar.api.CoreProperties; import org.sonar.api.SonarQubeSide; import org.sonar.api.SonarRuntime; import org.sonar.api.internal.SonarRuntimeImpl; +import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; import org.sonar.api.utils.Version; import org.sonar.core.util.UuidFactory; @@ -41,7 +42,7 @@ import static org.mockito.Mockito.when; public class StartupMetadataProviderTest { - private static final long A_DATE = 123_456_789L; + private static final long A_DATE = 1_500_000_000_000L; private static final String AN_ID = "generated_id"; @Rule @@ -67,7 +68,7 @@ public class StartupMetadataProviderTest { assertThat(metadata.getStartupId()).isEqualTo(AN_ID); assertNotPersistedProperty(CoreProperties.SERVER_ID); - assertNotPersistedProperty("sonar.core.startedAt"); + assertNotPersistedProperty(CoreProperties.SERVER_STARTTIME); // keep a cache StartupMetadata secondMetadata = underTest.provide(uuidFactory, system, runtime, cluster, dbTester.getDbClient()); @@ -116,7 +117,7 @@ public class StartupMetadataProviderTest { // still in database assertPersistedProperty(CoreProperties.SERVER_ID, AN_ID); - assertPersistedProperty("sonar.core.startedAt", String.valueOf(A_DATE)); + assertPersistedProperty(CoreProperties.SERVER_STARTTIME, DateUtils.formatDateTime(A_DATE)); // keep a cache StartupMetadata secondMetadata = underTest.provide(uuidFactory, system, runtime, cluster, dbTester.getDbClient()); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/platform/DefaultServer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/platform/DefaultServer.java index 1862bfbfb23..594c7b5ba31 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/platform/DefaultServer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/platform/DefaultServer.java @@ -20,16 +20,14 @@ package org.sonar.scanner.platform; import java.io.File; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.Date; import javax.annotation.CheckForNull; import org.apache.commons.lang.StringUtils; -import org.slf4j.LoggerFactory; import org.sonar.api.CoreProperties; import org.sonar.api.batch.ScannerSide; import org.sonar.api.config.Settings; import org.sonar.api.platform.Server; +import org.sonar.api.utils.DateUtils; import org.sonar.scanner.bootstrap.BatchWsClient; import static org.apache.commons.lang.StringUtils.trimToEmpty; @@ -58,15 +56,7 @@ public class DefaultServer extends Server { @Override public Date getStartedAt() { String dateString = settings.getString(CoreProperties.SERVER_STARTTIME); - if (dateString != null) { - try { - return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(dateString); - - } catch (ParseException e) { - LoggerFactory.getLogger(getClass()).error("The property " + CoreProperties.SERVER_STARTTIME + " is badly formatted.", e); - } - } - return null; + return DateUtils.parseDateTime(dateString); } @Override diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java index 2140aab032b..70fe5399662 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java @@ -69,12 +69,12 @@ public class DefaultServerTest { assertThat(metadata.getPublicRootUrl()).isEqualTo("http://foo.com"); } - @Test - public void invalidDate() { + @Test(expected = RuntimeException.class) + public void invalid_startup_date_throws_exception() { Settings settings = new Settings(); settings.setProperty(CoreProperties.SERVER_STARTTIME, "invalid"); BatchWsClient client = mock(BatchWsClient.class); DefaultServer metadata = new DefaultServer(settings, client); - assertThat(metadata.getStartedAt()).isNull(); + metadata.getStartedAt(); } }