From 7de21fcb50fd438fbb847c57397b142bb538872b Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Thu, 7 Jun 2018 17:24:49 +0200 Subject: [PATCH] SONAR-10690 make fake-billing-plugin a core extension --- settings.gradle | 2 +- tests/build.gradle | 2 +- .../core-extension-fake-billing/build.gradle | 4 +++ .../main/java/FakeBillingCoreExtension.java} | 25 ++++++++++--------- .../src/main/java/FakeBillingValidations.java | 0 .../org.sonar.core.extension.CoreExtension | 1 + .../org/sonar/l10n/billing.properties | 0 .../plugins/fake-billing-plugin/build.gradle | 19 -------------- .../tests/organization/BillingTest.java | 2 -- .../tests/organization/OrganizationSuite.java | 9 +++---- 10 files changed, 23 insertions(+), 41 deletions(-) create mode 100644 tests/plugins/core-extension-fake-billing/build.gradle rename tests/plugins/{fake-billing-plugin/src/main/java/FakeBillingPlugin.java => core-extension-fake-billing/src/main/java/FakeBillingCoreExtension.java} (78%) rename tests/plugins/{fake-billing-plugin => core-extension-fake-billing}/src/main/java/FakeBillingValidations.java (100%) create mode 100644 tests/plugins/core-extension-fake-billing/src/main/resources/META-INF/services/org.sonar.core.extension.CoreExtension rename tests/plugins/{fake-billing-plugin => core-extension-fake-billing}/src/main/resources/org/sonar/l10n/billing.properties (100%) delete mode 100644 tests/plugins/fake-billing-plugin/build.gradle diff --git a/settings.gradle b/settings.gradle index 10d2f730941..c94cf11a2d1 100644 --- a/settings.gradle +++ b/settings.gradle @@ -40,7 +40,7 @@ include 'tests:plugins:batch-plugin' include 'tests:plugins:blue-green-plugin-v1' include 'tests:plugins:blue-green-plugin-v2' include 'tests:plugins:extension-lifecycle-plugin' -include 'tests:plugins:fake-billing-plugin' +include 'tests:plugins:core-extension-fake-billing' include 'tests:plugins:core-extension-it-tests' include 'tests:plugins:foo-plugin-v1' include 'tests:plugins:foo-plugin-v2' diff --git a/tests/build.gradle b/tests/build.gradle index da55a4f03cf..fc5da403ddb 100644 --- a/tests/build.gradle +++ b/tests/build.gradle @@ -19,7 +19,7 @@ def pluginsForITs = [ ':tests:plugins:blue-green-plugin-v1', ':tests:plugins:blue-green-plugin-v2', ':tests:plugins:extension-lifecycle-plugin', - ':tests:plugins:fake-billing-plugin', + ':tests:plugins:core-extension-fake-billing', ':tests:plugins:core-extension-it-tests', ':tests:plugins:foo-plugin-v1', ':tests:plugins:foo-plugin-v2', diff --git a/tests/plugins/core-extension-fake-billing/build.gradle b/tests/plugins/core-extension-fake-billing/build.gradle new file mode 100644 index 00000000000..3dc8a9030bb --- /dev/null +++ b/tests/plugins/core-extension-fake-billing/build.gradle @@ -0,0 +1,4 @@ +dependencies { + compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') + compileOnly project(':server:sonar-server') +} diff --git a/tests/plugins/fake-billing-plugin/src/main/java/FakeBillingPlugin.java b/tests/plugins/core-extension-fake-billing/src/main/java/FakeBillingCoreExtension.java similarity index 78% rename from tests/plugins/fake-billing-plugin/src/main/java/FakeBillingPlugin.java rename to tests/plugins/core-extension-fake-billing/src/main/java/FakeBillingCoreExtension.java index 97a4e8053d6..6ef26f790f3 100644 --- a/tests/plugins/fake-billing-plugin/src/main/java/FakeBillingPlugin.java +++ b/tests/plugins/core-extension-fake-billing/src/main/java/FakeBillingCoreExtension.java @@ -38,24 +38,25 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import org.sonar.api.Plugin; +import org.sonar.api.SonarQubeSide; +import org.sonar.core.extension.CoreExtension; -public class FakeBillingPlugin implements Plugin { +import static org.sonar.api.SonarQubeSide.COMPUTE_ENGINE; +import static org.sonar.api.SonarQubeSide.SERVER; +public class FakeBillingCoreExtension implements CoreExtension { @Override - public void define(Context context) { + public String getName() { + return "fake-billing"; + } + + @Override + public void load(Context context) { + SonarQubeSide sonarQubeSide = context.getRuntime().getSonarQubeSide(); // Nothing should be loaded when the plugin is running within by the scanner - if (isRunningInSQ()) { + if (sonarQubeSide == SERVER || sonarQubeSide == COMPUTE_ENGINE) { context.addExtension(FakeBillingValidations.class); } } - private static boolean isRunningInSQ() { - try { - Class.forName("org.sonar.server.plugins.privileged.CoreExtensionBridge"); - return true; - } catch (ClassNotFoundException e) { - return false; - } - } } diff --git a/tests/plugins/fake-billing-plugin/src/main/java/FakeBillingValidations.java b/tests/plugins/core-extension-fake-billing/src/main/java/FakeBillingValidations.java similarity index 100% rename from tests/plugins/fake-billing-plugin/src/main/java/FakeBillingValidations.java rename to tests/plugins/core-extension-fake-billing/src/main/java/FakeBillingValidations.java diff --git a/tests/plugins/core-extension-fake-billing/src/main/resources/META-INF/services/org.sonar.core.extension.CoreExtension b/tests/plugins/core-extension-fake-billing/src/main/resources/META-INF/services/org.sonar.core.extension.CoreExtension new file mode 100644 index 00000000000..f8adf894e60 --- /dev/null +++ b/tests/plugins/core-extension-fake-billing/src/main/resources/META-INF/services/org.sonar.core.extension.CoreExtension @@ -0,0 +1 @@ +FakeBillingCoreExtension diff --git a/tests/plugins/fake-billing-plugin/src/main/resources/org/sonar/l10n/billing.properties b/tests/plugins/core-extension-fake-billing/src/main/resources/org/sonar/l10n/billing.properties similarity index 100% rename from tests/plugins/fake-billing-plugin/src/main/resources/org/sonar/l10n/billing.properties rename to tests/plugins/core-extension-fake-billing/src/main/resources/org/sonar/l10n/billing.properties diff --git a/tests/plugins/fake-billing-plugin/build.gradle b/tests/plugins/fake-billing-plugin/build.gradle deleted file mode 100644 index 47f55fe4d63..00000000000 --- a/tests/plugins/fake-billing-plugin/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -dependencies { - compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') - compileOnly project(':server:sonar-server') -} - -jar { - manifest { - attributes( - 'Plugin-Key': 'billing', - 'Plugin-Version': version, - 'Plugin-Class': 'FakeBillingPlugin', - 'Plugin-ChildFirstClassLoader': 'false', - 'Sonar-Version': version, - 'SonarLint-Supported': 'false', - 'Plugin-Name': 'Plugins :: Fake Billing Plugin', - 'Plugin-License': 'GNU LGPL 3' - ) - } -} diff --git a/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java b/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java index 713762a7e2d..a66254b5ebd 100644 --- a/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java +++ b/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java @@ -25,7 +25,6 @@ import com.sonar.orchestrator.build.SonarScanner; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.sonarqube.qa.util.Tester; @@ -46,7 +45,6 @@ import static util.ItUtils.expectHttpError; import static util.ItUtils.newProjectKey; import static util.ItUtils.projectDir; -@Ignore("FIXME IT disabled because it relies on a privileged plugin (fake-billing-plugin)") public class BillingTest { private static final String PROPERTY_PREVENT_ANALYSIS = "sonar.billing.preventProjectAnalysis"; diff --git a/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java b/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java index a2b6c311e43..0d2d51231e2 100644 --- a/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java @@ -24,6 +24,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.installCoreExtension; import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -43,12 +44,8 @@ public class OrganizationSuite { @ClassRule public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder( builder -> builder - .addPlugin(xooPlugin()) - .addPlugin(pluginArtifact("fake-billing-plugin")) .addPlugin(pluginArtifact("ui-extensions-plugin")) - - .setServerProperty("sonar.sonarcloud.enabled", "true") - - ); + .setServerProperty("sonar.sonarcloud.enabled", "true"), + server -> installCoreExtension(server, "core-extension-fake-billing")); } -- 2.39.5