You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2017/04/14 11:22:43 UTC
[03/10] ignite git commit: IGNITE-4938: Moved OptimizedMarshaller to
private package. This closes #1793.
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<Integer, Object> cache0 = ignite(0).cache(null);
-
- for (int i = 0; i < 20; i++) {
- log.info("Iteration: " + i);
-
- Map<Integer, Object> 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<Object>() {
- @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<InetSocketAddress> getRegisteredAddresses() {
- return null;
- }
-
- @Override public void registerAddresses(Collection<InetSocketAddress> addrs) {
- //No-op.
- }
-
- @Override public void unregisterAddresses(Collection<InetSocketAddress> 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<? extends ComputeTask<?, ?>> taskCls = (Class<? extends ComputeTask<?, ?>>)ldr.loadClass(taskClsName);
- Class<? extends ComputeTask<?, ?>> jobCls = (Class<? extends ComputeTask<?, ?>>)ldr.loadClass(jobClsName);
-
- ignite.compute().localDeployTask(taskCls, ldr);
-
- ignite.compute().execute(taskClsName, 2);
-
- ConcurrentMap<Class<?>, 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