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() { DDS.IDataReader reader; DDS.DataReaderQos qos = null; DDS.DataReaderQos qos2 = null; DDS.DataReaderQos holder = null; DDS.ReturnCode rc; Test.Framework.TestResult result; string expResult = "Reader test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); reader = (DDS.IDataReader) this.ResolveObject("datareader"); qos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); if (reader.GetQos(ref holder) != DDS.ReturnCode.Ok) { result.Result = "Qos of DataReader could not be resolved."; return(result); } if (!test.sacs.QosComparer.DataReaderQosEquals(holder, qos)) { result.Result = "Qos of DataReader does not match provided qos."; return(result); } if (!test.sacs.QosComparer.DataReaderQosEquals(holder, test.sacs.QosComparer.defaultDataReaderQos)) { result.Result = "Qos of DataWriter does not match default qos."; return(result); } qos2 = holder; qos2.Deadline.Period = new DDS.Duration(3, 3); qos2.LatencyBudget.Duration = new DDS.Duration(6, 6); qos2.ReaderDataLifecycle.AutopurgeDisposedSamplesDelay = new DDS.Duration( 5, 5); qos2.UserData.Value = new byte[2]; qos2.UserData.Value[0] = 2; qos2.UserData.Value[0] = 4; rc = reader.SetQos(qos2); if (rc != DDS.ReturnCode.Ok) { result.Result = "New Qos could not be applied."; return(result); } if (reader.GetQos(ref holder) != DDS.ReturnCode.Ok) { result.Result = "Qos of DataReader could not be resolved (2)."; return(result); } if (!test.sacs.QosComparer.DataReaderQosEquals(holder, qos2)) { result.Result = "Qos of DataReader does not match provided qos (2)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; DDS.DataReaderQos dataReaderQos; DDS.DataReaderQos qosHolder1 = null; DDS.DataReaderQos qosHolder2 = null; DDS.IDataReader reader; DDS.ITopic topic; string expResult = "Default DataReadearQos is used when DATAREADER_QOS_DEFAULT is specified."; 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"); topic = (DDS.ITopic) this.ResolveObject("topic"); if (subscriber.GetDefaultDataReaderQos(ref qosHolder1) != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos"; return(result); } dataReaderQos = qosHolder1; dataReaderQos.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; dataReaderQos.History.Depth = 150; subscriber.SetDefaultDataReaderQos(dataReaderQos); reader = subscriber.CreateDataReader(topic); if (reader == null) { result.Result = "Could not create a DataReader."; return(result); } if (reader.GetQos(ref qosHolder2) != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve DataReader qos"; return(result); } if (!test.sacs.QosComparer.DataReaderQosEquals(qosHolder1, qosHolder2)) { result.Result = "Default DataReadearQos is not used when DATAREADER_QOS_DEFAULT is specified." + qosHolder2.History.Kind + " :: " + qosHolder1.History.Kind; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a DataReader (RETCODE = " + rc + ")."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public static void Main(string[] args) { DDS.QosProvider provider = null; DDS.DataReaderQos drQos = new DDS.DataReaderQos(); DDS.DataWriterQos dwQos = new DDS.DataWriterQos(); DDS.DataWriterQos dwBarQos = new DDS.DataWriterQos(); DDS.ReturnCode result; provider = new DDS.QosProvider("file://path/to/file.xml", "FooQosProfile"); if (provider != null) { // As default QoS profile is "FooQosProfile", requesting // "TransientKeepLast" in this case is equivalent to requesting // "::FooQosProfile::TransientKeepLast". result = provider.GetDataReaderQos(ref drQos, "TransientKeepLast"); if (result != 0) { Console.WriteLine("Unable to resolve ReaderQos."); System.Environment.Exit(1); } // As default QoS profile is "FooQosProfile", requesting // "Transient" would have been equivalent to requesting // "::FooQosProfile::Transient". result = provider.GetDataWriterQos(ref dwQos, "::FooQosProfile::Transient"); if (result != 0) { Console.WriteLine("Unable to resolve WriterQos."); System.Environment.Exit(1); } // As default QoS profile is "FooQosProfile" it is necessary // to use the fully-qualified name to get access to QoS-ses from // the "BarQosProfile". result = provider.GetDataWriterQos(ref dwQos, "::BarQosProfile::Persistent"); if (result != 0) { Console.WriteLine("Unable to resolve WriterQos."); System.Environment.Exit(1); } } else { Console.WriteLine("Initialization of QosProvider failed."); } }
private void initializeDataReader(DDS.DomainParticipant participant) { DDS.Subscriber subscriber = participant.create_subscriber( DDS.DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null, DDS.StatusMask.STATUS_MASK_NONE); if (subscriber == null) { throw new ApplicationException("create_subscriber error"); } DDS.Topic topic = participant.create_topic( _topicName, _typeName, DDS.DomainParticipant.TOPIC_QOS_DEFAULT, null, DDS.StatusMask.STATUS_MASK_NONE); if (topic == null) { throw new ApplicationException("create_topic error"); } _listener = new InstanceDataReaderListener( _groupSubject, _keyedSubjectDict, _keySelector, _comparer, _handleKeyDict, _scheduler, _externalSubDict); DDS.DataReaderQos rQos = new DDS.DataReaderQos(); participant.get_default_datareader_qos(rQos); //Console.WriteLine("LIB CODE DR QOS: " + r_qos.history.kind); //Console.WriteLine("LIB CODE DR QOS: " + r_qos.reliability.kind); DDS.DataReader reader = subscriber.create_datareader( topic, rQos, //DDS.Subscriber.DATAREADER_QOS_DEFAULT, _listener, DDS.StatusMask.STATUS_MASK_ALL); if (reader != null) { return; } _listener = null; throw new ApplicationException("create_datareader error"); }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; DDS.ReturnCode retCode; DDS.ITopic topic; DDS.TopicQos tQos; DDS.ISubscriber sub; Foo.TestDataReader testDR; DDS.DataReaderQos drQos = new DDS.DataReaderQos(); Test.Framework.TestResult result; string expResult = "Successfully read a sample."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); topic = (DDS.ITopic) this.ResolveObject("topic"); tQos = (DDS.TopicQos) this.ResolveObject("topicQos"); sub = participant.CreateSubscriber(); if (sub == null) { result.Result = "participant.create_subscriber failed."; return(result); } retCode = sub.GetDefaultDataReaderQos(ref drQos); if (retCode != DDS.ReturnCode.Ok) { result.Result = "subscriber.get_default_datareader_qos failed."; return(result); } testDR = (Foo.TestDataReader)sub.CreateDataReader(topic, drQos); if (testDR == null) { result.Result = "subscriber.create_datareader failed."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
private void initialize() { subscriber = participant.create_subscriber(DDS.DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (subscriber == null) { throw new ApplicationException("create_subscriber error"); } readerQoS = new DDS.DataReaderQos(); try { subscriber.get_default_datareader_qos(readerQoS); } catch (DDS.Exception e) { Console.WriteLine("get_default_datareader_qos error {0}", e); throw e; } }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; DDS.DataReaderQos dataReaderQos = null; DDS.IDomainParticipant participant; DDS.DataReaderQos qosHolder1 = null; DDS.ITopic topic; string expResult = "copy_from_topic_qos rejects TOPIC_QOS_DEFAULT with correct code."; Test.Framework.TestResult result; DDS.ReturnCode rc = DDS.ReturnCode.Error; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); topic = (DDS.ITopic) this.ResolveObject("topic"); if (subscriber.GetDefaultDataReaderQos(ref dataReaderQos) != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos"; return(result); } dataReaderQos.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; dataReaderQos.History.Depth = 150; // TODO: JLS, Verify the intent of this BadParameter test. DDS.TopicQos topicQosHolder = null; rc = subscriber.CopyFromTopicQos(ref qosHolder1, topicQosHolder); if (rc != DDS.ReturnCode.BadParameter) { result.Result = "copy_from_topic_qos returns wrong code (RETCODE = " + rc + ")."; 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 = "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() { DDS.ISubscriber subscriber; DDS.DataReaderQos qosHolder = null; DDS.TopicQos topicQos = null; string expResult = "copy_from_topic_qos 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); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topicQos = (DDS.TopicQos) this.ResolveObject("topicQos"); rc = subscriber.CopyFromTopicQos(ref qosHolder, topicQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "copy_from_topic_qos failed."; return(result); } if (!test.sacs.QosComparer.DeadlineQosPolicyEquals(qosHolder.Deadline, topicQos.Deadline)) { result.Result = "deadLineQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DestinationOrderQosPolicyEquals(qosHolder.DestinationOrder, topicQos.DestinationOrder)) { result.Result = "destinationQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DurabilityQosPolicyEquals(qosHolder.Durability, topicQos.Durability)) { result.Result = "durabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.HistoryQosPolicyEquals(qosHolder.History, topicQos.History)) { result.Result = "historyQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LatencyBudgetQosPolicyEquals(qosHolder.LatencyBudget, topicQos.LatencyBudget)) { result.Result = "latencyBudgetQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LivelinessQosPolicyEquals(qosHolder.Liveliness, topicQos.Liveliness)) { result.Result = "livelinessQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReliabilityQosPolicyEquals(qosHolder.Reliability, topicQos.Reliability)) { result.Result = "reliabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ResourceLimitsQosPolicyEquals(qosHolder.ResourceLimits, topicQos.ResourceLimits)) { result.Result = "resourceLimitsQosPolicy not valid."; return(result); } byte[] bytes = new byte[] { 1, 2, 3 }; DDS.Duration duration = new DDS.Duration(10, 9); DDS.UserDataQosPolicy udp = new DDS.UserDataQosPolicy(); udp.Value = bytes; qosHolder.UserData.Value = bytes; DDS.TimeBasedFilterQosPolicy tfp = new DDS.TimeBasedFilterQosPolicy(); tfp.MinimumSeparation = duration; qosHolder.TimeBasedFilter.MinimumSeparation = duration; DDS.ReaderDataLifecycleQosPolicy rlp = new DDS.ReaderDataLifecycleQosPolicy(); rlp.AutopurgeDisposedSamplesDelay = duration; rlp.AutopurgeNowriterSamplesDelay = duration; rlp.AutopurgeDisposeAll = false; rlp.EnableInvalidSamples = true; qosHolder.ReaderDataLifecycle.AutopurgeDisposedSamplesDelay = duration; qosHolder.ReaderDataLifecycle.AutopurgeNowriterSamplesDelay = duration; qosHolder.ReaderDataLifecycle.AutopurgeDisposeAll = false; qosHolder.ReaderDataLifecycle.EnableInvalidSamples = true; rc = subscriber.CopyFromTopicQos(ref qosHolder, topicQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "copy_from_topic_qos failed."; return(result); } if (!test.sacs.QosComparer.UserDataQosPolicyEquals(qosHolder.UserData, udp)) { result.Result = "userDataQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.TimeBasedFilterQosPolicyEquals(qosHolder.TimeBasedFilter, tfp)) { result.Result = "timeBasedFilterQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReaderDataLifecycleQosPolicyEquals(qosHolder.ReaderDataLifecycle, rlp)) { result.Result = "readerDataLifecycleQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DeadlineQosPolicyEquals(qosHolder.Deadline, topicQos.Deadline)) { result.Result = "deadLineQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DestinationOrderQosPolicyEquals(qosHolder.DestinationOrder, topicQos.DestinationOrder)) { result.Result = "destinationQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DurabilityQosPolicyEquals(qosHolder.Durability, topicQos.Durability)) { result.Result = "durabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.HistoryQosPolicyEquals(qosHolder.History, topicQos.History)) { result.Result = "historyQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LatencyBudgetQosPolicyEquals(qosHolder.LatencyBudget, topicQos.LatencyBudget)) { result.Result = "latencyBudgetQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LivelinessQosPolicyEquals(qosHolder.Liveliness, topicQos.Liveliness)) { result.Result = "livelinessQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReliabilityQosPolicyEquals(qosHolder.Reliability, topicQos.Reliability)) { result.Result = "reliabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ResourceLimitsQosPolicyEquals(qosHolder.ResourceLimits, topicQos.ResourceLimits)) { result.Result = "resourceLimitsQosPolicy not valid."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
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; }
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); }
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); }
/* * 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() { DDS.ISubscriber subscriber; DDS.DataReaderQos dataReaderQos = null; DDS.IDataReader[] dataReaderSeqHolder = null; DDS.IDataReader reader1; DDS.IDataReader reader2; DDS.IDataReader reader3; DDS.ITopic topic; string expResult = "get_datareaders 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); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); if (subscriber.GetDefaultDataReaderQos(ref dataReaderQos) != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos (1)."; return(result); } reader1 = subscriber.CreateDataReader(topic, dataReaderQos);//, null, 0); if (reader1 == null) { result.Result = "Could not create a DataReader (2)."; return(result); } reader2 = subscriber.CreateDataReader(topic, dataReaderQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create a DataReader (3)."; return(result); } reader3 = subscriber.CreateDataReader(topic, dataReaderQos);//, null, 0); if (reader3 == null) { result.Result = "Could not create a DataReader (4)."; return(result); } rc = subscriber.GetDataReaders(ref dataReaderSeqHolder, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive); if (rc != DDS.ReturnCode.Unsupported) { result.Result = "Expected RETCODE_UNSUPPORTED but received " + rc + " after calling function get_datareaders (5)."; result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; return(result); } //@todo add extra tests for get_datareaders rc = subscriber.DeleteDataReader(reader1); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but received " + rc + " after deleting a datareader (6)."; return(result); } rc = subscriber.DeleteDataReader(reader2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but received " + rc + " after deleting a datareader (7)."; return(result); } rc = subscriber.DeleteDataReader(reader3); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but received " + rc + " after deleting a datareader (8)."; 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; 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() { DDS.IDomainParticipant participant; DDS.ISubscriber subscriber; DDS.DataReaderQos dataReaderQos = null; DDS.DataReaderQos qosHolder = null; DDS.IDataReader reader1; DDS.IDataReader reader2; DDS.IDataReader reader3; DDS.ITopic topic; string expResult = "delete_contained_entities 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"); topic = (DDS.ITopic) this.ResolveObject("topic"); rc = subscriber.GetDefaultDataReaderQos(ref qosHolder); dataReaderQos = qosHolder; if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos (1)."; return(result); } reader1 = subscriber.CreateDataReader(topic, dataReaderQos);//, null, 0); if (reader1 == null) { result.Result = "Could not create a DataReader (2)."; return(result); } reader2 = subscriber.CreateDataReader(topic, dataReaderQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create a DataReader (3)."; return(result); } reader3 = subscriber.CreateDataReader(topic, dataReaderQos);//, null, 0); if (reader3 == null) { result.Result = "Could not create a DataReader (4)."; return(result); } rc = subscriber.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but received " + rc + " after calling function delete_contained_entities (5)."; return(result); } rc = participant.DeleteTopic(topic); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but received " + rc + " after calling function delete_topic (6)."; return(result); } this.UnregisterObject("topic"); result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
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() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IQueryCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] activeConditions = new DDS.Condition[0]; Test.Framework.TestResult result; DDS.DataReaderQos drQos = null; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; string[] queryParams; DDS.ITopic topic; DDS.ReturnCode rc; string expression; string[] ssHolder; string expResult = "QueryCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); expression = "long_1=%0"; queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, expression, queryParams); if (condition == null) { result.Result = "Could not create query condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos); //, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (3)."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 2; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (4)."; return(result); } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. "; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(2)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(2)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "delete_datareader succeeded, but should not."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed."; return(result); } if (activeConditions.Length != 1) { result.Result = "Returned conditions not valid."; return(result); } if (activeConditions[0] != condition) { result.Result = "Returned condition does not equal set condition."; return(result); } DDS.IDataReader reader3 = condition.GetDataReader(); if (reader != reader3) { result.Result = "ReadCondition.get_datareader failed."; return(result); } if (condition.GetInstanceStateMask() != DDS.InstanceStateKind.Any) { result.Result = "ReadCondition.get_instance_state_mask failed."; return(result); } if (condition.GetViewStateMask() != DDS.ViewStateKind.Any) { result.Result = "ReadCondition.get_view_state_mask failed."; return(result); } if (condition.GetSampleStateMask() != DDS.SampleStateKind.Any) { result.Result = "ReadCondition.get_sample_state_mask failed."; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(2)."; return(result); } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(2)."; return(result); } queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, "long_1=%0", queryParams); if (condition == null) { result.Result = "Could not create query condition."; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q1)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q1)."; return(result); } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed(2)."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed (q2). "; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q2)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q2)."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q3)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q3)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed(q1)."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q5)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q6)."; return(result); } string expression2 = condition.GetQueryExpression(); if (!expression.Equals(expression2)) { result.Result = "QueryCondition.get_query_expression does not work properly."; return(result); } ssHolder = new string[0]; rc = condition.GetQueryParameters(ref ssHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.get_query_parameters call failed."; return(result); } string[] queryParams2 = ssHolder; if (queryParams2 == null) { result.Result = "QueryCondition.get_query_parameters does not work properly (1)."; return(result); } if (queryParams2.Length != queryParams.Length) { result.Result = "QueryCondition.get_query_parameters does not work properly (2)."; return(result); } if (!queryParams2[0].Equals(queryParams[0])) { result.Result = "QueryCondition.get_query_parameters does not work properly (3)."; return(result); } queryParams[0] = "5"; rc = condition.SetQueryParameters(queryParams); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.set_query_parameters does not work properly."; return(result); } rc = condition.GetQueryParameters(ref ssHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.get_query_parameters call failed (1)."; return(result); } queryParams2 = ssHolder; if (queryParams2 == null) { result.Result = "QueryCondition.get_query_parameters does not work properly (1)."; return(result); } if (queryParams2.Length != queryParams.Length) { result.Result = "QueryCondition.get_query_parameters does not work properly (2)."; return(result); } if (!queryParams2[0].Equals(queryParams[0])) { result.Result = "QueryCondition.get_query_parameters does not work properly (3)."; return(result); } rc = condition.SetQueryParameters(null); if (rc == DDS.ReturnCode.Ok) { result.Result = "QueryCondition.set_query_parameters does not work properly (2)."; this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See OSPL-2628: Query parameter checking should be added."); result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed(q7)."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(q7)."; return(result); } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(q7)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; 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); }
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; }
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.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); }
static void subscribe(int domain_id, int sample_count, String participant_auth, String reader_auth) { // --- Create participant --- // /* Start changes for programmatically qos */ /* If you want to change the Participant's QoS programmatically rather * than using the XML file, you will need to add the following lines to * your code and comment out the participant call above. */ /* Set user_data qos field for participant */ /* Get default participant QoS to customize */ DDS.DomainParticipantQos participant_qos = new DDS.DomainParticipantQos(); DDS.DomainParticipantFactory.get_instance(). get_default_participant_qos(participant_qos); DDS.StringSeq temp = new DDS.StringSeq(0); participant_qos.discovery.multicast_receive_addresses = temp; // user_data is opaque to DDS, so we include trailing \0 for string int len = participant_auth.Length; int max = participant_qos.resource_limits.participant_user_data_max_length; if (len > max) { Console.WriteLine( "error, participant user_data exceeds resource limits"); } else { /* Byte type is defined to be 8 bits. If chars are not 8 bits * on your system, this will not work. */ participant_qos.user_data.value.from_array( System.Text.Encoding.Default.GetBytes(participant_auth)); } DDS.DomainParticipant participant = DDS.DomainParticipantFactory.get_instance().create_participant( domain_id, participant_qos, null, DDS.StatusMask.STATUS_MASK_NONE); if (participant == null) { shutdown(participant); throw new ApplicationException("create_participant error"); } /* End changes for programmatically qos */ /* The participant is disabled by default. We enable it now */ try { participant.enable(); } catch (DDS.Exception e) { Console.WriteLine("failed to enable participant {0}", e); shutdown(participant); throw e; } // --- Create subscriber --- // /* To customize the subscriber QoS, use the configuration file USER_QOS_PROFILES.xml */ 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 = msgTypeSupport.get_type_name(); try { msgTypeSupport.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 msg", 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 */ msgListener reader_listener = new msgListener(); /* Start changes for Builtin_Topics */ /* Set user_data qos field for datareader */ DDS.DataReaderQos datareader_qos = new DDS.DataReaderQos(); subscriber.get_default_datareader_qos(datareader_qos); /* user_data is opaque to DDS, so we include trailing \0 for string */ len = reader_auth.Length; max = participant_qos.resource_limits.reader_user_data_max_length; if (len > max) { Console.WriteLine( "error, datareader user_data exceeds resource limits"); } else { /* Byte type is defined to be 8 bits. If chars are not 8 bits * on your system, this will not work. */ datareader_qos.user_data.value.from_array( System.Text.Encoding.Default.GetBytes(reader_auth)); } /* To customize the data reader QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.DataReader reader = subscriber.create_datareader( topic, datareader_qos, 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 = 1000; // 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() { 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.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.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.ISubscriber subscriber; DDS.DataReaderQos dataReaderQos = null; DDS.DataReaderQos qosHolder = null; DDS.IDataReader reader1; DDS.IDataReader reader2; DDS.IDataReader reader3; DDS.IDataReader lookedUpReader; DDS.ITopic topic1; DDS.ITopic topic2; bool isReader1LookedUp; string expResult = "Lookup DataReader 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); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic1 = (DDS.ITopic) this.ResolveObject("topic"); topic2 = (DDS.ITopic) this.ResolveObject("otherTopic"); rc = subscriber.GetDefaultDataReaderQos(ref qosHolder); dataReaderQos = qosHolder; if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos (1)."; return(result); } reader1 = subscriber.CreateDataReader(topic1, dataReaderQos);//, null, 0); if (reader1 == null) { result.Result = "Could not create a DataReader (2)."; return(result); } reader2 = subscriber.CreateDataReader(topic2, dataReaderQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create a DataReader (3)."; return(result); } reader3 = subscriber.CreateDataReader(topic1, dataReaderQos);//, null, 0); if (reader3 == null) { result.Result = "Could not create a DataReader (4)."; return(result); } lookedUpReader = subscriber.LookupDataReader("my_topic"); if (lookedUpReader != reader1 && lookedUpReader != reader3) { result.Result = "Failed to lookup a DataReader (5)."; return(result); } isReader1LookedUp = lookedUpReader == reader1 ? true : false; lookedUpReader = subscriber.LookupDataReader("my_other_topic"); if (lookedUpReader != reader2) { result.Result = "Failed to lookup a DataReader (6)."; return(result); } lookedUpReader = subscriber.LookupDataReader("non_existing_name"); if (lookedUpReader != null) { result.Result = "Looked up a DataReader for a non existing Topic name (7)."; return(result); } if (isReader1LookedUp) { rc = subscriber.DeleteDataReader(reader1); } else { rc = subscriber.DeleteDataReader(reader3); } if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a DataReader (RETCODE = " + rc + ")(8)."; return(result); } lookedUpReader = subscriber.LookupDataReader("my_topic"); if (isReader1LookedUp) { if (lookedUpReader != reader3) { result.Result = "Failed to lookup a DataReader (reader3) (9)."; return(result); } } else { if (lookedUpReader != reader1) { result.Result = "Failed to lookup a DataReader (reader1) (9)."; return(result); } } if (isReader1LookedUp) { rc = subscriber.DeleteDataReader(reader3); } else { rc = subscriber.DeleteDataReader(reader1); } if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a DataReader (RETCODE = " + rc + ")(10)."; return(result); } rc = subscriber.DeleteDataReader(reader2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a DataReader (RETCODE = " + rc + ")(11)."; return(result); } lookedUpReader = subscriber.LookupDataReader(null); if (lookedUpReader != null) { result.Result = "Looked up a DataReader for an empty Topic name (12)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }