public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.IDomainParticipant participant; DDS.SubscriberQos subscriberQosHolder = null; DDS.ISubscriber subscriber; Test.Framework.TestResult result; DDS.ITopic topic; participant = (DDS.IDomainParticipant)testCase.ResolveObject("participant"); topic = (DDS.ITopic)testCase.ResolveObject("topic"); result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant == null || topic == null) { System.Console.Error.WriteLine("participant or topic = null"); result.Result = "precondition not met"; return(result); } if (participant.GetDefaultSubscriberQos(ref subscriberQosHolder) != DDS.ReturnCode.Ok) { result.Result = "could not get default SubscriberQos"; return(result); } subscriber = participant.CreateSubscriber(subscriberQosHolder);//, null, DDS.StatusKind.Any); if (subscriber == null) { result.Result = "could create a Subscriber"; return(result); } testCase.RegisterObject("subscriber", subscriber); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.QosProvider qosProvider = null; DDS.DomainParticipantQos participantQos = test.sacs.QosComparer.defaultDomainParticipantQos; DDS.TopicQos topicQos = test.sacs.QosComparer.defaultTopicQos; DDS.SubscriberQos subscriberQos = test.sacs.QosComparer.defaultSubscriberQos; DDS.DataReaderQos readerQos = test.sacs.QosComparer.defaultDataReaderQos; DDS.PublisherQos publisherQos = test.sacs.QosComparer.defaultPublisherQos; DDS.DataWriterQos writerQos = test.sacs.QosComparer.defaultDataWriterQos; DDS.DomainParticipantQos xmlParticipantQos = new DDS.DomainParticipantQos (); DDS.TopicQos xmlTopicQos = new DDS.TopicQos (); DDS.SubscriberQos xmlSubscriberQos = new DDS.SubscriberQos (); DDS.DataReaderQos xmlReaderQos = new DDS.DataReaderQos (); DDS.PublisherQos xmlPublisherQos = new DDS.PublisherQos (); DDS.DataWriterQos xmlWriterQos = new DDS.DataWriterQos (); qosProvider = new DDS.QosProvider (this.uri, null); if (qosProvider.GetParticipantQos (ref xmlParticipantQos, null) != 0 || qosProvider.GetTopicQos (ref xmlTopicQos, null) != 0 || qosProvider.GetSubscriberQos (ref xmlSubscriberQos, null) != 0 || qosProvider.GetDataReaderQos (ref xmlReaderQos, null) != 0 || qosProvider.GetPublisherQos (ref xmlPublisherQos, null) != 0 || qosProvider.GetDataWriterQos (ref xmlWriterQos, null) != 0) { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider did not parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else if (!QosComparer.DomainParticipantQosEquals (xmlParticipantQos, participantQos) || !QosComparer.TopicQosEquals (xmlTopicQos, topicQos) || !QosComparer.SubscriberQosEquals (xmlSubscriberQos, subscriberQos) || !QosComparer.DataReaderQosEquals (xmlReaderQos, readerQos) || !QosComparer.PublisherQosEquals (xmlPublisherQos, publisherQos) || !QosComparer.DataWriterQosEquals (xmlWriterQos, writerQos)) { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider did not correctly parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider correctly parsed XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Pass); } return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Setting/resolving default SubscriberrQos succeeded."; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.SubscriberQos subQosHolder = null; DDS.ReturnCode returnCode; factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could not be initialised." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Default DomainParticipantQos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0); if (participant == null) { result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (participant.GetDefaultSubscriberQos(ref subQosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Sublisher qos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = factory.DeleteParticipant(participant); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Deletion of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict ); return(result); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.SubscriberQos subQosHolder = null; DDS.ISubscriber subscriber; Test.Framework.TestResult result; result = new Test.Framework.TestResult("Initialization success", 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); } if (participant.GetDefaultSubscriberQos(ref subQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default SubscriberQos could not be resolved."; return(result); } subscriber = participant.CreateSubscriber(subQosHolder);//, null, 0); if (subscriber == null) { result.Result = "Subscriber could not be created."; return(result); } testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqosHolder); testCase.RegisterObject("participant", participant); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("subscriberQos", subQosHolder); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public static bool SubscriberQosEqual(DDS.SubscriberQos qos1, DDS.SubscriberQos qos2 ) { if (qos1.EntityFactory.AutoenableCreatedEntities != qos2.EntityFactory.AutoenableCreatedEntities) { System.Console.Error.WriteLine("'entity_factory.autoenable_created_entities' values do not match" ); return(false); } if (!ByteArrayEqual(qos1.GroupData.Value, qos1.GroupData.Value)) { System.Console.Error.WriteLine("'group_data.Value' values do not match"); return(false); } if (!StringArrayEqual(qos1.Partition.Name, qos2.Partition.Name)) { System.Console.Error.WriteLine("'partition.Name' values do not match"); return(false); } if (qos1.Presentation.CoherentAccess != qos2.Presentation.CoherentAccess) { System.Console.Error.WriteLine("'presentation.CoherentAccess' values do not match" ); return(false); } if (qos1.Presentation.OrderedAccess != qos2.Presentation.OrderedAccess) { System.Console.Error.WriteLine("'presentation.OrderedAccess' values do not match" ); return(false); } if (qos1.Presentation.AccessScope != qos2.Presentation.AccessScope) { System.Console.Error.WriteLine("'presentation.AccessScope' values do not match"); return(false); } return(true); }
public void run(String[] args) { int myDomain = DDS.DomainId.Default; DDS.DomainParticipantFactory dpf; DDS.IDomainParticipant dp; DDS.IPublisher p; DDS.ISubscriber s; pingpong.PP_min_msgDataWriter PP_min_writer; pingpong.PP_seq_msgDataWriter PP_seq_writer; pingpong.PP_string_msgDataWriter PP_string_writer; pingpong.PP_fixed_msgDataWriter PP_fixed_writer; pingpong.PP_array_msgDataWriter PP_array_writer; pingpong.PP_min_msgDataReader PP_min_reader; pingpong.PP_seq_msgDataReader PP_seq_reader; pingpong.PP_string_msgDataReader PP_string_reader; pingpong.PP_fixed_msgDataReader PP_fixed_reader; pingpong.PP_array_msgDataReader PP_array_reader; pingpong.PP_quit_msgDataReader PP_quit_reader; pingpong.PP_min_msgTypeSupport PP_min_dt; pingpong.PP_seq_msgTypeSupport PP_seq_dt; pingpong.PP_string_msgTypeSupport PP_string_dt; pingpong.PP_fixed_msgTypeSupport PP_fixed_dt; pingpong.PP_array_msgTypeSupport PP_array_dt; pingpong.PP_quit_msgTypeSupport PP_quit_dt; pingpong.PP_min_msg[] PP_min_dataList = null; pingpong.PP_seq_msg[] PP_seq_dataList = null; pingpong.PP_string_msg[] PP_string_dataList = null; pingpong.PP_fixed_msg[] PP_fixed_dataList = null; pingpong.PP_array_msg[] PP_array_dataList = null; pingpong.PP_quit_msg[] PP_quit_dataList = null; DDS.IStatusCondition PP_min_sc; DDS.IStatusCondition PP_seq_sc; DDS.IStatusCondition PP_string_sc; DDS.IStatusCondition PP_fixed_sc; DDS.IStatusCondition PP_array_sc; DDS.IStatusCondition PP_quit_sc; DDS.ITopic PP_min_topic; DDS.ITopic PP_seq_topic; DDS.ITopic PP_string_topic; DDS.ITopic PP_fixed_topic; DDS.ITopic PP_array_topic; DDS.ITopic PP_quit_topic; DDS.ICondition[] conditionList = null; DDS.SampleInfo[] infoList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; Boolean terminate = false; DDS.ReturnCode result; int i; int imax; int j; int jmax; /* * Evaluate cmdline arguments */ if (args.Length != 0) { if (args.Length != 2) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: pong [READ_PARTITION WRITE_PARTITION]"); Environment.Exit(1); } read_partition = args[0]; write_partition = args[1]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); dp = dpf.CreateParticipant(myDomain, dpQos, null, DDS.StatusKind.Any); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PONG publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PING subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /* match data reader/writer qos with topic qos */ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); // assert(result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); //assert(result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic, drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); //assert(result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); //assert(result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); //assert(result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datareader */ PP_quit_reader = s.CreateDataReader(PP_quit_topic, drQos) as pingpong.PP_quit_msgDataReader; /* Add datareader statuscondition to waitset */ PP_quit_sc = PP_quit_reader.StatusCondition; PP_quit_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_quit_sc); //assert(result == RETCODE_OK.value); while (!terminate) { DDS.Duration wait_timeout = new DDS.Duration(DDS.Duration.InfiniteSec, DDS.Duration.InfiniteSec); result = w.Wait(ref conditionList, wait_timeout); ErrorHandler.checkStatus(result, "wait did not succeeed"); if (result == DDS.ReturnCode.AlreadyDeleted) { terminate = true; continue; } if (conditionList != null) { imax = conditionList.Length; for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { result = PP_min_reader.Take(ref PP_min_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_min_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_min_writer.Write(PP_min_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_min_reader.ReturnLoan(ref PP_min_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_min triggered, but no data available"); } } else if (conditionList[i] == PP_seq_sc) { /* System.Console.WriteLine ("PONG: PING_seq arrived"); */ result = PP_seq_reader.Take(ref PP_seq_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_seq_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_seq_writer.Write(PP_seq_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_seq_reader.ReturnLoan(ref PP_seq_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_seq triggered, but no data available"); } } else if (conditionList[i] == PP_string_sc) { /* System.Console.WriteLine ("PONG: PING_string arrived"); */ result = PP_string_reader.Take(ref PP_string_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_string_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_string_writer.Write(PP_string_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_string_reader.ReturnLoan(ref PP_string_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_string triggered, but no data available"); } } else if (conditionList[i] == PP_fixed_sc) { /* System.Console.WriteLine ("PONG: PING_fixed arrived"); */ result = PP_fixed_reader.Take(ref PP_fixed_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_fixed_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_fixed_writer.Write(PP_fixed_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_fixed_reader.ReturnLoan(ref PP_fixed_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_fixed triggered, but no data available"); } } else if (conditionList[i] == PP_array_sc) { /* System.Console.WriteLine ("PONG: PING_array arrived"); */ result = PP_array_reader.Take(ref PP_array_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_array_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_array_writer.Write(PP_array_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_array_reader.ReturnLoan(ref PP_array_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_array triggered, but no data available"); } } else if (conditionList[i] == PP_quit_sc) { /* System.Console.WriteLine ("PONG: PING_quit arrived"); */ result = PP_quit_reader.Take(ref PP_quit_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_quit_dataList.Length; if (jmax != 0) { result = PP_quit_reader.ReturnLoan(ref PP_quit_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_quit triggered, but no data available"); } terminate = true; } else { System.Console.WriteLine("PONG: unknown condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PONG: unknown condition triggered"); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = s.DeleteDataReader(PP_quit_reader); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
static void subscribe(int domain_id, int sample_count) { // --- Create participant --- // /* To customize the participant QoS, use * the configuration file USER_QOS_PROFILES.xml */ DDS.DomainParticipant participant = DDS.DomainParticipantFactory.get_instance().create_participant( domain_id, DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (participant == null) { shutdown(participant); throw new ApplicationException("create_participant error"); } // --- Create subscriber --- // DDS.SubscriberQos subscriber_qos = new DDS.SubscriberQos(); participant.get_default_subscriber_qos(subscriber_qos); /* If you want to change the Partition name programmatically rather than * using the XML, you will need to add the following lines to your code * and comment out the create_subscriber() call bellow. */ /* * String[] partitions = { "ABC", "X*Z" }; * * subscriber_qos.partition.name.ensure_length(2, 2); * subscriber_qos.partition.name.from_array(partitions); * * DDS.Subscriber subscriber = participant.create_subscriber( * subscriber_qos, * null, * DDS.StatusMask.STATUS_MASK_NONE); */ DDS.Subscriber subscriber = participant.create_subscriber( DDS.DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (subscriber == null) { shutdown(participant); throw new ApplicationException("create_subscriber error"); } // --- Create topic --- // /* Register the type before creating the topic */ System.String type_name = partitionsTypeSupport.get_type_name(); try { partitionsTypeSupport.register_type( participant, type_name); } catch (DDS.Exception e) { Console.WriteLine("register_type error {0}", e); shutdown(participant); throw e; } /* To customize the topic QoS, use * the configuration file USER_QOS_PROFILES.xml */ DDS.Topic topic = participant.create_topic( "Example partitions", type_name, DDS.DomainParticipant.TOPIC_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (topic == null) { shutdown(participant); throw new ApplicationException("create_topic error"); } // --- Create reader --- // /* Create a data reader listener */ partitionsListener reader_listener = new partitionsListener(); /* If you want to change the Datareader QoS programmatically rather than * using the XML, you will need to add the following lines to your code * and comment out the create_datareader() call bellow. */ /* * DDS.DataReaderQos readerQos = new DDS.DataReaderQos(); * subscriber.get_default_datareader_qos(readerQos); * * readerQos.reliability.kind = DDS.ReliabilityQosPolicyKind.RELIABLE_RELIABILITY_QOS; * readerQos.history.kind = DDS.HistoryQosPolicyKind.KEEP_ALL_HISTORY_QOS; * readerQos.durability.kind = DDS.DurabilityQosPolicyKind.TRANSIENT_LOCAL_DURABILITY_QOS; * DDS.DataReader reader = subscriber.create_datareader( * topic, * readerQos, * reader_listener, * DDS.StatusMask.STATUS_MASK_ALL); */ DDS.DataReader reader = subscriber.create_datareader( topic, DDS.Subscriber.DATAREADER_QOS_DEFAULT, reader_listener, DDS.StatusMask.STATUS_MASK_ALL); if (reader == null) { shutdown(participant); reader_listener = null; throw new ApplicationException("create_datareader error"); } // --- Wait for data --- // /* Main loop */ const System.Int32 receive_period = 4000; // milliseconds for (int count = 0; (sample_count == 0) || (count < sample_count); ++count) { System.Threading.Thread.Sleep(receive_period); } // --- Shutdown --- // /* Delete all entities */ shutdown(participant); reader_listener = null; }
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); } topQosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; topic = participant.CreateTopic("my_topic_t", "my_type", topQosHolder);//, null, 0); if (topic == null) { result.Result = "Topic 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); } wqosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; 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); } 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 (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); } dqosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; listener = new test.sacs.MyDataReaderListener(); datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, dqosHolder, listener, DDS.StatusKind.Any); if (datareader == null) { result.Result = "DataReader 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); } if (!listener.onDataAvailableCalled) { result.Result = "on_data_available 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); }
/* * P I N G */ public void run(String[] args) { System.Console.WriteLine("starting PING"); DDS.ICondition[] conditionList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; DDS.Duration wait_timeout = new DDS.Duration(3, 0); DDS.ReturnCode result; Boolean finish_flag = false; Boolean timeout_flag = false; Boolean terminate = false; int imax = 1; int i; uint block; int nof_cycles = 100; int nof_blocks = 20; /** * Command Line argument processing */ if (args.Length != 0) { if (args.Length != 5) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: ping blocks blocksize topic_id WRITE_PARTITION READ_PARTITION "); Environment.Exit(1); } nof_blocks = int.Parse(args[0]); nof_cycles = int.Parse(args[1]); topic_id = args[2][0]; write_partition = args[3]; read_partition = args[4]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); ErrorHandler.checkHandle(dpf, "DDS.DomainParticipantFactory.Instance"); dp = dpf.CreateParticipant(myDomain, dpQos); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PING publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PONG subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /*match data reader/writer qos with topic qos*/ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); ErrorHandler.checkStatus(result, "attach condition pp_min_reader"); //assert (result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); ErrorHandler.checkStatus(result, "attach condition pp_seq_reader"); //assert (result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic, drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); ErrorHandler.checkStatus(result, "attach condition pp_string_reader"); //assert (result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); ErrorHandler.checkStatus(result, "attach condition pp_fixed_reader"); //assert (result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); ErrorHandler.checkStatus(result, "attach condition pp_array_reader"); //assert (result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datawriter */ PP_quit_writer = p.CreateDataWriter(PP_quit_topic, dwQos) as pingpong.PP_quit_msgDataWriter; for (block = 0; block < nof_blocks && !terminate; block++) { while (!finish_flag) { /* * Send Initial message */ timeout_flag = false; switch (topic_id) { case 'm': { /* System.Console.WriteLine ("PING: sending initial ping_min"); */ pingpong.PP_min_msg PPdata = new pingpong.PP_min_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_min_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 'q': { /* System.Console.WriteLine ("PING: sending initial ping_seq"); */ pingpong.PP_seq_msg PPdata = new pingpong.PP_seq_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_seq_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 's': { //System.Console.WriteLine ("PING: sending initial ping_string"); pingpong.PP_string_msg PPdata = new pingpong.PP_string_msg(); PPdata.count = 0; PPdata.block = block; PPdata.a_string = "a_string " + block.ToString(); preWriteTime.timeGet(); result = PP_string_writer.Write(PPdata); ErrorHandler.checkStatus(result, "writing PPData in case S"); postWriteTime.timeGet(); } break; case 'f': { /* System.Console.WriteLine ("PING: sending initial ping_fixed"); */ pingpong.PP_fixed_msg PPdata = new pingpong.PP_fixed_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_fixed_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 'a': { /* System.Console.WriteLine ("PING: sending initial ping_array"); */ pingpong.PP_array_msg PPdata = new pingpong.PP_array_msg(); PPdata.count = 0; PPdata.block = block; PPdata.str_arr_char = new char[10]; PPdata.str_arr_octet = new byte[10]; PPdata.str_arr_short = new short[10]; PPdata.str_arr_ushort = new ushort[10]; PPdata.str_arr_long = new int[10]; PPdata.str_arr_ulong = new uint[10]; PPdata.str_arr_longlong = new long[10]; PPdata.str_arr_ulonglong = new ulong[10]; PPdata.str_arr_float = new float[10]; PPdata.str_arr_double = new double[10]; PPdata.str_arr_boolean = new Boolean[11]; preWriteTime.timeGet(); result = PP_array_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 't': { /* System.Console.WriteLine ("PING: sending initial ping_quit"); */ pingpong.PP_quit_msg PPdata = new pingpong.PP_quit_msg(); PPdata.quit = true; terminate = true; finish_flag = true; System.Threading.Thread.Sleep(1000); preWriteTime.timeGet(); result = PP_quit_writer.Write(PPdata); postWriteTime.timeGet(); System.Threading.Thread.Sleep(1000); } break; default: System.Console.WriteLine("Invalid topic-id"); return; } if (!terminate) { roundTripTime.set(preWriteTime.get()); write_access.add_stats(postWriteTime.sub(preWriteTime)); /* * Wait for response, calculate timing, and send another * data if not ready */ while (!(timeout_flag || finish_flag)) { result = w.Wait(ref conditionList, wait_timeout); if (result == DDS.ReturnCode.Ok || result == DDS.ReturnCode.NoData || result == DDS.ReturnCode.Timeout) { //ErrorHandler.checkStatus(result, "wait did not work condition list is probably null!"); if (conditionList != null) { imax = conditionList.Length; if (imax != 0) { for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { finish_flag = PP_min_handler(nof_cycles); } else if (conditionList[i] == PP_seq_sc) { finish_flag = PP_seq_handler(nof_cycles); } else if (conditionList[i] == PP_string_sc) { finish_flag = PP_string_handler(nof_cycles); } else if (conditionList[i] == PP_fixed_sc) { finish_flag = PP_fixed_handler(nof_cycles); } else if (conditionList[i] == PP_array_sc) { finish_flag = PP_array_handler(nof_cycles); } else { System.Console.WriteLine("PING: unexpected condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (1)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (2)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: Waitset wait failed (code " + result + "), terminating"); finish_flag = true; terminate = true; } } } } if (!terminate) { finish_flag = false; if (block == 0) { System.Console.WriteLine("# PING PONG measurements (in us)"); System.Console.WriteLine("# Executed at: "); System.Console.WriteLine("# Roundtrip time [us] Write-access time [us] Read-access time [us]"); System.Console.WriteLine("# Block Count mean min max Count mean min max Count mean min max"); } System.Console.WriteLine(String.Format("{0,-6} {1, 10} {2, 6} {3, 6} {4, 6} {5, 10} {6, 6} {7, 6} {8, 6} {9, 10} {10, 6} {11, 6} {12, 6}", block, roundtrip.count, roundtrip.average, roundtrip.min, roundtrip.max, write_access.count, write_access.average, write_access.min, write_access.max, read_access.count, read_access.average, read_access.min, read_access.max)); Console.Out.Flush(); write_access.init_stats(); read_access.init_stats(); roundtrip.init_stats(); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = p.DeleteDataWriter(PP_quit_writer); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.DomainParticipantFactory factory; string expResult = "DomainParticipant Subscriber test succeeded."; DDS.SubscriberQos subQosHolder = null; DDS.DomainParticipantQos qos = null; DDS.ISubscriber subscriber; DDS.ISubscriber subscriber2; DDS.ReturnCode returnCode; factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); qos = (DDS.DomainParticipantQos) this.ResolveObject("participantQos"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant.GetDefaultSubscriberQos(ref subQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Get default SubscriberQos failed."; return(result); } subscriber = participant.CreateSubscriber(subQosHolder, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return(result); } subscriber2 = participant.CreateSubscriber(null, null, 0); if (subscriber2 != null) { this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See scdds213"); result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; participant.DeleteContainedEntities(); result.Result = "Create Subscriber with BAD_PARAM succeeded."; return(result); } participant2 = factory.CreateParticipant(null, qos, null, 0); if (participant2 == null) { result.Result = "Create Participant failed."; return(result); } returnCode = participant2.DeleteSubscriber(subscriber); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete Subscriber on wrong Participant succeeded."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Participant failed."; return(result); } returnCode = participant.DeleteSubscriber(subscriber); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Subscriber failed."; return(result); } returnCode = participant.DeleteSubscriber(subscriber); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete of already deleted Subscriber succeeded."; return(result); } returnCode = participant.DeleteSubscriber(null); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete null Subscriber succeeded."; return(result); } subscriber = participant.BuiltInSubscriber; if (subscriber == null) { result.Result = "Could not resolve builtin Subscriber."; return(result); } subscriber2 = participant.BuiltInSubscriber; if (subscriber2 == null) { result.Result = "Could not resolve builtin Subscriber (2)."; return(result); } if (subscriber != subscriber2) { result.Result = "Resolved builtin Subscribers do not match."; return(result); } returnCode = participant.DeleteSubscriber(subscriber); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete builtin Subscriber failed."; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; DDS.SubscriberQos qos; DDS.SubscriberQos qos2; string expResult = "SubscriberQos test succeeded"; DDS.SubscriberQos subQosHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); qos = (DDS.SubscriberQos)this.ResolveObject("subscriberQos"); if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, test.sacs.QosComparer. defaultSubscriberQos)) { result.Result = "SubscriberQos not equal to default SubscriberQos (1)."; return result; } subQosHolder = new DDS.SubscriberQos(); qos.Partition.Name = new string[3]; qos.Partition.Name[0] = "aap"; qos.Partition.Name[1] = "noot"; qos.Partition.Name[2] = "mies"; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (2)."; return result; } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (2)."; return result; } qos.GroupData.Value = new byte[2]; qos.GroupData.Value[0] = 1; qos.GroupData.Value[1] = 2; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (3)."; return result; } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (3)."; return result; } qos.Presentation.AccessScope = DDS.PresentationQosPolicyAccessScopeKind.InstancePresentationQos; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (4)."; return result; } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (4)."; return result; } qos.Presentation.CoherentAccess = false; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (5)."; return result; } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (5)."; return result; } qos.Presentation.OrderedAccess = false; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (6)."; return result; } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (6)."; return result; } qos = (DDS.SubscriberQos)this.ResolveObject("subscriberQos"); qos.EntityFactory.AutoenableCreatedEntities = false; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Received returncode " + rc + " after setting an unsupported Qos (7)."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.QosProvider qosProvider = null; DDS.DomainParticipantQos participantQos = test.sacs.QosComparer.defaultDomainParticipantQos; DDS.TopicQos topicQos = test.sacs.QosComparer.defaultTopicQos; DDS.SubscriberQos subscriberQos = test.sacs.QosComparer.defaultSubscriberQos; DDS.DataReaderQos readerQos = test.sacs.QosComparer.defaultDataReaderQos; DDS.PublisherQos publisherQos = test.sacs.QosComparer.defaultPublisherQos; DDS.DataWriterQos writerQos = test.sacs.QosComparer.defaultDataWriterQos; DDS.DomainParticipantQos xmlParticipantQos = new DDS.DomainParticipantQos(); DDS.TopicQos xmlTopicQos = new DDS.TopicQos(); DDS.SubscriberQos xmlSubscriberQos = new DDS.SubscriberQos(); DDS.DataReaderQos xmlReaderQos = new DDS.DataReaderQos(); DDS.PublisherQos xmlPublisherQos = new DDS.PublisherQos(); DDS.DataWriterQos xmlWriterQos = new DDS.DataWriterQos(); qosProvider = new DDS.QosProvider(this.uri, string.Empty); if (qosProvider.GetParticipantQos(ref xmlParticipantQos, null) != 0 || qosProvider.GetTopicQos(ref xmlTopicQos, null) != 0 || qosProvider.GetSubscriberQos(ref xmlSubscriberQos, null) != 0 || qosProvider.GetDataReaderQos(ref xmlReaderQos, null) != 0 || qosProvider.GetPublisherQos(ref xmlPublisherQos, null) != 0 || qosProvider.GetDataWriterQos(ref xmlWriterQos, null) != 0) { result = new Test.Framework.TestResult( "QosProvider should successfully parse XML file", "QosProvider did not parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else if (!QosComparer.DomainParticipantQosEquals(xmlParticipantQos, participantQos) || !QosComparer.TopicQosEquals(xmlTopicQos, topicQos) || !QosComparer.SubscriberQosEquals(xmlSubscriberQos, subscriberQos) || !QosComparer.DataReaderQosEquals(xmlReaderQos, readerQos) || !QosComparer.PublisherQosEquals(xmlPublisherQos, publisherQos) || !QosComparer.DataWriterQosEquals(xmlWriterQos, writerQos)) { result = new Test.Framework.TestResult( "QosProvider should successfully parse XML file", "QosProvider did not correctly parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else { result = new Test.Framework.TestResult( "QosProvider should successfully parse XML file", "QosProvider correctly parsed XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Pass); } return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "contains_entity returns the correct result"; DDS.IDomainParticipant participant; DDS.DomainParticipantFactory factory; DDS.TopicQos tHolder = new DDS.TopicQos(); DDS.PublisherQos pHolder = new DDS.PublisherQos(); DDS.SubscriberQos sHolder = new DDS.SubscriberQos(); DDS.DataWriterQos wHolder = new DDS.DataWriterQos(); DDS.DataReaderQos rHolder = new DDS.DataReaderQos(); DDS.ITopic topic; DDS.IPublisher publisher; DDS.ISubscriber subscriber; mod.tstDataWriter writer; mod.tstDataReader reader; long handle; DDS.ReturnCode rc; participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); factory = (DDS.DomainParticipantFactory)this.ResolveObject("factory"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant.ContainsEntity(0)) { result.Result = "contains_entity with nil handle incorrect"; return result; } if (participant.ContainsEntity(100)) { result.Result = "contains_entity with incorrect handle incorrect"; return result; } handle = participant.InstanceHandle; if (handle == DDS.InstanceHandle.Nil) { result.Result = "get_instance_handle returned 0"; return result; } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity with own handle incorrect"; return result; } mod.tstTypeSupport typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "type1"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return result; } participant.GetDefaultTopicQos(ref tHolder); topic = participant.CreateTopic("TestTopic", "type1", tHolder);//, null, 0); if (topic == null) { result.Result = "Create Topic failed."; return result; } participant.GetDefaultPublisherQos(ref pHolder); publisher = participant.CreatePublisher(pHolder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return result; } participant.GetDefaultSubscriberQos(ref sHolder); subscriber = participant.CreateSubscriber(sHolder);//, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return result; } publisher.GetDefaultDataWriterQos(ref wHolder); writer = publisher.CreateDataWriter(topic, wHolder) as mod.tstDataWriter; if (writer == null) { result.Result = "Create Writer failed."; return result; } subscriber.GetDefaultDataReaderQos(ref rHolder); reader = subscriber.CreateDataReader(topic, rHolder) as mod.tstDataReader; if (reader == null) { result.Result = "Create Reader failed."; return result; } handle = topic.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (topic) returned 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with topic handle incorrect"; return result; } handle = publisher.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (publisher) returned != 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with publisher handle incorrect"; return result; } handle = subscriber.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (subscriber) returned != 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with subscriber handle incorrect"; return result; } handle = writer.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (writer) returned 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with writer handle incorrect"; return result; } handle = reader.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (reader) returned 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with reader handle incorrect"; return result; } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities failed."; return result; } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity of deleted reader incorrect"; return result; } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return result; }
static void subscribe(int domain_id, int sample_count) { // --- Create participant --- // /* To customize the participant QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.DomainParticipant participant = DDS.DomainParticipantFactory.get_instance().create_participant( domain_id, DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (participant == null) { shutdown(participant); throw new ApplicationException("create_participant error"); } // --- Create subscriber --- // DDS.SubscriberQos subscriber_qos = new DDS.SubscriberQos(); participant.get_default_subscriber_qos(subscriber_qos); /* If you want to change the Partition name programmatically rather than * using the XML, you will need to add the following lines to your code * and comment out the create_subscriber() call bellow. */ /* String[] partitions = { "ABC", "X*Z" }; subscriber_qos.partition.name.ensure_length(2, 2); subscriber_qos.partition.name.from_array(partitions); DDS.Subscriber subscriber = participant.create_subscriber( subscriber_qos, null, DDS.StatusMask.STATUS_MASK_NONE); */ DDS.Subscriber subscriber = participant.create_subscriber( DDS.DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (subscriber == null) { shutdown(participant); throw new ApplicationException("create_subscriber error"); } // --- Create topic --- // /* Register the type before creating the topic */ System.String type_name = partitionsTypeSupport.get_type_name(); try { partitionsTypeSupport.register_type( participant, type_name); } catch (DDS.Exception e) { Console.WriteLine("register_type error {0}", e); shutdown(participant); throw e; } /* To customize the topic QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.Topic topic = participant.create_topic( "Example partitions", type_name, DDS.DomainParticipant.TOPIC_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (topic == null) { shutdown(participant); throw new ApplicationException("create_topic error"); } // --- Create reader --- // /* Create a data reader listener */ partitionsListener reader_listener = new partitionsListener(); /* If you want to change the Datareader QoS programmatically rather than * using the XML, you will need to add the following lines to your code * and comment out the create_datareader() call bellow. */ /* DDS.DataReaderQos readerQos = new DDS.DataReaderQos(); subscriber.get_default_datareader_qos(readerQos); readerQos.reliability.kind = DDS.ReliabilityQosPolicyKind.RELIABLE_RELIABILITY_QOS; readerQos.history.kind = DDS.HistoryQosPolicyKind.KEEP_ALL_HISTORY_QOS; readerQos.durability.kind = DDS.DurabilityQosPolicyKind.TRANSIENT_LOCAL_DURABILITY_QOS; DDS.DataReader reader = subscriber.create_datareader( topic, readerQos, reader_listener, DDS.StatusMask.STATUS_MASK_ALL); */ DDS.DataReader reader = subscriber.create_datareader( topic, DDS.Subscriber.DATAREADER_QOS_DEFAULT, reader_listener, DDS.StatusMask.STATUS_MASK_ALL); if (reader == null) { shutdown(participant); reader_listener = null; throw new ApplicationException("create_datareader error"); } // --- Wait for data --- // /* Main loop */ const System.Int32 receive_period = 4000; // milliseconds for (int count = 0; (sample_count == 0) || (count < sample_count); ++count) { System.Threading.Thread.Sleep(receive_period); } // --- Shutdown --- // /* Delete all entities */ shutdown(participant); reader_listener = null; }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; DDS.ISubscriber subscriber; DDS.ISubscriber subscriber2; DDS.SubscriberQos subscriberQos = null; DDS.DataReaderQos qos = null; DDS.DataReaderQos qosHolder = null; DDS.IDataReader reader; DDS.IDataReader reader2; DDS.IDataReader reader3; DDS.ITopic topic; DDS.ITopic otherTopic; DDS.TopicQos topicQos = null; string expResult = "DataReader creation and deletion test succeeded"; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); subscriberQos = (DDS.SubscriberQos) this.ResolveObject("subscriberQos"); topic = (DDS.ITopic) this.ResolveObject("topic"); otherTopic = (DDS.ITopic) this.ResolveObject("otherTopic"); topicQos = (DDS.TopicQos) this.ResolveObject("topicQos"); rc = subscriber.GetDefaultDataReaderQos(ref qosHolder); qos = qosHolder; if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos."; return(result); } reader = subscriber.CreateDataReader(null, qos);//, null, 0); if (reader != null) { result.Result = "Created a DataReader without a Topic (1)."; return(result); } subscriber2 = participant.CreateSubscriber(subscriberQos);//, null, 0); if (subscriber2 == null) { result.Result = "Could not create a new Subscriber (2)."; return(result); } rc = participant.DeleteSubscriber(subscriber2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a Subscriber (2)."; return(result); } reader = subscriber2.CreateDataReader(topic, qos);//, null, 0); if (reader != null) { result.Result = "Created a DataReader on a deleted Subscriber (2)."; return(result); } topic = participant.CreateTopic("subscriber3tc_topic", "my_type", topicQos);//, null //, 0); if (topic == null) { result.Result = "Could not create a new Topic (3)."; return(result); } rc = participant.DeleteTopic(topic); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a Topic (3)."; return(result); } reader = subscriber.CreateDataReader(topic, qos);//, null, 0); if (reader != null) { result.Result = "Created a DataReader with a deleted Topic (3)."; return(result); } topic = (DDS.ITopic) this.ResolveObject("topic"); reader = subscriber.CreateDataReader(topic, qos);//, null, 0); if (reader == null) { result.Result = "Could not create a DataReader (4)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (5)."; return(result); } qos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; qos.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; reader = subscriber.CreateDataReader(topic, qos);//, null, 0); if (reader == null) { result.Result = "Could not create a DataReader with TRANSIENT DurabilityQosPolicy (6)."; return(result); } qos.History.Kind = DDS.HistoryQosPolicyKind.KeepLastHistoryQos; qos.Durability.Kind = DDS.DurabilityQosPolicyKind.PersistentDurabilityQos; reader2 = subscriber.CreateDataReader(otherTopic, qos);//, null, 0); if (reader2 == null) { result.Result = "Could not create a DataReader with PERSISTENT DurabilityQosPolicy (7)."; return(result); } qos.Durability.Kind = DDS.DurabilityQosPolicyKind.VolatileDurabilityQos; subscriber2 = participant.CreateSubscriber(subscriberQos);//, null, 0); if (subscriber2 == null) { result.Result = "Could not create a Subscriber (8)."; return(result); } reader3 = subscriber2.CreateDataReader(otherTopic, qos);//, null, 0); if (reader3 == null) { result.Result = "Could not create a DataReader (8)."; return(result); } rc = subscriber2.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "Could delete a DataReader on a wrong subscriber (9)."; return(result); } rc = subscriber2.DeleteDataReader(reader3); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (10)."; return(result); } rc = subscriber.DeleteDataReader(reader2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (11)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (12)."; return(result); } rc = participant.DeleteSubscriber(subscriber2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a Subscriber (13)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "set/get default_qos test succeeded."; DDS.ReturnCode rc; DDS.IDomainParticipant participant; DDS.PublisherQos pholder; DDS.SubscriberQos sholder; DDS.TopicQos tholder; DDS.PublisherQos pqos; DDS.SubscriberQos sqos; DDS.TopicQos tqos; DDS.PartitionQosPolicy pqp; participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); pholder = new DDS.PublisherQos(); sholder = new DDS.SubscriberQos(); tholder = new DDS.TopicQos(); if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return result; } pqos = pholder; string[] partitions = new string[2]; partitions[0] = "partition"; partitions[1] = "partition2"; pqp = new DDS.PartitionQosPolicy(); pqp.Name = partitions; pqos.Partition = pqp; rc = participant.SetDefaultPublisherQos(pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_publisher_qos failed (1)."; return result; } if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed (2)."; return result; } if (!test.sacs.QosComparer.PublisherQosEquals(pqos, pholder)) { result.Result = "resolved qos does not match the applied one."; return result; } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed."; return result; } sqos = sholder; sqos.Partition = pqp; rc = participant.SetDefaultSubscriberQos(sqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_subscriber_qos failed (1)."; return result; } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed (2)."; return result; } if (!test.sacs.QosComparer.SubscriberQosEquals(sqos, sholder)) { result.Result = "resolved qos does not match the applied one (2)."; return result; } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed."; return result; } tqos = tholder; tqos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; rc = participant.SetDefaultTopicQos(tqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_topic_qos failed (1)."; return result; } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed (2)."; return result; } if (!test.sacs.QosComparer.TopicQosEquals(tqos, tholder)) { result.Result = "resolved qos does not match the applied one (3)."; return result; } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "set/get default_qos test succeeded."; DDS.ReturnCode rc; DDS.IDomainParticipant participant; DDS.PublisherQos pholder; DDS.SubscriberQos sholder; DDS.TopicQos tholder; DDS.PublisherQos pqos; DDS.SubscriberQos sqos; DDS.TopicQos tqos; DDS.PartitionQosPolicy pqp; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); pholder = new DDS.PublisherQos(); sholder = new DDS.SubscriberQos(); tholder = new DDS.TopicQos(); if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return(result); } pqos = pholder; string[] partitions = new string[2]; partitions[0] = "partition"; partitions[1] = "partition2"; pqp = new DDS.PartitionQosPolicy(); pqp.Name = partitions; pqos.Partition = pqp; rc = participant.SetDefaultPublisherQos(pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_publisher_qos failed (1)."; return(result); } if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.PublisherQosEquals(pqos, pholder)) { result.Result = "resolved qos does not match the applied one."; return(result); } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed."; return(result); } sqos = sholder; sqos.Partition = pqp; rc = participant.SetDefaultSubscriberQos(sqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_subscriber_qos failed (1)."; return(result); } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.SubscriberQosEquals(sqos, sholder)) { result.Result = "resolved qos does not match the applied one (2)."; return(result); } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed."; return(result); } tqos = tholder; tqos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; rc = participant.SetDefaultTopicQos(tqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_topic_qos failed (1)."; return(result); } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.TopicQosEquals(tqos, tholder)) { result.Result = "resolved qos does not match the applied one (3)."; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
public void run(String[] args) { String myDomain = null; DDS.DomainParticipantFactory dpf; DDS.IDomainParticipant dp; DDS.IPublisher p; DDS.ISubscriber s; pingpong.PP_min_msgDataWriter PP_min_writer; pingpong.PP_seq_msgDataWriter PP_seq_writer; pingpong.PP_string_msgDataWriter PP_string_writer; pingpong.PP_fixed_msgDataWriter PP_fixed_writer; pingpong.PP_array_msgDataWriter PP_array_writer; pingpong.PP_min_msgDataReader PP_min_reader; pingpong.PP_seq_msgDataReader PP_seq_reader; pingpong.PP_string_msgDataReader PP_string_reader; pingpong.PP_fixed_msgDataReader PP_fixed_reader; pingpong.PP_array_msgDataReader PP_array_reader; pingpong.PP_quit_msgDataReader PP_quit_reader; pingpong.PP_min_msgTypeSupport PP_min_dt; pingpong.PP_seq_msgTypeSupport PP_seq_dt; pingpong.PP_string_msgTypeSupport PP_string_dt; pingpong.PP_fixed_msgTypeSupport PP_fixed_dt; pingpong.PP_array_msgTypeSupport PP_array_dt; pingpong.PP_quit_msgTypeSupport PP_quit_dt; pingpong.PP_min_msg[] PP_min_dataList = null; pingpong.PP_seq_msg[] PP_seq_dataList = null; pingpong.PP_string_msg[] PP_string_dataList = null; pingpong.PP_fixed_msg[] PP_fixed_dataList = null; pingpong.PP_array_msg[] PP_array_dataList = null; pingpong.PP_quit_msg[] PP_quit_dataList = null; DDS.IStatusCondition PP_min_sc; DDS.IStatusCondition PP_seq_sc; DDS.IStatusCondition PP_string_sc; DDS.IStatusCondition PP_fixed_sc; DDS.IStatusCondition PP_array_sc; DDS.IStatusCondition PP_quit_sc; DDS.ITopic PP_min_topic; DDS.ITopic PP_seq_topic; DDS.ITopic PP_string_topic; DDS.ITopic PP_fixed_topic; DDS.ITopic PP_array_topic; DDS.ITopic PP_quit_topic; DDS.ICondition[] conditionList = null; DDS.SampleInfo[] infoList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; Boolean terminate = false; DDS.ReturnCode result; int i; int imax; int j; int jmax; /* * Evaluate cmdline arguments */ if (args.Length != 0) { if (args.Length != 2) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: pong [READ_PARTITION WRITE_PARTITION]"); Environment.Exit(1); } read_partition = args[0]; write_partition = args[1]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); dp = dpf.CreateParticipant(myDomain, dpQos, null, DDS.StatusKind.Any); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PONG publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PING subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /* match data reader/writer qos with topic qos */ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); // assert(result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); //assert(result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic,drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); //assert(result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); //assert(result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); //assert(result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datareader */ PP_quit_reader = s.CreateDataReader(PP_quit_topic, drQos) as pingpong.PP_quit_msgDataReader; /* Add datareader statuscondition to waitset */ PP_quit_sc = PP_quit_reader.StatusCondition; PP_quit_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_quit_sc); //assert(result == RETCODE_OK.value); while (!terminate) { DDS.Duration wait_timeout = new DDS.Duration(DDS.Duration.InfiniteSec, DDS.Duration.InfiniteSec); result = w.Wait(ref conditionList, wait_timeout); ErrorHandler.checkStatus(result, "wait did not succeeed"); if (result == DDS.ReturnCode.AlreadyDeleted) { terminate = true; continue; } if (conditionList != null) { imax = conditionList.Length; for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { result = PP_min_reader.Take(ref PP_min_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_min_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_min_writer.Write(PP_min_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_min_reader.ReturnLoan(ref PP_min_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_min triggered, but no data available"); } } else if (conditionList[i] == PP_seq_sc) { /* System.Console.WriteLine ("PONG: PING_seq arrived"); */ result = PP_seq_reader.Take(ref PP_seq_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_seq_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_seq_writer.Write(PP_seq_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_seq_reader.ReturnLoan(ref PP_seq_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_seq triggered, but no data available"); } } else if (conditionList[i] == PP_string_sc) { /* System.Console.WriteLine ("PONG: PING_string arrived"); */ result = PP_string_reader.Take(ref PP_string_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_string_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_string_writer.Write(PP_string_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_string_reader.ReturnLoan(ref PP_string_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_string triggered, but no data available"); } } else if (conditionList[i] == PP_fixed_sc) { /* System.Console.WriteLine ("PONG: PING_fixed arrived"); */ result = PP_fixed_reader.Take(ref PP_fixed_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_fixed_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_fixed_writer.Write(PP_fixed_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_fixed_reader.ReturnLoan(ref PP_fixed_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_fixed triggered, but no data available"); } } else if (conditionList[i] == PP_array_sc) { /* System.Console.WriteLine ("PONG: PING_array arrived"); */ result = PP_array_reader.Take(ref PP_array_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_array_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_array_writer.Write(PP_array_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_array_reader.ReturnLoan(ref PP_array_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_array triggered, but no data available"); } } else if (conditionList[i] == PP_quit_sc) { /* System.Console.WriteLine ("PONG: PING_quit arrived"); */ result = PP_quit_reader.Take(ref PP_quit_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_quit_dataList.Length; if (jmax != 0) { result = PP_quit_reader.ReturnLoan(ref PP_quit_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_quit triggered, but no data available"); } terminate = true; } else { System.Console.WriteLine("PONG: unknown condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PONG: unknown condition triggered"); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = s.DeleteDataReader(PP_quit_reader); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
/* * P I N G */ public void run(String[] args) { System.Console.WriteLine("starting PING"); DDS.ICondition[] conditionList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; DDS.Duration wait_timeout = new DDS.Duration(3, 0); DDS.ReturnCode result; Boolean finish_flag = false; Boolean timeout_flag = false; Boolean terminate = false; int imax = 1; int i; uint block; int nof_cycles = 100; int nof_blocks = 20; /** * Command Line argument processing */ if (args.Length != 0) { if (args.Length != 5) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: ping blocks blocksize topic_id WRITE_PARTITION READ_PARTITION "); Environment.Exit(1); } nof_blocks = int.Parse(args[0]); nof_cycles = int.Parse(args[1]); topic_id = args[2][0]; write_partition = args[3]; read_partition = args[4]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); ErrorHandler.checkHandle(dpf, "DDS.DomainParticipantFactory.Instance"); dp = dpf.CreateParticipant(myDomain, dpQos); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PING publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PONG subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /*match data reader/writer qos with topic qos*/ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); ErrorHandler.checkStatus(result, "attach condition pp_min_reader"); //assert (result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); ErrorHandler.checkStatus(result, "attach condition pp_seq_reader"); //assert (result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic, drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); ErrorHandler.checkStatus(result, "attach condition pp_string_reader"); //assert (result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); ErrorHandler.checkStatus(result, "attach condition pp_fixed_reader"); //assert (result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); ErrorHandler.checkStatus(result, "attach condition pp_array_reader"); //assert (result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datawriter */ PP_quit_writer = p.CreateDataWriter(PP_quit_topic, dwQos) as pingpong.PP_quit_msgDataWriter; for (block = 0; block < nof_blocks; block++) { while (!finish_flag) { /* * Send Initial message */ timeout_flag = false; switch (topic_id) { case 'm': { /* System.Console.WriteLine ("PING: sending initial ping_min"); */ pingpong.PP_min_msg PPdata = new pingpong.PP_min_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_min_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 'q': { /* System.Console.WriteLine ("PING: sending initial ping_seq"); */ pingpong.PP_seq_msg PPdata = new pingpong.PP_seq_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_seq_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 's': { //System.Console.WriteLine ("PING: sending initial ping_string"); pingpong.PP_string_msg PPdata = new pingpong.PP_string_msg(); PPdata.count = 0; PPdata.block = block; PPdata.a_string = "a_string " + block.ToString(); preWriteTime.timeGet(); result = PP_string_writer.Write(PPdata); ErrorHandler.checkStatus(result, "writing PPData in case S"); postWriteTime.timeGet(); } break; case 'f': { /* System.Console.WriteLine ("PING: sending initial ping_fixed"); */ pingpong.PP_fixed_msg PPdata = new pingpong.PP_fixed_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_fixed_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 'a': { /* System.Console.WriteLine ("PING: sending initial ping_array"); */ pingpong.PP_array_msg PPdata = new pingpong.PP_array_msg(); PPdata.count = 0; PPdata.block = block; PPdata.str_arr_char = new char[10]; PPdata.str_arr_octet = new byte[10]; PPdata.str_arr_short = new short[10]; PPdata.str_arr_ushort = new ushort[10]; PPdata.str_arr_long = new int[10]; PPdata.str_arr_ulong = new uint[10]; PPdata.str_arr_longlong = new long[10]; PPdata.str_arr_ulonglong = new ulong[10]; PPdata.str_arr_float = new float[10]; PPdata.str_arr_double = new double[10]; PPdata.str_arr_boolean = new Boolean[11]; preWriteTime.timeGet(); result = PP_array_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 't': { /* System.Console.WriteLine ("PING: sending initial ping_quit"); */ pingpong.PP_quit_msg PPdata = new pingpong.PP_quit_msg(); PPdata.quit = true; terminate = true; finish_flag = true; preWriteTime.timeGet(); result = PP_quit_writer.Write(PPdata); postWriteTime.timeGet(); } break; default: System.Console.WriteLine("Invalid topic-id"); return; } if (!terminate) { roundTripTime.set(preWriteTime.get()); write_access.add_stats(postWriteTime.sub(preWriteTime)); /* * Wait for response, calculate timing, and send another * data if not ready */ while (!(timeout_flag || finish_flag)) { result = w.Wait(ref conditionList, wait_timeout); //ErrorHandler.checkStatus(result, "wait did not work condition list is probably null!"); if (conditionList != null) { imax = conditionList.Length; if (imax != 0) { for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { finish_flag = PP_min_handler(nof_cycles); } else if (conditionList[i] == PP_seq_sc) { finish_flag = PP_seq_handler(nof_cycles); } else if (conditionList[i] == PP_string_sc) { finish_flag = PP_string_handler(nof_cycles); } else if (conditionList[i] == PP_fixed_sc) { finish_flag = PP_fixed_handler(nof_cycles); } else if (conditionList[i] == PP_array_sc) { finish_flag = PP_array_handler(nof_cycles); } else { System.Console.WriteLine("PING: unexpected condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (1)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (2)"); timeout_flag = true; } } } } if (!terminate) { finish_flag = false; if (block == 0) { System.Console.WriteLine("# PING PONG measurements (in us)"); System.Console.WriteLine("# Executed at: "); System.Console.WriteLine("# Roundtrip time [us] Write-access time [us] Read-access time [us]"); System.Console.WriteLine("# Block Count mean min max Count mean min max Count mean min max"); } System.Console.WriteLine(String.Format("{0,-6} {1, 10} {2, 6} {3, 6} {4, 6} {5, 10} {6, 6} {7, 6} {8, 6} {9, 10} {10, 6} {11, 6} {12, 6}", block,roundtrip.count,roundtrip.average,roundtrip.min, roundtrip.max,write_access.count, write_access.average,write_access.min, write_access.max, read_access.count, read_access.average, read_access.min, read_access.max)); Console.Out.Flush(); write_access.init_stats(); read_access.init_stats(); roundtrip.init_stats(); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = p.DeleteDataWriter(PP_quit_writer); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "Additional test succeeded."; DDS.ReturnCode returnCode; DDS.IStatusCondition sc; DDS.IStatusCondition sc2; int domainId; int domainId2; DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.DomainParticipantFactory factory; DDS.DomainParticipantQos qos; DDS.IPublisher publisher; DDS.PublisherQos pholder = null; DDS.ISubscriber subscriber; DDS.SubscriberQos sholder = null; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); qos = (DDS.DomainParticipantQos) this.ResolveObject("participantQos"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); returnCode = participant.Enable(); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Enabling of DomainParticipant succeeded."; return(result); } sc = participant.StatusCondition; if (sc == null) { result.Result = "get_statuscondition failed."; return(result); } sc2 = participant.StatusCondition; if (sc2 == null) { result.Result = "get_statuscondition failed (2)."; return(result); } if (sc != sc2) { result.Result = "Resolved statusconditions do not match."; return(result); } domainId = participant.DomainId; domainId2 = participant.DomainId; if (domainId != domainId2) { result.Result = "Get domain id does not match 2nd domain id."; return(result); } participant2 = factory.CreateParticipant(DDS.DomainId.Default, qos);//, null, 0); if (participant2 == null) { result.Result = "Create DomainParticipant failed."; return(result); } participant2.GetDefaultPublisherQos(ref pholder); publisher = participant2.CreatePublisher(pholder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return(result); } participant2.GetDefaultSubscriberQos(ref sholder); subscriber = participant2.CreateSubscriber(sholder);//, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.PreconditionNotMet) { result.Result = "Delete DomainParticipant with contained entities succeeded."; return(result); } returnCode = participant2.DeleteContainedEntities(); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete contained entities on DomainParticipant failed."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete DomainParticipant failed."; return(result); } returnCode = participant2.IgnoreParticipant(1); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Action on deleted DomainParticipant succeeded."; return(result); } returnCode = participant2.IgnorePublication(1); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Action on deleted DomainParticipant succeeded(2)."; return(result); } returnCode = participant2.IgnoreSubscription(1); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Action on deleted DomainParticipant succeeded(3)."; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqos = null; DDS.SubscriberQos subQos = null; DDS.ISubscriber subscriber; DDS.PublisherQos pubQos = null; DDS.IPublisher publisher; mod.tstTypeSupport typeSupport; DDS.TopicQos tQos = null; DDS.ITopic topic; DDS.DataReaderQos drQos = null; mod.tstDataReader datareader; DDS.DataWriterQos dwQos = null; mod.tstDataWriter datawriter; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult("Initialization success", 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 pqos) != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } participant = factory.CreateParticipant(DDS.DomainId.Default, pqos);//, null, 0); if (participant == null) { result.Result = "Creation of DomainParticipant failed."; return(result); } if (participant.GetDefaultSubscriberQos(ref subQos) != DDS.ReturnCode.Ok) { result.Result = "Default SubscriberQos could not be resolved."; return(result); } subscriber = participant.CreateSubscriber(subQos);//, null, 0); if (subscriber == null) { result.Result = "Subscriber could not be created."; return(result); } typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "tstType"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Typesupport could not be registered."; return(result); } if (participant.GetDefaultTopicQos(ref tQos) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } topic = participant.CreateTopic("tst", "tstType", tQos);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQos) != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } publisher = participant.CreatePublisher(pubQos);//, null, 0); if (publisher == null) { result.Result = "Publisher could not be created."; return(result); } if (subscriber.GetDefaultDataReaderQos(ref drQos) != DDS.ReturnCode.Ok) { result.Result = "Default DataReaderQos could not be resolved."; return(result); } datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (datareader == null) { result.Result = "DataReader could not be created."; return(result); } if (publisher.GetDefaultDataWriterQos(ref dwQos) != DDS.ReturnCode.Ok) { result.Result = "Default DataWriterQos could not be resolved."; return(result); } datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, dwQos);//, null, 0); testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqos); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", tQos); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("subscriberQos", subQos); testCase.RegisterObject("datareader", datareader); testCase.RegisterObject("datareaderQos", drQos); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("publisherQos", pubQos); testCase.RegisterObject("datawriter", datawriter); testCase.RegisterObject("datawriterQos", dwQos); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "contains_entity returns the correct result"; DDS.IDomainParticipant participant; DDS.DomainParticipantFactory factory; DDS.TopicQos tHolder = new DDS.TopicQos(); DDS.PublisherQos pHolder = new DDS.PublisherQos(); DDS.SubscriberQos sHolder = new DDS.SubscriberQos(); DDS.DataWriterQos wHolder = new DDS.DataWriterQos(); DDS.DataReaderQos rHolder = new DDS.DataReaderQos(); DDS.ITopic topic; DDS.IPublisher publisher; DDS.ISubscriber subscriber; mod.tstDataWriter writer; mod.tstDataReader reader; long handle; DDS.ReturnCode rc; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant.ContainsEntity(0)) { result.Result = "contains_entity with nil handle incorrect"; return(result); } if (participant.ContainsEntity(100)) { result.Result = "contains_entity with incorrect handle incorrect"; return(result); } handle = participant.InstanceHandle; if (handle == DDS.InstanceHandle.Nil) { result.Result = "get_instance_handle returned 0"; return(result); } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity with own handle incorrect"; return(result); } mod.tstTypeSupport typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "type1"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } participant.GetDefaultTopicQos(ref tHolder); topic = participant.CreateTopic("TestTopic", "type1", tHolder);//, null, 0); if (topic == null) { result.Result = "Create Topic failed."; return(result); } participant.GetDefaultPublisherQos(ref pHolder); publisher = participant.CreatePublisher(pHolder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return(result); } participant.GetDefaultSubscriberQos(ref sHolder); subscriber = participant.CreateSubscriber(sHolder);//, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return(result); } publisher.GetDefaultDataWriterQos(ref wHolder); writer = publisher.CreateDataWriter(topic, wHolder) as mod.tstDataWriter; if (writer == null) { result.Result = "Create Writer failed."; return(result); } subscriber.GetDefaultDataReaderQos(ref rHolder); reader = subscriber.CreateDataReader(topic, rHolder) as mod.tstDataReader; if (reader == null) { result.Result = "Create Reader failed."; return(result); } handle = topic.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (topic) returned 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with topic handle incorrect"; return(result); } handle = publisher.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (publisher) returned != 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with publisher handle incorrect"; return(result); } handle = subscriber.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (subscriber) returned != 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with subscriber handle incorrect"; return(result); } handle = writer.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (writer) returned 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with writer handle incorrect"; return(result); } handle = reader.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (reader) returned 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with reader handle incorrect"; return(result); } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities failed."; return(result); } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity of deleted reader incorrect"; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Default subscriberQos is used when SUBSCRIBER_QOS_DEFAULT is specified."; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.SubscriberQos subQosHolder = null; DDS.SubscriberQos subQosHolder2 = null; DDS.ISubscriber sub; DDS.ReturnCode returnCode; factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could not be initialised." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Default DomainParticipantQos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0); if (participant == null) { result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (participant.GetDefaultSubscriberQos(ref subQosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Subscriber qos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } string[] name = new string[2]; name[0] = "Subscriber"; name[1] = "QoS"; subQosHolder.Partition.Name = name; returnCode = participant.SetDefaultSubscriberQos(subQosHolder); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Setting default subscriber QoS failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } sub = participant.CreateSubscriber(); if (sub == null) { result = new Test.Framework.TestResult(expResult, "Subscriber could not be created." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } sub.GetQos(ref subQosHolder2); if (!subQosHolder.Partition.Name[0].Equals(subQosHolder.Partition.Name [0]) || !subQosHolder.Partition.Name[1].Equals(subQosHolder.Partition .Name[1])) { result = new Test.Framework.TestResult(expResult, "Default subscriber QoS is not taken when SUBSCRIBER_QOS_DEFAULT is specified." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = participant.DeleteSubscriber(sub); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Deletion of Subscriber failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = factory.DeleteParticipant(participant); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Deletion of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict ); return(result); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { string filteredTypeName = "my_filtered_topic"; string filterExpression = "long_1 < %0"; // final String expressionParameters[] = {"1", "2", "3"}; string[] expressionParameters = new string[] { "1" }; DDS.IDomainParticipant participant; DDS.ITopic topic; DDS.IContentFilteredTopic filteredTopic; DDS.IPublisher publisher; DDS.ISubscriber subscriber; mod.tstDataReader reader; mod.tstDataWriter writer; DDS.PublisherQos publisherQos = null; DDS.SubscriberQos subscriberQos = null; DDS.DataReaderQos dataReaderQos = null; DDS.DataWriterQos dataWriterQos = null; Test.Framework.TestResult result; participant = (DDS.IDomainParticipant)testCase.ResolveObject("participant"); topic = (DDS.ITopic)testCase.ResolveObject("topic"); result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); filteredTopic = participant.CreateContentFilteredTopic(filteredTypeName, topic, filterExpression, expressionParameters); if (filteredTopic == null) { result.Result = "participant.create_contentfilteredtopic failed (1)."; return(result); } if (participant.GetDefaultPublisherQos(ref publisherQos) != DDS.ReturnCode.Ok) { result.Result = "participant.get_default_publisher_qos failed (2)."; return(result); } publisher = participant.CreatePublisher(publisherQos);//, null, 0); if (publisher == null) { result.Result = "participant.create_publisher failed (3)."; return(result); } if (publisher.GetDefaultDataWriterQos(ref dataWriterQos) != DDS.ReturnCode.Ok) { result.Result = "publisher.get_default_datawriter_qos failed (4)."; return(result); } writer = publisher.CreateDataWriter(topic, dataWriterQos) as mod.tstDataWriter; if (writer == null) { result.Result = "could not create a tstDataWriter (5)."; return(result); } if (participant.GetDefaultSubscriberQos(ref subscriberQos) != DDS.ReturnCode.Ok) { result.Result = "participant.get_default_subscriber_qos failed (6)."; return(result); } subscriber = participant.CreateSubscriber(subscriberQos);//, null, 0); if (subscriber == null) { result.Result = "participant.create_subscriber failed (7)."; return(result); } if (subscriber.GetDefaultDataReaderQos(ref dataReaderQos) != DDS.ReturnCode.Ok) { result.Result = "subscriber.get_default_datareader_qos failed (8)."; return(result); } reader = subscriber.CreateDataReader(filteredTopic, dataReaderQos) as mod.tstDataReader; if (reader == null) { result.Result = "subscriber.create_datareader failed (9)."; return(result); } testCase.RegisterObject("filteredTopic", filteredTopic); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("reader", reader); testCase.RegisterObject("dataReaderQos", dataReaderQos); testCase.RegisterObject("writer", writer); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; DDS.SubscriberQos qos; DDS.SubscriberQos qos2; string expResult = "SubscriberQos test succeeded"; DDS.SubscriberQos subQosHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); qos = (DDS.SubscriberQos) this.ResolveObject("subscriberQos"); if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, test.sacs.QosComparer. defaultSubscriberQos)) { result.Result = "SubscriberQos not equal to default SubscriberQos (1)."; return(result); } subQosHolder = new DDS.SubscriberQos(); qos.Partition.Name = new string[3]; qos.Partition.Name[0] = "aap"; qos.Partition.Name[1] = "noot"; qos.Partition.Name[2] = "mies"; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (2)."; return(result); } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (2)."; return(result); } qos.GroupData.Value = new byte[2]; qos.GroupData.Value[0] = 1; qos.GroupData.Value[1] = 2; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (3)."; return(result); } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (3)."; return(result); } qos.Presentation.AccessScope = DDS.PresentationQosPolicyAccessScopeKind.InstancePresentationQos; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (4)."; return(result); } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (4)."; return(result); } qos.Presentation.CoherentAccess = false; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (5)."; return(result); } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (5)."; return(result); } qos.Presentation.OrderedAccess = false; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set SubsriberQos failed (6)."; return(result); } subscriber.GetQos(ref subQosHolder); qos2 = subQosHolder; if (!test.sacs.SubscriberQosComparer.SubscriberQosEqual(qos, qos2)) { result.Result = "SubscriberQosses not equal (6)."; return(result); } qos = (DDS.SubscriberQos) this.ResolveObject("subscriberQos"); qos.EntityFactory.AutoenableCreatedEntities = false; rc = subscriber.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Received returncode " + rc + " after setting an unsupported Qos (7)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.SubscriberQos subQosHolder = null; DDS.DataReaderQos drQosHolder = null; DDS.ISubscriber subscriber; DDS.PublisherQos pubQosHolder = null; DDS.IPublisher publisher; mod.tstTypeSupport typeSupport; DDS.TopicQos tQosHolder = null; DDS.ITopic topic; DDS.DataWriterQos dwQosHolder = null; mod.tstDataWriter datawriter; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult("Initialization success", 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); } if (participant.GetDefaultSubscriberQos(ref subQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default SubscriberQos could not be resolved."; return(result); } subQosHolder.Partition.Name = new string[1]; subQosHolder.Partition.Name[0] = "testPartition"; subscriber = participant.CreateSubscriber(subQosHolder);//, null, 0); if (subscriber == null) { result.Result = "Subscriber could not be created."; return(result); } typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "tstType"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Typesupport could not be registered."; return(result); } if (participant.GetDefaultTopicQos(ref tQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } tQosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; tQosHolder.Reliability.Kind = DDS.ReliabilityQosPolicyKind.ReliableReliabilityQos; topic = participant.CreateTopic("tst", "tstType", tQosHolder);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } pubQosHolder.Partition.Name = new string[1]; pubQosHolder.Partition.Name[0] = "testPartition"; publisher = participant.CreatePublisher(pubQosHolder);//, null, 0); if (publisher == null) { result.Result = "Publisher could not be created."; return(result); } if (publisher.CopyFromTopicQos(ref dwQosHolder, tQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default DataWriterQos could not be resolved."; return(result); } dwQosHolder.WriterDataLifecycle.AutodisposeUnregisteredInstances = true; datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, dwQosHolder);//, null, 0); if (datawriter == null) { result.Result = "DataWriter could not be created."; return(result); } if (subscriber.CopyFromTopicQos(ref drQosHolder, tQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default DataReaderQos could not be resolved."; return(result); } drQosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.VolatileDurabilityQos; testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqosHolder); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", tQosHolder); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("subscriberQos", subQosHolder); testCase.RegisterObject("datareaderQos", drQosHolder); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("publisherQos", pubQosHolder); testCase.RegisterObject("datawriter", datawriter); testCase.RegisterObject("datawriterQos", dwQosHolder); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
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); }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.ISubscriber subscriber; DDS.ISubscriber subscriber2; DDS.SubscriberQos subscriberQos = null; DDS.DataReaderQos qos = null; string expResult = "DataReader qos tests succeeded"; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); subscriberQos = (DDS.SubscriberQos) this.ResolveObject("subscriberQos"); if (subscriber.GetDefaultDataReaderQos(ref qos) != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos (1)."; return(result); } if (!test.sacs.QosComparer.DataReaderQosEquals(qos, test.sacs.QosComparer.defaultDataReaderQos )) { result.Result = "DataReaderQos not equal to default DataReaderQos (2)."; return(result); } // TODO: JLS, do we really care about this test? //qos.Deadline.Period.Sec = DDS.Duration.InfiniteSec + 1; //rc = subscriber.SetDefaultDataReaderQos(ref qos); //if (rc != DDS.ReturnCode.BadParameter) //{ // result.Result = "Received RETCODE " + rc + " after setting invalid qos (3)."; // return result; //} qos = test.sacs.QosComparer.defaultDataReaderQos; subscriber2 = participant.CreateSubscriber(subscriberQos);//, null, 0); if (subscriber2 == null) { result.Result = "Could not create a subscriber (4)."; return(result); } participant2 = subscriber2.Participant; if (participant == null) { result.Result = "Could not get the participant (4)."; return(result); } if (participant2 != participant) { result.Result = "participant2 != participant (4)."; return(result); } rc = participant.DeleteSubscriber(subscriber2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Received RETCODE " + rc + " after deleting a subscriber (5)."; return(result); } rc = subscriber2.SetDefaultDataReaderQos(qos); if (rc != DDS.ReturnCode.AlreadyDeleted && rc != DDS.ReturnCode.BadParameter) { result.Result = "Received RETCODE " + rc + " after setting a qos on a already deleted Subscriber(5)."; return(result); } participant2 = subscriber2.Participant; if (participant2 != null) { result.Result = "Could get the participant of a deleted subscriber (6)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }