예제 #1
0
        public override Test.Framework.TestResult Run()
        {
            DDS.DomainParticipantFactory factory;
            DDS.IDomainParticipant       participant;
            DDS.DomainParticipantQos     pqosHolder     = null;
            DDS.TopicQos                   topQosHolder = null;
            DDS.ITopic                     topic;
            mod.tstTypeSupport             typeSupport = null;
            mod.tstDataReader              datareader;
            test.sacs.MyDataReaderListener listener;
            DDS.ISubscriber                subscriber;
            DDS.SubscriberQos              sqosHolder = null;
            DDS.DataReaderQos              dqosHolder = null;
            DDS.IPublisher                 publisher;
            DDS.PublisherQos               pubQosHolder = null;
            mod.tstDataWriter              datawriter;
            DDS.DataWriterQos              wqosHolder = null;
            Test.Framework.TestResult      result;
            DDS.ReturnCode                 rc;
            string expResult = "DataReaderListener test succeeded.";

            semaphores = new Dictionary <DDS.StatusKind, Semaphore>();
            semaphores.Add(DDS.StatusKind.DataAvailable, new Semaphore(0, 1));

            result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict
                                                   .Pass, Test.Framework.TestVerdict.Fail);
            factory = DDS.DomainParticipantFactory.Instance;
            if (factory == null)
            {
                result.Result = "DomainParticipantFactory could not be initialized.";
                return(result);
            }

            if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DomainParticipantQos could not be resolved.";
                return(result);
            }
            participant = factory.CreateParticipant(DDS.DomainId.Default, pqosHolder);//, null, 0);
            if (participant == null)
            {
                result.Result = "Creation of DomainParticipant failed.";
                return(result);
            }
            typeSupport = new mod.tstTypeSupport();
            if (typeSupport == null)
            {
                result.Result = "Creation of tstTypeSupport failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = typeSupport.RegisterType(participant, "my_type");
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Register type failed.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (participant.GetDefaultTopicQos(ref topQosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default TopicQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            topic = participant.CreateTopic("my_topic", "my_type", topQosHolder);//, null,
            //0);
            if (topic == null)
            {
                result.Result = "Topic could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (participant.GetDefaultSubscriberQos(ref sqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default SubscriberQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            subscriber = participant.CreateSubscriber(sqosHolder);//, null, 0);
            if (subscriber == null)
            {
                result.Result = "Subscriber could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (subscriber.GetDefaultDataReaderQos(ref dqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DataReaderQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, dqosHolder);//, null, 0);
            if (datareader == null)
            {
                result.Result = "DataReader could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default PublisherQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            publisher = participant.CreatePublisher(pubQosHolder);//, null, 0);
            if (publisher == null)
            {
                result.Result = "Publisher could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (publisher.GetDefaultDataWriterQos(ref wqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DataWriterQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, wqosHolder);//, null, 0);
            if (datawriter == null)
            {
                result.Result = "DataWriter could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }
            listener = new test.sacs.MyDataReaderListener(semaphores);
            rc       = datareader.SetListener(listener, DDS.StatusKind.LivelinessChanged | DDS.StatusKind.DataAvailable);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Set listener failed.";
                return(result);
            }
            mod.tst t = new mod.tst();
            t.long_1 = 1;
            t.long_2 = 2;
            t.long_3 = 3;

            rc = datawriter.Write(t, DDS.InstanceHandle.Nil);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Data could not be written.";
                this.Cleanup(factory, participant);
                return(result);
            }
            if (semaphores[DDS.StatusKind.DataAvailable].WaitOne(10000))
            {
                if (!listener.onDataAvailableCalled)
                {
                    result.Result = "on_data_available does not work properly.";
                    this.Cleanup(factory, participant);
                    return(result);
                }
            }
            else
            {
                result.Result = "on_data_available did not trigger";
                this.Cleanup(factory, participant);
                return(result);
            }
            listener.Reset();
            rc = publisher.DeleteDataWriter(datawriter);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "DataWriter could not be deleted.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = participant.DeleteContainedEntities();
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete contained entities failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = factory.DeleteParticipant(participant);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete DomainParticipant failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            result.Result  = expResult;
            result.Verdict = Test.Framework.TestVerdict.Pass;
            return(result);
        }
예제 #2
0
 public override Test.Framework.TestResult Run()
 {
     DDS.IDomainParticipant participant;
     mod.tstDataWriter writer;
     mod.tstDataReader reader;
     mod.tst[] tstHolder;
     DDS.SampleInfo[] sampleInfoHolder;
     Test.Framework.TestResult result;
     test.sacs.MyParticipantListener listener;
     test.sacs.MyDataReaderListener listener2;
     string expResult = "DomainParticipantListener test succeeded.";
     DDS.ReturnCode rc;
         
     /* The code below should be replaced with the code following it as soon as scdds2162 is fixed. */
     /* Start cutting here >>>>>>>>>>>>>>>>>>>> */
     result = new Test.Framework.TestResult(expResult, "Crash by means of stackoverflow.", 
             Test.Framework.TestVerdict.Fail, Test.Framework.TestVerdict.Fail);
     this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See scdds2162: Fix some remaining stability issues.");
     return result;
     /* Stop cutting here <<<<<<<<<<<<<<<<<<<< */
     
     result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict
         .Pass, Test.Framework.TestVerdict.Fail);
     participant = (DDS.IDomainParticipant)this.ResolveObject("participant");
     writer = (mod.tstDataWriter)this.ResolveObject("datawriter");
     reader = (mod.tstDataReader)this.ResolveObject("datareader");
     listener = new test.sacs.MyParticipantListener();
     listener2 = new test.sacs.MyDataReaderListener();
     rc = participant.SetListener(listener, (DDS.StatusKind)0);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "set_listener on DomainParticipant failed.";
         return result;
     }
     rc = participant.SetListener(null, 0);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "Null Listener could not be attached.";
         return result;
     }
     rc = participant.SetListener(listener, (DDS.StatusKind)1012131412);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "Listener could not be attached (2).";
         return result;
     }
     rc = participant.SetListener(listener, DDS.StatusKind.DataAvailable);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "Listener could not be attached (3).";
         return result;
     }
     mod.tst data = new mod.tst();
     data.long_1 = 1;
     data.long_2 = 2;
     data.long_3 = 3;
     rc = writer.Write(data, 0L);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "tstDataWriter.write failed.";
         return result;
     }
     try
     {
         System.Threading.Thread.Sleep(3000);
     }
     catch (System.Exception e)
     {
         System.Console.WriteLine(e);
     }
     if (!listener.onDataAvailableCalled)
     {
         result.Result = "on_data_available not called.";
         return result;
     }
     listener.Reset();
     tstHolder = new mod.tst[0];
     sampleInfoHolder = new DDS.SampleInfo[0];
     rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "tstDataReader.take failed.";
         return result;
     }
     rc = reader.SetListener(listener2, DDS.StatusKind.DataAvailable);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "Listener could not be attached (4).";
         return result;
     }
     rc = writer.Write(data, 0L);
     if (rc != DDS.ReturnCode.Ok)
     {
         result.Result = "tstDataWriter.write failed.";
         return result;
     }
     try
     {
         System.Threading.Thread.Sleep(3000);
     }
     catch (System.Exception e)
     {
         System.Console.WriteLine(e);
     }
     if (listener.onDataAvailableCalled)
     {
         result.Result = "on_data_available is called but shouldn't be.";
         return result;
     }
     if (!listener2.onDataAvailableCalled)
     {
         result.Result = "on_data_available not called (2).";
         return result;
     }
     listener.Reset();
     listener2.Reset();
     result.Result = expResult;
     result.Verdict = Test.Framework.TestVerdict.Pass;
     return result;
 }
예제 #3
0
        public override Test.Framework.TestResult Run()
        {
            DDS.DomainParticipantFactory factory;
            DDS.IDomainParticipant participant;
			DDS.DomainParticipantQos pqosHolder = null;
			DDS.TopicQos topQosHolder = null;
            DDS.ITopic topic;
            mod.tstTypeSupport typeSupport = null;
            mod.tstDataReader datareader;
            test.sacs.MyDataReaderListener listener;
            DDS.ISubscriber subscriber;
			DDS.SubscriberQos sqosHolder = null;
			DDS.DataReaderQos dqosHolder = null;
            DDS.IPublisher publisher;
			DDS.PublisherQos pubQosHolder = null;
            mod.tstDataWriter datawriter;
			DDS.DataWriterQos wqosHolder = null;
            Test.Framework.TestResult result;
            DDS.ReturnCode rc;
            string expResult = "DataReaderListener test succeeded.";
            result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict
                .Pass, Test.Framework.TestVerdict.Fail);
            factory = DDS.DomainParticipantFactory.Instance;
            if (factory == null)
            {
                result.Result = "DomainParticipantFactory could not be initialized.";
                return result;
            }

            if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DomainParticipantQos could not be resolved.";
                return result;
            }
            participant = factory.CreateParticipant(DDS.DomainId.Default, pqosHolder);//, null, 0);
            if (participant == null)
            {
                result.Result = "Creation of DomainParticipant failed.";
                return result;
            }
            typeSupport = new mod.tstTypeSupport();
            if (typeSupport == null)
            {
                result.Result = "Creation of tstTypeSupport failed.";
                this.Cleanup(factory, participant);
                return result;
            }
            rc = typeSupport.RegisterType(participant, "my_type");
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Register type failed.";
                this.Cleanup(factory, participant);
                return result;
            }
            if (participant.GetDefaultTopicQos(ref topQosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default TopicQos could not be resolved.";
                this.Cleanup(factory, participant);
                return result;
            }
            topic = participant.CreateTopic("my_topic", "my_type", topQosHolder);//, null,0);
            if (topic == null)
            {
                result.Result = "Topic could not be created.";
                this.Cleanup(factory, participant);
                return result;
            }

            if (participant.GetDefaultSubscriberQos(ref sqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default SubscriberQos could not be resolved.";
                this.Cleanup(factory, participant);
                return result;
            }
            subscriber = participant.CreateSubscriber(sqosHolder);//, null, 0);
            if (subscriber == null)
            {
                result.Result = "Subscriber could not be created.";
                this.Cleanup(factory, participant);
                return result;
            }

            if (subscriber.GetDefaultDataReaderQos(ref dqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DataReaderQos could not be resolved.";
                this.Cleanup(factory, participant);
                return result;
            }
            listener = new test.sacs.MyDataReaderListener();
            datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, dqosHolder, listener,
                DDS.StatusKind.Any ^ DDS.StatusKind.DataOnReaders);
            if (datareader == null)
            {
                result.Result = "DataReader could not be created.";
                this.Cleanup(factory, participant);
                return result;
            }

            if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default PublisherQos could not be resolved.";
                this.Cleanup(factory, participant);
                return result;
            }
            publisher = participant.CreatePublisher(pubQosHolder);//, null, 0);
            if (publisher == null)
            {
                result.Result = "Publisher could not be created.";
                this.Cleanup(factory, participant);
                return result;
            }

            if (publisher.GetDefaultDataWriterQos(ref wqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DataWriterQos could not be resolved.";
                this.Cleanup(factory, participant);
                return result;
            }
            datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, wqosHolder);//, null, 0);
            if (datawriter == null)
            {
                result.Result = "DataWriter could not be created.";
                this.Cleanup(factory, participant);
                return result;
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onLivelinessChangedCalled)
            {
                result.Result = "on_liveliness_changed does not work properly.";
                this.Cleanup(factory, participant);
                return result;
            }
            listener.Reset();

            mod.tst t = new mod.tst();
            t.long_1 = 1;
            t.long_2 = 2;
            t.long_3 = 3;

            rc = datawriter.Write(t, DDS.InstanceHandle.Nil);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Data could not be written.";
                this.Cleanup(factory, participant);
                return result;
            }
            try
            {

                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {

                System.Console.WriteLine(e);
            }
            if (!listener.onDataAvailableCalled)
            {

                result.Result = "on_data_available does not work properly.";
                this.Cleanup(factory, participant);
                return result;
            }
            listener.Reset();
            rc = publisher.DeleteDataWriter(datawriter);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "DataWriter could not be deleted.";
                this.Cleanup(factory, participant);
                return result;
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onLivelinessChangedCalled)
            {
                result.Result = "on_liveliness_changed does not work properly (2).";
                this.Cleanup(factory, participant);
                return result;
            }

            rc = datareader.SetListener(listener, 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached.";
                this.Cleanup(factory, participant);
                return result;
            }
            rc = datareader.SetListener(null, 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be detached.";
                this.Cleanup(factory, participant);
                return result;
            }
            rc = subscriber.DeleteDataReader(datareader);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete datareader failed.";
                this.Cleanup(factory, participant);
                return result;
            }
            listener.Reset();
            dqosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos;
            datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, dqosHolder, listener,
                DDS.StatusKind.Any ^ DDS.StatusKind.DataOnReaders);
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            listener.Reset();
            datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, wqosHolder);//, null, 0);
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onRequestedIncompatibleQosCalled)
            {
                result.Result = "on_requested_incompatible_qos does not work properly.";
                this.Cleanup(factory, participant);
                return result;
            }
            rc = participant.DeleteContainedEntities();
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete contained entities failed.";
                this.Cleanup(factory, participant);
                return result;
            }
            rc = factory.DeleteParticipant(participant);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete DomainParticipant failed.";
                return result;
            }
            result.Result = expResult;
            result.Verdict = Test.Framework.TestVerdict.Pass;
            return result;
        }
예제 #4
0
        public override Test.Framework.TestResult Run()
        {
            DDS.IDomainParticipant participant;
            mod.tstDataWriter      writer;
            mod.tstDataReader      reader;
            mod.tst[]                       tstHolder;
            DDS.SampleInfo[]                sampleInfoHolder;
            Test.Framework.TestResult       result;
            test.sacs.MyParticipantListener listener;
            test.sacs.MyDataReaderListener  listener2;
            string expResult = "DomainParticipantListener test succeeded.";

            DDS.ReturnCode rc;
            semaphoresParticipant = new Dictionary <DDS.StatusKind, Semaphore>();
            semaphoresParticipant.Add(DDS.StatusKind.DataAvailable, new Semaphore(0, 1));

            semaphoresReader = new Dictionary <DDS.StatusKind, Semaphore>();
            semaphoresReader.Add(DDS.StatusKind.DataAvailable, new Semaphore(0, 2));
            result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict
                                                   .Pass, Test.Framework.TestVerdict.Fail);
            participant = (DDS.IDomainParticipant) this.ResolveObject("participant");
            writer      = (mod.tstDataWriter) this.ResolveObject("datawriter");
            reader      = (mod.tstDataReader) this.ResolveObject("datareader");
            listener    = new test.sacs.MyParticipantListener(semaphoresParticipant);
            listener2   = new test.sacs.MyDataReaderListener(semaphoresReader);
            rc          = participant.SetListener(listener, (DDS.StatusKind) 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "set_listener on DomainParticipant failed.";
                return(result);
            }
            rc = participant.SetListener(null, 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Null Listener could not be attached.";
                return(result);
            }
            rc = participant.SetListener(listener, (DDS.StatusKind) 1012131412);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached (2).";
                return(result);
            }
            rc = participant.SetListener(listener, DDS.StatusKind.DataAvailable);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached (3).";
                return(result);
            }
            mod.tst data = new mod.tst();
            data.long_1 = 1;
            data.long_2 = 2;
            data.long_3 = 3;
            rc          = writer.Write(data, 0L);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "tstDataWriter.write failed.";
                return(result);
            }
            if (semaphoresParticipant[DDS.StatusKind.DataAvailable].WaitOne(10000))
            {
                if (!listener.onDataAvailableCalled)
                {
                    result.Result = "on_data_available not called.";
                    return(result);
                }
            }
            else
            {
                result.Result = "on_data_available did not trigger";
                return(result);
            }
            listener.Reset();
            tstHolder        = new mod.tst[0];
            sampleInfoHolder = new DDS.SampleInfo[0];
            rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "tstDataReader.take failed.";
                return(result);
            }
            rc = reader.SetListener(listener2, DDS.StatusKind.DataAvailable);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached (4).";
                return(result);
            }
            rc = writer.Write(data, 0L);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "tstDataWriter.write failed.";
                return(result);
            }
            try
            {
                System.Threading.Thread.Sleep(1000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (listener.onDataAvailableCalled)
            {
                result.Result = "on_data_available is called but shouldn't be.";
                return(result);
            }
            if (!listener2.onDataAvailableCalled)
            {
                result.Result = "on_data_available not called (2).";
                return(result);
            }
            listener.Reset();
            listener2.Reset();
            result.Result  = expResult;
            result.Verdict = Test.Framework.TestVerdict.Pass;
            return(result);
        }
예제 #5
0
        public override Test.Framework.TestResult Run()
        {
            DDS.IDomainParticipant participant;
            mod.tstDataWriter      writer;
            mod.tstDataReader      reader;
            mod.tst[]                       tstHolder;
            DDS.SampleInfo[]                sampleInfoHolder;
            Test.Framework.TestResult       result;
            test.sacs.MyParticipantListener listener;
            test.sacs.MyDataReaderListener  listener2;
            string expResult = "DomainParticipantListener test succeeded.";

            DDS.ReturnCode rc;

            /* The code below should be replaced with the code following it as soon as scdds2162 is fixed. */
            /* Start cutting here >>>>>>>>>>>>>>>>>>>> */
            result = new Test.Framework.TestResult(expResult, "Crash by means of stackoverflow.",
                                                   Test.Framework.TestVerdict.Fail, Test.Framework.TestVerdict.Fail);
            this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See scdds2162: Fix some remaining stability issues.");
            return(result);

            /* Stop cutting here <<<<<<<<<<<<<<<<<<<< */

            result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict
                                                   .Pass, Test.Framework.TestVerdict.Fail);
            participant = (DDS.IDomainParticipant) this.ResolveObject("participant");
            writer      = (mod.tstDataWriter) this.ResolveObject("datawriter");
            reader      = (mod.tstDataReader) this.ResolveObject("datareader");
            listener    = new test.sacs.MyParticipantListener();
            listener2   = new test.sacs.MyDataReaderListener();
            rc          = participant.SetListener(listener, (DDS.StatusKind) 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "set_listener on DomainParticipant failed.";
                return(result);
            }
            rc = participant.SetListener(null, 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Null Listener could not be attached.";
                return(result);
            }
            rc = participant.SetListener(listener, (DDS.StatusKind) 1012131412);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached (2).";
                return(result);
            }
            rc = participant.SetListener(listener, DDS.StatusKind.DataAvailable);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached (3).";
                return(result);
            }
            mod.tst data = new mod.tst();
            data.long_1 = 1;
            data.long_2 = 2;
            data.long_3 = 3;
            rc          = writer.Write(data, 0L);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "tstDataWriter.write failed.";
                return(result);
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onDataAvailableCalled)
            {
                result.Result = "on_data_available not called.";
                return(result);
            }
            listener.Reset();
            tstHolder        = new mod.tst[0];
            sampleInfoHolder = new DDS.SampleInfo[0];
            rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "tstDataReader.take failed.";
                return(result);
            }
            rc = reader.SetListener(listener2, DDS.StatusKind.DataAvailable);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached (4).";
                return(result);
            }
            rc = writer.Write(data, 0L);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "tstDataWriter.write failed.";
                return(result);
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (listener.onDataAvailableCalled)
            {
                result.Result = "on_data_available is called but shouldn't be.";
                return(result);
            }
            if (!listener2.onDataAvailableCalled)
            {
                result.Result = "on_data_available not called (2).";
                return(result);
            }
            listener.Reset();
            listener2.Reset();
            result.Result  = expResult;
            result.Verdict = Test.Framework.TestVerdict.Pass;
            return(result);
        }
예제 #6
0
        public override Test.Framework.TestResult Run()
        {
            DDS.DomainParticipantFactory factory;
            DDS.IDomainParticipant       participant;
            DDS.DomainParticipantQos     pqosHolder     = null;
            DDS.TopicQos                   topQosHolder = null;
            DDS.ITopic                     topic;
            mod.tstTypeSupport             typeSupport = null;
            mod.tstDataReader              datareader;
            test.sacs.MyDataReaderListener listener;
            DDS.ISubscriber                subscriber;
            DDS.SubscriberQos              sqosHolder = null;
            DDS.DataReaderQos              dqosHolder = null;
            DDS.IPublisher                 publisher;
            DDS.PublisherQos               pubQosHolder = null;
            mod.tstDataWriter              datawriter;
            DDS.DataWriterQos              wqosHolder = null;
            Test.Framework.TestResult      result;
            DDS.ReturnCode                 rc;
            string expResult = "DataReaderListener test succeeded.";

            result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict
                                                   .Pass, Test.Framework.TestVerdict.Fail);
            factory = DDS.DomainParticipantFactory.Instance;
            if (factory == null)
            {
                result.Result = "DomainParticipantFactory could not be initialized.";
                return(result);
            }

            if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DomainParticipantQos could not be resolved.";
                return(result);
            }
            participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0);
            if (participant == null)
            {
                result.Result = "Creation of DomainParticipant failed.";
                return(result);
            }
            typeSupport = new mod.tstTypeSupport();
            if (typeSupport == null)
            {
                result.Result = "Creation of tstTypeSupport failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = typeSupport.RegisterType(participant, "my_type");
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Register type failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            if (participant.GetDefaultTopicQos(ref topQosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default TopicQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            topic = participant.CreateTopic("my_topic", "my_type", topQosHolder);//, null,0);
            if (topic == null)
            {
                result.Result = "Topic could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (participant.GetDefaultSubscriberQos(ref sqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default SubscriberQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            subscriber = participant.CreateSubscriber(sqosHolder);//, null, 0);
            if (subscriber == null)
            {
                result.Result = "Subscriber could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (subscriber.GetDefaultDataReaderQos(ref dqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DataReaderQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            listener   = new test.sacs.MyDataReaderListener();
            datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, dqosHolder, listener,
                                                                        DDS.StatusKind.Any ^ DDS.StatusKind.DataOnReaders);
            if (datareader == null)
            {
                result.Result = "DataReader could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default PublisherQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            publisher = participant.CreatePublisher(pubQosHolder);//, null, 0);
            if (publisher == null)
            {
                result.Result = "Publisher could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }

            if (publisher.GetDefaultDataWriterQos(ref wqosHolder) != DDS.ReturnCode.Ok)
            {
                result.Result = "Default DataWriterQos could not be resolved.";
                this.Cleanup(factory, participant);
                return(result);
            }
            datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, wqosHolder);//, null, 0);
            if (datawriter == null)
            {
                result.Result = "DataWriter could not be created.";
                this.Cleanup(factory, participant);
                return(result);
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onLivelinessChangedCalled)
            {
                result.Result = "on_liveliness_changed does not work properly.";
                this.Cleanup(factory, participant);
                return(result);
            }
            listener.Reset();

            mod.tst t = new mod.tst();
            t.long_1 = 1;
            t.long_2 = 2;
            t.long_3 = 3;

            rc = datawriter.Write(t, DDS.InstanceHandle.Nil);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Data could not be written.";
                this.Cleanup(factory, participant);
                return(result);
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onDataAvailableCalled)
            {
                result.Result = "on_data_available does not work properly.";
                this.Cleanup(factory, participant);
                return(result);
            }
            listener.Reset();
            rc = publisher.DeleteDataWriter(datawriter);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "DataWriter could not be deleted.";
                this.Cleanup(factory, participant);
                return(result);
            }
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onLivelinessChangedCalled)
            {
                result.Result = "on_liveliness_changed does not work properly (2).";
                this.Cleanup(factory, participant);
                return(result);
            }

            rc = datareader.SetListener(listener, 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be attached.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = datareader.SetListener(null, 0);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Listener could not be detached.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = subscriber.DeleteDataReader(datareader);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete datareader failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            listener.Reset();
            dqosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos;
            datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, dqosHolder, listener,
                                                                        DDS.StatusKind.Any ^ DDS.StatusKind.DataOnReaders);
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            listener.Reset();
            datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, wqosHolder);//, null, 0);
            try
            {
                System.Threading.Thread.Sleep(3000);
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e);
            }
            if (!listener.onRequestedIncompatibleQosCalled)
            {
                result.Result = "on_requested_incompatible_qos does not work properly.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = participant.DeleteContainedEntities();
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete contained entities failed.";
                this.Cleanup(factory, participant);
                return(result);
            }
            rc = factory.DeleteParticipant(participant);
            if (rc != DDS.ReturnCode.Ok)
            {
                result.Result = "Delete DomainParticipant failed.";
                return(result);
            }
            result.Result  = expResult;
            result.Verdict = Test.Framework.TestVerdict.Pass;
            return(result);
        }