You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by av...@apache.org on 2019/05/06 13:28:18 UTC

[ignite] branch master updated: IGNITE-11744 Adds configuration for explicit plugins providing. (#6517)

This is an automated email from the ASF dual-hosted git repository.

av pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 7a42592  IGNITE-11744 Adds configuration for explicit plugins providing. (#6517)
7a42592 is described below

commit 7a4259284369332c3076fff9137114fb02560a2a
Author: Petrov Mikhail <32...@users.noreply.github.com>
AuthorDate: Mon May 6 16:28:06 2019 +0300

    IGNITE-11744 Adds configuration for explicit plugins providing. (#6517)
---
 .../ignite/configuration/IgniteConfiguration.java  | 30 ++++++++++++
 .../org/apache/ignite/internal/IgniteKernal.java   |  3 +-
 .../org.apache.ignite.plugin.PluginProvider        |  3 +-
 .../GridDiscoveryManagerAttributesSelfTest.java    | 10 ++--
 .../processors/security/AbstractSecurityTest.java  | 27 +++--------
 ...ava => AbstractTestSecurityPluginProvider.java} | 33 ++++---------
 .../client/ThinClientPermissionCheckTest.java      |  3 +-
 .../security/impl/TestSecurityPluginProvider.java  | 55 ++++++++++++++++++++++
 .../spi/discovery/AuthenticationRestartTest.java   |  6 +--
 .../TestReconnectSecurityPluginProvider.java}      | 21 ++++-----
 ...scoveryNodeAttributesUpdateOnReconnectTest.java |  6 +--
 .../junits/GridTestKernalContext.java              |  4 +-
 .../ApiParity/IgniteConfigurationParityTest.cs     |  3 +-
 13 files changed, 124 insertions(+), 80 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 1ded486..cddb2ee 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -397,6 +397,7 @@ public class IgniteConfiguration {
     private TransactionConfiguration txCfg = new TransactionConfiguration();
 
     /** */
+    @Deprecated
     private PluginConfiguration[] pluginCfgs;
 
     /** Flag indicating whether cache sanity check is enabled. */
@@ -530,6 +531,9 @@ public class IgniteConfiguration {
     /** SQL schemas to be created on node start. */
     private String[] sqlSchemas;
 
+    /** Plugin providers. */
+    private PluginProvider[] pluginProvs;
+
     /**
      * Creates valid grid configuration with all default values.
      */
@@ -622,6 +626,7 @@ public class IgniteConfiguration {
         p2pPoolSize = cfg.getPeerClassLoadingThreadPoolSize();
         platformCfg = cfg.getPlatformConfiguration();
         pluginCfgs = cfg.getPluginConfigurations();
+        pluginProvs = cfg.getPluginProviders();
         pubPoolSize = cfg.getPublicThreadPoolSize();
         qryPoolSize = cfg.getQueryThreadPoolSize();
         rebalanceThreadPoolSize = cfg.getRebalanceThreadPoolSize();
@@ -2846,6 +2851,7 @@ public class IgniteConfiguration {
      * @return Plugin configurations.
      * @see PluginProvider
      */
+    @Deprecated
     public PluginConfiguration[] getPluginConfigurations() {
         return pluginCfgs;
     }
@@ -2856,7 +2862,10 @@ public class IgniteConfiguration {
      * @param pluginCfgs Plugin configurations.
      * @return {@code this} for chaining.
      * @see PluginProvider
+     * @deprecated Since {@link PluginProvider}s can be set explicitly via {@link #setPluginProviders(PluginProvider[])}
+     * it's preferable to store {@link PluginConfiguration} as a part of {@link PluginProvider}.
      */
+    @Deprecated
     public IgniteConfiguration setPluginConfigurations(PluginConfiguration... pluginCfgs) {
         this.pluginCfgs = pluginCfgs;
 
@@ -3198,6 +3207,27 @@ public class IgniteConfiguration {
         return this;
     }
 
+    /**
+     * Gets plugin providers.
+     *
+     * @return Plugin providers.
+     */
+    public PluginProvider[] getPluginProviders() {
+        return pluginProvs;
+    }
+
+    /**
+     * Sets plugin providers.
+     *
+     * @param pluginProvs Plugin providers.
+     * @return {@code this} for chaining.
+     */
+    public IgniteConfiguration setPluginProviders(PluginProvider... pluginProvs) {
+        this.pluginProvs = pluginProvs;
+
+        return this;
+    }
+
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(IgniteConfiguration.class, this);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 241b16e..51dde45 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -887,7 +887,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
         // Ack configuration.
         ackSpis();
 
-        List<PluginProvider> plugins = U.allPluginProviders();
+        List<PluginProvider> plugins = cfg.getPluginProviders() != null && cfg.getPluginProviders().length > 0 ?
+           Arrays.asList(cfg.getPluginProviders()) : U.allPluginProviders();
 
         // Spin out SPIs & managers.
         try {
diff --git a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider b/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider
index 5e51c7a..6bca88f 100644
--- a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider
+++ b/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider
@@ -1,5 +1,4 @@
-org.apache.ignite.internal.processors.security.impl.TestSecurityProcessorProvider
 org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteStandByClusterTest$StanByClusterTestProvider
 org.apache.ignite.internal.processors.cache.persistence.wal.memtracker.PageMemoryTrackerPluginProvider
 org.apache.ignite.internal.processors.configuration.distributed.TestDistibutedConfigurationPlugin
-org.apache.ignite.plugin.NodeValidationPluginProvider
\ No newline at end of file
+org.apache.ignite.plugin.NodeValidationPluginProvider
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
index ce384de..7ab79bf 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
@@ -24,9 +24,8 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.binary.BinaryMarshaller;
 import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
-import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginConfiguration;
+import org.apache.ignite.spi.discovery.TestReconnectSecurityPluginProvider;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
-import org.apache.ignite.spi.discovery.tcp.TestReconnectProcessor;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
 
@@ -70,11 +69,8 @@ public abstract class GridDiscoveryManagerAttributesSelfTest extends GridCommonA
         cfg.setDeploymentMode(mode);
         cfg.setPeerClassLoadingEnabled(p2pEnabled);
 
-        if(secEnabled){
-            cfg.setPluginConfigurations(
-                (TestSecurityPluginConfiguration)TestReconnectProcessor::new
-            );
-        }
+        if(secEnabled)
+            cfg.setPluginProviders(new TestReconnectSecurityPluginProvider());
 
         return cfg;
     }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractSecurityTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractSecurityTest.java
index 165c46a..cc02d67 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractSecurityTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractSecurityTest.java
@@ -17,14 +17,11 @@
 
 package org.apache.ignite.internal.processors.security;
 
-import java.util.Arrays;
 import org.apache.ignite.configuration.DataRegionConfiguration;
 import org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.processors.security.impl.TestSecurityData;
-import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginConfiguration;
-import org.apache.ignite.internal.processors.security.impl.TestSecurityProcessor;
+import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginProvider;
 import org.apache.ignite.plugin.security.SecurityPermission;
 import org.apache.ignite.plugin.security.SecurityPermissionSet;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -47,10 +44,10 @@ public class AbstractSecurityTest extends GridCommonAbstractTest {
 
     /**
      * @param instanceName Instance name.
-     * @param secCfg Security plugin configuration.
+     * @param pluginProv Security plugin provider.
      */
     protected IgniteConfiguration getConfiguration(String instanceName,
-        TestSecurityPluginConfiguration secCfg) throws Exception {
+        AbstractTestSecurityPluginProvider pluginProv) throws Exception {
 
         return getConfiguration(instanceName)
             .setDataStorageConfiguration(
@@ -60,20 +57,7 @@ public class AbstractSecurityTest extends GridCommonAbstractTest {
                     )
             )
             .setAuthenticationEnabled(true)
-            .setPluginConfigurations(secCfg);
-    }
-
-    /**
-     * @param login Login.
-     * @param pwd Password.
-     * @param prmSet Security permission set.
-     * @return Security plaugin configuration.
-     */
-    protected TestSecurityPluginConfiguration secPluginCfg(String login, String pwd, SecurityPermissionSet prmSet,
-        TestSecurityData... clientData) {
-        return ctx -> new TestSecurityProcessor(ctx,
-            new TestSecurityData(login, pwd, prmSet),
-            Arrays.asList(clientData));
+            .setPluginProviders(pluginProv);
     }
 
     /** */
@@ -92,6 +76,7 @@ public class AbstractSecurityTest extends GridCommonAbstractTest {
      * @param isClient Is client.
      */
     protected IgniteEx startGrid(String login, SecurityPermissionSet prmSet, boolean isClient) throws Exception {
-        return startGrid(getConfiguration(login, secPluginCfg(login, "", prmSet)).setClientMode(isClient));
+        return startGrid(getConfiguration(login, new TestSecurityPluginProvider(login, "", prmSet))
+                .setClientMode(isClient));
     }
 }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityProcessorProvider.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractTestSecurityPluginProvider.java
similarity index 73%
rename from modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityProcessorProvider.java
rename to modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractTestSecurityPluginProvider.java
index 1ff5a20..f23c6c1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityProcessorProvider.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/AbstractTestSecurityPluginProvider.java
@@ -15,19 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.internal.processors.security.impl;
+package org.apache.ignite.internal.processors.security;
 
 import java.io.Serializable;
 import java.util.UUID;
 import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.processors.security.GridSecurityProcessor;
 import org.apache.ignite.plugin.CachePluginContext;
 import org.apache.ignite.plugin.CachePluginProvider;
 import org.apache.ignite.plugin.ExtensionRegistry;
 import org.apache.ignite.plugin.IgnitePlugin;
-import org.apache.ignite.plugin.PluginConfiguration;
 import org.apache.ignite.plugin.PluginContext;
 import org.apache.ignite.plugin.PluginProvider;
 import org.apache.ignite.plugin.PluginValidationException;
@@ -36,7 +34,7 @@ import org.jetbrains.annotations.Nullable;
 /**
  * Security processor provider for tests.
  */
-public class TestSecurityProcessorProvider implements PluginProvider {
+public abstract class AbstractTestSecurityPluginProvider implements PluginProvider {
     /** {@inheritDoc} */
     @Override public String name() {
         return "TestSecurityProcessorProvider";
@@ -66,32 +64,17 @@ public class TestSecurityProcessorProvider implements PluginProvider {
     /** {@inheritDoc} */
     @SuppressWarnings("unchecked")
     @Override public @Nullable Object createComponent(PluginContext ctx, Class cls) {
-        if (cls.isAssignableFrom(GridSecurityProcessor.class)) {
-            TestSecurityPluginConfiguration cfg = secProcBuilder(ctx);
-
-            return cfg != null ? cfg.build(((IgniteEx)ctx.grid()).context()) : null;
-        }
+        if (cls.isAssignableFrom(GridSecurityProcessor.class))
+            return securityProcessor(((IgniteEx)ctx.grid()).context());
 
         return null;
     }
 
     /**
-     * Gets security processor builder.
-     *
-     * @param ctx Context.
+     * @param ctx Grid kernal context.
+     * @return {@link GridSecurityProcessor} istance.
      */
-    private TestSecurityPluginConfiguration secProcBuilder(PluginContext ctx){
-        IgniteConfiguration igniteCfg = ctx.igniteConfiguration();
-
-        if (igniteCfg.getPluginConfigurations() != null) {
-            for (PluginConfiguration pluginCfg : igniteCfg.getPluginConfigurations()) {
-                if (pluginCfg instanceof TestSecurityPluginConfiguration)
-                    return (TestSecurityPluginConfiguration)pluginCfg;
-            }
-        }
-
-        return null;
-    }
+    protected abstract GridSecurityProcessor securityProcessor(GridKernalContext ctx);
 
     /** {@inheritDoc} */
     @Override public CachePluginProvider createCacheProvider(CachePluginContext ctx) {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/client/ThinClientPermissionCheckTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/client/ThinClientPermissionCheckTest.java
index b41d9b4..3259a94 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/client/ThinClientPermissionCheckTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/client/ThinClientPermissionCheckTest.java
@@ -33,6 +33,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.processors.security.AbstractSecurityTest;
 import org.apache.ignite.internal.processors.security.impl.TestSecurityData;
+import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginProvider;
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.plugin.security.SecurityPermissionSetBuilder;
@@ -98,7 +99,7 @@ public class ThinClientPermissionCheckTest extends AbstractSecurityTest {
 
         return getConfiguration(
             instanceName,
-            secPluginCfg("srv_" + instanceName, null, ALLOW_ALL, clientData)
+            new TestSecurityPluginProvider("srv_" + instanceName, null, ALLOW_ALL, clientData)
         ).setCacheConfiguration(
             new CacheConfiguration().setName(CACHE),
             new CacheConfiguration().setName(FORBIDDEN_CACHE)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityPluginProvider.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityPluginProvider.java
new file mode 100644
index 0000000..9c3e871
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityPluginProvider.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.security.impl;
+
+import java.util.Arrays;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.processors.security.AbstractTestSecurityPluginProvider;
+import org.apache.ignite.internal.processors.security.GridSecurityProcessor;
+import org.apache.ignite.plugin.security.SecurityPermissionSet;
+
+/** */
+public class TestSecurityPluginProvider extends AbstractTestSecurityPluginProvider {
+    /** Login. */
+    private final String login;
+
+    /** Password. */
+    private final String pwd;
+
+    /** Permissions. */
+    private final SecurityPermissionSet perms;
+
+    /** Users security data. */
+    private final TestSecurityData[] clientData;
+
+    /** */
+    public TestSecurityPluginProvider(String login, String pwd, SecurityPermissionSet perms,
+        TestSecurityData... clientData) {
+        this.login = login;
+        this.pwd = pwd;
+        this.perms = perms;
+        this.clientData = clientData.clone();
+    }
+
+    /** {@inheritDoc} */
+    @Override protected GridSecurityProcessor securityProcessor(GridKernalContext ctx) {
+        return new TestSecurityProcessor(ctx,
+            new TestSecurityData(login, pwd, perms),
+            Arrays.asList(clientData));
+    }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/AuthenticationRestartTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AuthenticationRestartTest.java
index 8d61851..f1c3684 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/AuthenticationRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AuthenticationRestartTest.java
@@ -19,11 +19,9 @@ package org.apache.ignite.spi.discovery;
 
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginConfiguration;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
-import org.apache.ignite.spi.discovery.tcp.TestReconnectProcessor;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
 
@@ -42,9 +40,7 @@ public class AuthenticationRestartTest extends GridCommonAbstractTest {
 
         ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setJoinTimeout(1120_000);
 
-        cfg.setPluginConfigurations(
-            (TestSecurityPluginConfiguration)TestReconnectProcessor::new
-        );
+        cfg.setPluginProviders(new TestReconnectSecurityPluginProvider());
 
         return cfg;
     }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityPluginConfiguration.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/TestReconnectSecurityPluginProvider.java
similarity index 66%
rename from modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityPluginConfiguration.java
rename to modules/core/src/test/java/org/apache/ignite/spi/discovery/TestReconnectSecurityPluginProvider.java
index 97c1e45..8103884 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/impl/TestSecurityPluginConfiguration.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/TestReconnectSecurityPluginProvider.java
@@ -15,20 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.internal.processors.security.impl;
+package org.apache.ignite.spi.discovery;
 
 import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.processors.security.GridSecurityProcessor;
-import org.apache.ignite.plugin.PluginConfiguration;
+import org.apache.ignite.internal.processors.security.AbstractTestSecurityPluginProvider;
+import org.apache.ignite.spi.discovery.tcp.TestReconnectProcessor;
 
-/**
- * Grid security configuration for tests.
- */
-@FunctionalInterface
-public interface TestSecurityPluginConfiguration extends PluginConfiguration {
-    /**
-     * @param ctx GridKernalContext.
-     * @return GridSecurityProcessor.
-     */
-    public GridSecurityProcessor build(GridKernalContext ctx);
+/** */
+public class TestReconnectSecurityPluginProvider extends AbstractTestSecurityPluginProvider {
+    /** {@inheritDoc} */
+    @Override protected GridSecurityProcessor securityProcessor(GridKernalContext ctx) {
+        return new TestReconnectProcessor(ctx);
+    }
 }
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNodeAttributesUpdateOnReconnectTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNodeAttributesUpdateOnReconnectTest.java
index f20bf55..6db7ff7 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNodeAttributesUpdateOnReconnectTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNodeAttributesUpdateOnReconnectTest.java
@@ -28,9 +28,9 @@ import org.apache.ignite.events.DiscoveryEvent;
 import org.apache.ignite.events.Event;
 import org.apache.ignite.events.EventType;
 import org.apache.ignite.internal.IgniteClientReconnectAbstractTest;
-import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginConfiguration;
 import org.apache.ignite.lang.IgnitePredicate;
 import org.apache.ignite.resources.LoggerResource;
+import org.apache.ignite.spi.discovery.TestReconnectSecurityPluginProvider;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
@@ -69,9 +69,7 @@ public class TcpDiscoveryNodeAttributesUpdateOnReconnectTest extends GridCommonA
 
         cfg.setDiscoverySpi(spi);
 
-        cfg.setPluginConfigurations(
-            (TestSecurityPluginConfiguration)TestReconnectProcessor::new
-        );
+        cfg.setPluginProviders(new TestReconnectSecurityPluginProvider());
 
         return cfg;
     }
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java
index 3594b79..17e1fed 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.testframework.junits;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.ListIterator;
@@ -79,7 +80,8 @@ public class GridTestKernalContext extends GridKernalContextImpl {
                 null,
                 null,
                 null,
-                U.allPluginProviders(),
+                cfg.getPluginProviders() != null && cfg.getPluginProviders().length > 0 ?
+                    Arrays.asList(cfg.getPluginProviders()) : U.allPluginProviders(),
                 null,
                 null,
                 null,
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/IgniteConfigurationParityTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/IgniteConfigurationParityTest.cs
index a50d48a..af8f76e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/IgniteConfigurationParityTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/IgniteConfigurationParityTest.cs
@@ -82,7 +82,8 @@ namespace Apache.Ignite.Core.Tests.ApiParity
             "TimeServerPortRange",
             "IncludeProperties",
             "isAutoActivationEnabled",  // IGNITE-7301
-            "NetworkCompressionLevel"
+            "NetworkCompressionLevel",
+            "PluginProviders"
         };
 
         /// <summary>