Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EC32F17C0F for ; Thu, 9 Apr 2015 09:00:49 +0000 (UTC) Received: (qmail 79990 invoked by uid 500); 9 Apr 2015 08:59:52 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 79956 invoked by uid 500); 9 Apr 2015 08:59:52 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 79906 invoked by uid 99); 9 Apr 2015 08:59:52 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Apr 2015 08:59:52 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 09 Apr 2015 08:59:46 +0000 Received: (qmail 77918 invoked by uid 99); 9 Apr 2015 08:59:26 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Apr 2015 08:59:26 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D54AFDFF70; Thu, 9 Apr 2015 08:59:26 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vozerov@apache.org To: commits@ignite.incubator.apache.org Date: Thu, 09 Apr 2015 09:00:11 -0000 Message-Id: In-Reply-To: <1393c3ddb7ae4b9db44397968d864709@git.apache.org> References: <1393c3ddb7ae4b9db44397968d864709@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [46/50] [abbrv] incubator-ignite git commit: # ignite-sprint-3 correction for ignite-680 X-Virus-Checked: Checked by ClamAV on apache.org # ignite-sprint-3 correction for ignite-680 Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/3e6da9cd Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/3e6da9cd Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/3e6da9cd Branch: refs/heads/ignite-gg-9991 Commit: 3e6da9cda37c094167ec7bad604c3f9baf631fc6 Parents: 9d183c5 Author: sboikov Authored: Thu Apr 9 09:50:42 2015 +0300 Committer: sboikov Committed: Thu Apr 9 10:11:35 2015 +0300 ---------------------------------------------------------------------- .../src/main/java/org/apache/ignite/Ignite.java | 11 ++ .../apache/ignite/internal/IgniteKernal.java | 19 ++- .../cache/DynamicCacheChangeRequest.java | 2 +- .../processors/cache/GridCacheProcessor.java | 119 +++++++++++-------- ...teCacheConfigurationDefaultTemplateTest.java | 111 +++++++++++++++++ ...eCacheConfigurationTemplateNotFoundTest.java | 114 ------------------ .../IgniteCacheConfigurationTemplateTest.java | 86 +++++++++++++- .../ignite/testframework/junits/IgniteMock.java | 5 + .../ignite/testsuites/IgniteCacheTestSuite.java | 2 +- .../org/apache/ignite/IgniteSpringBean.java | 7 ++ 10 files changed, 309 insertions(+), 167 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/main/java/org/apache/ignite/Ignite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java b/modules/core/src/main/java/org/apache/ignite/Ignite.java index 6b49add..40c9bbb 100644 --- a/modules/core/src/main/java/org/apache/ignite/Ignite.java +++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java @@ -217,6 +217,17 @@ public interface Ignite extends AutoCloseable { public IgniteCache createCache(CacheConfiguration cacheCfg); /** + * Dynamically starts new cache using template configuration. + *

+ * If local node is an affinity node, this method will return the instance of started cache. + * Otherwise, it will create a client cache on local node. + * + * @param cacheName Cache name. + * @return Instance of started cache. + */ + public IgniteCache createCache(String cacheName); + + /** * Gets existing cache with the given name or creates new one with the given configuration. * * @param cacheCfg Cache configuration to use. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- 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 768bbd3..0db2ad6 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 @@ -2282,6 +2282,23 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { } /** {@inheritDoc} */ + @Override public IgniteCache createCache(String cacheName) { + guard(); + + try { + ctx.cache().createFromTemplate(cacheName).get(); + + return ctx.cache().publicJCache(cacheName); + } + catch (IgniteCheckedException e) { + throw CU.convertToCacheException(e); + } + finally { + unguard(); + } + } + + /** {@inheritDoc} */ @Override public IgniteCache getOrCreateCache(CacheConfiguration cacheCfg) { A.notNull(cacheCfg, "cacheCfg"); @@ -2409,7 +2426,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { guard(); try { - ctx.cache().dynamicStartCache(cacheName).get(); + ctx.cache().getOrCreateFromTemplate(cacheName).get(); return ctx.cache().publicJCache(cacheName); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java index bd53cdb..c08a179 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java @@ -119,7 +119,7 @@ public class DynamicCacheChangeRequest implements Serializable { * @return {@code True} if this is a start request. */ public boolean start() { - return startCfg != null; + return !template && startCfg != null; } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index 35cfd0c..f0db73e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -1365,7 +1365,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { ) throws IgniteCheckedException { for (DynamicCacheChangeRequest req : reqs) { assert req.start() : req; - assert req.cacheType() != null : req.cacheType(); + assert req.cacheType() != null : req; prepareCacheStart( req.startCacheConfiguration(), @@ -1711,81 +1711,102 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @param cacheName Cache name. * @return Future that will be completed when cache is deployed. */ - public IgniteInternalFuture dynamicStartCache(String cacheName) { + public IgniteInternalFuture createFromTemplate(String cacheName) { + CacheConfiguration cfg = createConfigFromTemplate(cacheName); + + return dynamicStartCache(cfg, cacheName, null, true); + } + + /** + * Dynamically starts cache using template configuration. + * + * @param cacheName Cache name. + * @return Future that will be completed when cache is deployed. + */ + public IgniteInternalFuture getOrCreateFromTemplate(String cacheName) { try { if (publicJCache(cacheName, false, true) != null) // Cache with given name already started. return new GridFinishedFuture<>(); - CacheConfiguration cfgTemplate = null; + CacheConfiguration cfg = createConfigFromTemplate(cacheName); - CacheConfiguration dfltCacheCfg = null; + return dynamicStartCache(cfg, cacheName, null, false); + } + catch (IgniteCheckedException e) { + return new GridFinishedFuture<>(e); + } + } - List wildcardNameCfgs = null; + /** + * @param cacheName Cache name. + * @return Cache configuration. + */ + private CacheConfiguration createConfigFromTemplate(String cacheName) { + CacheConfiguration cfgTemplate = null; - for (DynamicCacheDescriptor desc : registeredTemplates.values()) { - assert desc.template(); + CacheConfiguration dfltCacheCfg = null; - CacheConfiguration cfg = desc.cacheConfiguration(); + List wildcardNameCfgs = null; - assert cfg != null; + for (DynamicCacheDescriptor desc : registeredTemplates.values()) { + assert desc.template(); - if (F.eq(cacheName, cfg.getName())) { - cfgTemplate = cfg; + CacheConfiguration cfg = desc.cacheConfiguration(); - break; - } + assert cfg != null; - if (cfg.getName() != null ) { - if (cfg.getName().endsWith("*")) { - if (cfg.getName().length() > 1) { - if (wildcardNameCfgs == null) - wildcardNameCfgs = new ArrayList<>(); + if (F.eq(cacheName, cfg.getName())) { + cfgTemplate = cfg; - wildcardNameCfgs.add(cfg); - } - else - dfltCacheCfg = cfg; // Template with name '*'. + break; + } + + if (cfg.getName() != null ) { + if (cfg.getName().endsWith("*")) { + if (cfg.getName().length() > 1) { + if (wildcardNameCfgs == null) + wildcardNameCfgs = new ArrayList<>(); + + wildcardNameCfgs.add(cfg); } + else + dfltCacheCfg = cfg; // Template with name '*'. } - else if (dfltCacheCfg == null) - dfltCacheCfg = cfg; } + else if (dfltCacheCfg == null) + dfltCacheCfg = cfg; + } - if (cfgTemplate == null && cacheName != null && wildcardNameCfgs != null) { - Collections.sort(wildcardNameCfgs, new Comparator() { - @Override public int compare(CacheConfiguration cfg1, CacheConfiguration cfg2) { - Integer len1 = cfg1.getName() != null ? cfg1.getName().length() : 0; - Integer len2 = cfg2.getName() != null ? cfg2.getName().length() : 0; + if (cfgTemplate == null && cacheName != null && wildcardNameCfgs != null) { + Collections.sort(wildcardNameCfgs, new Comparator() { + @Override public int compare(CacheConfiguration cfg1, CacheConfiguration cfg2) { + Integer len1 = cfg1.getName() != null ? cfg1.getName().length() : 0; + Integer len2 = cfg2.getName() != null ? cfg2.getName().length() : 0; - return len2.compareTo(len1); - } - }); + return len2.compareTo(len1); + } + }); - for (CacheConfiguration cfg : wildcardNameCfgs) { - if (cacheName.startsWith(cfg.getName().substring(0, cfg.getName().length() - 1))) { - cfgTemplate = cfg; + for (CacheConfiguration cfg : wildcardNameCfgs) { + if (cacheName.startsWith(cfg.getName().substring(0, cfg.getName().length() - 1))) { + cfgTemplate = cfg; - break; - } + break; } } + } - if (cfgTemplate == null) - cfgTemplate = dfltCacheCfg; + if (cfgTemplate == null) + cfgTemplate = dfltCacheCfg; - if (cfgTemplate == null) - throw new IllegalArgumentException("Failed to start cache " + - "(there is no matching template configuration) : " + cacheName); + if (cfgTemplate == null) + cfgTemplate = new CacheConfiguration(); - CacheConfiguration cfg = new CacheConfiguration(cfgTemplate); + CacheConfiguration cfg = new CacheConfiguration(cfgTemplate); - cfg.setName(cacheName); + cfg.setName(cacheName); - return dynamicStartCache(cfg, cacheName, null, false); - } - catch (IgniteCheckedException e) { - return new GridFinishedFuture<>(e); - } + return cfg; } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationDefaultTemplateTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationDefaultTemplateTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationDefaultTemplateTest.java new file mode 100644 index 0000000..0aa9683 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationDefaultTemplateTest.java @@ -0,0 +1,111 @@ +/* + * 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.cache; + +import org.apache.ignite.*; +import org.apache.ignite.configuration.*; +import org.apache.ignite.spi.discovery.tcp.*; +import org.apache.ignite.spi.discovery.tcp.ipfinder.*; +import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; +import org.apache.ignite.testframework.junits.common.*; + +/** + * + */ +public class IgniteCacheConfigurationDefaultTemplateTest extends GridCommonAbstractTest { + /** */ + private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true); + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(gridName); + + ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder); + + CacheConfiguration templateCfg = new CacheConfiguration(); + + templateCfg.setName("org.apache.ignite.template*"); + templateCfg.setBackups(3); + + cfg.setCacheConfiguration(templateCfg); + + return cfg; + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + super.afterTest(); + + stopAllGrids(); + } + + /** + * @throws Exception If failed. + */ + public void testDefaultTemplate() throws Exception { + Ignite ignite = startGrid(0); + + checkDefaultTemplate(ignite, "org.apache.ignite"); + + checkDefaultTemplate(ignite, "org.apache.ignite.templat"); + + checkDefaultTemplate(ignite, null); + + checkGetOrCreate(ignite, "org.apache.ignite.template", 3); + + CacheConfiguration templateCfg = new CacheConfiguration(); + + templateCfg.setBackups(4); + + ignite.addCacheConfiguration(templateCfg); + + checkGetOrCreate(ignite, "org.apache.ignite2", 4); + } + + /** + * @param ignite Ignite. + * @param cacheName Cache name. + */ + private void checkDefaultTemplate(final Ignite ignite, final String cacheName) { + checkGetOrCreate(ignite, cacheName, 0); + + IgniteCache cache = ignite.getOrCreateCache(cacheName); + + assertNotNull(cache); + + CacheConfiguration cfg = (CacheConfiguration)cache.getConfiguration(CacheConfiguration.class); + + assertEquals(CacheConfiguration.DFLT_CACHE_ATOMICITY_MODE, cfg.getAtomicityMode()); + } + + /** + * @param ignite Ignite. + * @param name Cache name. + * @param expBackups Expected number of backups. + */ + private void checkGetOrCreate(Ignite ignite, String name, int expBackups) { + IgniteCache cache = ignite.getOrCreateCache(name); + + assertNotNull(cache); + + CacheConfiguration cfg = (CacheConfiguration)cache.getConfiguration(CacheConfiguration.class); + + assertEquals(name, cfg.getName()); + assertEquals(expBackups, cfg.getBackups()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateNotFoundTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateNotFoundTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateNotFoundTest.java deleted file mode 100644 index 53780da..0000000 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateNotFoundTest.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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.cache; - -import org.apache.ignite.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.spi.discovery.tcp.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; -import org.apache.ignite.testframework.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.util.concurrent.*; - -/** - * - */ -public class IgniteCacheConfigurationTemplateNotFoundTest extends GridCommonAbstractTest { - /** */ - private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true); - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration cfg = super.getConfiguration(gridName); - - ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder); - - CacheConfiguration templateCfg = new CacheConfiguration(); - - templateCfg.setName("org.apache.ignite.template*"); - templateCfg.setBackups(3); - - cfg.setCacheConfiguration(templateCfg); - - return cfg; - } - - /** {@inheritDoc} */ - @Override protected void afterTest() throws Exception { - super.afterTest(); - - stopAllGrids(); - } - - /** - * @throws Exception If failed. - */ - public void testTemplateNotFound() throws Exception { - Ignite ignite = startGrid(0); - - checkTemplateNotFound(ignite, "org.apache.ignite"); - - checkTemplateNotFound(ignite, "org.apache.ignite.templat"); - - checkTemplateNotFound(ignite, null); - - checkGetOrCreate(ignite, "org.apache.ignite.template", 3); - - CacheConfiguration templateCfg = new CacheConfiguration(); - - templateCfg.setBackups(4); - - ignite.addCacheConfiguration(templateCfg); - - checkGetOrCreate(ignite, "org.apache.ignite", 4); - - checkGetOrCreate(ignite, null, 4); - } - - /** - * @param ignite Ignite. - * @param cacheName Cache name. - */ - private void checkTemplateNotFound(final Ignite ignite, final String cacheName) { - GridTestUtils.assertThrows(log, new Callable() { - @Override public Void call() throws Exception { - ignite.getOrCreateCache(cacheName); - - return null; - } - }, IllegalArgumentException.class, null); - } - - /** - * @param ignite Ignite. - * @param name Cache name. - * @param expBackups Expected number of backups. - */ - private void checkGetOrCreate(Ignite ignite, String name, int expBackups) { - IgniteCache cache = ignite.getOrCreateCache(name); - - assertNotNull(cache); - - CacheConfiguration cfg = (CacheConfiguration)cache.getConfiguration(CacheConfiguration.class); - - assertEquals(name, cfg.getName()); - assertEquals(expBackups, cfg.getBackups()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java index d0ffab2..a030039 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java @@ -18,6 +18,7 @@ package org.apache.ignite.internal.processors.cache; import org.apache.ignite.*; +import org.apache.ignite.cache.*; import org.apache.ignite.configuration.*; import org.apache.ignite.events.*; import org.apache.ignite.lang.*; @@ -96,7 +97,61 @@ public class IgniteCacheConfigurationTemplateTest extends GridCommonAbstractTest /** * @throws Exception If failed. */ - public void testCreateFromTemplateConfiguration() throws Exception { + public void testCreateFromTemplate() throws Exception { + addTemplate = true; + + Ignite ignite0 = startGrid(0); + + checkCreate(ignite0, "org.apache.ignite.test.cache1", 4); + checkCreated(ignite0, "org.apache.ignite.test.cache1"); + + Ignite ignite1 = startGrid(1); + + checkCreated(ignite1, "org.apache.ignite.test.cache1"); + + checkCreate(ignite1, "org.apache.ignite1", 3); + checkCreated(ignite1, "org.apache.ignite1"); + + checkCreated(ignite0, "org.apache.ignite1"); + + checkCreate(ignite0, "org.apache1", 2); + checkCreated(ignite0, "org.apache1"); + + checkCreated(ignite1, "org.apache1"); + + addTemplate = false; + clientMode = true; + + Ignite ignite2 = startGrid(2); + + assertNotNull(ignite2.cache("org.apache.ignite.test.cache1")); + assertNotNull(ignite2.cache("org.apache.ignite1")); + assertNotNull(ignite2.cache("org.apache1")); + + CacheConfiguration template1 = new CacheConfiguration(); + + template1.setName(TEMPLATE3); + template1.setBackups(5); + + ignite2.addCacheConfiguration(template1); + + checkCreate(ignite0, "org.apache.ignite.test2.cache1", 5); + + checkCreated(ignite0, "org.apache.ignite.test2.cache1"); + checkCreated(ignite1, "org.apache.ignite.test2.cache1"); + checkCreated(ignite2, "org.apache.ignite.test2.cache1"); + + Ignite ignite3 = startGrid(3); + + checkCreate(ignite3, "org.apache.ignite.test2.cache2", 5); + + checkNoTemplateCaches(4); + } + + /** + * @throws Exception If failed. + */ + public void testGetOrCreateFromTemplate() throws Exception { addTemplate = true; Ignite ignite0 = startGrid(0); @@ -322,6 +377,35 @@ public class IgniteCacheConfigurationTemplateTest extends GridCommonAbstractTest } /** + * @param ignite Ignite. + * @param name Cache name. + * @param expBackups Expected number of backups. + */ + private void checkCreate(final Ignite ignite, final String name, int expBackups) { + IgniteCache cache = ignite.createCache(name); + + assertNotNull(cache); + + CacheConfiguration cfg = (CacheConfiguration)cache.getConfiguration(CacheConfiguration.class); + + assertEquals(name, cfg.getName()); + assertEquals(expBackups, cfg.getBackups()); + } + + /** + * @param cacheName Cache name. + */ + private void checkCreated(final Ignite ignite, final String cacheName) { + GridTestUtils.assertThrows(log, new Callable() { + @Override public Void call() throws Exception { + ignite.createCache(cacheName); + + return null; + } + }, CacheExistsException.class, null); + } + + /** * @param nodes Nodes number. */ private void checkNoTemplateCaches(int nodes) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java index b575544..2451f59 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java @@ -202,6 +202,11 @@ public class IgniteMock implements Ignite { } /** {@inheritDoc} */ + @Override public IgniteCache createCache(String cacheName) { + return null; + } + + /** {@inheritDoc} */ @Override public void addCacheConfiguration(CacheConfiguration cacheCfg) { // No-op. } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java index 649ce0f..01b45f5 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java @@ -411,7 +411,7 @@ public class IgniteCacheTestSuite extends TestSuite { suite.addTestSuite(IgniteDynamicCacheStartSelfTest.class); suite.addTestSuite(IgniteCacheDynamicStopSelfTest.class); suite.addTestSuite(IgniteCacheConfigurationTemplateTest.class); - suite.addTestSuite(IgniteCacheConfigurationTemplateNotFoundTest.class); + suite.addTestSuite(IgniteCacheConfigurationDefaultTemplateTest.class); suite.addTestSuite(GridCacheTxLoadFromStoreOnLockSelfTest.class); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6da9cd/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java ---------------------------------------------------------------------- diff --git a/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java b/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java index cd4fd73..3228210 100644 --- a/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java +++ b/modules/spring/src/main/java/org/apache/ignite/IgniteSpringBean.java @@ -283,6 +283,13 @@ public class IgniteSpringBean implements Ignite, DisposableBean, InitializingBea } /** {@inheritDoc} */ + @Override public IgniteCache createCache(String cacheName) { + assert g != null; + + return g.createCache(cacheName); + } + + /** {@inheritDoc} */ @Override public void addCacheConfiguration(CacheConfiguration cacheCfg) { assert g != null;