aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-migration
diff options
context:
space:
mode:
authorGuillaume Jambet <guillaume.jambet@sonarsource.com>2018-02-27 12:05:54 +0100
committerGuillaume Jambet <guillaume.jambet@gmail.com>2018-03-01 15:21:05 +0100
commita06b72df4145098826c085f23999bbf911d20260 (patch)
tree22c786ccdc5e8e9227e6ad735ae111c4efbd2af7 /server/sonar-db-migration
parentfe6b80b7f3f7d8903ec98cbc15684dc31f25c795 (diff)
downloadsonarqube-a06b72df4145098826c085f23999bbf911d20260.tar.gz
sonarqube-a06b72df4145098826c085f23999bbf911d20260.zip
SONAR-10345 Ensure that no orphaned deliveries remains when deleting webhooks.
Diffstat (limited to 'server/sonar-db-migration')
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTable.java14
-rw-r--r--server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest.java42
2 files changed, 53 insertions, 3 deletions
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTable.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTable.java
index ba6dd64e46b..0aed0b02313 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTable.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTable.java
@@ -22,8 +22,10 @@ package org.sonar.server.platform.db.migration.version.v71;
import java.sql.SQLException;
import org.sonar.db.Database;
import org.sonar.server.platform.db.migration.sql.AddColumnsBuilder;
+import org.sonar.server.platform.db.migration.sql.AlterColumnsBuilder;
import org.sonar.server.platform.db.migration.step.DdlChange;
+import static org.sonar.server.platform.db.migration.def.BigIntegerColumnDef.newBigIntegerColumnDefBuilder;
import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder;
public class AddWebhookKeyToWebhookDeliveriesTable extends DdlChange {
@@ -34,13 +36,23 @@ public class AddWebhookKeyToWebhookDeliveriesTable extends DdlChange {
@Override
public void execute(Context context) throws SQLException {
+
+ context.execute("delete from webhook_deliveries");
+
context.execute(new AddColumnsBuilder(getDialect(), "webhook_deliveries")
.addColumn(newVarcharColumnDefBuilder()
.setColumnName("webhook_uuid")
- .setIsNullable(true)
+ .setIsNullable(false)
.setLimit(40)
.build())
.build());
+
+ context.execute(new AlterColumnsBuilder(getDialect(), "webhook_deliveries")
+ .updateColumn(newBigIntegerColumnDefBuilder()
+ .setColumnName("duration_ms")
+ .setIsNullable(false)
+ .build())
+ .build());
}
}
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest.java
index 937a09a6066..cc7df9f0088 100644
--- a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest.java
+++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest.java
@@ -25,7 +25,13 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.db.CoreDbTester;
+import static java.lang.String.valueOf;
+import static java.sql.Types.BIGINT;
import static java.sql.Types.VARCHAR;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
+import static org.apache.commons.lang.RandomStringUtils.randomNumeric;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.CoreDbTester.createForSchema;
public class AddWebhookKeyToWebhookDeliveriesTableTest {
@@ -38,10 +44,28 @@ public class AddWebhookKeyToWebhookDeliveriesTableTest {
private AddWebhookKeyToWebhookDeliveriesTable underTest = new AddWebhookKeyToWebhookDeliveriesTable(dbTester.database());
@Test
- public void column_is_added_to_table() throws SQLException {
+ public void table_has_been_truncated() throws SQLException {
+
+ insertDelivery();
+
+ underTest.execute();
+
+ int count = dbTester.countRowsOfTable("webhook_deliveries");
+ assertThat(count).isEqualTo(0);
+ }
+
+ @Test
+ public void column_webhook_uuid_has_been_added_to_table() throws SQLException {
underTest.execute();
- dbTester.assertColumnDefinition("webhook_deliveries", "webhook_uuid", VARCHAR, 40, true);
+ dbTester.assertColumnDefinition("webhook_deliveries", "webhook_uuid", VARCHAR, 40, false);
+ }
+
+ @Test
+ public void column_duration_ms_is_now_not_nullable() throws SQLException {
+ underTest.execute();
+
+ dbTester.assertColumnDefinition("webhook_deliveries", "duration_ms", BIGINT, null, false);
}
@Test
@@ -52,4 +76,18 @@ public class AddWebhookKeyToWebhookDeliveriesTableTest {
underTest.execute();
}
+
+ private void insertDelivery() {
+ dbTester.executeInsert("webhook_deliveries",
+ "uuid", randomAlphanumeric(40),
+// "webhook_uuid", randomAlphanumeric(40),
+ "component_uuid", randomAlphanumeric(40),
+ "name", randomAlphabetic(60),
+ "url", randomAlphabetic(200),
+ "success", true,
+ "duration_ms", randomNumeric(7),
+ "payload", randomAlphanumeric(1000),
+ "created_at", valueOf(1_55555_555));
+ }
+
}