Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id DD277200C65 for ; Fri, 14 Apr 2017 17:13:23 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id DBFA4160B80; Fri, 14 Apr 2017 15:13:23 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 26656160BCE for ; Fri, 14 Apr 2017 17:13:19 +0200 (CEST) Received: (qmail 61504 invoked by uid 500); 14 Apr 2017 15:13:19 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 60764 invoked by uid 99); 14 Apr 2017 15:13:19 -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; Fri, 14 Apr 2017 15:13:19 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D3617E0117; Fri, 14 Apr 2017 15:13:18 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: agura@apache.org To: commits@ignite.apache.org Date: Fri, 14 Apr 2017 15:13:57 -0000 Message-Id: <8154b45e77e142fbb1dfc8fe4fea6bf7@git.apache.org> In-Reply-To: <16dfbc567383453393a9f4c479744750@git.apache.org> References: <16dfbc567383453393a9f4c479744750@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [40/50] [abbrv] ignite git commit: IGNITE-4938: Moved OptimizedMarshaller to private package. This closes #1793. archived-at: Fri, 14 Apr 2017 15:13:24 -0000 http://git-wip-us.apache.org/repos/asf/ignite/blob/a1b5b8c3/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java deleted file mode 100644 index d6bbdb4..0000000 --- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java +++ /dev/null @@ -1,357 +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.marshaller.optimized; - -import java.io.File; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.Callable; -import org.apache.ignite.Ignite; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.IgniteInternalFuture; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.marshaller.Marshaller; -import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; -import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; -import org.apache.ignite.testframework.GridTestUtils; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; - -import static org.apache.ignite.cache.CacheMode.PARTITIONED; -import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC; - -/** - * - */ -public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest { - /** */ - private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true); - - /** */ - private boolean cache; - - /** */ - private String workDir; - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { - IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); - - TcpDiscoverySpi disco = new TcpDiscoverySpi(); - - disco.setIpFinder(ipFinder); - - cfg.setDiscoverySpi(disco); - - cfg.setMarshaller(new OptimizedMarshaller()); - - cfg.setWorkDirectory(workDir); - - if (cache) { - CacheConfiguration ccfg = new CacheConfiguration(); - - ccfg.setCacheMode(PARTITIONED); - ccfg.setBackups(1); - ccfg.setWriteSynchronizationMode(FULL_SYNC); - - cfg.setCacheConfiguration(ccfg); - } - else - cfg.setClientMode(true); - - return cfg; - } - - /** - * @throws Exception If failed. - */ - public void testClassCacheUpdateFailover1() throws Exception { - classCacheUpdateFailover(false); - } - - /** - * @throws Exception If failed. - */ - public void testClassCacheUpdateFailover2() throws Exception { - classCacheUpdateFailover(true); - } - - /** - * @param stopSrv If {@code true} restarts server node, otherwise client node. - * @throws Exception If failed. - */ - private void classCacheUpdateFailover(boolean stopSrv) throws Exception { - cache = true; - - startGridsMultiThreaded(2); - - cache = stopSrv; - - IgniteCache cache0 = ignite(0).cache(null); - - for (int i = 0; i < 20; i++) { - log.info("Iteration: " + i); - - Map map = new HashMap<>(); - - for (int j = 0; j < 10_000; j++) - map.put(j, create(i + 1)); - - final Ignite ignite = startGrid(2); - - IgniteInternalFuture fut = GridTestUtils.runAsync(new Callable() { - @Override public Object call() throws Exception { - ignite.close(); - - return null; - } - }); - - cache0.putAll(map); - - fut.get(); - } - - cache = true; - - Ignite ignite = startGrid(2); // Check can start one more cache node. - - assertNotNull(ignite.cache(null)); - } - - /** - * @throws Exception If failed. - */ - public void testRestartAllNodes() throws Exception { - cache = true; - - String home = U.getIgniteHome(); - - String[] workDirs = new String[3]; - - for (int i = 0; i < 3; i++) { - workDirs[i] = home + "/work/marshallerTestNode_" + i; - - File file = new File(workDirs[i]); - - if (file.exists()) - assert U.delete(file); - } - - try { - for (int i = 0; i < workDirs.length; i++) { - workDir = workDirs[i]; - - startGrid(i); - } - - Marshaller marsh = ignite(0).configuration().getMarshaller(); - - TestClass1 obj = new TestClass1(); - - obj.val = 111; - - byte[] bytes = marsh.marshal(obj); - - stopAllGrids(); - - for (int i = 0; i < workDirs.length; i++) { - workDir = workDirs[i]; - - startGrid(i); - } - - for (int i = 0; i < 3; i++) { - marsh = ignite(i).configuration().getMarshaller(); - - TestClass1 obj0 = marsh.unmarshal(bytes, null); - - assertEquals(111, obj0.val); - } - } - finally { - for (String dir : workDirs) - assert U.delete(new File(dir)); - } - } - - /** {@inheritDoc} */ - @Override protected void afterTest() throws Exception { - super.afterTest(); - - stopAllGrids(); - } - - /** - * @param id Class ID. - * @return Test class instance. - */ - private static Object create(int id) { - switch (id) { - case 1: return new TestClass1(); - - case 2: return new TestClass2(); - - case 3: return new TestClass3(); - - case 4: return new TestClass4(); - - case 5: return new TestClass5(); - - case 6: return new TestClass6(); - - case 7: return new TestClass7(); - - case 8: return new TestClass8(); - - case 9: return new TestClass9(); - - case 10: return new TestClass10(); - - case 11: return new TestClass11(); - - case 12: return new TestClass12(); - - case 13: return new TestClass13(); - - case 14: return new TestClass14(); - - case 15: return new TestClass15(); - - case 16: return new TestClass16(); - - case 17: return new TestClass17(); - - case 18: return new TestClass18(); - - case 19: return new TestClass19(); - - case 20: return new TestClass20(); - } - - fail(); - - return null; - } - - /** - * - */ - static class TestClass1 implements Serializable { - /** */ - int val; - } - - /** - * - */ - static class TestClass2 implements Serializable {} - - /** - * - */ - static class TestClass3 implements Serializable {} - - /** - * - */ - static class TestClass4 implements Serializable {} - - /** - * - */ - static class TestClass5 implements Serializable {} - - /** - * - */ - static class TestClass6 implements Serializable {} - - /** - * - */ - static class TestClass7 implements Serializable {} - - /** - * - */ - static class TestClass8 implements Serializable {} - - /** - * - */ - static class TestClass9 implements Serializable {} - - /** - * - */ - static class TestClass10 implements Serializable {} - - /** - * - */ - static class TestClass11 implements Serializable {} - - /** - * - */ - static class TestClass12 implements Serializable {} - - /** - * - */ - static class TestClass13 implements Serializable {} - - /** - * - */ - static class TestClass14 implements Serializable {} - - /** - * - */ - static class TestClass15 implements Serializable {} - - /** - * - */ - static class TestClass16 implements Serializable {} - - /** - * - */ - static class TestClass17 implements Serializable {} - - /** - * - */ - static class TestClass18 implements Serializable {} - - /** - * - */ - static class TestClass19 implements Serializable {} - - /** - * - */ - static class TestClass20 implements Serializable {} -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/a1b5b8c3/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java deleted file mode 100644 index a883270..0000000 --- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java +++ /dev/null @@ -1,44 +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.marshaller.optimized; - -import org.apache.ignite.marshaller.Marshaller; -import org.apache.ignite.testframework.junits.common.GridCommonTest; - -/** - * Optimized marshaller self test. - */ -@GridCommonTest(group = "Marshaller") -public class OptimizedMarshallerPooledSelfTest extends OptimizedMarshallerSelfTest { - /** {@inheritDoc} */ - @Override protected Marshaller marshaller() { - OptimizedMarshaller m = new OptimizedMarshaller(false); - - m.setPoolSize(8); - - return m; - } - - /** {@inheritDoc} */ - @Override protected void afterTestsStopped() throws Exception { - super.afterTestsStopped(); - - // Reset static registry. - new OptimizedMarshaller().setPoolSize(0); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/a1b5b8c3/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java deleted file mode 100644 index a034b3a..0000000 --- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java +++ /dev/null @@ -1,283 +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.marshaller.optimized; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; -import java.util.concurrent.Callable; -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.lang.IgniteRunnable; -import org.apache.ignite.marshaller.GridMarshallerAbstractTest; -import org.apache.ignite.marshaller.Marshaller; -import org.apache.ignite.testframework.GridTestUtils; -import org.apache.ignite.testframework.junits.common.GridCommonTest; - -/** - * Optimized marshaller self test. - */ -@GridCommonTest(group = "Marshaller") -public class OptimizedMarshallerSelfTest extends GridMarshallerAbstractTest { - /** {@inheritDoc} */ - @Override protected Marshaller marshaller() { - return new OptimizedMarshaller(false); - } - - /** - * @throws Exception If failed. - */ - public void testTestMarshalling() throws Exception { - final String msg = "PASSED"; - - byte[] buf = marshal(new IgniteRunnable() { - @Override public void run() { - c1.apply(msg); - c2.apply(msg); - - c3.apply(); - c4.reduce(); - - System.out.println("Test message: " + msg); - } - }); - - Runnable r = unmarshal(buf); - - assertNotNull(r); - - r.run(); - } - - /** - * Tests marshal self-linked object. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testMarshallingSelfLink() throws IgniteCheckedException { - SelfLink sl = new SelfLink("a string 1"); - - sl.link(sl); - - SelfLink sl1 = unmarshal(marshal(sl)); - - assert sl1.link() == sl1; - } - - /** - * @throws Exception If failed. - */ - public void testInvalid() throws Exception { - GridTestUtils.assertThrows( - log, - new Callable() { - @Override public Object call() throws Exception { - byte[] arr = new byte[10]; - - arr[0] = (byte)200; - - unmarshal(arr); - - return null; - } - }, - IgniteCheckedException.class, - null - ); - } - - /** - * @throws Exception If failed. - */ - public void testNested() throws Exception { - NestedTestObject obj = new NestedTestObject("String", 100); - - NestedTestObject newObj = unmarshal(marshal(obj)); - - assertEquals("String", newObj.str); - assertEquals(100, newObj.val); - } - - /** - * Class for nested execution test. - */ - private static class NestedTestObject implements Serializable { - /** */ - private String str; - - /** */ - private int val; - - /** - * @param str String. - * @param val Value. - */ - private NestedTestObject(String str, int val) { - this.str = str; - this.val = val; - } - - /** {@inheritDoc} */ - private void writeObject(ObjectOutputStream out) throws IOException { - try { - byte[] arr = marshal(str); - - out.writeInt(arr.length); - out.write(arr); - - out.writeInt(val); - } - catch (IgniteCheckedException e) { - throw new IOException(e); - } - } - - /** {@inheritDoc} */ - @SuppressWarnings("UnusedParameters") - private void readObject(ObjectInputStream in) throws IOException { - try { - byte[] arr = new byte[in.readInt()]; - - in.read(arr); - - str = unmarshal(arr); - - val = in.readInt(); - } - catch (IgniteCheckedException e) { - throw new IOException(e); - } - } - } - - /** */ - private static class TestObject2 { - /** */ - private final int i; - - /** - * Constructor for TestObject2 instances. - * - * @param i Integer value to hold. - */ - private TestObject2(int i) { - this.i = i; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - return i == ((TestObject2)o).i; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return i; - } - } - - /** - * Static nested class. - */ - private static class TestObject { - /** */ - private final TestObject2 o2; - - /** The only meaningful field in the class, used for {@link #equals(Object o)} and {@link #hashCode()}. */ - private final String str; - - /** - * @param str String to hold. - * @param i Integer. - */ - TestObject(String str, int i) { - this.str = str; - - o2 = new TestObject2(i); - } - - /** - * Method for accessing value of the hold string after the object is created. - * - * @return Wrapped string. - */ - public String string() { - return str; - } - - /** - * @return Object held in this wrapped. - */ - public TestObject2 obj() { - return o2; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return 31 * o2.hashCode() + str.hashCode(); - } - - /** {@inheritDoc} */ - @SuppressWarnings("RedundantIfStatement") - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null || getClass() != o.getClass()) - return false; - - TestObject obj = (TestObject)o; - - if (o2 != null ? !o2.equals(obj.o2) : obj.o2 != null) - return false; - - if (str != null ? !str.equals(obj.str) : obj.str != null) - return false; - - return true; - } - } - - /** - * Static nested class. - */ - private static class SelfLink extends TestObject { - /** */ - private SelfLink link; - - /** - * @param str String to hold. - */ - SelfLink(String str) { - super(str, 1); - } - - /** - * @return The object this link points to,. - */ - public SelfLink link() { - return link; - } - - /** - * @param link The object this link should points to, - */ - public void link(SelfLink link) { - this.link = link; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/a1b5b8c3/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java deleted file mode 100644 index ef05009..0000000 --- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.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.marshaller.optimized; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.ObjectStreamField; -import java.io.Serializable; -import org.apache.ignite.marshaller.GridMarshallerAbstractTest; -import org.apache.ignite.marshaller.Marshaller; - -/** - * Test that Optimized Marshaller works with classes with serialPersistentFields. - */ -public class OptimizedMarshallerSerialPersistentFieldsSelfTest extends GridMarshallerAbstractTest { - /** {@inheritDoc} */ - @Override protected Marshaller marshaller() { - return new OptimizedMarshaller(false); - } - - /** - * @throws Exception If failed. - */ - public void testOptimizedMarshaller() throws Exception { - unmarshal(marshal(new TestClass())); - - TestClass2 val = unmarshal(marshal(new TestClass2())); - - assertNull(val.field3); - } - - /** - * Test class with serialPersistentFields fields. - */ - private static class TestClass implements Serializable { - private static final long serialVersionUID = 0L; - - /** For serialization compatibility. */ - private static final ObjectStreamField[] serialPersistentFields = { - new ObjectStreamField("field1", Integer.TYPE), - new ObjectStreamField("field2", Integer.TYPE) - }; - - /** - * @param s Object output stream. - */ - private void writeObject(ObjectOutputStream s) throws IOException { - s.putFields().put("field1", 1); - s.putFields().put("field2", 2); - s.writeFields(); - - s.writeObject(null); - } - - /** - * @param s Object input stream. - */ - private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { - s.defaultReadObject(); - - s.readObject(); - } - } - - /** - * Test class with serialPersistentFields fields. - */ - private static class TestClass2 implements Serializable { - private static final long serialVersionUID = 0L; - - private Integer field3 = 1; - - /** For serialization compatibility. */ - private static final ObjectStreamField[] serialPersistentFields = { - new ObjectStreamField("field1", Integer.TYPE), - new ObjectStreamField("field2", Integer.TYPE) - }; - - /** - * @param s Object output stream. - */ - private void writeObject(ObjectOutputStream s) throws IOException { - s.putFields().put("field1", 1); - s.putFields().put("field2", 2); - s.writeFields(); - - s.writeObject(null); - } - - /** - * @param s Object input stream. - */ - private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { - s.defaultReadObject(); - - s.readObject(); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/a1b5b8c3/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java deleted file mode 100644 index 2658a29..0000000 --- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java +++ /dev/null @@ -1,790 +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.marshaller.optimized; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.io.Serializable; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.net.InetSocketAddress; -import java.util.Arrays; -import java.util.Collection; -import java.util.concurrent.ConcurrentMap; -import org.apache.ignite.Ignite; -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.compute.ComputeJobAdapter; -import org.apache.ignite.compute.ComputeTask; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.marshaller.GridMarshallerTestInheritedBean; -import org.apache.ignite.marshaller.Marshaller; -import org.apache.ignite.marshaller.MarshallerContextTestImpl; -import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; -import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; -import org.jetbrains.annotations.Nullable; - -/** - * - */ -public class OptimizedMarshallerTest extends GridCommonAbstractTest { - /** - * @return Marshaller. - */ - private OptimizedMarshaller marshaller() { - U.clearClassCache(); - - OptimizedMarshaller marsh = new OptimizedMarshaller(); - - marsh.setContext(new MarshallerContextTestImpl()); - - return marsh; - } - - /** - * Tests ability to marshal non-serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testNonSerializable() throws IgniteCheckedException { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(false); - - NonSerializable outObj = marsh.unmarshal(marsh.marshal(new NonSerializable(null)), null); - - outObj.checkAfterUnmarshalled(); - } - - /** - * Tests ability to marshal non-serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testNonSerializable1() throws IgniteCheckedException { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(false); - - byte[] bytes = marsh.marshal(new TcpDiscoveryVmIpFinder()); - - TcpDiscoveryIpFinder ipFinder = marsh.unmarshal(bytes, null); - - assertFalse(ipFinder.isShared()); - - ipFinder = marsh.unmarshal(marsh.marshal(new TcpDiscoveryVmIpFinder(true)), null); - - assertTrue(ipFinder.isShared()); - } - - /** - * Tests ability to marshal non-serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testNonSerializable2() throws IgniteCheckedException { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(false); - - TcpDiscoveryIpFinderAdapter ipFinder = new TcpDiscoveryIpFinderAdapter() { - @Override public Collection getRegisteredAddresses() { - return null; - } - - @Override public void registerAddresses(Collection addrs) { - //No-op. - } - - @Override public void unregisterAddresses(Collection addrs) { - //No-op. - } - }; - - ipFinder.setShared(false); - - byte[] bytes = marsh.marshal(ipFinder); - - ipFinder = marsh.unmarshal(bytes, null); - - assertFalse(ipFinder.isShared()); - } - - /** - * Tests ability to marshal non-serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testNonSerializable3() throws IgniteCheckedException { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(false); - - byte[] bytes = marsh.marshal(new TestTcpDiscoveryIpFinderAdapter()); - - TcpDiscoveryIpFinder ipFinder = marsh.unmarshal(bytes, null); - - assertFalse(ipFinder.isShared()); - } - - /** - * Tests ability to marshal non-serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testNonSerializable4() throws IgniteCheckedException { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(false); - - byte[] bytes = marsh.marshal(new GridMarshallerTestInheritedBean()); - - info(Arrays.toString(bytes)); - - GridMarshallerTestInheritedBean bean = marsh.unmarshal(bytes, null); - - assertTrue(bean.isFlag()); - } - - /** - * Tests ability to marshal non-serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testNonSerializable5() throws IgniteCheckedException { - Marshaller marsh = marshaller(); - - byte[] bytes = marsh.marshal(true); - - Boolean val = marsh.unmarshal(bytes, null); - - assertTrue(val); - } - - /** - * Tests ability to marshal serializable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testSerializable() throws IgniteCheckedException { - Marshaller marsh = marshaller(); - - SomeSerializable outObj = marsh.unmarshal(marsh.marshal(new SomeSerializable(null)), null); - - outObj.checkAfterUnmarshalled(); - } - - /** - * @throws IgniteCheckedException If failed. - */ - public void testSerializableAfterChangingValue() throws IgniteCheckedException { - Marshaller marsh = marshaller(); - - SomeSimpleSerializable newObj = new SomeSimpleSerializable(); - - assert(newObj.flag); - - newObj.setFlagValue(false); - - assert(! newObj.flag); - - SomeSimpleSerializable outObj = marsh.unmarshal(marsh.marshal(newObj), null); - - assert (! outObj.flag); - } - - /** - * Tests ability to marshal externalizable objects. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testExternalizable() throws IgniteCheckedException { - Marshaller marsh = marshaller(); - - ExternalizableA outObj = marsh.unmarshal(marsh.marshal(new ExternalizableA(null, true)), null); - ExternalizableA outObj1 = marsh.unmarshal(marsh.marshal(new ExternalizableA(null, false)), null); - - assertNotNull(outObj); - assertNotNull(outObj1); - } - - /** - * Tests {@link OptimizedMarshaller#setRequireSerializable(boolean)}. - */ - public void testRequireSerializable() { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(true); - - try { - marsh.marshal(new NonSerializable(null)); - - fail(); - } - catch (IgniteCheckedException ignore) { - // No-op. - } - } - - /** - * Tests {@link Proxy}. - * - * @throws IgniteCheckedException If marshalling failed. - */ - public void testProxy() throws IgniteCheckedException { - OptimizedMarshaller marsh = marshaller(); - - marsh.setRequireSerializable(false); - - SomeItf inItf = (SomeItf)Proxy.newProxyInstance( - OptimizedMarshallerTest.class.getClassLoader(), new Class[] {SomeItf.class}, - new InvocationHandler() { - private NonSerializable obj = new NonSerializable(null); - - @Override public Object invoke(Object proxy, Method mtd, Object[] args) throws Throwable { - obj.checkAfterUnmarshalled(); - - return 17; - } - } - ); - - SomeItf outItf = marsh.unmarshal(marsh.marshal(inItf), null); - - assertEquals(outItf.checkAfterUnmarshalled(), 17); - } - - /** - * @throws Exception If failed. - */ - public void testDescriptorCache() throws Exception { - try { - Ignite ignite = startGridsMultiThreaded(2); - - String taskClsName = "org.apache.ignite.tests.p2p.SingleSplitTestTask"; - String jobClsName = "org.apache.ignite.tests.p2p.SingleSplitTestTask$SingleSplitTestJob"; - - ClassLoader ldr = getExternalClassLoader(); - - Class> taskCls = (Class>)ldr.loadClass(taskClsName); - Class> jobCls = (Class>)ldr.loadClass(jobClsName); - - ignite.compute().localDeployTask(taskCls, ldr); - - ignite.compute().execute(taskClsName, 2); - - ConcurrentMap, OptimizedClassDescriptor> cache = - U.field(ignite.configuration().getMarshaller(), "clsMap"); - - assertTrue(cache.containsKey(jobCls)); - - ignite.compute().undeployTask(taskClsName); - - // Wait for undeploy. - Thread.sleep(1000); - - assertFalse(cache.containsKey(jobCls)); - } - finally { - stopAllGrids(); - } - } - - /** - * @throws Exception If failed. - */ - public void testPerformance() throws Exception { - System.gc(); - - checkPerformance(10000, 4); - } - - /** - * @param cnt Number of marshalling attempts. - * @param tries Number of retries. - * @throws Exception If failed. - */ - private void checkPerformance(int cnt, int tries) throws Exception { - Marshaller marsh = marshaller(); - - for (int j = 0; j < tries; j++) { - System.gc(); - - long start = System.currentTimeMillis(); - - for (int i = 0; i < cnt; i++) { - TestCacheKey key = new TestCacheKey("key", "id"); - - TestCacheKey outKey = marsh.unmarshal(marsh.marshal(key), null); - - assert key.equals(outKey); - assert key.hashCode() == outKey.hashCode(); - } - - info("Time non-serializable: " + (System.currentTimeMillis() - start)); - - System.gc(); - - start = System.currentTimeMillis(); - - for (int i = 0; i < cnt; i++) { - TestCacheKeySerializable key1 = new TestCacheKeySerializable("key", "id"); - - TestCacheKeySerializable outKey = marsh.unmarshal(marsh.marshal(key1), null); - - assert key1.equals(outKey); - assert key1.hashCode() == outKey.hashCode(); - } - - info("Time serializable: " + (System.currentTimeMillis() - start)); - - System.gc(); - - start = System.currentTimeMillis(); - - for (int i = 0; i < cnt; i++) { - TestCacheKeyExternalizable key2 = new TestCacheKeyExternalizable("key", "id"); - - TestCacheKeyExternalizable outKey = marsh.unmarshal(marsh.marshal(key2), null); - - assert key2.equals(outKey); - assert key2.hashCode() == outKey.hashCode(); - } - - info("Time externalizable: " + (System.currentTimeMillis() - start)); - - info(">>>"); - } - - info(">>> Finished performance check <<<"); - } - - /** - * Some non-serializable class. - */ - @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","FieldMayBeStatic"}) - private static class NonSerializableA { - /** */ - private final long longVal = 0x33445566778899AAL; - - /** */ - protected Short shortVal = (short)0xAABB; - - /** */ - public String[] strArr = {"AA","BB"}; - - /** */ - public boolean flag1 = true; - - /** */ - public boolean flag2; - - /** */ - public Boolean flag3; - - /** */ - public Boolean flag4 = true; - - /** */ - public Boolean flag5 = false; - - /** */ - private transient int intVal = 0xAABBCCDD; - - /** - * @param strArr Array. - * @param shortVal Short value. - */ - @SuppressWarnings( {"UnusedDeclaration"}) - private NonSerializableA(@Nullable String[] strArr, @Nullable Short shortVal) { - // No-op. - } - - /** - * Checks correctness of the state after unmarshalling. - */ - void checkAfterUnmarshalled() { - assertEquals(longVal, 0x33445566778899AAL); - - assertEquals(shortVal.shortValue(), (short)0xAABB); - - assertTrue(Arrays.equals(strArr, new String[] {"AA","BB"})); - - assertEquals(intVal, 0); - - assertTrue(flag1); - assertFalse(flag2); - assertNull(flag3); - assertTrue(flag4); - assertFalse(flag5); - } - } - - /** - * Some non-serializable class. - */ - @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","PackageVisibleInnerClass"}) - static class NonSerializableB extends NonSerializableA { - /** */ - public Short shortVal = 0x1122; - - /** */ - public long longVal = 0x8877665544332211L; - - /** */ - private transient NonSerializableA[] aArr = { - new NonSerializableA(null, null), - new NonSerializableA(null, null), - new NonSerializableA(null, null) - }; - - /** */ - protected Double doubleVal = 123.456; - - /** - * Just to eliminate the default constructor. - */ - private NonSerializableB() { - super(null, null); - } - - /** - * Checks correctness of the state after unmarshalling. - */ - @Override void checkAfterUnmarshalled() { - super.checkAfterUnmarshalled(); - - assertEquals(shortVal.shortValue(), 0x1122); - - assertEquals(longVal, 0x8877665544332211L); - - assertNull(aArr); - - assertEquals(doubleVal, 123.456); - } - } - - /** - * Some non-serializable class. - */ - @SuppressWarnings( {"TransientFieldInNonSerializableClass","PublicField"}) - private static class NonSerializable extends NonSerializableB { - /** */ - private int idVal = -17; - - /** */ - private final NonSerializableA aVal = new NonSerializableB(); - - /** */ - private transient NonSerializableB bVal = new NonSerializableB(); - - /** */ - private NonSerializableA[] bArr = new NonSerializableA[] { - new NonSerializableB(), - new NonSerializableA(null, null) - }; - - /** */ - public float floatVal = 567.89F; - - /** - * Just to eliminate the default constructor. - * - * @param aVal Unused. - */ - @SuppressWarnings( {"UnusedDeclaration"}) - private NonSerializable(NonSerializableA aVal) { - } - - /** - * Checks correctness of the state after unmarshalling. - */ - @Override void checkAfterUnmarshalled() { - super.checkAfterUnmarshalled(); - - assertEquals(idVal, -17); - - aVal.checkAfterUnmarshalled(); - - assertNull(bVal); - - for (NonSerializableA a : bArr) { - a.checkAfterUnmarshalled(); - } - - assertEquals(floatVal, 567.89F); - } - } - - /** - * Some serializable class. - */ - @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","PackageVisibleInnerClass"}) - static class ForSerializableB { - /** */ - public Short shortVal = 0x1122; - - /** */ - public long longVal = 0x8877665544332211L; - - /** */ - private transient NonSerializableA[] aArr; - - /** */ - private transient String strVal = "abc"; - - /** */ - protected Double doubleVal = 123.456; - - /** - */ - protected void init() { - shortVal = 0x1122; - - longVal = 0x8877665544332211L; - - aArr = new NonSerializableA[] { - new NonSerializableA(null, null), - new NonSerializableA(null, null), - new NonSerializableA(null, null) - }; - } - - /** - * Checks correctness of the state after unmarshalling. - */ - void checkAfterUnmarshalled() { - assertEquals(shortVal.shortValue(), 0x1122); - - assertEquals(longVal, 0x8877665544332211L); - - assertNull(aArr); - - assertNull(strVal); - - assertEquals(doubleVal, 123.456); - } - } - - /** - * Some serializable class. - */ - private static class SomeSimpleSerializable extends ComputeJobAdapter { - /** */ - private boolean flag = true; - - /** - * @param newFlagVal - The new value of flag field. - */ - public void setFlagValue(boolean newFlagVal) { - flag = newFlagVal; - } - - /** {@inheritDoc} */ - @Override public Object execute() { - assert false; - - return null; - } - } - /** - * Some serializable class. - */ - private static class SomeSerializable extends ForSerializableB implements Serializable { - /** - * Just to eliminate the default constructor. - * - * @param id Unused. - */ - @SuppressWarnings( {"UnusedDeclaration"}) - private SomeSerializable(Long id) { - init(); - } - } - - /** - */ - private static interface SomeItf { - /** - * @return Check result. - */ - int checkAfterUnmarshalled(); - } - - /** - * Some externalizable class. - */ - @SuppressWarnings( {"UnusedDeclaration", "PublicField"}) - private static class ExternalizableA implements Externalizable { - /** */ - private boolean boolVal; - - /** */ - public String[] strArr; - - /** No-arg constructor is required by externalization. */ - public ExternalizableA() { - // No-op. - } - - /** - * - * @param strArr String array. - * @param boolVal Boolean value. - */ - private ExternalizableA(String[] strArr, boolean boolVal) { - this.strArr = strArr; - this.boolVal = boolVal; - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeBoolean(false); - out.writeBoolean(false); - out.writeBoolean(false); - out.writeBoolean(false); - out.writeBoolean(false); - out.writeBoolean(false); - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - boolVal = in.readBoolean(); - in.readBoolean(); - in.readBoolean(); - in.readBoolean(); - in.readBoolean(); - in.readBoolean(); - } - } - - /** - * - */ - private static class TestCacheKey implements Serializable { - /** */ - private String key; - - /** */ - @SuppressWarnings({"UnusedDeclaration"}) - private String terminalId; - - /** - * @param key Key. - * @param terminalId Some ID. - */ - TestCacheKey(String key, String terminalId) { - this.key = key; - this.terminalId = terminalId; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return key.hashCode(); - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object obj) { - return obj instanceof TestCacheKey && key.equals(((TestCacheKey)obj).key); - } - } - - /** - * - */ - private static class TestCacheKeySerializable implements Serializable { - /** */ - private String key; - - /** */ - @SuppressWarnings({"UnusedDeclaration"}) - private String terminalId; - - /** - * @param key Key. - * @param terminalId Some ID. - */ - TestCacheKeySerializable(String key, String terminalId) { - this.key = key; - this.terminalId = terminalId; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return key.hashCode(); - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object obj) { - return obj instanceof TestCacheKeySerializable && key.equals(((TestCacheKeySerializable)obj).key); - } - } - - /** - * - */ - private static class TestCacheKeyExternalizable implements Externalizable { - /** */ - private String key; - - /** */ - private String terminalId; - - /** - * - */ - public TestCacheKeyExternalizable() { - // No-op. - } - - /** - * @param key Key. - * @param terminalId Some ID. - */ - TestCacheKeyExternalizable(String key, String terminalId) { - this.key = key; - this.terminalId = terminalId; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return key.hashCode(); - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object obj) { - return obj instanceof TestCacheKeyExternalizable && key.equals(((TestCacheKeyExternalizable)obj).key); - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - U.writeString(out, key); - U.writeString(out, terminalId); - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - key = U.readString(in); - terminalId = U.readString(in); - } - } -} \ No newline at end of file