public void Test_1096_ByteArrayContentSame()
        {
            var ss = new SerializationServiceBuilder()
                     .AddPortableFactory(TestSerializationConstants.PORTABLE_FACTORY_ID, new TestPortableFactory()).Build();

            AssertRepeatedSerialisationGivesSameByteArrays(ss, new NamedPortable("issue-1096", 1096));

            AssertRepeatedSerialisationGivesSameByteArrays(ss, new InnerPortable(new byte[3], new char[5], new short[2],
                                                                                 new int[10], new long[7], new float[9], new double[1], new[] { new NamedPortable("issue-1096", 1096) }));

            AssertRepeatedSerialisationGivesSameByteArrays(ss,
                                                           new RawDataPortable(1096L, "issue-1096".ToCharArray(), new NamedPortable("issue-1096", 1096), 1096,
                                                                               "issue-1096", new ByteArrayDataSerializable(new byte[1])));
        }
        public void Test_Issue2172_WritePortableArray()
        {
            var ss           = new SerializationServiceBuilder().SetInitialOutputBufferSize(16).Build();
            var testObject2s = new TestObject2[100];

            for (var i = 0; i < testObject2s.Length; i++)
            {
                testObject2s[i] = new TestObject2();
            }

            var testObject1 = new TestObject1(testObject2s);

            ss.ToData(testObject1);
        }
        public void TestAddDataSerializableFactoryClass()
        {
            var service1 = new SerializationServiceBuilder().Build();
            var data     = service1.ToData(new DataSerializableBasicType());

            var config = new SerializationConfig();

            config.AddDataSerializableFactoryClass(1, typeof(MyDataSerializableFactory));
            var service = new SerializationServiceBuilder().SetConfig(config).Build();

            var obj = service.ToObject <object>(data);

            Assert.IsInstanceOf <DataSerializableBasicType>(obj);
        }
Ejemplo n.º 4
0
        public void TestAddDataSerializableFactory()
        {
            var service1 = new SerializationServiceBuilder(new NullLoggerFactory()).Build();
            var data     = service1.ToData(new DataSerializableBasicType());

            var config = new SerializationOptions();

            config.AddDataSerializableFactory(1, new MyDataSerializableFactory());
            var service = new SerializationServiceBuilder(new NullLoggerFactory()).SetConfig(config).Build();

            var obj = service.ToObject <object>(data);

            Assert.IsInstanceOf <DataSerializableBasicType>(obj);
        }
        public void TestNullValue_When_ValueType()
        {
            Assert.Throws <HazelcastSerializationException>(() =>
            {
                var ss = new SerializationServiceBuilder()
                         .Build();

                var output = ss.CreateObjectDataOutput(1024);
                ss.WriteObject(output, null);

                var input = ss.CreateObjectDataInput(output.ToByteArray());
                ss.ReadObject <int>(input);
            });
        }
        public virtual void Test()
        {
            var portableFactory = new PortableFactoryFunc(i =>
            {
                if (i == 1)
                {
                    return(new PortablePerson());
                }
                if (i == 2)
                {
                    return(new PortableAddress());
                }
                throw new ArgumentException();
            });

            var ss = new SerializationServiceBuilder()
                     .AddPortableFactory(FactoryId, portableFactory).Build();
            var k     = 10;
            var tasks = new Task[k];

            for (var i = 0; i < k; i++)
            {
                tasks[i] = Task.Factory.StartNew(() =>
                {
                    for (var j = 0; j < 10000; j++)
                    {
                        var key     = "key" + Rnd();
                        var dataKey = ss.ToData(key);
                        Assert.AreEqual(key, ss.ToObject <string>(dataKey));
                        var value     = 123L + Rnd();
                        var dataValue = ss.ToData(value);
                        Assert.AreEqual(value, ss.ToObject <long>(dataValue));
                        var address     = new Address("here here" + Rnd(), 13131 + Rnd());
                        var dataAddress = ss.ToData(address);
                        Assert.AreEqual(address, ss.ToObject <Address>(dataAddress));
                        var person     = new Person(13 + Rnd(), 199L + Rnd(), 56.89d, "mehmet", address);
                        var dataPerson = ss.ToData(person);
                        Assert.AreEqual(person, ss.ToObject <Person>(dataPerson));
                        var portableAddress     = new PortableAddress("there there " + Rnd(), 90909 + Rnd());
                        var dataPortableAddress = ss.ToData(portableAddress);
                        Assert.AreEqual(portableAddress, ss.ToObject <PortableAddress>(dataPortableAddress));
                        var portablePerson     = new PortablePerson(63 + Rnd(), 167L + Rnd(), "ahmet", portableAddress);
                        var dataPortablePerson = ss.ToData(portablePerson);
                        Assert.AreEqual(portablePerson, ss.ToObject <PortablePerson>(dataPortablePerson));
                    }
                });
            }
            Task.WaitAll(tasks, new TimeSpan(0, 0, 0, 30));
        }
Ejemplo n.º 7
0
        public void TestAddPortableFactoryClass()
        {
            var service1 = new SerializationServiceBuilder().Build();
            var data     = service1.ToData(new KitchenSinkPortable());

            var config = new SerializationConfig();

            config.AddPortableFactoryClass(1, typeof(KitchenSinkPortableFactory));

            var service = new SerializationServiceBuilder().SetConfig(config).Build();

            var obj = service.ToObject <object>(data);

            Assert.IsInstanceOf <KitchenSinkPortable>(obj);
        }
Ejemplo n.º 8
0
        public void TestNullValue_When_NullableType()
        {
            var ss = new SerializationServiceBuilder()
                     .Build();

            var output = ss.CreateObjectDataOutput(1024);

            ss.WriteObject(output, 1);
            ss.WriteObject(output, null);

            var input = ss.CreateObjectDataInput(output.ToByteArray());

            Assert.AreEqual(1, ss.ReadObject <int?>(input));
            Assert.IsNull(ss.ReadObject <int?>(input));
        }
        public void PagingPredicateHolderTest()
        {
            var serializationService = new SerializationServiceBuilder(new NullLoggerFactory())
                                       .AddHook <PredicateDataSerializerHook>()
                                       .Build();

            var anchorDataListHolder = GetAnchorDataListHolder(serializationService, out var pageList, out var dataList);

            var predicateData    = new HeapData();
            var comparatorData   = new HeapData();
            var partitionKeyData = new HeapData();

            var holder = new PagingPredicateHolder(anchorDataListHolder, predicateData, comparatorData, 5, 12, 3, partitionKeyData);

            Assert.That(holder.AnchorDataListHolder, Is.SameAs(anchorDataListHolder));
            Assert.That(holder.PredicateData, Is.SameAs(predicateData));
            Assert.That(holder.ComparatorData, Is.SameAs(comparatorData));
            Assert.That(holder.PageSize, Is.EqualTo(5));
            Assert.That(holder.Page, Is.EqualTo(12));
            Assert.That(holder.IterationTypeId, Is.EqualTo(3));
            Assert.That(holder.PartitionKeyData, Is.SameAs(partitionKeyData));

            var predicate = new PagingPredicate(5)
            {
                IterationType = IterationType.Key
            };

            predicate.UpdateAnchors(new List <KeyValuePair <int, KeyValuePair <object, object> > >
            {
                new KeyValuePair <int, KeyValuePair <object, object> >(1, new KeyValuePair <object, object>("key", "value"))
            });

            holder = PagingPredicateHolder.Of(predicate, serializationService);
            Assert.That(holder.PageSize, Is.EqualTo(5));

            holder = PagingPredicateHolder.Of(new PartitionPredicate("key", new PagingPredicate(5)
            {
                IterationType = IterationType.Key
            }), serializationService);
            Assert.That(holder.PageSize, Is.EqualTo(5));

            Assert.That(PagingPredicateHolder.Of(null, serializationService), Is.Null);

            Assert.Throws <InvalidOperationException>(() => _ = PagingPredicateHolder.Of(new PagingPredicate(5), serializationService));

            Assert.Throws <InvalidOperationException>(() => _ = PagingPredicateHolder.Of(new AndPredicate(), serializationService));
            Assert.Throws <InvalidOperationException>(() => _ = PagingPredicateHolder.Of(new PartitionPredicate(), serializationService));
        }
Ejemplo n.º 10
0
        public void TestSerializationService_CreatePortableReader()
        {
            var serializationService = new SerializationServiceBuilder(new NullLoggerFactory()).Build();

            var timestamp1  = TestUtils.RandomLong();
            var child       = new ChildPortableObject(timestamp1);
            var timestamp2  = TestUtils.RandomLong();
            var parent      = new ParentPortableObject(timestamp2, child);
            var timestamp3  = timestamp1 + timestamp2;
            var grandParent = new GrandParentPortableObject(timestamp3, parent);

            var data   = serializationService.ToData(grandParent);
            var reader = serializationService.CreatePortableReader(data);

            Assert.AreEqual(grandParent.timestamp, reader.ReadLong("timestamp"));
            Assert.AreEqual(parent.timestamp, reader.ReadLong("child.timestamp"));
            Assert.AreEqual(child.timestamp, reader.ReadLong("child.child.timestamp"));
        }
        public void TestGlobalSerializer()
        {
            var config = new SerializationConfig();

            config.ConfigureGlobalSerializer(gs =>
            {
                gs.TypeName = typeof(GlobalSerializer).AssemblyQualifiedName;
            });
            var ss  = new SerializationServiceBuilder().SetConfig(config).Build();
            var foo = new CustomSerializableType {
                Value = "fooooo"
            };

            var d      = ss.ToData(foo);
            var newFoo = ss.ToObject <CustomSerializableType>(d);

            Assert.AreEqual(newFoo.Value, foo.Value);
        }
        public virtual void TestReadWrite(ByteOrder byteOrder)
        {
            var obj = KitchenSinkDataSerializable.Generate();

            obj.Serializable = KitchenSinkDataSerializable.Generate();

            var ss = new SerializationServiceBuilder().SetUseNativeByteOrder(false).SetByteOrder(byteOrder).Build();

            IObjectDataOutput output = ss.CreateObjectDataOutput(1024);

            output.WriteObject(obj);

            IObjectDataInput input = ss.CreateObjectDataInput(output.ToByteArray());
            var readObj            = input.ReadObject <object>();

            Assert.AreEqual(obj, readObj);

            ss.Destroy();
        }
        public void AnchorDataListHolderTest()
        {
            var serializationService = new SerializationServiceBuilder(new NullLoggerFactory()).Build();

            var holder = GetAnchorDataListHolder(serializationService, out var pageList, out var dataList);

            Assert.That(holder.AnchorPageList, Is.SameAs(pageList));
            Assert.That(holder.AnchorDataList, Is.SameAs(dataList));

            var anchors = holder.AsAnchorIterator(serializationService).ToArray();

            Assert.That(anchors.Length, Is.EqualTo(4));
            for (var i = 0; i < 4; i++)
            {
                Assert.That(anchors[i].Key, Is.EqualTo(i));
                Assert.That(anchors[i].Value.Key, Is.EqualTo(i + 1));
                Assert.That(anchors[i].Value.Value, Is.EqualTo(i + 2));
            }
        }
        public virtual void TestCustomSerialize()
        {
            var config = new SerializationConfig();

            var sc = new SerializerConfig()
                     .SetImplementation(new CustomSerializer())
                     .SetTypeClass(typeof(CustomSerializableType));

            config.SerializerConfigs.Add(sc);
            var ss = new SerializationServiceBuilder().SetConfig(config).Build();

            var foo = new CustomSerializableType {
                Value = "fooooo"
            };

            var d      = ss.ToData(foo);
            var newFoo = ss.ToObject <CustomSerializableType>(d);

            Assert.AreEqual(newFoo.Value, foo.Value);
        }
Ejemplo n.º 15
0
        public virtual void TestInputOutputWithPortableReader(Endianness endianness)
        {
            var portable = KitchenSinkPortable.Generate();

            var config = new SerializationOptions();

            config.AddPortableFactory(KitchenSinkPortableFactory.FactoryId, typeof(KitchenSinkPortableFactory));

            using var ss = new SerializationServiceBuilder(new NullLoggerFactory()).SetConfig(config)
                           .SetEndianness(endianness).Build();

            var data   = ss.ToData(portable);
            var reader = ss.CreatePortableReader(data);

            var actual = new KitchenSinkPortable();

            actual.ReadPortable(reader);

            Assert.AreEqual(portable, actual);
        }
        public void TestGlobalSerializer()
        {
            var config = new SerializationOptions();

            config.DefaultSerializer = new SerializerOptions
            {
                Creator = () => (ISerializer)ServiceFactory.CreateInstance(typeof(GlobalSerializer).AssemblyQualifiedName)
            };

            var ss = new SerializationServiceBuilder(new NullLoggerFactory()).SetConfig(config).Build();

            var foo = new CustomSerializableType {
                Value = "fooooo"
            };

            var d      = ss.ToData(foo);
            var newFoo = ss.ToObject <CustomSerializableType>(d);

            Assert.AreEqual(newFoo.Value, foo.Value);
        }
 private HazelcastClient(Configuration config)
 {
     Configuration       = config;
     HazelcastProperties = new HazelcastProperties(config.Properties);
     if (config.InstanceName != null)
     {
         _instanceName = config.InstanceName;
     }
     else
     {
         _instanceName = "hz.client_" + _id;
     }
     LifecycleService = new LifecycleService(this);
     try
     {
         //TODO make partition strategy parametric
         var partitioningStrategy = new DefaultPartitioningStrategy();
         SerializationService = new SerializationServiceBuilder().SetConfig(config.SerializationConfig)
                                .SetPartitioningStrategy(partitioningStrategy)
                                .SetVersion(IO.Serialization.SerializationService.SerializerVersion).Build();
     }
     catch (Exception e)
     {
         throw ExceptionUtil.Rethrow(e);
     }
     ProxyManager = new ProxyManager(this);
     //TODO EXECUTION SERVICE
     ExecutionService         = new ExecutionService(_instanceName);
     LoadBalancer             = config.LoadBalancer ?? new RoundRobinLB();
     PartitionService         = new PartitionService(this);
     AddressProvider          = new AddressProvider(Configuration.NetworkConfig, HazelcastProperties);
     ConnectionManager        = new ConnectionManager(this);
     InvocationService        = new InvocationService(this);
     ListenerService          = new ListenerService(this);
     ClusterService           = new ClusterService(this);
     LockReferenceIdGenerator = new ClientLockReferenceIdGenerator();
     // Statistics = new Statistics(this);
     NearCacheManager   = new NearCacheManager(this);
     CredentialsFactory = config.SecurityConfig.AsCredentialsFactory() ??
                          new StaticCredentialsFactory(new UsernamePasswordCredentials());
 }
Ejemplo n.º 18
0
        public virtual void TestDataInputOutputWithPortable(Endianness endianness)
        {
            var portable = KitchenSinkPortable.Generate();

            var config = new SerializationOptions();

            config.AddPortableFactory(KitchenSinkPortableFactory.FactoryId, typeof(KitchenSinkPortableFactory));

            using var ss = new SerializationServiceBuilder(new NullLoggerFactory()).SetConfig(config)
                           .SetEndianness(endianness).Build();

            IObjectDataOutput output = ss.CreateObjectDataOutput(1024);

            output.WriteObject(portable);
            var data = output.ToByteArray();

            IObjectDataInput input = ss.CreateObjectDataInput(data);
            var readObject         = input.ReadObject <IPortable>();

            Assert.AreEqual(portable, readObject);
        }
        public virtual void TestCustomSerialize()
        {
            var config = new SerializationOptions();

            var sc = new SerializerOptions
            {
                SerializedType = typeof(CustomSerializableType),
                Creator        = () => new CustomSerializer()
            };

            config.Serializers.Add(sc);
            var ss = new SerializationServiceBuilder(new NullLoggerFactory()).SetConfig(config).Build();

            var foo = new CustomSerializableType {
                Value = "fooooo"
            };

            var d      = ss.ToData(foo);
            var newFoo = ss.ToObject <CustomSerializableType>(d);

            Assert.AreEqual(newFoo.Value, foo.Value);
        }
Ejemplo n.º 20
0
        public virtual void TestInputOutputWithPortableReader(ByteOrder byteOrder)
        {
            var portable = KitchenSinkPortable.Generate();

            var config = new SerializationConfig();

            config.AddPortableFactoryClass(KitchenSinkPortableFactory.FactoryId, typeof(KitchenSinkPortableFactory));

            var ss = new SerializationServiceBuilder().SetConfig(config).
                     SetUseNativeByteOrder(false).SetByteOrder(byteOrder).Build();

            var data   = ss.ToData(portable);
            var reader = ss.CreatePortableReader(data);

            var actual = new KitchenSinkPortable();

            actual.ReadPortable(reader);

            Assert.AreEqual(portable, actual);

            ss.Destroy();
        }
Ejemplo n.º 21
0
        public virtual void TestReadWrite(Endianness endianness)
        {
            var obj = KitchenSinkDataSerializable.Generate();

            obj.Serializable = KitchenSinkDataSerializable.Generate();

            using var ss = new SerializationServiceBuilder(new NullLoggerFactory())
                           .AddDataSerializableFactory(1, new ArrayDataSerializableFactory(new Func <IIdentifiedDataSerializable>[]
            {
                () => new KitchenSinkDataSerializable(),
            }))
                           .SetEndianness(endianness).Build();

            IObjectDataOutput output = ss.CreateObjectDataOutput(1024);

            output.WriteObject(obj);

            IObjectDataInput input = ss.CreateObjectDataInput(output.ToByteArray());
            var readObj            = input.ReadObject <object>();

            Assert.AreEqual(obj, readObj);
        }
Ejemplo n.º 22
0
 private HazelcastClient(ClientConfig config)
 {
     ClientConfig = config;
     if (config.InstanceName != null)
     {
         _instanceName = config.InstanceName;
     }
     else
     {
         _instanceName = "hz.client_" + _id;
     }
     LifecycleService = new LifecycleService(this);
     try
     {
         //TODO make partition strategy parametric
         var partitioningStrategy = new DefaultPartitioningStrategy();
         SerializationService = new SerializationServiceBuilder().SetConfig(config.GetSerializationConfig())
                                .SetPartitioningStrategy(partitioningStrategy)
                                .SetVersion(IO.Serialization.SerializationService.SerializerVersion).Build();
     }
     catch (Exception e)
     {
         throw ExceptionUtil.Rethrow(e);
     }
     ProxyManager = new ProxyManager(this);
     //TODO EXECUTION SERVICE
     ExecutionService         = new ExecutionService(_instanceName, config.GetExecutorPoolSize());
     LoadBalancer             = config.GetLoadBalancer() ?? new RoundRobinLB();
     PartitionService         = new PartitionService(this);
     AddressProvider          = new AddressProvider(ClientConfig);
     ConnectionManager        = new ConnectionManager(this);
     InvocationService        = new InvocationService(this);
     ListenerService          = new ListenerService(this);
     ClusterService           = new ClusterService(this);
     LockReferenceIdGenerator = new ClientLockReferenceIdGenerator();
     // Statistics = new Statistics(this);
     NearCacheManager   = new NearCacheManager(this);
     CredentialsFactory = InitCredentialsFactory(config);
 }
        public void TestWriteObjectWithCustomSerializable()
        {
            var config = new SerializationConfig();
            var sc     = new SerializerConfig()
                         .SetImplementation(new CustomSerializer())
                         .SetTypeClass(typeof(CustomSerializableType));

            config.AddSerializerConfig(sc);
            var serializationService =
                new SerializationServiceBuilder().SetPortableVersion(1)
                .AddPortableFactory(TestSerializationConstants.PORTABLE_FACTORY_ID, new TestPortableFactory())
                .SetConfig(config).Build();

            var foo = new CustomSerializableType {
                Value = "foo"
            };

            var objectCarryingPortable1 = new ObjectCarryingPortable(foo);
            var data = serializationService.ToData(objectCarryingPortable1);
            var objectCarryingPortable2 = serializationService.ToObject <ObjectCarryingPortable>(data);

            Assert.AreEqual(objectCarryingPortable1, objectCarryingPortable2);
        }
Ejemplo n.º 24
0
        public virtual void TestDataInputOutputWithPortable(ByteOrder byteOrder)
        {
            var portable = KitchenSinkPortable.Generate();

            var config = new SerializationConfig();

            config.AddPortableFactoryClass(KitchenSinkPortableFactory.FactoryId, typeof(KitchenSinkPortableFactory));

            var ss = new SerializationServiceBuilder().SetConfig(config).
                     SetUseNativeByteOrder(false).SetByteOrder(byteOrder).Build();

            IObjectDataOutput output = ss.CreateObjectDataOutput(1024);

            output.WriteObject(portable);
            var data = output.ToByteArray();

            IObjectDataInput input = ss.CreateObjectDataInput(data);
            var readObject         = input.ReadObject <IPortable>();

            Assert.AreEqual(portable, readObject);

            ss.Destroy();
        }
        public void TestGlobalSerializerOverride()
        {
            var config = new SerializationOptions();
            var globalListSerializer = new GlobalListSerializer();

            config.GlobalSerializer = new GlobalSerializerOptions
            {
                Creator = () => globalListSerializer,
                OverrideClrSerialization = true
            };

            var ss = new SerializationServiceBuilder(new NullLoggerFactory()).SetConfig(config).Build();

            var list = new List <string> {
                "foo", "bar"
            };

            var d     = ss.ToData(list);
            var input = ss.CreateObjectDataInput(d);

            var actual = (List <string>)globalListSerializer.Read(input);

            Assert.AreEqual(list, actual);
        }
        public virtual void TestNestedPortableVersionedSerializer()
        {
            SerializationServiceBuilder builder1 = new SerializationServiceBuilder();

            builder1.SetPortableVersion(6);
            builder1.AddPortableFactory(1, new MyPortableFactory());
            ISerializationService ss1 = builder1.Build();

            SerializationServiceBuilder builder2 = new SerializationServiceBuilder();

            builder2.SetPortableVersion(6);
            builder2.AddPortableFactory(1, new MyPortableFactory());
            ISerializationService ss2 = builder2.Build();

            //make sure ss2 cached class definition of Child
            ss2.ToData(new Child("ubeyd"));

            //serialized parent from ss1
            Parent parent = new Parent(new Child("ubeyd"));
            IData  data   = ss1.ToData(parent);

            // cached class definition of Child and the class definition from data coming from ss1 should be compatible
            Assert.AreEqual(parent, ss2.ToObject <Parent>(data));
        }
        public void TestGlobalSerializerOverride()
        {
            var config = new SerializationConfig();

            var globalListSerializer = new GlobalListSerializer();

            config.ConfigureGlobalSerializer(gs =>
            {
                gs.Implementation           = globalListSerializer;
                gs.OverrideClrSerialization = true;
            });
            var ss = new SerializationServiceBuilder().SetConfig(config).Build();

            var list = new List <string> {
                "foo", "bar"
            };

            var d     = ss.ToData(list);
            var input = new ByteArrayObjectDataInput(d.ToByteArray(), HeapData.DataOffset, ss, ByteOrder.BigEndian);

            var actual = (List <string>)globalListSerializer.Read(input);

            Assert.AreEqual(list, actual);
        }