aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core/src
diff options
context:
space:
mode:
authorFabrice Bellingard <bellingard@gmail.com>2012-05-18 11:46:45 +0200
committerFabrice Bellingard <bellingard@gmail.com>2012-05-18 11:47:50 +0200
commitf17956df52bef73f50547fe297124f36a84c7980 (patch)
treecc33e81f7678667e65a161ddba2ad4f0eb8cbfa2 /sonar-core/src
parentc6db467f14c0b1b63fd40e5c48b5b3b5a8fb50c0 (diff)
downloadsonarqube-f17956df52bef73f50547fe297124f36a84c7980.tar.gz
sonarqube-f17956df52bef73f50547fe297124f36a84c7980.zip
SONAR-3126 Add check for same server ID when launching a batch
=> Stop the Sonar Analysis when the Sonar batch and the Sonar server are not using the same DB
Diffstat (limited to 'sonar-core/src')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java14
-rw-r--r--sonar-core/src/test/java/org/sonar/core/persistence/DatabaseVersionTest.java9
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/persistence/DatabaseVersionTest/getSonarCoreId.xml3
3 files changed, 26 insertions, 0 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
index 43476f3f6cf..fc6290e80a4 100644
--- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
+++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
@@ -22,7 +22,10 @@ package org.sonar.core.persistence;
import com.google.common.annotations.VisibleForTesting;
import org.apache.ibatis.session.SqlSession;
import org.sonar.api.BatchComponent;
+import org.sonar.api.CoreProperties;
import org.sonar.api.ServerComponent;
+import org.sonar.core.properties.PropertiesMapper;
+import org.sonar.core.properties.PropertyDto;
import java.util.Collections;
import java.util.List;
@@ -63,6 +66,17 @@ public class DatabaseVersion implements BatchComponent, ServerComponent {
}
}
+ public String getSonarCoreId() {
+ SqlSession session = mybatis.openSession();
+ try {
+ PropertyDto serverIdProperty = session.getMapper(PropertiesMapper.class).selectByKey(new PropertyDto().setKey(CoreProperties.SERVER_ID));
+ // this property can't be NULL
+ return serverIdProperty.getValue();
+ } finally {
+ MyBatis.closeQuietly(session);
+ }
+ }
+
public Status getStatus() {
return getStatus(getVersion(), LAST_VERSION);
}
diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseVersionTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseVersionTest.java
index 9dbee6dbe21..1ec1e6b84aa 100644
--- a/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseVersionTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseVersionTest.java
@@ -46,6 +46,15 @@ public class DatabaseVersionTest extends DaoTestCase {
}
@Test
+ public void getSonarCoreId() {
+ setupData("getSonarCoreId");
+
+ String sonarCoreId = new DatabaseVersion(getMyBatis()).getSonarCoreId();
+
+ assertThat(sonarCoreId, is("123456"));
+ }
+
+ @Test
public void getStatus() {
assertThat(DatabaseVersion.getStatus(null, 150), is(DatabaseVersion.Status.FRESH_INSTALL));
assertThat(DatabaseVersion.getStatus(123, 150), is(DatabaseVersion.Status.REQUIRES_UPGRADE));
diff --git a/sonar-core/src/test/resources/org/sonar/core/persistence/DatabaseVersionTest/getSonarCoreId.xml b/sonar-core/src/test/resources/org/sonar/core/persistence/DatabaseVersionTest/getSonarCoreId.xml
new file mode 100644
index 00000000000..44b1e8eb5be
--- /dev/null
+++ b/sonar-core/src/test/resources/org/sonar/core/persistence/DatabaseVersionTest/getSonarCoreId.xml
@@ -0,0 +1,3 @@
+<dataset>
+ <properties id="1" prop_key="sonar.core.id" resource_id="[null]" text_value="123456" user_id="[null]"/>
+</dataset>