public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.QosProvider qosProvider = null; DDS.DomainParticipantQos participantQos = test.sacs.QosComparer.defaultDomainParticipantQos; DDS.TopicQos topicQos = test.sacs.QosComparer.defaultTopicQos; DDS.SubscriberQos subscriberQos = test.sacs.QosComparer.defaultSubscriberQos; DDS.DataReaderQos readerQos = test.sacs.QosComparer.defaultDataReaderQos; DDS.PublisherQos publisherQos = test.sacs.QosComparer.defaultPublisherQos; DDS.DataWriterQos writerQos = test.sacs.QosComparer.defaultDataWriterQos; DDS.DomainParticipantQos xmlParticipantQos = new DDS.DomainParticipantQos (); DDS.TopicQos xmlTopicQos = new DDS.TopicQos (); DDS.SubscriberQos xmlSubscriberQos = new DDS.SubscriberQos (); DDS.DataReaderQos xmlReaderQos = new DDS.DataReaderQos (); DDS.PublisherQos xmlPublisherQos = new DDS.PublisherQos (); DDS.DataWriterQos xmlWriterQos = new DDS.DataWriterQos (); qosProvider = new DDS.QosProvider (this.uri, null); if (qosProvider.GetParticipantQos (ref xmlParticipantQos, null) != 0 || qosProvider.GetTopicQos (ref xmlTopicQos, null) != 0 || qosProvider.GetSubscriberQos (ref xmlSubscriberQos, null) != 0 || qosProvider.GetDataReaderQos (ref xmlReaderQos, null) != 0 || qosProvider.GetPublisherQos (ref xmlPublisherQos, null) != 0 || qosProvider.GetDataWriterQos (ref xmlWriterQos, null) != 0) { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider did not parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else if (!QosComparer.DomainParticipantQosEquals (xmlParticipantQos, participantQos) || !QosComparer.TopicQosEquals (xmlTopicQos, topicQos) || !QosComparer.SubscriberQosEquals (xmlSubscriberQos, subscriberQos) || !QosComparer.DataReaderQosEquals (xmlReaderQos, readerQos) || !QosComparer.PublisherQosEquals (xmlPublisherQos, publisherQos) || !QosComparer.DataWriterQosEquals (xmlWriterQos, writerQos)) { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider did not correctly parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider correctly parsed XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Pass); } return result; }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.PublisherQos pubQosHolder = null; DDS.IPublisher publisher; Test.Framework.TestResult result; result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "DomainParticipantFactory could not be initialized."; return(result); } if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0); if (participant == null) { result.Result = "Creation of DomainParticipant failed."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } publisher = participant.CreatePublisher(pubQosHolder);//, null, 0); if (publisher == null) { result.Result = "Publisher could not be created."; return(result); } testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqosHolder); testCase.RegisterObject("participant", participant); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("publisherQos", pubQosHolder); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "Setting/resolving default PublisherQos succeeded."; DDS.IDomainParticipant participant; DDS.PublisherQos pubQosHolder = null; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Publisher qos could not be resolved."; 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.IPublisher publisher; DDS.PublisherQos qos = null; DDS.PublisherQos qos2 = null; string expResult = "PublisherQos 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); publisher = (DDS.IPublisher) this.ResolveObject("publisher"); qos2 = (DDS.PublisherQos) this.ResolveObject("publisherQos"); if (publisher.GetQos(ref qos) != DDS.ReturnCode.Ok) { result.Result = "Get PublisherQos failed."; return(result); } if (!test.sacs.QosComparer.PublisherQosEquals(qos, qos2)) { result.Result = "PublisherQosses not equal."; return(result); } qos.Partition.Name = new string[3]; qos.Partition.Name[0] = "aap"; qos.Partition.Name[1] = "noot"; qos.Partition.Name[2] = "mies"; rc = publisher.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set PublisherQos failed (2)."; return(result); } publisher.GetQos(ref qos2); if (!test.sacs.QosComparer.PublisherQosEquals(qos, qos2)) { result.Result = "PublisherQosses not equal (2)."; return(result); } qos.GroupData.Value = new byte[2]; qos.GroupData.Value[0] = 1; qos.GroupData.Value[1] = 2; rc = publisher.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set PublisherQos failed (3)."; return(result); } publisher.GetQos(ref qos2); if (!test.sacs.QosComparer.PublisherQosEquals(qos, qos2)) { result.Result = "PublisherQosses not equal (3)."; return(result); } qos.Presentation.AccessScope = DDS.PresentationQosPolicyAccessScopeKind.InstancePresentationQos; rc = publisher.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set PublisherQos failed (4)."; System.Console.Out.WriteLine("return code = " + rc); return(result); } publisher.GetQos(ref qos2); if (!test.sacs.QosComparer.PublisherQosEquals(qos, qos2)) { result.Result = "PublisherQosses not equal (4)."; return(result); } qos.Presentation.CoherentAccess = false; rc = publisher.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set PublisherQos failed (5)."; return(result); } publisher.GetQos(ref qos2); if (!test.sacs.QosComparer.PublisherQosEquals(qos, qos2)) { result.Result = "PublisherQosses not equal (5)."; return(result); } qos.Presentation.OrderedAccess = false; rc = publisher.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set PublisherQos failed (6)."; return(result); } publisher.GetQos(ref qos2); if (!test.sacs.QosComparer.PublisherQosEquals(qos, qos2)) { result.Result = "PublisherQosses not equal (6)."; return(result); } qos.Presentation.AccessScope = DDS.PresentationQosPolicyAccessScopeKind.TopicPresentationQos; rc = publisher.SetQos(qos); if (rc != DDS.ReturnCode.ImmutablePolicy) { result.Result = "Unexpected returncode " + rc + " when setting immutable QoS policy (7)."; return(result); } qos2.EntityFactory.AutoenableCreatedEntities = false; rc = publisher.SetQos(qos2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Unexpected returncode " + rc + " when setting invalid QoS policy (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 && !terminate; block++) { while (!finish_flag) { /* * Send Initial message */ timeout_flag = false; switch (topic_id) { case 'm': { /* System.Console.WriteLine ("PING: sending initial ping_min"); */ pingpong.PP_min_msg PPdata = new pingpong.PP_min_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_min_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 'q': { /* System.Console.WriteLine ("PING: sending initial ping_seq"); */ pingpong.PP_seq_msg PPdata = new pingpong.PP_seq_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_seq_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 's': { //System.Console.WriteLine ("PING: sending initial ping_string"); pingpong.PP_string_msg PPdata = new pingpong.PP_string_msg(); PPdata.count = 0; PPdata.block = block; PPdata.a_string = "a_string " + block.ToString(); preWriteTime.timeGet(); result = PP_string_writer.Write(PPdata); ErrorHandler.checkStatus(result, "writing PPData in case S"); postWriteTime.timeGet(); } break; case 'f': { /* System.Console.WriteLine ("PING: sending initial ping_fixed"); */ pingpong.PP_fixed_msg PPdata = new pingpong.PP_fixed_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_fixed_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 'a': { /* System.Console.WriteLine ("PING: sending initial ping_array"); */ pingpong.PP_array_msg PPdata = new pingpong.PP_array_msg(); PPdata.count = 0; PPdata.block = block; PPdata.str_arr_char = new char[10]; PPdata.str_arr_octet = new byte[10]; PPdata.str_arr_short = new short[10]; PPdata.str_arr_ushort = new ushort[10]; PPdata.str_arr_long = new int[10]; PPdata.str_arr_ulong = new uint[10]; PPdata.str_arr_longlong = new long[10]; PPdata.str_arr_ulonglong = new ulong[10]; PPdata.str_arr_float = new float[10]; PPdata.str_arr_double = new double[10]; PPdata.str_arr_boolean = new Boolean[11]; preWriteTime.timeGet(); result = PP_array_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 't': { /* System.Console.WriteLine ("PING: sending initial ping_quit"); */ pingpong.PP_quit_msg PPdata = new pingpong.PP_quit_msg(); PPdata.quit = true; terminate = true; finish_flag = true; System.Threading.Thread.Sleep(1000); preWriteTime.timeGet(); result = PP_quit_writer.Write(PPdata); postWriteTime.timeGet(); System.Threading.Thread.Sleep(1000); } break; default: System.Console.WriteLine("Invalid topic-id"); return; } if (!terminate) { roundTripTime.set(preWriteTime.get()); write_access.add_stats(postWriteTime.sub(preWriteTime)); /* * Wait for response, calculate timing, and send another * data if not ready */ while (!(timeout_flag || finish_flag)) { result = w.Wait(ref conditionList, wait_timeout); if (result == DDS.ReturnCode.Ok || result == DDS.ReturnCode.NoData || result == DDS.ReturnCode.Timeout) { //ErrorHandler.checkStatus(result, "wait did not work condition list is probably null!"); if (conditionList != null) { imax = conditionList.Length; if (imax != 0) { for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { finish_flag = PP_min_handler(nof_cycles); } else if (conditionList[i] == PP_seq_sc) { finish_flag = PP_seq_handler(nof_cycles); } else if (conditionList[i] == PP_string_sc) { finish_flag = PP_string_handler(nof_cycles); } else if (conditionList[i] == PP_fixed_sc) { finish_flag = PP_fixed_handler(nof_cycles); } else if (conditionList[i] == PP_array_sc) { finish_flag = PP_array_handler(nof_cycles); } else { System.Console.WriteLine("PING: unexpected condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (1)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (2)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: Waitset wait failed (code " + result + "), terminating"); finish_flag = true; terminate = true; } } } } if (!terminate) { finish_flag = false; if (block == 0) { System.Console.WriteLine("# PING PONG measurements (in us)"); System.Console.WriteLine("# Executed at: "); System.Console.WriteLine("# Roundtrip time [us] Write-access time [us] Read-access time [us]"); System.Console.WriteLine("# Block Count mean min max Count mean min max Count mean min max"); } System.Console.WriteLine(String.Format("{0,-6} {1, 10} {2, 6} {3, 6} {4, 6} {5, 10} {6, 6} {7, 6} {8, 6} {9, 10} {10, 6} {11, 6} {12, 6}", block, roundtrip.count, roundtrip.average, roundtrip.min, roundtrip.max, write_access.count, write_access.average, write_access.min, write_access.max, read_access.count, read_access.average, read_access.min, read_access.max)); Console.Out.Flush(); write_access.init_stats(); read_access.init_stats(); roundtrip.init_stats(); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = p.DeleteDataWriter(PP_quit_writer); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqos = null; DDS.SubscriberQos subQos = null; DDS.ISubscriber subscriber; DDS.PublisherQos pubQos = null; DDS.IPublisher publisher; mod.tstTypeSupport typeSupport; DDS.TopicQos tQos = null; DDS.ITopic topic; DDS.DataReaderQos drQos = null; mod.tstDataReader datareader; DDS.DataWriterQos dwQos = null; mod.tstDataWriter datawriter; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "DomainParticipantFactory could not be initialized."; return(result); } if (factory.GetDefaultParticipantQos(ref pqos) != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } participant = factory.CreateParticipant(DDS.DomainId.Default, pqos);//, null, 0); if (participant == null) { result.Result = "Creation of DomainParticipant failed."; return(result); } if (participant.GetDefaultSubscriberQos(ref subQos) != DDS.ReturnCode.Ok) { result.Result = "Default SubscriberQos could not be resolved."; return(result); } subscriber = participant.CreateSubscriber(subQos);//, null, 0); if (subscriber == null) { result.Result = "Subscriber could not be created."; return(result); } typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "tstType"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Typesupport could not be registered."; return(result); } if (participant.GetDefaultTopicQos(ref tQos) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } topic = participant.CreateTopic("tst", "tstType", tQos);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQos) != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } publisher = participant.CreatePublisher(pubQos);//, null, 0); if (publisher == null) { result.Result = "Publisher could not be created."; return(result); } if (subscriber.GetDefaultDataReaderQos(ref drQos) != DDS.ReturnCode.Ok) { result.Result = "Default DataReaderQos could not be resolved."; return(result); } datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (datareader == null) { result.Result = "DataReader could not be created."; return(result); } if (publisher.GetDefaultDataWriterQos(ref dwQos) != DDS.ReturnCode.Ok) { result.Result = "Default DataWriterQos could not be resolved."; return(result); } datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, dwQos);//, null, 0); testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqos); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", tQos); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("subscriberQos", subQos); testCase.RegisterObject("datareader", datareader); testCase.RegisterObject("datareaderQos", drQos); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("publisherQos", pubQos); testCase.RegisterObject("datawriter", datawriter); testCase.RegisterObject("datawriterQos", dwQos); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public 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; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Default publisherQos is used when PUBLISHER_QOS_DEFAULT is specified."; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.PublisherQos pubQosHolder = null; DDS.PublisherQos pubQosHolder2 = null; DDS.IPublisher pub; DDS.ReturnCode returnCode; factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could not be initialised." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Default DomainParticipantQos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0); if (participant == null) { result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Publisher qos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } string[] name = new string[2]; name[0] = "Publisher"; name[1] = "QoS"; pubQosHolder.Partition.Name = name; returnCode = participant.SetDefaultPublisherQos(pubQosHolder); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Setting default publisher QoS failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } pub = participant.CreatePublisher(); if (pub == null) { result = new Test.Framework.TestResult(expResult, "Publisher could not be created." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } pub.GetQos(ref pubQosHolder2); if (!pubQosHolder.Partition.Name[0].Equals(pubQosHolder.Partition.Name [0]) || !pubQosHolder.Partition.Name[1].Equals(pubQosHolder.Partition .Name[1])) { result = new Test.Framework.TestResult(expResult, "Default publisher QoS is not taken when PUBLISHER_QOS_DEFAULT is specified." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = participant.DeletePublisher(pub); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Deletion of Publisher failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = factory.DeleteParticipant(participant); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Deletion of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict ); return(result); }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.IPublisher publisher; DDS.IPublisher publisher2; DDS.PublisherQos qos = null; DDS.IDataWriter writer; DDS.DataWriterQos dataWriterQosHolder = null; DDS.ITopic topic; string expResult = "PublisherQos 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"); publisher = (DDS.IPublisher) this.ResolveObject("publisher"); qos = (DDS.PublisherQos) this.ResolveObject("publisherQos"); topic = (DDS.ITopic) this.ResolveObject("topic"); rc = participant.DeletePublisher(publisher); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a publisher (1)"; return(result); } qos.Partition.Name = new string[] { "Partition1", "Partition2", "Partition3" }; publisher2 = participant.CreatePublisher(qos);//, null, 0); if (publisher2 == null) { result.Result = "could not create a publisher (2)"; return(result); } publisher2.GetDefaultDataWriterQos(ref dataWriterQosHolder); if (topic == null) { result.Result = "topic == null"; return(result); } writer = publisher2.CreateDataWriter(topic, dataWriterQosHolder);//, null, 0); if (writer == null) { result.Result = "could not create a writer (3)"; return(result); } rc = participant.DeletePublisher(publisher2); if (rc != DDS.ReturnCode.PreconditionNotMet) { result.Result = "returncode = " + rc + ". Expected returncode 4 (PRECONDITION_NOT_MET) (4)."; return(result); } rc = publisher2.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a datawriter (5)"; return(result); } rc = publisher2.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.BadParameter) { result.Result = "expected RETCODE_BAD_PARAMETER but received Retcode " + rc + " after deleting an already deleted datawriter (6)"; return(result); } participant2 = publisher2.GetParticipant(); if (participant != participant2) { result.Result = "Looked up participant != participant (7)"; return(result); } rc = participant.DeletePublisher(publisher2); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a publisher (8)"; return(result); } writer = publisher2.CreateDataWriter(topic, dataWriterQosHolder);//, null, 0); if (writer != null) { result.Result = "could create a writer on a deleted publisher (9)"; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "set/get default_qos test succeeded."; DDS.ReturnCode rc; DDS.IDomainParticipant participant; DDS.PublisherQos pholder; DDS.SubscriberQos sholder; DDS.TopicQos tholder; DDS.PublisherQos pqos; DDS.SubscriberQos sqos; DDS.TopicQos tqos; DDS.PartitionQosPolicy pqp; participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); pholder = new DDS.PublisherQos(); sholder = new DDS.SubscriberQos(); tholder = new DDS.TopicQos(); if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return result; } pqos = pholder; string[] partitions = new string[2]; partitions[0] = "partition"; partitions[1] = "partition2"; pqp = new DDS.PartitionQosPolicy(); pqp.Name = partitions; pqos.Partition = pqp; rc = participant.SetDefaultPublisherQos(pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_publisher_qos failed (1)."; return result; } if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed (2)."; return result; } if (!test.sacs.QosComparer.PublisherQosEquals(pqos, pholder)) { result.Result = "resolved qos does not match the applied one."; return result; } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed."; return result; } sqos = sholder; sqos.Partition = pqp; rc = participant.SetDefaultSubscriberQos(sqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_subscriber_qos failed (1)."; return result; } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed (2)."; return result; } if (!test.sacs.QosComparer.SubscriberQosEquals(sqos, sholder)) { result.Result = "resolved qos does not match the applied one (2)."; return result; } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed."; return result; } tqos = tholder; tqos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; rc = participant.SetDefaultTopicQos(tqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_topic_qos failed (1)."; return result; } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed (2)."; return result; } if (!test.sacs.QosComparer.TopicQosEquals(tqos, tholder)) { result.Result = "resolved qos does not match the applied one (3)."; return result; } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "set/get default_qos test succeeded."; DDS.ReturnCode rc; DDS.IDomainParticipant participant; DDS.PublisherQos pholder; DDS.SubscriberQos sholder; DDS.TopicQos tholder; DDS.PublisherQos pqos; DDS.SubscriberQos sqos; DDS.TopicQos tqos; DDS.PartitionQosPolicy pqp; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); pholder = new DDS.PublisherQos(); sholder = new DDS.SubscriberQos(); tholder = new DDS.TopicQos(); if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return(result); } pqos = pholder; string[] partitions = new string[2]; partitions[0] = "partition"; partitions[1] = "partition2"; pqp = new DDS.PartitionQosPolicy(); pqp.Name = partitions; pqos.Partition = pqp; rc = participant.SetDefaultPublisherQos(pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_publisher_qos failed (1)."; return(result); } if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.PublisherQosEquals(pqos, pholder)) { result.Result = "resolved qos does not match the applied one."; return(result); } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed."; return(result); } sqos = sholder; sqos.Partition = pqp; rc = participant.SetDefaultSubscriberQos(sqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_subscriber_qos failed (1)."; return(result); } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.SubscriberQosEquals(sqos, sholder)) { result.Result = "resolved qos does not match the applied one (2)."; return(result); } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed."; return(result); } tqos = tholder; tqos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; rc = participant.SetDefaultTopicQos(tqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_topic_qos failed (1)."; return(result); } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.TopicQosEquals(tqos, tholder)) { result.Result = "resolved qos does not match the applied one (3)."; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
static void publish(int domain_id, int sample_count) { // --- Create participant --- // /* To customize participant QoS, use * the configuration file USER_QOS_PROFILES.xml */ DDS.DomainParticipant participant = DDS.DomainParticipantFactory.get_instance().create_participant( domain_id, DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (participant == null) { shutdown(participant); throw new ApplicationException("create_participant error"); } // --- Create publisher --- // DDS.PublisherQos publisher_qos = new DDS.PublisherQos(); participant.get_default_publisher_qos(publisher_qos); /* If you want to change the Partition name programmatically rather than * using the XML, you will need to add the following lines to your code * and comment out the create_publisher() call bellow. */ /* * String[] partitions = { "ABC", "foo" }; * * publisher_qos.partition.name.ensure_length(2, 2); * publisher_qos.partition.name.from_array(partitions); * DDS.Publisher publisher = participant.create_publisher( * publisher_qos, * null, * DDS.StatusMask.STATUS_MASK_NONE); * */ DDS.Publisher publisher = participant.create_publisher( DDS.DomainParticipant.PUBLISHER_QOS_DEFAULT, null, DDS.StatusMask.STATUS_MASK_NONE); if (publisher == null) { shutdown(participant); throw new ApplicationException("create_publisher error"); } Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); // --- Create topic --- // /* Register type before creating topic */ System.String type_name = partitionsTypeSupport.get_type_name(); try { partitionsTypeSupport.register_type( participant, type_name); } catch (DDS.Exception e) { Console.WriteLine("register_type error {0}", e); shutdown(participant); throw e; } /* To customize topic QoS, use * the configuration file USER_QOS_PROFILES.xml */ DDS.Topic topic = participant.create_topic( "Example partitions", type_name, DDS.DomainParticipant.TOPIC_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (topic == null) { shutdown(participant); throw new ApplicationException("create_topic error"); } // --- Create writer --- // /* In this example we set a Reliable datawriter, with Transient Local * durability. By default we set up these QoS settings via XML. If you * want to to it programmatically, use the following code, and comment out * the create_datawriter call bellow. */ /* * DDS.DataWriterQos writerQos = new DDS.DataWriterQos(); * publisher.get_default_datawriter_qos(writerQos); * * writerQos.reliability.kind = DDS.ReliabilityQosPolicyKind.RELIABLE_RELIABILITY_QOS; * writerQos.history.depth = 3; * writerQos.history.kind = DDS.HistoryQosPolicyKind.KEEP_LAST_HISTORY_QOS; * writerQos.durability.kind = DDS.DurabilityQosPolicyKind.TRANSIENT_LOCAL_DURABILITY_QOS; * * DDS.DataWriter writer = publisher.create_datawriter( * topic, * writerQos, * null, * DDS.StatusMask.STATUS_MASK_NONE); */ DDS.DataWriter writer = publisher.create_datawriter( topic, DDS.Publisher.DATAWRITER_QOS_DEFAULT, null, DDS.StatusMask.STATUS_MASK_NONE); if (writer == null) { shutdown(participant); throw new ApplicationException("create_datawriter error"); } partitionsDataWriter partitions_writer = (partitionsDataWriter)writer; // --- Write --- // /* Create data sample for writing */ partitions instance = partitionsTypeSupport.create_data(); if (instance == null) { shutdown(participant); throw new ApplicationException( "partitionsTypeSupport.create_data error"); } /* For a data type that has a key, if the same instance is going to be * written multiple times, initialize the key here * and register the keyed instance prior to writing */ DDS.InstanceHandle_t instance_handle = DDS.InstanceHandle_t.HANDLE_NIL; /* * instance_handle = partitions_writer.register_instance(instance); */ /* Main loop */ const System.Int32 send_period = 1000; // 1 second for (int count = 0; (sample_count == 0) || (count < sample_count); ++count) { Console.WriteLine("Writing partitions, count {0}", count); /* Modify the data to be sent here */ instance.x = count; try { partitions_writer.write(instance, ref instance_handle); } catch (DDS.Exception e) { Console.WriteLine("write error {0}", e); } if ((count + 1) % 25 == 0) { // Matches "ABC" -- name[1] here can match name[0] there, // as long as there is some overlapping name publisher_qos.partition.name.set_at(0, "zzz"); publisher_qos.partition.name.set_at(1, "A*C"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 20 == 0) { // Strings that are regular expressions aren't tested for // literal matches, so this won't match "X*Z" publisher_qos.partition.name.set_at(0, "X*Z"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 15 == 0) { // Matches "ABC" publisher_qos.partition.name.set_at(0, "A?C"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 10 == 0) { // Matches "ABC" publisher_qos.partition.name.set_at(0, "A*"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 5 == 0) { // No literal match for "bar" publisher_qos.partition.name.set_at(0, "bar"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } System.Threading.Thread.Sleep(send_period); } /* * try { * partitions_writer.unregister_instance( * instance, ref instance_handle); * } catch(DDS.Exception e) { * Console.WriteLine("unregister instance error: {0}", e); * } */ // --- Shutdown --- // /* Delete data sample */ try { partitionsTypeSupport.delete_data(instance); } catch (DDS.Exception e) { Console.WriteLine( "partitionsTypeSupport.delete_data error: {0}", e); } /* Delete all entities */ shutdown(participant); }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; DDS.IPublisher publisher; DDS.IPublisher publisher2; DDS.PublisherQos qos = null; DDS.IDataWriter writer; DDS.IDataWriter writer2; DDS.DataWriterQos dataWriterQosHolder = null; DDS.DataWriterQos dataWriterQos = null; DDS.ITopic topic; DDS.ITopic topic2; DDS.TopicQos defaultTopicQos = null; mod.tstTypeSupport typeSupport; string expResult = "Successful creation and deletion of DataWriters"; 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"); publisher = (DDS.IPublisher) this.ResolveObject("publisher"); qos = (DDS.PublisherQos) this.ResolveObject("publisherQos"); topic = (DDS.ITopic) this.ResolveObject("topic"); defaultTopicQos = (DDS.TopicQos) this.ResolveObject("topicQos"); publisher.GetDefaultDataWriterQos(ref dataWriterQosHolder); writer = publisher.CreateDataWriter(topic, dataWriterQosHolder);//, null, 0); if (writer == null) { result.Result = "could not create a writer (1)."; return(result); } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a writer (2)."; return(result); } try { writer = publisher.CreateDataWriter(null, dataWriterQosHolder);//, null, 0); } catch (System.NullReferenceException) { writer = null; } if (writer != null) { result.Result = "could create a writer with invalid topic (3)."; return(result); } typeSupport = new mod.tstTypeSupport(); if (typeSupport == null) { result.Result = "Creation of tstTypeSupport failed."; return(result); } rc = typeSupport.RegisterType(participant, "my_other_type"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } publisher2 = participant.CreatePublisher(qos);//, null, 0); if (publisher2 == null) { result.Result = "creation of a second publisher failed."; return(result); } topic2 = participant.CreateTopic("my_other_topic", "my_other_type", defaultTopicQos);//, null, 0); if (topic2 == null) { result.Result = "Topic2 could not be created."; return(result); } writer = publisher.CreateDataWriter(topic2, dataWriterQosHolder);//, null, 0); if (writer == null) { result.Result = "could not create a writer with another topic (4)."; return(result); } writer2 = publisher.LookupDataWriter("my_other_topic"); if (writer2 == null) { result.Result = "could not lookup writer (5)."; return(result); } if (writer2 != writer) { result.Result = "looked-up writer != initial writer (6)."; return(result); } writer2 = null; writer2 = publisher.LookupDataWriter("unknown_topic_name"); if (writer2 != null) { result.Result = "could lookup writer with unknown topic name (7)."; return(result); } rc = publisher2.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.PreconditionNotMet) { result.Result = "Expected returncode PRECONDITION_NOT_MET instead of " + rc + " after deleting a writer on wrong publisher (8)."; return(result); } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a writer (9)."; return(result); } rc = participant.DeleteTopic(topic2); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a topic (10)."; return(result); } writer = publisher.CreateDataWriter(topic2, dataWriterQosHolder);//, null, 0); if (writer != null) { result.Result = "could create a writer with an already deleted topic (11)."; return(result); } dataWriterQos = dataWriterQosHolder; dataWriterQos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; dataWriterQos.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; writer = publisher.CreateDataWriter(topic, dataWriterQos);//, null, 0); if (writer == null) { result.Result = "could not create a writer with TRANSIENT durabilityQosPolicy (12)."; return(result); } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a writer (13)."; return(result); } dataWriterQos.Durability.Kind = DDS.DurabilityQosPolicyKind.PersistentDurabilityQos; writer = publisher.CreateDataWriter(topic, dataWriterQos);//, null, 0); if (writer == null) { result.Result = "could not create a writer with PERSISTENT durabilityQosPolicy (14)."; return(result); } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "could not delete a writer (15)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.SubscriberQos subQosHolder = null; DDS.DataReaderQos drQosHolder = null; DDS.ISubscriber subscriber; DDS.PublisherQos pubQosHolder = null; DDS.IPublisher publisher; mod.tstTypeSupport typeSupport; DDS.TopicQos tQosHolder = null; DDS.ITopic topic; DDS.DataWriterQos dwQosHolder = null; mod.tstDataWriter datawriter; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "DomainParticipantFactory could not be initialized."; return(result); } if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0); if (participant == null) { result.Result = "Creation of DomainParticipant failed."; return(result); } if (participant.GetDefaultSubscriberQos(ref subQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default SubscriberQos could not be resolved."; return(result); } subQosHolder.Partition.Name = new string[1]; subQosHolder.Partition.Name[0] = "testPartition"; subscriber = participant.CreateSubscriber(subQosHolder);//, null, 0); if (subscriber == null) { result.Result = "Subscriber could not be created."; return(result); } typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "tstType"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Typesupport could not be registered."; return(result); } if (participant.GetDefaultTopicQos(ref tQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } tQosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; tQosHolder.Reliability.Kind = DDS.ReliabilityQosPolicyKind.ReliableReliabilityQos; topic = participant.CreateTopic("tst", "tstType", tQosHolder);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } pubQosHolder.Partition.Name = new string[1]; pubQosHolder.Partition.Name[0] = "testPartition"; publisher = participant.CreatePublisher(pubQosHolder);//, null, 0); if (publisher == null) { result.Result = "Publisher could not be created."; return(result); } if (publisher.CopyFromTopicQos(ref dwQosHolder, tQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default DataWriterQos could not be resolved."; return(result); } dwQosHolder.WriterDataLifecycle.AutodisposeUnregisteredInstances = true; datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, dwQosHolder);//, null, 0); if (datawriter == null) { result.Result = "DataWriter could not be created."; return(result); } if (subscriber.CopyFromTopicQos(ref drQosHolder, tQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default DataReaderQos could not be resolved."; return(result); } drQosHolder.Durability.Kind = DDS.DurabilityQosPolicyKind.VolatileDurabilityQos; testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqosHolder); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", tQosHolder); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("subscriberQos", subQosHolder); testCase.RegisterObject("datareaderQos", drQosHolder); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("publisherQos", pubQosHolder); testCase.RegisterObject("datawriter", datawriter); testCase.RegisterObject("datawriterQos", dwQosHolder); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.TopicQos topQosHolder = null; DDS.ITopic topic; mod.tstTypeSupport typeSupport = null; mod.tstDataReader datareader; test.sacs.MyDataReaderListener listener; DDS.ISubscriber subscriber; DDS.SubscriberQos sqosHolder = null; DDS.DataReaderQos dqosHolder = null; DDS.IPublisher publisher; DDS.PublisherQos pubQosHolder = null; mod.tstDataWriter datawriter; DDS.DataWriterQos wqosHolder = null; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "DataReaderListener test succeeded."; 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.TestResult result; string expResult = "DomainParticipant Publisher test succeeded."; DDS.PublisherQos pubQosHolder = null; DDS.IPublisher publisher; DDS.IPublisher publisher2; DDS.ReturnCode returnCode; DDS.DomainParticipantQos qos = null; DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.DomainParticipantFactory factory; factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); qos = (DDS.DomainParticipantQos) this.ResolveObject("participantQos"); if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Get default PublisherQos failed."; return(result); } publisher = participant.CreatePublisher(pubQosHolder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return(result); } publisher2 = participant.CreatePublisher(null, null, 0); if (publisher2 != null) { this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See scdds213"); result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; result.Result = "Create Publisher with BAD_PARAM succeeded."; participant.DeleteContainedEntities(); return(result); } participant2 = factory.CreateParticipant(DDS.DomainId.Default, qos);//, null, 0); if (participant2 == null) { result.Result = "Create Participant failed."; return(result); } returnCode = participant2.DeletePublisher(publisher); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete publisher on wrong Participant succeeded."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Participant failed."; return(result); } returnCode = participant.DeletePublisher(publisher); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Publisher failed."; return(result); } returnCode = participant.DeletePublisher(publisher); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete of already deleted Publisher succeeded."; return(result); } try { returnCode = participant.DeletePublisher(null); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete null Publisher succeeded."; return(result); } } catch {} result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; 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() { 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; }
/* * P I N G */ public void run(String[] args) { System.Console.WriteLine("starting PING"); DDS.ICondition[] conditionList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; DDS.Duration wait_timeout = new DDS.Duration(3, 0); DDS.ReturnCode result; Boolean finish_flag = false; Boolean timeout_flag = false; Boolean terminate = false; int imax = 1; int i; uint block; int nof_cycles = 100; int nof_blocks = 20; /** * Command Line argument processing */ if (args.Length != 0) { if (args.Length != 5) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: ping blocks blocksize topic_id WRITE_PARTITION READ_PARTITION "); Environment.Exit(1); } nof_blocks = int.Parse(args[0]); nof_cycles = int.Parse(args[1]); topic_id = args[2][0]; write_partition = args[3]; read_partition = args[4]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); ErrorHandler.checkHandle(dpf, "DDS.DomainParticipantFactory.Instance"); dp = dpf.CreateParticipant(myDomain, dpQos); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PING publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PONG subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /*match data reader/writer qos with topic qos*/ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); ErrorHandler.checkStatus(result, "attach condition pp_min_reader"); //assert (result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); ErrorHandler.checkStatus(result, "attach condition pp_seq_reader"); //assert (result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic, drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); ErrorHandler.checkStatus(result, "attach condition pp_string_reader"); //assert (result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); ErrorHandler.checkStatus(result, "attach condition pp_fixed_reader"); //assert (result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); ErrorHandler.checkStatus(result, "attach condition pp_array_reader"); //assert (result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datawriter */ PP_quit_writer = p.CreateDataWriter(PP_quit_topic, dwQos) as pingpong.PP_quit_msgDataWriter; for (block = 0; block < nof_blocks; block++) { while (!finish_flag) { /* * Send Initial message */ timeout_flag = false; switch (topic_id) { case 'm': { /* System.Console.WriteLine ("PING: sending initial ping_min"); */ pingpong.PP_min_msg PPdata = new pingpong.PP_min_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_min_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 'q': { /* System.Console.WriteLine ("PING: sending initial ping_seq"); */ pingpong.PP_seq_msg PPdata = new pingpong.PP_seq_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_seq_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 's': { //System.Console.WriteLine ("PING: sending initial ping_string"); pingpong.PP_string_msg PPdata = new pingpong.PP_string_msg(); PPdata.count = 0; PPdata.block = block; PPdata.a_string = "a_string " + block.ToString(); preWriteTime.timeGet(); result = PP_string_writer.Write(PPdata); ErrorHandler.checkStatus(result, "writing PPData in case S"); postWriteTime.timeGet(); } break; case 'f': { /* System.Console.WriteLine ("PING: sending initial ping_fixed"); */ pingpong.PP_fixed_msg PPdata = new pingpong.PP_fixed_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_fixed_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 'a': { /* System.Console.WriteLine ("PING: sending initial ping_array"); */ pingpong.PP_array_msg PPdata = new pingpong.PP_array_msg(); PPdata.count = 0; PPdata.block = block; PPdata.str_arr_char = new char[10]; PPdata.str_arr_octet = new byte[10]; PPdata.str_arr_short = new short[10]; PPdata.str_arr_ushort = new ushort[10]; PPdata.str_arr_long = new int[10]; PPdata.str_arr_ulong = new uint[10]; PPdata.str_arr_longlong = new long[10]; PPdata.str_arr_ulonglong = new ulong[10]; PPdata.str_arr_float = new float[10]; PPdata.str_arr_double = new double[10]; PPdata.str_arr_boolean = new Boolean[11]; preWriteTime.timeGet(); result = PP_array_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 't': { /* System.Console.WriteLine ("PING: sending initial ping_quit"); */ pingpong.PP_quit_msg PPdata = new pingpong.PP_quit_msg(); PPdata.quit = true; terminate = true; finish_flag = true; preWriteTime.timeGet(); result = PP_quit_writer.Write(PPdata); postWriteTime.timeGet(); } break; default: System.Console.WriteLine("Invalid topic-id"); return; } if (!terminate) { roundTripTime.set(preWriteTime.get()); write_access.add_stats(postWriteTime.sub(preWriteTime)); /* * Wait for response, calculate timing, and send another * data if not ready */ while (!(timeout_flag || finish_flag)) { result = w.Wait(ref conditionList, wait_timeout); //ErrorHandler.checkStatus(result, "wait did not work condition list is probably null!"); if (conditionList != null) { imax = conditionList.Length; if (imax != 0) { for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { finish_flag = PP_min_handler(nof_cycles); } else if (conditionList[i] == PP_seq_sc) { finish_flag = PP_seq_handler(nof_cycles); } else if (conditionList[i] == PP_string_sc) { finish_flag = PP_string_handler(nof_cycles); } else if (conditionList[i] == PP_fixed_sc) { finish_flag = PP_fixed_handler(nof_cycles); } else if (conditionList[i] == PP_array_sc) { finish_flag = PP_array_handler(nof_cycles); } else { System.Console.WriteLine("PING: unexpected condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (1)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (2)"); timeout_flag = true; } } } } if (!terminate) { finish_flag = false; if (block == 0) { System.Console.WriteLine("# PING PONG measurements (in us)"); System.Console.WriteLine("# Executed at: "); System.Console.WriteLine("# Roundtrip time [us] Write-access time [us] Read-access time [us]"); System.Console.WriteLine("# Block Count mean min max Count mean min max Count mean min max"); } System.Console.WriteLine(String.Format("{0,-6} {1, 10} {2, 6} {3, 6} {4, 6} {5, 10} {6, 6} {7, 6} {8, 6} {9, 10} {10, 6} {11, 6} {12, 6}", block,roundtrip.count,roundtrip.average,roundtrip.min, roundtrip.max,write_access.count, write_access.average,write_access.min, write_access.max, read_access.count, read_access.average, read_access.min, read_access.max)); Console.Out.Flush(); write_access.init_stats(); read_access.init_stats(); roundtrip.init_stats(); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = p.DeleteDataWriter(PP_quit_writer); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.QosProvider qosProvider = null; DDS.DomainParticipantQos participantQos = test.sacs.QosComparer.defaultDomainParticipantQos; DDS.TopicQos topicQos = test.sacs.QosComparer.defaultTopicQos; DDS.SubscriberQos subscriberQos = test.sacs.QosComparer.defaultSubscriberQos; DDS.DataReaderQos readerQos = test.sacs.QosComparer.defaultDataReaderQos; DDS.PublisherQos publisherQos = test.sacs.QosComparer.defaultPublisherQos; DDS.DataWriterQos writerQos = test.sacs.QosComparer.defaultDataWriterQos; DDS.DomainParticipantQos xmlParticipantQos = new DDS.DomainParticipantQos(); DDS.TopicQos xmlTopicQos = new DDS.TopicQos(); DDS.SubscriberQos xmlSubscriberQos = new DDS.SubscriberQos(); DDS.DataReaderQos xmlReaderQos = new DDS.DataReaderQos(); DDS.PublisherQos xmlPublisherQos = new DDS.PublisherQos(); DDS.DataWriterQos xmlWriterQos = new DDS.DataWriterQos(); qosProvider = new DDS.QosProvider(this.uri, string.Empty); if (qosProvider.GetParticipantQos(ref xmlParticipantQos, null) != 0 || qosProvider.GetTopicQos(ref xmlTopicQos, null) != 0 || qosProvider.GetSubscriberQos(ref xmlSubscriberQos, null) != 0 || qosProvider.GetDataReaderQos(ref xmlReaderQos, null) != 0 || qosProvider.GetPublisherQos(ref xmlPublisherQos, null) != 0 || qosProvider.GetDataWriterQos(ref xmlWriterQos, null) != 0) { result = new Test.Framework.TestResult( "QosProvider should successfully parse XML file", "QosProvider did not parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else if (!QosComparer.DomainParticipantQosEquals(xmlParticipantQos, participantQos) || !QosComparer.TopicQosEquals(xmlTopicQos, topicQos) || !QosComparer.SubscriberQosEquals(xmlSubscriberQos, subscriberQos) || !QosComparer.DataReaderQosEquals(xmlReaderQos, readerQos) || !QosComparer.PublisherQosEquals(xmlPublisherQos, publisherQos) || !QosComparer.DataWriterQosEquals(xmlWriterQos, writerQos)) { result = new Test.Framework.TestResult( "QosProvider should successfully parse XML file", "QosProvider did not correctly parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else { result = new Test.Framework.TestResult( "QosProvider should successfully parse XML file", "QosProvider correctly parsed XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Pass); } return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "Additional test succeeded."; DDS.ReturnCode returnCode; DDS.IStatusCondition sc; DDS.IStatusCondition sc2; int domainId; int domainId2; DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.DomainParticipantFactory factory; DDS.DomainParticipantQos qos; DDS.IPublisher publisher; DDS.PublisherQos pholder = null; DDS.ISubscriber subscriber; DDS.SubscriberQos sholder = null; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); qos = (DDS.DomainParticipantQos) this.ResolveObject("participantQos"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); returnCode = participant.Enable(); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Enabling of DomainParticipant succeeded."; return(result); } sc = participant.StatusCondition; if (sc == null) { result.Result = "get_statuscondition failed."; return(result); } sc2 = participant.StatusCondition; if (sc2 == null) { result.Result = "get_statuscondition failed (2)."; return(result); } if (sc != sc2) { result.Result = "Resolved statusconditions do not match."; return(result); } domainId = participant.DomainId; domainId2 = participant.DomainId; if (domainId != domainId2) { result.Result = "Get domain id does not match 2nd domain id."; return(result); } participant2 = factory.CreateParticipant(DDS.DomainId.Default, qos);//, null, 0); if (participant2 == null) { result.Result = "Create DomainParticipant failed."; return(result); } participant2.GetDefaultPublisherQos(ref pholder); publisher = participant2.CreatePublisher(pholder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return(result); } participant2.GetDefaultSubscriberQos(ref sholder); subscriber = participant2.CreateSubscriber(sholder);//, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.PreconditionNotMet) { result.Result = "Delete DomainParticipant with contained entities succeeded."; return(result); } returnCode = participant2.DeleteContainedEntities(); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete contained entities on DomainParticipant failed."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete DomainParticipant failed."; return(result); } returnCode = participant2.IgnoreParticipant(1); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Action on deleted DomainParticipant succeeded."; return(result); } returnCode = participant2.IgnorePublication(1); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Action on deleted DomainParticipant succeeded(2)."; return(result); } returnCode = participant2.IgnoreSubscription(1); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Action on deleted DomainParticipant succeeded(3)."; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "contains_entity returns the correct result"; DDS.IDomainParticipant participant; DDS.DomainParticipantFactory factory; DDS.TopicQos tHolder = new DDS.TopicQos(); DDS.PublisherQos pHolder = new DDS.PublisherQos(); DDS.SubscriberQos sHolder = new DDS.SubscriberQos(); DDS.DataWriterQos wHolder = new DDS.DataWriterQos(); DDS.DataReaderQos rHolder = new DDS.DataReaderQos(); DDS.ITopic topic; DDS.IPublisher publisher; DDS.ISubscriber subscriber; mod.tstDataWriter writer; mod.tstDataReader reader; long handle; DDS.ReturnCode rc; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant.ContainsEntity(0)) { result.Result = "contains_entity with nil handle incorrect"; return(result); } if (participant.ContainsEntity(100)) { result.Result = "contains_entity with incorrect handle incorrect"; return(result); } handle = participant.InstanceHandle; if (handle == DDS.InstanceHandle.Nil) { result.Result = "get_instance_handle returned 0"; return(result); } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity with own handle incorrect"; return(result); } mod.tstTypeSupport typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "type1"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } participant.GetDefaultTopicQos(ref tHolder); topic = participant.CreateTopic("TestTopic", "type1", tHolder);//, null, 0); if (topic == null) { result.Result = "Create Topic failed."; return(result); } participant.GetDefaultPublisherQos(ref pHolder); publisher = participant.CreatePublisher(pHolder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return(result); } participant.GetDefaultSubscriberQos(ref sHolder); subscriber = participant.CreateSubscriber(sHolder);//, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return(result); } publisher.GetDefaultDataWriterQos(ref wHolder); writer = publisher.CreateDataWriter(topic, wHolder) as mod.tstDataWriter; if (writer == null) { result.Result = "Create Writer failed."; return(result); } subscriber.GetDefaultDataReaderQos(ref rHolder); reader = subscriber.CreateDataReader(topic, rHolder) as mod.tstDataReader; if (reader == null) { result.Result = "Create Reader failed."; return(result); } handle = topic.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (topic) returned 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with topic handle incorrect"; return(result); } handle = publisher.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (publisher) returned != 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with publisher handle incorrect"; return(result); } handle = subscriber.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (subscriber) returned != 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with subscriber handle incorrect"; return(result); } handle = writer.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (writer) returned 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with writer handle incorrect"; return(result); } handle = reader.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (reader) returned 0"; return(result); } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with reader handle incorrect"; return(result); } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities failed."; return(result); } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity of deleted reader incorrect"; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
static void publish(int domain_id, int sample_count) { // --- Create participant --- // /* To customize participant QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.DomainParticipant participant = DDS.DomainParticipantFactory.get_instance().create_participant( domain_id, DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (participant == null) { shutdown(participant); throw new ApplicationException("create_participant error"); } // --- Create publisher --- // DDS.PublisherQos publisher_qos = new DDS.PublisherQos(); participant.get_default_publisher_qos(publisher_qos); /* If you want to change the Partition name programmatically rather than * using the XML, you will need to add the following lines to your code * and comment out the create_publisher() call bellow. */ /* String[] partitions = { "ABC", "foo" }; publisher_qos.partition.name.ensure_length(2, 2); publisher_qos.partition.name.from_array(partitions); DDS.Publisher publisher = participant.create_publisher( publisher_qos, null, DDS.StatusMask.STATUS_MASK_NONE); */ DDS.Publisher publisher = participant.create_publisher( DDS.DomainParticipant.PUBLISHER_QOS_DEFAULT, null, DDS.StatusMask.STATUS_MASK_NONE); if (publisher == null) { shutdown(participant); throw new ApplicationException("create_publisher error"); } Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); // --- Create topic --- // /* Register type before creating topic */ System.String type_name = partitionsTypeSupport.get_type_name(); try { partitionsTypeSupport.register_type( participant, type_name); } catch (DDS.Exception e) { Console.WriteLine("register_type error {0}", e); shutdown(participant); throw e; } /* To customize topic QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.Topic topic = participant.create_topic( "Example partitions", type_name, DDS.DomainParticipant.TOPIC_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (topic == null) { shutdown(participant); throw new ApplicationException("create_topic error"); } // --- Create writer --- // /* In this example we set a Reliable datawriter, with Transient Local * durability. By default we set up these QoS settings via XML. If you * want to to it programmatically, use the following code, and comment out * the create_datawriter call bellow. */ /* DDS.DataWriterQos writerQos = new DDS.DataWriterQos(); publisher.get_default_datawriter_qos(writerQos); writerQos.reliability.kind = DDS.ReliabilityQosPolicyKind.RELIABLE_RELIABILITY_QOS; writerQos.history.depth = 3; writerQos.history.kind = DDS.HistoryQosPolicyKind.KEEP_LAST_HISTORY_QOS; writerQos.durability.kind = DDS.DurabilityQosPolicyKind.TRANSIENT_LOCAL_DURABILITY_QOS; DDS.DataWriter writer = publisher.create_datawriter( topic, writerQos, null, DDS.StatusMask.STATUS_MASK_NONE); */ DDS.DataWriter writer = publisher.create_datawriter( topic, DDS.Publisher.DATAWRITER_QOS_DEFAULT, null, DDS.StatusMask.STATUS_MASK_NONE); if (writer == null) { shutdown(participant); throw new ApplicationException("create_datawriter error"); } partitionsDataWriter partitions_writer = (partitionsDataWriter)writer; // --- Write --- // /* Create data sample for writing */ partitions instance = partitionsTypeSupport.create_data(); if (instance == null) { shutdown(participant); throw new ApplicationException( "partitionsTypeSupport.create_data error"); } /* For a data type that has a key, if the same instance is going to be written multiple times, initialize the key here and register the keyed instance prior to writing */ DDS.InstanceHandle_t instance_handle = DDS.InstanceHandle_t.HANDLE_NIL; /* instance_handle = partitions_writer.register_instance(instance); */ /* Main loop */ const System.Int32 send_period = 1000; // 1 second for (int count = 0; (sample_count == 0) || (count < sample_count); ++count) { Console.WriteLine("Writing partitions, count {0}", count); /* Modify the data to be sent here */ instance.x = count; try { partitions_writer.write(instance, ref instance_handle); } catch (DDS.Exception e) { Console.WriteLine("write error {0}", e); } if ((count + 1) % 25 == 0) { // Matches "ABC" -- name[1] here can match name[0] there, // as long as there is some overlapping name publisher_qos.partition.name.set_at(0, "zzz"); publisher_qos.partition.name.set_at(1, "A*C"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 20 == 0) { // Strings that are regular expressions aren't tested for // literal matches, so this won't match "X*Z" publisher_qos.partition.name.set_at(0, "X*Z"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 15 == 0) { // Matches "ABC" publisher_qos.partition.name.set_at(0, "A?C"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 10 == 0) { // Matches "ABC" publisher_qos.partition.name.set_at(0, "A*"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } else if ((count + 1) % 5 == 0) { // No literal match for "bar" publisher_qos.partition.name.set_at(0, "bar"); Console.WriteLine("Setting partition to '{0}', '{1}'...", publisher_qos.partition.name.get_at(0), publisher_qos.partition.name.get_at(1)); publisher.set_qos(publisher_qos); } System.Threading.Thread.Sleep(send_period); } /* try { partitions_writer.unregister_instance( instance, ref instance_handle); } catch(DDS.Exception e) { Console.WriteLine("unregister instance error: {0}", e); } */ // --- Shutdown --- // /* Delete data sample */ try { partitionsTypeSupport.delete_data(instance); } catch (DDS.Exception e) { Console.WriteLine( "partitionsTypeSupport.delete_data error: {0}", e); } /* Delete all entities */ shutdown(participant); }
public override Test.Framework.TestResult Run() { DDS.DomainParticipantQos pqos = null; DDS.PublisherQos pubQos = null; DDS.TopicQos tQos = null; DDS.DataWriterQos dwQos = null; DDS.ReturnCode rc; string expResult = "Initialization success"; Test.Framework.TestResult result = new Test.Framework.TestResult( expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); bce.factory = DDS.DomainParticipantFactory.Instance; if (bce.factory == null) { result.Result = "DomainParticipantFactory could not be initialized."; return(result); } rc = bce.factory.GetDefaultParticipantQos(ref pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } bce.participant = bce.factory.CreateParticipant(string.Empty, pqos); if (bce.participant == null) { result.Result = "Creation of DomainParticipant failed."; return(result); } bce.typeSupport = new mod.boundsTypeTypeSupport(); rc = bce.typeSupport.RegisterType(bce.participant, "boundsType"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Typesupport could not be registered."; return(result); } rc = bce.participant.GetDefaultTopicQos(ref tQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } bce.topic = bce.participant.CreateTopic("bounds", "boundsType", tQos); if (bce.topic == null) { result.Result = "Topic could not be created."; return(result); } rc = bce.participant.GetDefaultPublisherQos(ref pubQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } bce.publisher = bce.participant.CreatePublisher(pubQos); if (bce.publisher == null) { result.Result = "Publisher could not be created."; return(result); } rc = bce.publisher.GetDefaultDataWriterQos(ref dwQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Default DataWriterQos could not be resolved."; return(result); } bce.datawriter = (mod.boundsTypeDataWriter)bce.publisher.CreateDataWriter(bce.topic, dwQos); if (bce.datawriter == null) { result.Result = "DataWriter could not be created."; return(result); } result.Result = expResult; 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() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Waitset StatusCondition succeeded."; DDS.ICondition[] holder; DDS.ReturnCode rc; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos qosHolder = null; DDS.IStatusCondition condition; DDS.IStatusCondition condition2; DDS.IPublisher publisher; DDS.PublisherQos pubQosHolder = null; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); holder = new DDS.ICondition[0]; DDS.WaitSet waitset = new DDS.WaitSet(); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "Factory get_instance failed."; return(result); } if (factory.GetDefaultParticipantQos(ref qosHolder) != DDS.ReturnCode.Ok) { result.Result = "get_default_participant_qos failed."; return(result); } participant = factory.CreateParticipant(DDS.DomainId.Default, qosHolder);//, null, 0); if (participant == null) { result.Result = "create_participant failed."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return(result); } publisher = participant.CreatePublisher(pubQosHolder);//, null, DDS.StatusKind.Any); if (publisher == null) { result.Result = "create_publisher failed."; return(result); } condition = participant.StatusCondition; if (condition == null) { result.Result = "get_status_condition failed."; return(result); } condition2 = publisher.StatusCondition; if (condition2 == null) { result.Result = "get_status_condition failed.(2)"; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return(result); } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc; return(result); } if (holder.Length != 1) { result.Result = "get_conditions returned " + holder.Length + " conditions."; return(result); } if (holder[0] != condition) { result.Result = "get_conditions returned wrong condition."; return(result); } rc = waitset.DetachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (1)"; return(result); } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc + " (1)"; return(result); } if (holder.Length != 0) { result.Result = "get_conditions returned " + holder.Length + " conditions (1)."; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return(result); } rc = waitset.AttachCondition(condition2); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return(result); } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc; return(result); } if (holder.Length != 2) { result.Result = "get_conditions returned " + holder.Length + " conditions."; return(result); } if ((holder[0] != condition) && (holder[1] != condition)) { result.Result = "get_conditions returned wrong conditions(1)."; return(result); } if ((holder[0] != condition2) && (holder[1] != condition2)) { result.Result = "get_conditions returned wrong conditions(2)."; return(result); } rc = waitset.DetachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (2)"; return(result); } rc = waitset.DetachCondition(condition2); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (3)"; return(result); } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities returned RETCODE: " + rc; return(result); } rc = factory.DeleteParticipant(participant); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_participant returned RETCODE: " + rc; return(result); } result.Result = expResult; result.Verdict = expVerdict; return(result); }