예제 #1
0
        public void TestDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            MulticastInst mi   = new MulticastInst(inst);

            Assert.IsFalse(mi.DefaultToIpv6);
            Assert.AreEqual("224.0.0.128:49152", mi.GroupAddress);
            Assert.AreEqual(string.Empty, mi.LocalAddress);
            Assert.AreEqual(32U, mi.NakDepth);
            Assert.AreEqual(4U, mi.NakDelayIntervals);
            Assert.IsNotNull(mi.NakInterval);
            Assert.AreEqual(0, mi.NakInterval.Seconds);
            Assert.AreEqual(500000, mi.NakInterval.MicroSeconds);
            Assert.AreEqual(3U, mi.NakMax);
            Assert.IsNotNull(mi.NakTimeout);
            Assert.AreEqual(30, mi.NakTimeout.Seconds);
            Assert.AreEqual(0, mi.NakTimeout.MicroSeconds);
            Assert.AreEqual(49152, mi.PortOffset);
            Assert.IsTrue(mi.Reliable);
            Assert.AreEqual(2.0, mi.SynBackoff);
            Assert.IsNotNull(mi.SynInterval);
            Assert.AreEqual(0, mi.SynInterval.Seconds);
            Assert.AreEqual(250000, mi.SynInterval.MicroSeconds);
            Assert.IsNotNull(mi.SynTimeout);
            Assert.AreEqual(30, mi.SynTimeout.Seconds);
            Assert.AreEqual(0, mi.SynTimeout.MicroSeconds);
            Assert.IsFalse(mi.AsyncSend);
            Assert.AreEqual(1, mi.Ttl);
            Assert.AreEqual(32U, mi.DatalinkControlChunks);
            Assert.AreEqual(10000, mi.DatalinkReleaseDelay);
            Assert.IsTrue(mi.IsReliable);
            Assert.AreEqual(2147481599u, mi.MaxPacketSize);
            Assert.AreEqual(10U, mi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, mi.Name);
            Assert.AreEqual(4096u, mi.OptimumPacketSize);
            Assert.AreEqual(5U, mi.QueueInitialPools);
            Assert.AreEqual(10U, mi.QueueMessagesPerPool);

            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                Assert.AreEqual(65536U, mi.RcvBufferSize);
            }
            else
            {
                Assert.AreEqual(65535U, mi.RcvBufferSize);
            }

            Assert.AreEqual(TRANSPORT_TYPE, mi.TransportType);
            Assert.IsFalse(mi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(mi);
        }
예제 #2
0
        public void TestNonDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            MulticastInst mi   = new MulticastInst(inst)
            {
                DefaultToIpv6     = true,
                GroupAddress      = "224.0.0.64:49150",
                LocalAddress      = "127.0.0.1:",
                NakDepth          = 64U,
                NakDelayIntervals = 8U,
                NakInterval       = new TimeValue
                {
                    Seconds      = 1,
                    MicroSeconds = 0,
                },
                NakMax     = 6U,
                NakTimeout = new TimeValue
                {
                    Seconds      = 10,
                    MicroSeconds = 500000,
                },
                PortOffset  = 49150,
                Reliable    = false,
                SynBackoff  = 1.5,
                SynInterval = new TimeValue
                {
                    Seconds      = 10,
                    MicroSeconds = 500000,
                },
                SynTimeout = new TimeValue
                {
                    Seconds      = 10,
                    MicroSeconds = 500000,
                },
                AsyncSend             = true,
                Ttl                   = 2,
                DatalinkControlChunks = 64U,
                DatalinkReleaseDelay  = 20000,
                MaxPacketSize         = 2147481500u,
                MaxSamplesPerPacket   = 20U,
                OptimumPacketSize     = 2048u,
                QueueInitialPools     = 10U,
                QueueMessagesPerPool  = 20U,
                RcvBufferSize         = 65530U,
                ThreadPerConnection   = true,
            };

            Assert.IsTrue(mi.DefaultToIpv6);
            Assert.AreEqual("224.0.0.64:49150", mi.GroupAddress);
            Assert.AreEqual("127.0.0.1:", mi.LocalAddress);
            Assert.AreEqual(64U, mi.NakDepth);
            Assert.AreEqual(8U, mi.NakDelayIntervals);
            Assert.IsNotNull(mi.NakInterval);
            Assert.AreEqual(1, mi.NakInterval.Seconds);
            Assert.AreEqual(0, mi.NakInterval.MicroSeconds);
            Assert.AreEqual(6U, mi.NakMax);
            Assert.IsNotNull(mi.NakTimeout);
            Assert.AreEqual(10, mi.NakTimeout.Seconds);
            Assert.AreEqual(500000, mi.NakTimeout.MicroSeconds);
            Assert.AreEqual(49150, mi.PortOffset);
            Assert.IsFalse(mi.Reliable);
            Assert.AreEqual(1.5, mi.SynBackoff);
            Assert.IsNotNull(mi.SynInterval);
            Assert.AreEqual(10, mi.SynInterval.Seconds);
            Assert.AreEqual(500000, mi.SynInterval.MicroSeconds);
            Assert.IsNotNull(mi.SynTimeout);
            Assert.AreEqual(10, mi.SynTimeout.Seconds);
            Assert.AreEqual(500000, mi.SynTimeout.MicroSeconds);
            Assert.IsTrue(mi.AsyncSend);
            Assert.AreEqual(2, mi.Ttl);
            Assert.AreEqual(64U, mi.DatalinkControlChunks);
            Assert.AreEqual(20000, mi.DatalinkReleaseDelay);
            Assert.IsFalse(mi.IsReliable);
            Assert.AreEqual(2147481500u, mi.MaxPacketSize);
            Assert.AreEqual(20U, mi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, mi.Name);
            Assert.AreEqual(2048u, mi.OptimumPacketSize);
            Assert.AreEqual(10U, mi.QueueInitialPools);
            Assert.AreEqual(20U, mi.QueueMessagesPerPool);
            Assert.AreEqual(65530U, mi.RcvBufferSize);
            Assert.AreEqual(TRANSPORT_TYPE, mi.TransportType);
            Assert.IsTrue(mi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(mi);
        }
예제 #3
0
        public void TestCreateInst()
        {
            // Create a RTPS UDP transport instance
            TransportInst inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "rtps_udp");

            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("rtps_udp", inst.TransportType);
            RtpsUdpInst rui = new RtpsUdpInst(inst);

            Assert.IsNotNull(rui);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a UDP transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "udp");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("udp", inst.TransportType);
            UdpInst udpi = new UdpInst(inst);

            Assert.IsNotNull(udpi);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a Multicast transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "multicast");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("multicast", inst.TransportType);
            MulticastInst multicasti = new MulticastInst(inst);

            Assert.IsNotNull(multicasti);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a Multicast transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "tcp");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("tcp", inst.TransportType);
            MulticastInst tcpi = new MulticastInst(inst);

            Assert.IsNotNull(tcpi);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a SharedMemory transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "shmem");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("shmem", inst.TransportType);
            ShmemInst shmemi = new ShmemInst(inst);

            Assert.IsNotNull(shmemi);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a instance with an invalid transport type
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "quantic_teletransport");
            Assert.IsNull(inst);

            // Try to create a transport instance with empty name
            bool exception = false;

            try
            {
                inst = TransportRegistry.Instance.CreateInst(null, "shmem");
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);

            exception = false;
            try
            {
                inst = TransportRegistry.Instance.CreateInst(string.Empty, "shmem");
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);

            exception = false;
            try
            {
                inst = TransportRegistry.Instance.CreateInst("  ", "shmem");
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);
        }