public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.QosProvider qosProvider = null; DDS.DomainParticipantQos participantQos = test.sacs.QosComparer.defaultDomainParticipantQos; DDS.TopicQos topicQos = test.sacs.QosComparer.defaultTopicQos; DDS.SubscriberQos subscriberQos = test.sacs.QosComparer.defaultSubscriberQos; DDS.DataReaderQos readerQos = test.sacs.QosComparer.defaultDataReaderQos; DDS.PublisherQos publisherQos = test.sacs.QosComparer.defaultPublisherQos; DDS.DataWriterQos writerQos = test.sacs.QosComparer.defaultDataWriterQos; DDS.DomainParticipantQos xmlParticipantQos = new DDS.DomainParticipantQos (); DDS.TopicQos xmlTopicQos = new DDS.TopicQos (); DDS.SubscriberQos xmlSubscriberQos = new DDS.SubscriberQos (); DDS.DataReaderQos xmlReaderQos = new DDS.DataReaderQos (); DDS.PublisherQos xmlPublisherQos = new DDS.PublisherQos (); DDS.DataWriterQos xmlWriterQos = new DDS.DataWriterQos (); qosProvider = new DDS.QosProvider (this.uri, null); if (qosProvider.GetParticipantQos (ref xmlParticipantQos, null) != 0 || qosProvider.GetTopicQos (ref xmlTopicQos, null) != 0 || qosProvider.GetSubscriberQos (ref xmlSubscriberQos, null) != 0 || qosProvider.GetDataReaderQos (ref xmlReaderQos, null) != 0 || qosProvider.GetPublisherQos (ref xmlPublisherQos, null) != 0 || qosProvider.GetDataWriterQos (ref xmlWriterQos, null) != 0) { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider did not parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else if (!QosComparer.DomainParticipantQosEquals (xmlParticipantQos, participantQos) || !QosComparer.TopicQosEquals (xmlTopicQos, topicQos) || !QosComparer.SubscriberQosEquals (xmlSubscriberQos, subscriberQos) || !QosComparer.DataReaderQosEquals (xmlReaderQos, readerQos) || !QosComparer.PublisherQosEquals (xmlPublisherQos, publisherQos) || !QosComparer.DataWriterQosEquals (xmlWriterQos, writerQos)) { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider did not correctly parse XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); } else { result = new Test.Framework.TestResult ( "QosProvider should successfully parse XML file", "QosProvider correctly parsed XML file " + uri, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Pass); } return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Setting/resolving default TopicQos succeeded."; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqosHolder = null; DDS.TopicQos tqosHolder = null; DDS.ReturnCode returnCode; factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could not be initialised." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (factory.GetDefaultParticipantQos(ref pqosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Default DomainParticipantQos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } participant = factory.CreateParticipant(string.Empty, pqosHolder);//, null, 0); if (participant == null) { result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } if (participant.GetDefaultTopicQos(ref tqosHolder) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Topic qos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = factory.DeleteParticipant(participant); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Deletion of DomainParticipant failed." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict ); return(result); }
public override Test.Framework.TestResult Run() { 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.typeSupport2 = new mod.embeddedStructTypeTypeSupport(); rc = bce.typeSupport2.RegisterType(bce.participant, "embeddedStructType"); 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.topic2 = bce.participant.CreateTopic("embeddedStruct", "embeddedStructType", tQos); if (bce.topic2 == null) { result.Result = "Topic 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.datawriter2 = (mod.embeddedStructTypeDataWriter)bce.publisher.CreateDataWriter(bce.topic2, dwQos); if (bce.datawriter2 == 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(Test.Framework.TestCase testCase) { DDS.IDomainParticipant participant; DDS.TopicQos topQosHolder = null; DDS.ITopic topic; mod.tstTypeSupport typeSupport = null; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant)testCase.ResolveObject("participant"); typeSupport = new mod.tstTypeSupport(); if (typeSupport == null) { result.Result = "Creation of tstTypeSupport failed."; return(result); } rc = typeSupport.RegisterType(participant, "my_type"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } if (participant.GetDefaultTopicQos(ref topQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } topic = participant.CreateTopic("my_topic", "my_type", topQosHolder);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", topQosHolder); testCase.RegisterObject("typeSupport", typeSupport); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; DDS.DataReaderQos dataReaderQos = null; DDS.IDomainParticipant participant; DDS.DataReaderQos qosHolder1 = null; DDS.ITopic topic; string expResult = "copy_from_topic_qos rejects TOPIC_QOS_DEFAULT with correct code."; Test.Framework.TestResult result; DDS.ReturnCode rc = DDS.ReturnCode.Error; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); topic = (DDS.ITopic) this.ResolveObject("topic"); if (subscriber.GetDefaultDataReaderQos(ref dataReaderQos) != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos"; return(result); } dataReaderQos.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; dataReaderQos.History.Depth = 150; // TODO: JLS, Verify the intent of this BadParameter test. DDS.TopicQos topicQosHolder = null; rc = subscriber.CopyFromTopicQos(ref qosHolder1, topicQosHolder); if (rc != DDS.ReturnCode.BadParameter) { result.Result = "copy_from_topic_qos returns wrong code (RETCODE = " + rc + ")."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
/* * 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 void run(String[] args) { String myDomain = null; DDS.DomainParticipantFactory dpf; DDS.IDomainParticipant dp; DDS.IPublisher p; DDS.ISubscriber s; pingpong.PP_min_msgDataWriter PP_min_writer; pingpong.PP_seq_msgDataWriter PP_seq_writer; pingpong.PP_string_msgDataWriter PP_string_writer; pingpong.PP_fixed_msgDataWriter PP_fixed_writer; pingpong.PP_array_msgDataWriter PP_array_writer; pingpong.PP_min_msgDataReader PP_min_reader; pingpong.PP_seq_msgDataReader PP_seq_reader; pingpong.PP_string_msgDataReader PP_string_reader; pingpong.PP_fixed_msgDataReader PP_fixed_reader; pingpong.PP_array_msgDataReader PP_array_reader; pingpong.PP_quit_msgDataReader PP_quit_reader; pingpong.PP_min_msgTypeSupport PP_min_dt; pingpong.PP_seq_msgTypeSupport PP_seq_dt; pingpong.PP_string_msgTypeSupport PP_string_dt; pingpong.PP_fixed_msgTypeSupport PP_fixed_dt; pingpong.PP_array_msgTypeSupport PP_array_dt; pingpong.PP_quit_msgTypeSupport PP_quit_dt; pingpong.PP_min_msg[] PP_min_dataList = null; pingpong.PP_seq_msg[] PP_seq_dataList = null; pingpong.PP_string_msg[] PP_string_dataList = null; pingpong.PP_fixed_msg[] PP_fixed_dataList = null; pingpong.PP_array_msg[] PP_array_dataList = null; pingpong.PP_quit_msg[] PP_quit_dataList = null; DDS.IStatusCondition PP_min_sc; DDS.IStatusCondition PP_seq_sc; DDS.IStatusCondition PP_string_sc; DDS.IStatusCondition PP_fixed_sc; DDS.IStatusCondition PP_array_sc; DDS.IStatusCondition PP_quit_sc; DDS.ITopic PP_min_topic; DDS.ITopic PP_seq_topic; DDS.ITopic PP_string_topic; DDS.ITopic PP_fixed_topic; DDS.ITopic PP_array_topic; DDS.ITopic PP_quit_topic; DDS.ICondition[] conditionList = null; DDS.SampleInfo[] infoList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; Boolean terminate = false; DDS.ReturnCode result; int i; int imax; int j; int jmax; /* * Evaluate cmdline arguments */ if (args.Length != 0) { if (args.Length != 2) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: pong [READ_PARTITION WRITE_PARTITION]"); Environment.Exit(1); } read_partition = args[0]; write_partition = args[1]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); dp = dpf.CreateParticipant(myDomain, dpQos, null, DDS.StatusKind.Any); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PONG publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PING subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /* match data reader/writer qos with topic qos */ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); // assert(result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); //assert(result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic,drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); //assert(result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); //assert(result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); //assert(result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datareader */ PP_quit_reader = s.CreateDataReader(PP_quit_topic, drQos) as pingpong.PP_quit_msgDataReader; /* Add datareader statuscondition to waitset */ PP_quit_sc = PP_quit_reader.StatusCondition; PP_quit_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_quit_sc); //assert(result == RETCODE_OK.value); while (!terminate) { DDS.Duration wait_timeout = new DDS.Duration(DDS.Duration.InfiniteSec, DDS.Duration.InfiniteSec); result = w.Wait(ref conditionList, wait_timeout); ErrorHandler.checkStatus(result, "wait did not succeeed"); if (result == DDS.ReturnCode.AlreadyDeleted) { terminate = true; continue; } if (conditionList != null) { imax = conditionList.Length; for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { result = PP_min_reader.Take(ref PP_min_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_min_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_min_writer.Write(PP_min_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_min_reader.ReturnLoan(ref PP_min_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_min triggered, but no data available"); } } else if (conditionList[i] == PP_seq_sc) { /* System.Console.WriteLine ("PONG: PING_seq arrived"); */ result = PP_seq_reader.Take(ref PP_seq_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_seq_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_seq_writer.Write(PP_seq_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_seq_reader.ReturnLoan(ref PP_seq_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_seq triggered, but no data available"); } } else if (conditionList[i] == PP_string_sc) { /* System.Console.WriteLine ("PONG: PING_string arrived"); */ result = PP_string_reader.Take(ref PP_string_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_string_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_string_writer.Write(PP_string_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_string_reader.ReturnLoan(ref PP_string_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_string triggered, but no data available"); } } else if (conditionList[i] == PP_fixed_sc) { /* System.Console.WriteLine ("PONG: PING_fixed arrived"); */ result = PP_fixed_reader.Take(ref PP_fixed_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_fixed_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_fixed_writer.Write(PP_fixed_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_fixed_reader.ReturnLoan(ref PP_fixed_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_fixed triggered, but no data available"); } } else if (conditionList[i] == PP_array_sc) { /* System.Console.WriteLine ("PONG: PING_array arrived"); */ result = PP_array_reader.Take(ref PP_array_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_array_dataList.Length; if (jmax != 0) { for (j = 0; j < jmax; j++) { if (infoList[j].ValidData) { result = PP_array_writer.Write(PP_array_dataList[j], DDS.InstanceHandle.Nil); } } result = PP_array_reader.ReturnLoan(ref PP_array_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_array triggered, but no data available"); } } else if (conditionList[i] == PP_quit_sc) { /* System.Console.WriteLine ("PONG: PING_quit arrived"); */ result = PP_quit_reader.Take(ref PP_quit_dataList, ref infoList, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); jmax = PP_quit_dataList.Length; if (jmax != 0) { result = PP_quit_reader.ReturnLoan(ref PP_quit_dataList, ref infoList); } else { System.Console.WriteLine("PONG: PING_quit triggered, but no data available"); } terminate = true; } else { System.Console.WriteLine("PONG: unknown condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PONG: unknown condition triggered"); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = s.DeleteDataReader(PP_quit_reader); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.IDomainParticipant participant; DDS.DomainParticipantFactory factory; DDS.DomainParticipantQos qos; string expResult = "Default topicQos is used when TOPIC_QOS_DEFAULT is specified."; DDS.TopicQos topQosHolder1; DDS.TopicQos topQosHolder2; mod.tstTypeSupport typeSupport; DDS.ITopic topic; DDS.ReturnCode returnCode; factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); qos = (DDS.DomainParticipantQos) this.ResolveObject("participantQos"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); typeSupport = new mod.tstTypeSupport(); topQosHolder1 = new DDS.TopicQos(); topQosHolder2 = new DDS.TopicQos(); typeSupport.RegisterType(participant, "My_Type"); if (participant.GetDefaultTopicQos(ref topQosHolder1) != DDS.ReturnCode.Ok) { result.Result = "Get default TopicQos failed (1)."; return(result); } topQosHolder1.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; topQosHolder1.Liveliness.Kind = DDS.LivelinessQosPolicyKind.AutomaticLivelinessQos; topQosHolder1.Reliability.Kind = DDS.ReliabilityQosPolicyKind.ReliableReliabilityQos; topQosHolder1.DestinationOrder.Kind = DDS.DestinationOrderQosPolicyKind.ByReceptionTimestampDestinationorderQos; topQosHolder1.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; topQosHolder1.Ownership.Kind = DDS.OwnershipQosPolicyKind.SharedOwnershipQos; participant.SetDefaultTopicQos(topQosHolder1); typeSupport = new mod.tstTypeSupport(); returnCode = typeSupport.RegisterType(participant, "myTopicType"); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } topic = participant.CreateTopic("MyDCPSTopic", "myTopicType"); if (topic == null) { result.Result = "Create topic failed."; return(result); } topic.GetQos(ref topQosHolder2); if (!test.sacs.QosComparer.TopicQosEquals(topQosHolder1, topQosHolder2)) { result.Result = "Default topicQos is not used when TOPIC_QOS_DEFAULT is specified."; return(result); } returnCode = participant.DeleteTopic(topic); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Topic failed."; return(result); } 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.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() { Test.Framework.TestResult result; string expResult = "set/get default_qos test succeeded."; DDS.ReturnCode rc; DDS.IDomainParticipant participant; DDS.PublisherQos pholder; DDS.SubscriberQos sholder; DDS.TopicQos tholder; DDS.PublisherQos pqos; DDS.SubscriberQos sqos; DDS.TopicQos tqos; DDS.PartitionQosPolicy pqp; participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); pholder = new DDS.PublisherQos(); sholder = new DDS.SubscriberQos(); tholder = new DDS.TopicQos(); if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return result; } pqos = pholder; string[] partitions = new string[2]; partitions[0] = "partition"; partitions[1] = "partition2"; pqp = new DDS.PartitionQosPolicy(); pqp.Name = partitions; pqos.Partition = pqp; rc = participant.SetDefaultPublisherQos(pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_publisher_qos failed (1)."; return result; } if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed (2)."; return result; } if (!test.sacs.QosComparer.PublisherQosEquals(pqos, pholder)) { result.Result = "resolved qos does not match the applied one."; return result; } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed."; return result; } sqos = sholder; sqos.Partition = pqp; rc = participant.SetDefaultSubscriberQos(sqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_subscriber_qos failed (1)."; return result; } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed (2)."; return result; } if (!test.sacs.QosComparer.SubscriberQosEquals(sqos, sholder)) { result.Result = "resolved qos does not match the applied one (2)."; return result; } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed."; return result; } tqos = tholder; tqos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; rc = participant.SetDefaultTopicQos(tqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_topic_qos failed (1)."; return result; } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed (2)."; return result; } if (!test.sacs.QosComparer.TopicQosEquals(tqos, tholder)) { result.Result = "resolved qos does not match the applied one (3)."; return result; } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; string expResult = "set/get default_qos test succeeded."; DDS.ReturnCode rc; DDS.IDomainParticipant participant; DDS.PublisherQos pholder; DDS.SubscriberQos sholder; DDS.TopicQos tholder; DDS.PublisherQos pqos; DDS.SubscriberQos sqos; DDS.TopicQos tqos; DDS.PartitionQosPolicy pqp; participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); pholder = new DDS.PublisherQos(); sholder = new DDS.SubscriberQos(); tholder = new DDS.TopicQos(); if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return(result); } pqos = pholder; string[] partitions = new string[2]; partitions[0] = "partition"; partitions[1] = "partition2"; pqp = new DDS.PartitionQosPolicy(); pqp.Name = partitions; pqos.Partition = pqp; rc = participant.SetDefaultPublisherQos(pqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_publisher_qos failed (1)."; return(result); } if (participant.GetDefaultPublisherQos(ref pholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.PublisherQosEquals(pqos, pholder)) { result.Result = "resolved qos does not match the applied one."; return(result); } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed."; return(result); } sqos = sholder; sqos.Partition = pqp; rc = participant.SetDefaultSubscriberQos(sqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_subscriber_qos failed (1)."; return(result); } if (participant.GetDefaultSubscriberQos(ref sholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_subscriber_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.SubscriberQosEquals(sqos, sholder)) { result.Result = "resolved qos does not match the applied one (2)."; return(result); } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed."; return(result); } tqos = tholder; tqos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; rc = participant.SetDefaultTopicQos(tqos); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_default_topic_qos failed (1)."; return(result); } if (participant.GetDefaultTopicQos(ref tholder) != DDS.ReturnCode.Ok) { result.Result = "get_default_topic_qos failed (2)."; return(result); } if (!test.sacs.QosComparer.TopicQosEquals(tqos, tholder)) { result.Result = "resolved qos does not match the applied one (3)."; return(result); } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return(result); }
public 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 static bool TopicQosEqual(DDS.TopicQos qos1, DDS.TopicQos qos2) { if (!DurationEqual(qos1.Deadline.Period, qos2.Deadline.Period)) { System.Console.Error.WriteLine("'deadline.Period' values do not match"); return(false); } if (qos1.DestinationOrder.Kind != qos2.DestinationOrder.Kind) { System.Console.Error.WriteLine("'destination_order.kind' values do not match"); return(false); } if (qos1.Durability.Kind != qos2.Durability.Kind) { System.Console.Error.WriteLine("'durability.kind' values do not match"); return(false); } if (!DurationEqual(qos1.DurabilityService.ServiceCleanupDelay, qos2.DurabilityService.ServiceCleanupDelay)) { System.Console.Error.WriteLine("'durability.ServiceCleanupDelay' values do not match" ); return(false); } if (qos1.DurabilityService.HistoryKind != qos2.DurabilityService.HistoryKind) { System.Console.Error.WriteLine("'durability_service.HistoryKind' values do not match" ); return(false); } if (qos1.DurabilityService.HistoryDepth != qos2.DurabilityService.HistoryDepth) { System.Console.Error.WriteLine("'durability_service.HistoryDepth' values do not match" ); return(false); } if (qos1.DurabilityService.MaxInstances != qos2.DurabilityService.MaxInstances) { System.Console.Error.WriteLine("'durability_service.MaxInstances' values do not match" ); return(false); } if (qos1.DurabilityService.MaxSamples != qos2.DurabilityService.MaxSamples) { System.Console.Error.WriteLine("'durability_service.MaxSamples' values do not match" ); return(false); } if (qos1.DurabilityService.MaxSamplesPerInstance != qos2.DurabilityService.MaxSamplesPerInstance) { System.Console.Error.WriteLine("'durability_service.MaxSamplesPerInstance' values do not match" ); return(false); } if (qos1.History.Depth != qos2.History.Depth) { System.Console.Error.WriteLine("'history.Depth' values do not match"); return(false); } if (qos1.History.Kind != qos2.History.Kind) { System.Console.Error.WriteLine("'history.kind' values do not match"); return(false); } if (!DurationEqual(qos1.LatencyBudget.Duration, qos2.LatencyBudget.Duration)) { System.Console.Error.WriteLine("'latency_budget.Duration' values do not match"); return(false); } if (!DurationEqual(qos1.Lifespan.Duration, qos2.Lifespan.Duration)) { System.Console.Error.WriteLine("'lifespan.Duration' values do not match"); return(false); } if (qos1.Liveliness.Kind != qos2.Liveliness.Kind) { System.Console.Error.WriteLine("'liveliness.kind' values do not match"); return(false); } if (!DurationEqual(qos1.Liveliness.LeaseDuration, qos2.Liveliness.LeaseDuration )) { System.Console.Error.WriteLine("'liveliness.LeaseDuration' values do not match"); return(false); } if (qos1.Ownership.Kind != qos2.Ownership.Kind) { System.Console.Error.WriteLine("'ownership.kind' values do not match"); return(false); } if (qos1.Reliability.Kind != qos2.Reliability.Kind) { System.Console.Error.WriteLine("'reliability.kind' values do not match"); return(false); } if (!DurationEqual(qos1.Reliability.MaxBlockingTime, qos2.Reliability.MaxBlockingTime )) { System.Console.Error.WriteLine("'reliability.MaxBlockingTime' values do not match" ); return(false); } if (qos1.ResourceLimits.MaxInstances != qos2.ResourceLimits.MaxInstances) { System.Console.Error.WriteLine("'resource_limits.MaxInstances' values do not match" ); return(false); } if (qos1.ResourceLimits.MaxSamples != qos2.ResourceLimits.MaxSamples) { System.Console.Error.WriteLine("'resource_limits.MaxSamples' values do not match" ); return(false); } if (qos1.ResourceLimits.MaxSamplesPerInstance != qos2.ResourceLimits.MaxSamplesPerInstance) { System.Console.Error.WriteLine("'resource_limits.MaxSamplesPerInstance' values do not match" ); return(false); } if (!ByteArrayEqual(qos1.TopicData.Value, qos2.TopicData.Value)) { System.Console.Error.WriteLine("'topic_data.Value' values do not match"); return(false); } if (qos1.TransportPriority.Value != qos2.TransportPriority.Value) { System.Console.Error.WriteLine("'transport_priority.Value' values do not match"); return(false); } return(true); }
/* * P I N G */ public void run(String[] args) { System.Console.WriteLine("starting PING"); DDS.ICondition[] conditionList = null; DDS.IWaitSet w; DDS.DomainParticipantQos dpQos; DDS.TopicQos tQos; DDS.PublisherQos pQos; DDS.DataWriterQos dwQos; DDS.SubscriberQos sQos; DDS.DataReaderQos drQos; DDS.Duration wait_timeout = new DDS.Duration(3, 0); DDS.ReturnCode result; Boolean finish_flag = false; Boolean timeout_flag = false; Boolean terminate = false; int imax = 1; int i; uint block; int nof_cycles = 100; int nof_blocks = 20; /** * Command Line argument processing */ if (args.Length != 0) { if (args.Length != 5) { System.Console.WriteLine("Invalid....."); System.Console.WriteLine("Usage: ping blocks blocksize topic_id WRITE_PARTITION READ_PARTITION "); Environment.Exit(1); } nof_blocks = int.Parse(args[0]); nof_cycles = int.Parse(args[1]); topic_id = args[2][0]; write_partition = args[3]; read_partition = args[4]; } /* * Create WaitSet */ w = new DDS.WaitSet(); /* * Initialize Qos variables */ dpQos = new DDS.DomainParticipantQos(); tQos = new DDS.TopicQos(); pQos = new DDS.PublisherQos(); dwQos = new DDS.DataWriterQos(); sQos = new DDS.SubscriberQos(); drQos = new DDS.DataReaderQos(); /* * Create participant */ dpf = DDS.DomainParticipantFactory.Instance; dpf.GetDefaultParticipantQos(ref dpQos); ErrorHandler.checkHandle(dpf, "DDS.DomainParticipantFactory.Instance"); dp = dpf.CreateParticipant(myDomain, dpQos); if (dp == null) { System.Console.WriteLine("PING: ERROR - Splice Daemon not running"); return; } /* * Create PING publisher */ dp.GetDefaultPublisherQos(ref pQos); pQos.Partition.Name = new String[1]; pQos.Partition.Name[0] = write_partition; p = dp.CreatePublisher(pQos); /* * Create PONG subscriber */ dp.GetDefaultSubscriberQos(ref sQos); sQos.Partition.Name = new String[1]; sQos.Partition.Name[0] = read_partition; s = dp.CreateSubscriber(sQos); /* * Get default DataReader and DataWriter QoS settings */ p.GetDefaultDataWriterQos(ref dwQos); s.GetDefaultDataReaderQos(ref drQos); /* * Get default Topic Qos settings */ dp.GetDefaultTopicQos(ref tQos); /*match data reader/writer qos with topic qos*/ p.CopyFromTopicQos(ref dwQos, tQos); s.CopyFromTopicQos(ref drQos, tQos); /* * PP_min_msg */ /* Create Topic */ PP_min_dt = new pingpong.PP_min_msgTypeSupport(); PP_min_dt.RegisterType(dp, "pingpong::PP_min_msg"); PP_min_topic = dp.CreateTopic("PP_min_topic", "pingpong::PP_min_msg", tQos); /* Create datawriter */ PP_min_writer = p.CreateDataWriter(PP_min_topic, dwQos) as pingpong.PP_min_msgDataWriter; /* Create datareader */ PP_min_reader = s.CreateDataReader(PP_min_topic, drQos) as pingpong.PP_min_msgDataReader; /* Add datareader statuscondition to waitset */ PP_min_sc = PP_min_reader.StatusCondition; PP_min_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_min_sc); ErrorHandler.checkStatus(result, "attach condition pp_min_reader"); //assert (result == RETCODE_OK.value); /* * PP_seq_msg */ /* Create Topic */ PP_seq_dt = new pingpong.PP_seq_msgTypeSupport(); PP_seq_dt.RegisterType(dp, "pingpong::PP_seq_msg"); PP_seq_topic = dp.CreateTopic("PP_seq_topic", "pingpong::PP_seq_msg", tQos); /* Create datawriter */ PP_seq_writer = p.CreateDataWriter(PP_seq_topic, dwQos) as pingpong.PP_seq_msgDataWriter; /* Create datareader */ PP_seq_reader = s.CreateDataReader(PP_seq_topic, drQos) as pingpong.PP_seq_msgDataReader; /* Add datareader statuscondition to waitset */ PP_seq_sc = PP_seq_reader.StatusCondition; PP_seq_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_seq_sc); ErrorHandler.checkStatus(result, "attach condition pp_seq_reader"); //assert (result == RETCODE_OK.value); /* * PP_string_msg */ /* Create Topic */ PP_string_dt = new pingpong.PP_string_msgTypeSupport(); PP_string_dt.RegisterType(dp, "pingpong::PP_string_msg"); PP_string_topic = dp.CreateTopic("PP_string_topic", "pingpong::PP_string_msg", tQos); /* Create datawriter */ PP_string_writer = p.CreateDataWriter(PP_string_topic, dwQos) as pingpong.PP_string_msgDataWriter; /* Create datareader */ PP_string_reader = s.CreateDataReader(PP_string_topic, drQos) as pingpong.PP_string_msgDataReader; /* Add datareader statuscondition to waitset */ PP_string_sc = PP_string_reader.StatusCondition; PP_string_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_string_sc); ErrorHandler.checkStatus(result, "attach condition pp_string_reader"); //assert (result == RETCODE_OK.value); /* * PP_fixed_msg */ /* Create Topic */ PP_fixed_dt = new pingpong.PP_fixed_msgTypeSupport(); PP_fixed_dt.RegisterType(dp, "pingpong::PP_fixed_msg"); PP_fixed_topic = dp.CreateTopic("PP_fixed_topic", "pingpong::PP_fixed_msg", tQos); /* Create datawriter */ PP_fixed_writer = p.CreateDataWriter(PP_fixed_topic, dwQos) as pingpong.PP_fixed_msgDataWriter; /* Create datareader */ PP_fixed_reader = s.CreateDataReader(PP_fixed_topic, drQos) as pingpong.PP_fixed_msgDataReader; /* Add datareader statuscondition to waitset */ PP_fixed_sc = PP_fixed_reader.StatusCondition; PP_fixed_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_fixed_sc); ErrorHandler.checkStatus(result, "attach condition pp_fixed_reader"); //assert (result == RETCODE_OK.value); /* * PP_array_msg */ /* Create Topic */ PP_array_dt = new pingpong.PP_array_msgTypeSupport(); PP_array_dt.RegisterType(dp, "pingpong::PP_array_msg"); PP_array_topic = dp.CreateTopic("PP_array_topic", "pingpong::PP_array_msg", tQos); /* Create datawriter */ PP_array_writer = p.CreateDataWriter(PP_array_topic, dwQos) as pingpong.PP_array_msgDataWriter; /* Create datareader */ PP_array_reader = s.CreateDataReader(PP_array_topic, drQos) as pingpong.PP_array_msgDataReader; /* Add datareader statuscondition to waitset */ PP_array_sc = PP_array_reader.StatusCondition; PP_array_sc.SetEnabledStatuses(DDS.StatusKind.DataAvailable); result = w.AttachCondition(PP_array_sc); ErrorHandler.checkStatus(result, "attach condition pp_array_reader"); //assert (result == RETCODE_OK.value); /* * PP_quit_msg */ /* Create Topic */ PP_quit_dt = new pingpong.PP_quit_msgTypeSupport(); PP_quit_dt.RegisterType(dp, "pingpong::PP_quit_msg"); PP_quit_topic = dp.CreateTopic("PP_quit_topic", "pingpong::PP_quit_msg", tQos); /* Create datawriter */ PP_quit_writer = p.CreateDataWriter(PP_quit_topic, dwQos) as pingpong.PP_quit_msgDataWriter; for (block = 0; block < nof_blocks && !terminate; block++) { while (!finish_flag) { /* * Send Initial message */ timeout_flag = false; switch (topic_id) { case 'm': { /* System.Console.WriteLine ("PING: sending initial ping_min"); */ pingpong.PP_min_msg PPdata = new pingpong.PP_min_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_min_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 'q': { /* System.Console.WriteLine ("PING: sending initial ping_seq"); */ pingpong.PP_seq_msg PPdata = new pingpong.PP_seq_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_seq_writer.Write(PPdata); postWriteTime.timeGet(); } break; case 's': { //System.Console.WriteLine ("PING: sending initial ping_string"); pingpong.PP_string_msg PPdata = new pingpong.PP_string_msg(); PPdata.count = 0; PPdata.block = block; PPdata.a_string = "a_string " + block.ToString(); preWriteTime.timeGet(); result = PP_string_writer.Write(PPdata); ErrorHandler.checkStatus(result, "writing PPData in case S"); postWriteTime.timeGet(); } break; case 'f': { /* System.Console.WriteLine ("PING: sending initial ping_fixed"); */ pingpong.PP_fixed_msg PPdata = new pingpong.PP_fixed_msg(); PPdata.count = 0; PPdata.block = block; preWriteTime.timeGet(); result = PP_fixed_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 'a': { /* System.Console.WriteLine ("PING: sending initial ping_array"); */ pingpong.PP_array_msg PPdata = new pingpong.PP_array_msg(); PPdata.count = 0; PPdata.block = block; PPdata.str_arr_char = new char[10]; PPdata.str_arr_octet = new byte[10]; PPdata.str_arr_short = new short[10]; PPdata.str_arr_ushort = new ushort[10]; PPdata.str_arr_long = new int[10]; PPdata.str_arr_ulong = new uint[10]; PPdata.str_arr_longlong = new long[10]; PPdata.str_arr_ulonglong = new ulong[10]; PPdata.str_arr_float = new float[10]; PPdata.str_arr_double = new double[10]; PPdata.str_arr_boolean = new Boolean[11]; preWriteTime.timeGet(); result = PP_array_writer .Write(PPdata); postWriteTime.timeGet(); } break; case 't': { /* System.Console.WriteLine ("PING: sending initial ping_quit"); */ pingpong.PP_quit_msg PPdata = new pingpong.PP_quit_msg(); PPdata.quit = true; terminate = true; finish_flag = true; System.Threading.Thread.Sleep(1000); preWriteTime.timeGet(); result = PP_quit_writer.Write(PPdata); postWriteTime.timeGet(); System.Threading.Thread.Sleep(1000); } break; default: System.Console.WriteLine("Invalid topic-id"); return; } if (!terminate) { roundTripTime.set(preWriteTime.get()); write_access.add_stats(postWriteTime.sub(preWriteTime)); /* * Wait for response, calculate timing, and send another * data if not ready */ while (!(timeout_flag || finish_flag)) { result = w.Wait(ref conditionList, wait_timeout); if (result == DDS.ReturnCode.Ok || result == DDS.ReturnCode.NoData || result == DDS.ReturnCode.Timeout) { //ErrorHandler.checkStatus(result, "wait did not work condition list is probably null!"); if (conditionList != null) { imax = conditionList.Length; if (imax != 0) { for (i = 0; i < imax; i++) { if (conditionList[i] == PP_min_sc) { finish_flag = PP_min_handler(nof_cycles); } else if (conditionList[i] == PP_seq_sc) { finish_flag = PP_seq_handler(nof_cycles); } else if (conditionList[i] == PP_string_sc) { finish_flag = PP_string_handler(nof_cycles); } else if (conditionList[i] == PP_fixed_sc) { finish_flag = PP_fixed_handler(nof_cycles); } else if (conditionList[i] == PP_array_sc) { finish_flag = PP_array_handler(nof_cycles); } else { System.Console.WriteLine("PING: unexpected condition triggered: " + conditionList[i]); } } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (1)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: TIMEOUT - message lost (2)"); timeout_flag = true; } } else { System.Console.WriteLine("PING: Waitset wait failed (code " + result + "), terminating"); finish_flag = true; terminate = true; } } } } if (!terminate) { finish_flag = false; if (block == 0) { System.Console.WriteLine("# PING PONG measurements (in us)"); System.Console.WriteLine("# Executed at: "); System.Console.WriteLine("# Roundtrip time [us] Write-access time [us] Read-access time [us]"); System.Console.WriteLine("# Block Count mean min max Count mean min max Count mean min max"); } System.Console.WriteLine(String.Format("{0,-6} {1, 10} {2, 6} {3, 6} {4, 6} {5, 10} {6, 6} {7, 6} {8, 6} {9, 10} {10, 6} {11, 6} {12, 6}", block, roundtrip.count, roundtrip.average, roundtrip.min, roundtrip.max, write_access.count, write_access.average, write_access.min, write_access.max, read_access.count, read_access.average, read_access.min, read_access.max)); Console.Out.Flush(); write_access.init_stats(); read_access.init_stats(); roundtrip.init_stats(); } } result = s.DeleteDataReader(PP_min_reader); result = p.DeleteDataWriter(PP_min_writer); result = s.DeleteDataReader(PP_seq_reader); result = p.DeleteDataWriter(PP_seq_writer); result = s.DeleteDataReader(PP_string_reader); result = p.DeleteDataWriter(PP_string_writer); result = s.DeleteDataReader(PP_fixed_reader); result = p.DeleteDataWriter(PP_fixed_writer); result = s.DeleteDataReader(PP_array_reader); result = p.DeleteDataWriter(PP_array_writer); result = p.DeleteDataWriter(PP_quit_writer); result = dp.DeleteSubscriber(s); result = dp.DeletePublisher(p); result = dp.DeleteTopic(PP_min_topic); result = dp.DeleteTopic(PP_seq_topic); result = dp.DeleteTopic(PP_string_topic); result = dp.DeleteTopic(PP_fixed_topic); result = dp.DeleteTopic(PP_array_topic); result = dp.DeleteTopic(PP_quit_topic); result = dpf.DeleteParticipant(dp); return; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.IDomainParticipant participant; DDS.DomainParticipantFactory factory; DDS.DomainParticipantQos qos; string expResult = "Default topicQos is used when TOPIC_QOS_DEFAULT is specified."; DDS.TopicQos topQosHolder1; DDS.TopicQos topQosHolder2; mod.tstTypeSupport typeSupport; DDS.ITopic topic; DDS.ReturnCode returnCode; factory = (DDS.DomainParticipantFactory)this.ResolveObject("factory"); qos = (DDS.DomainParticipantQos)this.ResolveObject("participantQos"); participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); typeSupport = new mod.tstTypeSupport(); topQosHolder1 = new DDS.TopicQos(); topQosHolder2 = new DDS.TopicQos(); typeSupport.RegisterType(participant, "My_Type"); if (participant.GetDefaultTopicQos(ref topQosHolder1) != DDS.ReturnCode.Ok) { result.Result = "Get default TopicQos failed (1)."; return result; } topQosHolder1.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; topQosHolder1.Liveliness.Kind = DDS.LivelinessQosPolicyKind.AutomaticLivelinessQos; topQosHolder1.Reliability.Kind = DDS.ReliabilityQosPolicyKind.ReliableReliabilityQos; topQosHolder1.DestinationOrder.Kind = DDS.DestinationOrderQosPolicyKind.ByReceptionTimestampDestinationorderQos; topQosHolder1.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; topQosHolder1.Ownership.Kind = DDS.OwnershipQosPolicyKind.SharedOwnershipQos; participant.SetDefaultTopicQos(topQosHolder1); typeSupport = new mod.tstTypeSupport(); returnCode = typeSupport.RegisterType(participant, "myTopicType"); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return result; } topic = participant.CreateTopic("MyDCPSTopic", "myTopicType"); if (topic == null) { result.Result = "Create topic failed."; return result; } topic.GetQos(ref topQosHolder2); if (!test.sacs.QosComparer.TopicQosEquals(topQosHolder1, topQosHolder2)) { result.Result = "Default topicQos is not used when TOPIC_QOS_DEFAULT is specified."; return result; } returnCode = participant.DeleteTopic(topic); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Topic failed."; return result; } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return result; }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; DDS.ISubscriber subscriber; DDS.ISubscriber subscriber2; DDS.SubscriberQos subscriberQos = null; DDS.DataReaderQos qos = null; DDS.DataReaderQos qosHolder = null; DDS.IDataReader reader; DDS.IDataReader reader2; DDS.IDataReader reader3; DDS.ITopic topic; DDS.ITopic otherTopic; DDS.TopicQos topicQos = null; string expResult = "DataReader creation and deletion test succeeded"; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); subscriberQos = (DDS.SubscriberQos) this.ResolveObject("subscriberQos"); topic = (DDS.ITopic) this.ResolveObject("topic"); otherTopic = (DDS.ITopic) this.ResolveObject("otherTopic"); topicQos = (DDS.TopicQos) this.ResolveObject("topicQos"); rc = subscriber.GetDefaultDataReaderQos(ref qosHolder); qos = qosHolder; if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not retrieve default DataReaderQos."; return(result); } reader = subscriber.CreateDataReader(null, qos);//, null, 0); if (reader != null) { result.Result = "Created a DataReader without a Topic (1)."; return(result); } subscriber2 = participant.CreateSubscriber(subscriberQos);//, null, 0); if (subscriber2 == null) { result.Result = "Could not create a new Subscriber (2)."; return(result); } rc = participant.DeleteSubscriber(subscriber2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a Subscriber (2)."; return(result); } reader = subscriber2.CreateDataReader(topic, qos);//, null, 0); if (reader != null) { result.Result = "Created a DataReader on a deleted Subscriber (2)."; return(result); } topic = participant.CreateTopic("subscriber3tc_topic", "my_type", topicQos);//, null //, 0); if (topic == null) { result.Result = "Could not create a new Topic (3)."; return(result); } rc = participant.DeleteTopic(topic); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not delete a Topic (3)."; return(result); } reader = subscriber.CreateDataReader(topic, qos);//, null, 0); if (reader != null) { result.Result = "Created a DataReader with a deleted Topic (3)."; return(result); } topic = (DDS.ITopic) this.ResolveObject("topic"); reader = subscriber.CreateDataReader(topic, qos);//, null, 0); if (reader == null) { result.Result = "Could not create a DataReader (4)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (5)."; return(result); } qos.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; qos.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; reader = subscriber.CreateDataReader(topic, qos);//, null, 0); if (reader == null) { result.Result = "Could not create a DataReader with TRANSIENT DurabilityQosPolicy (6)."; return(result); } qos.History.Kind = DDS.HistoryQosPolicyKind.KeepLastHistoryQos; qos.Durability.Kind = DDS.DurabilityQosPolicyKind.PersistentDurabilityQos; reader2 = subscriber.CreateDataReader(otherTopic, qos);//, null, 0); if (reader2 == null) { result.Result = "Could not create a DataReader with PERSISTENT DurabilityQosPolicy (7)."; return(result); } qos.Durability.Kind = DDS.DurabilityQosPolicyKind.VolatileDurabilityQos; subscriber2 = participant.CreateSubscriber(subscriberQos);//, null, 0); if (subscriber2 == null) { result.Result = "Could not create a Subscriber (8)."; return(result); } reader3 = subscriber2.CreateDataReader(otherTopic, qos);//, null, 0); if (reader3 == null) { result.Result = "Could not create a DataReader (8)."; return(result); } rc = subscriber2.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "Could delete a DataReader on a wrong subscriber (9)."; return(result); } rc = subscriber2.DeleteDataReader(reader3); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (10)."; return(result); } rc = subscriber.DeleteDataReader(reader2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (11)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a DataReader (12)."; return(result); } rc = participant.DeleteSubscriber(subscriber2); if (rc != DDS.ReturnCode.Ok) { result.Result = "Expected RETCODE_OK but recieved " + rc + " after deleting a Subscriber (13)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "get_discovered_xxx succeeded."; DDS.DomainParticipantFactory dpf; DDS.IDomainParticipant dp1; DDS.IDomainParticipant dp2; DDS.IDomainParticipant dp3; DDS.ITopic topic1; DDS.ITopic topic2; DDS.TopicQos tQos; tc_get_discovered_xxx.Type1TypeSupport type1_ts; bool dp1res = false; bool dp2res = false; bool dp3res = false; bool t1res = false; bool t2res = false; DDS.ReturnCode returnCode; DDS.ParticipantBuiltinTopicData participant_data = null; DDS.TopicBuiltinTopicData topic_data = null; DDS.SampleInfo[] sample_infos = null; DDS.DomainParticipantQos dpQos = null; DDS.InstanceHandle[] sequence = null; DDS.InstanceHandle[] sequence1 = null; System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); tQos = new DDS.TopicQos(); dpf = DDS.DomainParticipantFactory.Instance; if (dpf == null) { result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could not be initialised." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could be initialised." , expVerdict, Test.Framework.TestVerdict.Pass); if (dpf.GetDefaultParticipantQos(ref dpQos) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Default DomainParticipantQos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } dpQos.UserData.Value = encoding.GetBytes("dp1"); dp1 = dpf.CreateParticipant(DDS.DomainId.Default, dpQos, null, 0); if (dp1 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create dp1 participant" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } dpQos.UserData.Value = encoding.GetBytes("dp2"); dp2 = dpf.CreateParticipant(DDS.DomainId.Default, dpQos, null, 0); if (dp2 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create dp2 participant" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } dpQos.UserData.Value = encoding.GetBytes("dp3"); dp3 = dpf.CreateParticipant(DDS.DomainId.Default, dpQos, null, 0); if (dp3 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create dp3 participant" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } /* * Get default Topic Qos settings */ dp1.GetDefaultTopicQos(ref tQos); /* Create Topic */ type1_ts = new tc_get_discovered_xxx.Type1TypeSupport(); type1_ts.RegisterType(dp1, "tc_get_discovered_xxx::Type1"); topic1 = dp1.CreateTopic("Topic1", "tc_get_discovered_xxx::Type1", tQos); if (topic1 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create Topic1" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } topic2 = dp1.CreateTopic("Topic2", "tc_get_discovered_xxx::Type1", tQos); if (topic2 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create Topic2" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } returnCode = dp1.GetDiscoveredParticipants(ref sequence); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "get_discovered_participants returned not OK." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } else { /* the test should find 5 participants: * buildinParticipant * spliced * dp1 * dp2 * dp3 */ if (sequence.Length != 5) { result = new Test.Framework.TestResult(expResult, "get_discovered_participants failed found: " + sequence.Length + " expected 5" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } /* read from each handle the UserDataQos and check the result against the made participant names*/ for (int i = 0; i < sequence.Length; i++) { returnCode = dp1.GetDiscoveredParticipantData(ref participant_data, sequence[i]); if (returnCode == DDS.ReturnCode.Ok) { if (participant_data.UserData.Value.Length > 0) { if (encoding.GetString(participant_data.UserData.Value).CompareTo("dp1") == 0) { dp1res = true; } else if (encoding.GetString(participant_data.UserData.Value).CompareTo("dp2") == 0) { dp2res = true; } else if (encoding.GetString(participant_data.UserData.Value).CompareTo("dp3") == 0) { dp3res = true; } } // returnCode = dataReader.ReturnLoan(ref data_values, ref sample_infos); } else { result = new Test.Framework.TestResult( expResult, "read instance failed", expVerdict, Test.Framework.TestVerdict.Fail); return(result); } } if (!dp1res || !dp2res || !dp3res) { result = new Test.Framework.TestResult( expResult, "failed to discover all participants", expVerdict, Test.Framework.TestVerdict.Fail); return(result); } } returnCode = dp1.GetDiscoveredTopics(ref sequence1); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "get_discovered_topics returned not OK." , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } else { if (sequence1.Length != 15) { result = new Test.Framework.TestResult(expResult, "get_discovered_topics failed found: " + sequence1.Length + " expected 15" , expVerdict, Test.Framework.TestVerdict.Fail); return(result); } /* read from each handle the name and check the result against the made topic names*/ for (int i = 0; i < sequence1.Length; i++) { returnCode = dp1.GetDiscoveredTopicData(ref topic_data, sequence1[i]); if (returnCode == DDS.ReturnCode.Ok) { if (topic_data.Name.CompareTo("Topic1") == 0) { t1res = true; } else if (topic_data.Name.CompareTo("Topic2") == 0) { t2res = true; } } else { result = new Test.Framework.TestResult( expResult, "get discovered topic data failed", expVerdict, Test.Framework.TestVerdict.Fail); return(result); } } if (!t1res || !t2res) { result = new Test.Framework.TestResult( expResult, "failed to discover all topics", expVerdict, Test.Framework.TestVerdict.Fail); return(result); } result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict); return(result); } }
/// <summary> /// Tests the initial default DataWriterQos and the getting and setting /// of the default DataWriterQos in the Publisher. /// </summary> /// <remarks> /// Tests the initial default DataWriterQos and the getting and setting /// of the default DataWriterQos in the Publisher. /// </remarks> public override Test.Framework.TestResult Run() { DDS.IPublisher publisher; DDS.DataWriterQos qosHolder = null; DDS.TopicQos topicQos = null; string expResult = "copy_from_topic_qos test succeeded"; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); publisher = (DDS.IPublisher) this.ResolveObject("publisher"); topicQos = (DDS.TopicQos) this.ResolveObject("topicQos"); publisher.GetDefaultDataWriterQos(ref qosHolder); rc = publisher.CopyFromTopicQos(ref qosHolder, topicQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "copy_from_topic_qos failed."; return(result); } if (!test.sacs.QosComparer.DeadlineQosPolicyEquals(qosHolder.Deadline, topicQos.Deadline)) { result.Result = "deadLineQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DestinationOrderQosPolicyEquals(qosHolder.DestinationOrder, topicQos.DestinationOrder)) { result.Result = "destinationQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DurabilityQosPolicyEquals(qosHolder.Durability, topicQos.Durability)) { result.Result = "durabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.HistoryQosPolicyEquals(qosHolder.History, topicQos.History)) { result.Result = "historyQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LatencyBudgetQosPolicyEquals(qosHolder.LatencyBudget, topicQos.LatencyBudget)) { result.Result = "latencyBudgetQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LifespanQosPolicyEquals(qosHolder.Lifespan, topicQos.Lifespan)) { result.Result = "lifespanQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LivelinessQosPolicyEquals(qosHolder.Liveliness, topicQos.Liveliness)) { result.Result = "livelinessQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReliabilityQosPolicyEquals(qosHolder.Reliability, topicQos.Reliability)) { result.Result = "reliabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ResourceLimitsQosPolicyEquals(qosHolder.ResourceLimits, topicQos.ResourceLimits)) { result.Result = "resourceLimitsQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.TransportPriorityQosPolicyEquals(qosHolder.TransportPriority, topicQos.TransportPriority)) { result.Result = "transportPriorityQosPolicy not valid."; return(result); } byte[] bytes = new byte[] { 1, 2, 3 }; DDS.UserDataQosPolicy udp = new DDS.UserDataQosPolicy(); udp.Value = bytes; qosHolder.UserData.Value = bytes; DDS.OwnershipStrengthQosPolicy osp = new DDS.OwnershipStrengthQosPolicy(); osp.Value = 11; qosHolder.OwnershipStrength.Value = 11; DDS.WriterDataLifecycleQosPolicy wlp = new DDS.WriterDataLifecycleQosPolicy(); wlp.AutodisposeUnregisteredInstances = true; qosHolder.WriterDataLifecycle.AutodisposeUnregisteredInstances = true; DDS.DataWriterQos wqos = qosHolder; rc = publisher.CopyFromTopicQos(ref qosHolder, topicQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "copy_from_topic_qos failed."; return(result); } if (!test.sacs.QosComparer.UserDataQosPolicyEquals(qosHolder.UserData, udp)) { result.Result = "userDataQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.OwnershipStrengthQosPolicyEquals(qosHolder.OwnershipStrength, osp)) { result.Result = "ownershipStrengthQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.WriterDataLifecycleQosPolicyEquals(qosHolder.WriterDataLifecycle, wlp)) { result.Result = "writerDataLifecycleQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DeadlineQosPolicyEquals(qosHolder.Deadline, topicQos.Deadline)) { result.Result = "deadLineQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DestinationOrderQosPolicyEquals(qosHolder.DestinationOrder, topicQos.DestinationOrder)) { result.Result = "destinationQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DurabilityQosPolicyEquals(qosHolder.Durability, topicQos.Durability)) { result.Result = "durabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.HistoryQosPolicyEquals(qosHolder.History, topicQos.History)) { result.Result = "historyQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LatencyBudgetQosPolicyEquals(qosHolder.LatencyBudget, topicQos.LatencyBudget)) { result.Result = "latencyBudgetQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LifespanQosPolicyEquals(qosHolder.Lifespan, topicQos.Lifespan)) { result.Result = "lifespanQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LivelinessQosPolicyEquals(qosHolder.Liveliness, topicQos.Liveliness)) { result.Result = "livelinessQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReliabilityQosPolicyEquals(qosHolder.Reliability, topicQos.Reliability)) { result.Result = "reliabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ResourceLimitsQosPolicyEquals(qosHolder.ResourceLimits, topicQos.ResourceLimits)) { result.Result = "resourceLimitsQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.TransportPriorityQosPolicyEquals(qosHolder.TransportPriority, topicQos.TransportPriority)) { result.Result = "transportPriorityQosPolicy not valid."; 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."; 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 = "contains_entity returns the correct result"; DDS.IDomainParticipant participant; DDS.DomainParticipantFactory factory; DDS.TopicQos tHolder = new DDS.TopicQos(); DDS.PublisherQos pHolder = new DDS.PublisherQos(); DDS.SubscriberQos sHolder = new DDS.SubscriberQos(); DDS.DataWriterQos wHolder = new DDS.DataWriterQos(); DDS.DataReaderQos rHolder = new DDS.DataReaderQos(); DDS.ITopic topic; DDS.IPublisher publisher; DDS.ISubscriber subscriber; mod.tstDataWriter writer; mod.tstDataReader reader; long handle; DDS.ReturnCode rc; participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); factory = (DDS.DomainParticipantFactory)this.ResolveObject("factory"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); if (participant.ContainsEntity(0)) { result.Result = "contains_entity with nil handle incorrect"; return result; } if (participant.ContainsEntity(100)) { result.Result = "contains_entity with incorrect handle incorrect"; return result; } handle = participant.InstanceHandle; if (handle == DDS.InstanceHandle.Nil) { result.Result = "get_instance_handle returned 0"; return result; } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity with own handle incorrect"; return result; } mod.tstTypeSupport typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "type1"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return result; } participant.GetDefaultTopicQos(ref tHolder); topic = participant.CreateTopic("TestTopic", "type1", tHolder);//, null, 0); if (topic == null) { result.Result = "Create Topic failed."; return result; } participant.GetDefaultPublisherQos(ref pHolder); publisher = participant.CreatePublisher(pHolder);//, null, 0); if (publisher == null) { result.Result = "Create Publisher failed."; return result; } participant.GetDefaultSubscriberQos(ref sHolder); subscriber = participant.CreateSubscriber(sHolder);//, null, 0); if (subscriber == null) { result.Result = "Create Subscriber failed."; return result; } publisher.GetDefaultDataWriterQos(ref wHolder); writer = publisher.CreateDataWriter(topic, wHolder) as mod.tstDataWriter; if (writer == null) { result.Result = "Create Writer failed."; return result; } subscriber.GetDefaultDataReaderQos(ref rHolder); reader = subscriber.CreateDataReader(topic, rHolder) as mod.tstDataReader; if (reader == null) { result.Result = "Create Reader failed."; return result; } handle = topic.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (topic) returned 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with topic handle incorrect"; return result; } handle = publisher.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (publisher) returned != 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with publisher handle incorrect"; return result; } handle = subscriber.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (subscriber) returned != 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with subscriber handle incorrect"; return result; } handle = writer.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (writer) returned 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with writer handle incorrect"; return result; } handle = reader.InstanceHandle; if (handle == 0) { result.Result = "get_instance_handle (reader) returned 0"; return result; } if (!participant.ContainsEntity(handle)) { result.Result = "contains_entity with reader handle incorrect"; return result; } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities failed."; return result; } if (participant.ContainsEntity(handle)) { result.Result = "contains_entity of deleted reader incorrect"; return result; } result.Verdict = Test.Framework.TestVerdict.Pass; result.Result = expResult; return result; }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; DDS.DataReaderQos qosHolder = null; DDS.TopicQos topicQos = null; string expResult = "copy_from_topic_qos test succeeded"; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topicQos = (DDS.TopicQos) this.ResolveObject("topicQos"); rc = subscriber.CopyFromTopicQos(ref qosHolder, topicQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "copy_from_topic_qos failed."; return(result); } if (!test.sacs.QosComparer.DeadlineQosPolicyEquals(qosHolder.Deadline, topicQos.Deadline)) { result.Result = "deadLineQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DestinationOrderQosPolicyEquals(qosHolder.DestinationOrder, topicQos.DestinationOrder)) { result.Result = "destinationQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DurabilityQosPolicyEquals(qosHolder.Durability, topicQos.Durability)) { result.Result = "durabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.HistoryQosPolicyEquals(qosHolder.History, topicQos.History)) { result.Result = "historyQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LatencyBudgetQosPolicyEquals(qosHolder.LatencyBudget, topicQos.LatencyBudget)) { result.Result = "latencyBudgetQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LivelinessQosPolicyEquals(qosHolder.Liveliness, topicQos.Liveliness)) { result.Result = "livelinessQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReliabilityQosPolicyEquals(qosHolder.Reliability, topicQos.Reliability)) { result.Result = "reliabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ResourceLimitsQosPolicyEquals(qosHolder.ResourceLimits, topicQos.ResourceLimits)) { result.Result = "resourceLimitsQosPolicy not valid."; return(result); } byte[] bytes = new byte[] { 1, 2, 3 }; DDS.Duration duration = new DDS.Duration(10, 9); DDS.UserDataQosPolicy udp = new DDS.UserDataQosPolicy(); udp.Value = bytes; qosHolder.UserData.Value = bytes; DDS.TimeBasedFilterQosPolicy tfp = new DDS.TimeBasedFilterQosPolicy(); tfp.MinimumSeparation = duration; qosHolder.TimeBasedFilter.MinimumSeparation = duration; DDS.ReaderDataLifecycleQosPolicy rlp = new DDS.ReaderDataLifecycleQosPolicy(); rlp.AutopurgeDisposedSamplesDelay = duration; rlp.AutopurgeNowriterSamplesDelay = duration; rlp.AutopurgeDisposeAll = false; rlp.EnableInvalidSamples = true; qosHolder.ReaderDataLifecycle.AutopurgeDisposedSamplesDelay = duration; qosHolder.ReaderDataLifecycle.AutopurgeNowriterSamplesDelay = duration; qosHolder.ReaderDataLifecycle.AutopurgeDisposeAll = false; qosHolder.ReaderDataLifecycle.EnableInvalidSamples = true; rc = subscriber.CopyFromTopicQos(ref qosHolder, topicQos); if (rc != DDS.ReturnCode.Ok) { result.Result = "copy_from_topic_qos failed."; return(result); } if (!test.sacs.QosComparer.UserDataQosPolicyEquals(qosHolder.UserData, udp)) { result.Result = "userDataQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.TimeBasedFilterQosPolicyEquals(qosHolder.TimeBasedFilter, tfp)) { result.Result = "timeBasedFilterQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReaderDataLifecycleQosPolicyEquals(qosHolder.ReaderDataLifecycle, rlp)) { result.Result = "readerDataLifecycleQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DeadlineQosPolicyEquals(qosHolder.Deadline, topicQos.Deadline)) { result.Result = "deadLineQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DestinationOrderQosPolicyEquals(qosHolder.DestinationOrder, topicQos.DestinationOrder)) { result.Result = "destinationQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.DurabilityQosPolicyEquals(qosHolder.Durability, topicQos.Durability)) { result.Result = "durabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.HistoryQosPolicyEquals(qosHolder.History, topicQos.History)) { result.Result = "historyQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LatencyBudgetQosPolicyEquals(qosHolder.LatencyBudget, topicQos.LatencyBudget)) { result.Result = "latencyBudgetQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.LivelinessQosPolicyEquals(qosHolder.Liveliness, topicQos.Liveliness)) { result.Result = "livelinessQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ReliabilityQosPolicyEquals(qosHolder.Reliability, topicQos.Reliability)) { result.Result = "reliabilityQosPolicy not valid."; return(result); } if (!test.sacs.QosComparer.ResourceLimitsQosPolicyEquals(qosHolder.ResourceLimits, topicQos.ResourceLimits)) { result.Result = "resourceLimitsQosPolicy not valid."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public 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); }
private void Form1_Load(object sender, EventArgs e) { participant = DDS.DomainParticipantFactory.get_instance().create_participant( 0, 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 --- // /* To customize publisher QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.Publisher publisher = participant.create_publisher( DDS.DomainParticipant.PUBLISHER_QOS_DEFAULT, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (publisher == null) { shutdown(participant); throw new ApplicationException("create_publisher error"); } // --- Create topics --- // /* OpenClose */ /* Register type before creating topic */ System.String type_name = cow.OpenCloseTypeSupport.get_type_name(); try { cow.OpenCloseTypeSupport.register_type( participant, type_name); } catch (DDS.Exception ex) { MessageBox.Show("register_type error " + ex.Message); shutdown(participant); throw ex; } /* Customize QoS settings */ DDS.TopicQos topicQos = new DDS.TopicQos(); participant.get_default_topic_qos(topicQos); topicQos.reliability.kind = DDS.ReliabilityQosPolicyKind.RELIABLE_RELIABILITY_QOS; topicQos.durability.kind = DDS.DurabilityQosPolicyKind.TRANSIENT_LOCAL_DURABILITY_QOS; DDS.Topic openCloseTopic = participant.create_topic( "OpenClose", type_name, topicQos, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (openCloseTopic == null) { shutdown(participant); throw new ApplicationException("create_topic error"); } // --- Create writer --- // /* To customize data writer QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.DataWriterQos datawriterQos = new DDS.DataWriterQos(); publisher.get_default_datawriter_qos(datawriterQos); publisher.copy_from_topic_qos(datawriterQos, topicQos); DDS.DataWriter writer = publisher.create_datawriter( openCloseTopic, datawriterQos, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (writer == null) { shutdown(participant); throw new ApplicationException("create_datawriter error"); } openCloseWriter = (cow.OpenCloseDataWriter)writer; /* SetWatts */ /* Register type before creating topic */ type_name = cow.SetWattsTypeSupport.get_type_name(); try { cow.SetWattsTypeSupport.register_type( participant, type_name); } catch (DDS.Exception ex) { MessageBox.Show("register_type error " + ex.Message); shutdown(participant); throw ex; } /* To customize topic QoS, use the configuration file USER_QOS_PROFILES.xml */ DDS.Topic setWattsTopic = participant.create_topic( "SetWatts", type_name, topicQos, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (setWattsTopic == null) { shutdown(participant); throw new ApplicationException("create_topic error"); } // --- Create writer --- // /* To customize data writer QoS, use the configuration file USER_QOS_PROFILES.xml */ writer = publisher.create_datawriter( setWattsTopic, datawriterQos, null /* listener */, DDS.StatusMask.STATUS_MASK_NONE); if (writer == null) { shutdown(participant); throw new ApplicationException("create_datawriter error"); } setWattsWriter = (cow.SetWattsDataWriter)writer; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "get_discovered_xxx succeeded."; DDS.DomainParticipantFactory dpf; DDS.IDomainParticipant dp1; DDS.IDomainParticipant dp2; DDS.IDomainParticipant dp3; DDS.ITopic topic1; DDS.ITopic topic2; DDS.TopicQos tQos; tc_get_discovered_xxx.Type1TypeSupport type1_ts; bool dp1res = false; bool dp2res = false; bool dp3res = false; bool t1res = false; bool t2res = false; DDS.ReturnCode returnCode; DDS.ParticipantBuiltinTopicData participant_data = null; DDS.TopicBuiltinTopicData topic_data = null; DDS.SampleInfo[] sample_infos = null; DDS.DomainParticipantQos dpQos = null; DDS.InstanceHandle[] sequence = null; DDS.InstanceHandle[] sequence1 = null; System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); tQos = new DDS.TopicQos(); dpf = DDS.DomainParticipantFactory.Instance; if (dpf == null) { result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could not be initialised." , expVerdict, Test.Framework.TestVerdict.Fail); return result; } result = new Test.Framework.TestResult(expResult, "DomainParticipantFactory could be initialised." , expVerdict, Test.Framework.TestVerdict.Pass); if (dpf.GetDefaultParticipantQos(ref dpQos) != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "Default DomainParticipantQos could not be resolved." , expVerdict, Test.Framework.TestVerdict.Fail); return result; } dpQos.UserData.Value = encoding.GetBytes("dp1"); dp1 = dpf.CreateParticipant (DDS.DomainId.Default, dpQos, null, 0); if (dp1 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create dp1 participant" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } dpQos.UserData.Value = encoding.GetBytes("dp2"); dp2 = dpf.CreateParticipant (DDS.DomainId.Default, dpQos, null, 0); if (dp2 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create dp2 participant" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } dpQos.UserData.Value = encoding.GetBytes("dp3"); dp3 = dpf.CreateParticipant (DDS.DomainId.Default, dpQos, null, 0); if (dp3 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create dp3 participant" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } /* * Get default Topic Qos settings */ dp1.GetDefaultTopicQos(ref tQos); /* Create Topic */ type1_ts = new tc_get_discovered_xxx.Type1TypeSupport(); type1_ts.RegisterType(dp1, "tc_get_discovered_xxx::Type1"); topic1 = dp1.CreateTopic("Topic1", "tc_get_discovered_xxx::Type1", tQos); if (topic1 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create Topic1" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } topic2 = dp1.CreateTopic("Topic2", "tc_get_discovered_xxx::Type1", tQos); if (topic2 == null) { result = new Test.Framework.TestResult(expResult, "Test case failed. Failed to create Topic2" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } returnCode = dp1.GetDiscoveredParticipants(ref sequence); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "get_discovered_participants returned not OK." , expVerdict, Test.Framework.TestVerdict.Fail); return result; } else { /* the test should find 5 participants: * buildinParticipant * spliced * dp1 * dp2 * dp3 */ if (sequence.Length != 5) { result = new Test.Framework.TestResult(expResult, "get_discovered_participants failed found: "+sequence.Length+" expected 5" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } /* read from each handle the UserDataQos and check the result against the made participant names*/ for (int i=0; i<sequence.Length;i++) { returnCode = dp1.GetDiscoveredParticipantData(ref participant_data,sequence[i]); if (returnCode == DDS.ReturnCode.Ok) { if (participant_data.UserData.Value.Length >0) { if ( encoding.GetString(participant_data.UserData.Value).CompareTo("dp1") == 0) { dp1res = true; } else if (encoding.GetString(participant_data.UserData.Value).CompareTo("dp2") == 0) { dp2res= true; } else if (encoding.GetString(participant_data.UserData.Value).CompareTo("dp3") == 0) { dp3res = true; } } // returnCode = dataReader.ReturnLoan(ref data_values, ref sample_infos); } else { result = new Test.Framework.TestResult( expResult, "read instance failed", expVerdict, Test.Framework.TestVerdict.Fail); return result; } } if (!dp1res || !dp2res || !dp3res) { result = new Test.Framework.TestResult( expResult, "failed to discover all participants", expVerdict, Test.Framework.TestVerdict.Fail); return result; } } returnCode = dp1.GetDiscoveredTopics(ref sequence1); if (returnCode != DDS.ReturnCode.Ok) { result = new Test.Framework.TestResult(expResult, "get_discovered_topics returned not OK." , expVerdict, Test.Framework.TestVerdict.Fail); return result; } else { if (sequence1.Length != 10) { result = new Test.Framework.TestResult(expResult, "get_discovered_topics failed found: "+sequence1.Length+" expected 10" , expVerdict, Test.Framework.TestVerdict.Fail); return result; } /* read from each handle the name and check the result against the made topic names*/ for (int i=0; i<sequence1.Length;i++) { returnCode = dp1.GetDiscoveredTopicData(ref topic_data,sequence1[i]); if (returnCode == DDS.ReturnCode.Ok) { if ( topic_data.Name.CompareTo("Topic1") == 0) { t1res = true; } else if (topic_data.Name.CompareTo("Topic2") == 0) { t2res= true; } } else { result = new Test.Framework.TestResult( expResult, "get discovered topic data failed", expVerdict, Test.Framework.TestVerdict.Fail); return result; } } if (!t1res || !t2res) { result = new Test.Framework.TestResult( expResult, "failed to discover all topics", expVerdict, Test.Framework.TestVerdict.Fail); return result; } result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict); return result; } }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; DDS.DomainParticipantFactory factory; DDS.DomainParticipantQos qos = null; string expResult = "Topic test succeeded."; DDS.TopicQos topQosHolder1 = null; DDS.TopicQos topQosHolder2 = null; mod.tstTypeSupport typeSupport; DDS.ITopic topic; DDS.ITopic topic2; DDS.ITopic topic3; DDS.ITopic topic4; DDS.ITopicDescription description; DDS.ReturnCode returnCode; factory = (DDS.DomainParticipantFactory) this.ResolveObject("factory"); qos = (DDS.DomainParticipantQos) this.ResolveObject("participantQos"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); typeSupport = new mod.tstTypeSupport(); typeSupport.RegisterType(participant, "My_Type"); if (participant.GetDefaultTopicQos(ref topQosHolder1) != DDS.ReturnCode.Ok) { result.Result = "Get default TopicQos failed (1)."; return(result); } if (!test.sacs.QosComparer.TopicQosEquals(topQosHolder1, test.sacs.QosComparer.defaultTopicQos)) { result.Result = "Get default TopicQos did not return the default qos (1)."; return(result); } topQosHolder1.Durability.Kind = DDS.DurabilityQosPolicyKind.TransientDurabilityQos; topQosHolder1.Liveliness.Kind = DDS.LivelinessQosPolicyKind.AutomaticLivelinessQos; topQosHolder1.Reliability.Kind = DDS.ReliabilityQosPolicyKind.ReliableReliabilityQos; topQosHolder1.DestinationOrder.Kind = DDS.DestinationOrderQosPolicyKind.ByReceptionTimestampDestinationorderQos; topQosHolder1.History.Kind = DDS.HistoryQosPolicyKind.KeepAllHistoryQos; topQosHolder1.Ownership.Kind = DDS.OwnershipQosPolicyKind.SharedOwnershipQos; typeSupport = new mod.tstTypeSupport(); returnCode = typeSupport.RegisterType(participant, "myTopicType"); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } topic = participant.CreateTopic("MyDCPSTopic", "myTopicType", topQosHolder1);//, null, 0); if (topic == null) { result.Result = "Create topic failed (3)"; return(result); } description = participant.LookupTopicDescription("MyDCPSTopic"); if (topic != description) { result.Result = "Lookup topic failed (4)"; return(result); } topic2 = participant.FindTopic("MyDCPSTopic", new DDS.Duration()); if (topic2 == null) { result.Result = "Find topic failed (5)"; return(result); } topic2.GetQos(ref topQosHolder2); if (!test.sacs.QosComparer.TopicQosEquals(topQosHolder1, topQosHolder2)) { result.Result = "Find Topic did not find the correct Topic. (5)"; return(result); } topic3 = participant.CreateTopic("MyDCPSTopic", "myTopicType"); if (topic3 != null) { result.Result = "Create Topic with BAD_PARAM succeeded (6)."; return(result); } topic4 = participant.CreateTopic("MyDCPSTopic", "myTopicType"); if (topic4 != null) { result.Result = "Create Topic with BAD_PARAM succeeded (7)."; return(result); } returnCode = participant.DeleteTopic(topic3); if (returnCode != DDS.ReturnCode.BadParameter) { result.Result = "Expected RETCODE_BAD_PARAMETER but received " + returnCode + " after deleting a non exisiting topic (8)."; return(result); } returnCode = participant.DeleteTopic(topic4); if (returnCode != DDS.ReturnCode.BadParameter) { result.Result = "Expected RETCODE_BAD_PARAMETER but received " + returnCode + " after deleting a non exisiting topic (9)."; return(result); } participant2 = factory.CreateParticipant(DDS.DomainId.Default, qos);//, null, 0); if (participant2 == null) { result.Result = "Create Participant failed (10)."; return(result); } returnCode = participant2.DeleteTopic(topic); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete Topic on wrong Participant succeeded (11)."; return(result); } returnCode = factory.DeleteParticipant(participant2); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Participant failed (12)."; return(result); } returnCode = participant.DeleteTopic(topic); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Topic failed (13)."; return(result); } returnCode = participant.DeleteTopic(topic2); if (returnCode != DDS.ReturnCode.Ok) { result.Result = "Delete Topic failed (14)."; return(result); } returnCode = participant.DeleteTopic(topic); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete of already deleted Topic succeeded (15)."; return(result); } returnCode = participant.DeleteTopic(null); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Delete null Topic succeeded (16)."; return(result); } returnCode = participant.IgnoreParticipant(-10); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Ignore invalid participant succeeded."; return(result); } returnCode = participant.IgnorePublication(-10); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Ignore invalid publication succeeded."; return(result); } returnCode = participant.IgnoreSubscription(-10); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Ignore invalid subscription succeeded."; return(result); } returnCode = participant.IgnoreTopic(-10); if (returnCode == DDS.ReturnCode.Ok) { result.Result = "Ignore invalid topic succeeded."; 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); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos pqos = null; DDS.SubscriberQos subQos = null; DDS.ISubscriber subscriber; DDS.PublisherQos pubQos = null; DDS.IPublisher publisher; mod.tstTypeSupport typeSupport; DDS.TopicQos tQos = null; DDS.ITopic topic; DDS.DataReaderQos drQos = null; mod.tstDataReader datareader; DDS.DataWriterQos dwQos = null; mod.tstDataWriter datawriter; Test.Framework.TestResult result; DDS.ReturnCode rc; result = new Test.Framework.TestResult("Initialization success", string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "DomainParticipantFactory could not be initialized."; return(result); } if (factory.GetDefaultParticipantQos(ref pqos) != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } participant = factory.CreateParticipant(DDS.DomainId.Default, pqos);//, null, 0); if (participant == null) { result.Result = "Creation of DomainParticipant failed."; return(result); } if (participant.GetDefaultSubscriberQos(ref subQos) != DDS.ReturnCode.Ok) { result.Result = "Default SubscriberQos could not be resolved."; return(result); } subscriber = participant.CreateSubscriber(subQos);//, null, 0); if (subscriber == null) { result.Result = "Subscriber could not be created."; return(result); } typeSupport = new mod.tstTypeSupport(); rc = typeSupport.RegisterType(participant, "tstType"); if (rc != DDS.ReturnCode.Ok) { result.Result = "Typesupport could not be registered."; return(result); } if (participant.GetDefaultTopicQos(ref tQos) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } topic = participant.CreateTopic("tst", "tstType", tQos);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQos) != DDS.ReturnCode.Ok) { result.Result = "Default PublisherQos could not be resolved."; return(result); } publisher = participant.CreatePublisher(pubQos);//, null, 0); if (publisher == null) { result.Result = "Publisher could not be created."; return(result); } if (subscriber.GetDefaultDataReaderQos(ref drQos) != DDS.ReturnCode.Ok) { result.Result = "Default DataReaderQos could not be resolved."; return(result); } datareader = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (datareader == null) { result.Result = "DataReader could not be created."; return(result); } if (publisher.GetDefaultDataWriterQos(ref dwQos) != DDS.ReturnCode.Ok) { result.Result = "Default DataWriterQos could not be resolved."; return(result); } datawriter = (mod.tstDataWriter)publisher.CreateDataWriter(topic, dwQos);//, null, 0); testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqos); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", tQos); testCase.RegisterObject("subscriber", subscriber); testCase.RegisterObject("subscriberQos", subQos); testCase.RegisterObject("datareader", datareader); testCase.RegisterObject("datareaderQos", drQos); testCase.RegisterObject("publisher", publisher); testCase.RegisterObject("publisherQos", pubQos); testCase.RegisterObject("datawriter", datawriter); testCase.RegisterObject("datawriterQos", dwQos); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run(Test.Framework.TestCase testCase) { DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; mod.tstTypeSupport typeSupport; DDS.TopicQos topicQos = null; DDS.ITopic topic; DDS.DomainParticipantQos pqos = null; DDS.ReturnCode rc; 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 pqos) != DDS.ReturnCode.Ok) { result.Result = "Default DomainParticipantQos could not be resolved."; return(result); } participant = factory.CreateParticipant(string.Empty, pqos);//, 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."; return(result); } rc = typeSupport.RegisterType(participant, "my_type"); if (rc != DDS.ReturnCode.Ok) { result.Result = "register_type failed."; return(result); } if (participant.GetDefaultTopicQos(ref topicQos) != DDS.ReturnCode.Ok) { result.Result = "participant.get_default_topic_qos failed."; return(result); } topic = participant.CreateTopic("my_topic", "my_type", topicQos);//, null, 0); if (topic == null) { result.Result = "participant.create_topic failed."; return(result); } testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqos); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); result.Result = "Initialization success."; 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.TopicQos topQosHolder = null; DDS.ITopic topic; mod.tstTypeSupport typeSupport = null; Test.Framework.TestResult result; string name; string typeName; 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(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."; return(result); } name = "my_topic"; typeName = "my_type"; rc = typeSupport.RegisterType(participant, typeName); if (rc != DDS.ReturnCode.Ok) { result.Result = "Register type failed."; return(result); } if (participant.GetDefaultTopicQos(ref topQosHolder) != DDS.ReturnCode.Ok) { result.Result = "Default TopicQos could not be resolved."; return(result); } topic = participant.CreateTopic(name, typeName, topQosHolder);//, null, 0); if (topic == null) { result.Result = "Topic could not be created."; return(result); } testCase.RegisterObject("factory", factory); testCase.RegisterObject("participantQos", pqosHolder); testCase.RegisterObject("participant", participant); testCase.RegisterObject("topic", topic); testCase.RegisterObject("topicQos", topQosHolder); testCase.RegisterObject("typeSupport", typeSupport); testCase.RegisterObject("topicName", name); testCase.RegisterObject("topicTypeName", typeName); result.Result = "Initialization success."; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
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() { DDS.ITopic topic; DDS.TopicQos qos; DDS.TopicQos qos2; string expResult = "Topic test succeeded"; DDS.TopicQos topQosHolder = null; Test.Framework.TestResult result; DDS.ReturnCode rc; string typeName; string typeName2; string name; string name2; DDS.IDomainParticipant participant; DDS.IDomainParticipant participant2; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); topic = (DDS.ITopic) this.ResolveObject("topic"); qos2 = (DDS.TopicQos) this.ResolveObject("topicQos"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); name = (string)this.ResolveObject("topicName"); typeName = (string)this.ResolveObject("topicTypeName"); rc = topic.GetQos(ref topQosHolder); qos = topQosHolder; if (rc != DDS.ReturnCode.Ok) { result.Result = "Get TopicQos failed."; return(result); } if (!test.sacs.TopicQosComparer.TopicQosEqual(qos, qos2)) { result.Result = "TopicQosses not equal."; return(result); } qos.Deadline.Period.NanoSec = 1234; qos.Deadline.Period.Sec = 9; rc = topic.SetQos(qos); if (rc != DDS.ReturnCode.Ok) { result.Result = "Set TopicQos failed (2)."; return(result); } topic.GetQos(ref topQosHolder); qos2 = topQosHolder; if (!test.sacs.TopicQosComparer.TopicQosEqual(qos, qos2)) { result.Result = "TopicQosses not equal (2)."; return(result); } name2 = topic.Name; if (!name.Equals(name2)) { result.Result = "Resolved Topic name is not correct. ('" + name + "' != '" + name2 + "')"; return(result); } participant2 = topic.Participant; if (participant != participant2) { result.Result = "Resolved DomainParticipant is not correct."; return(result); } typeName2 = topic.TypeName; if (!typeName.Equals(typeName2)) { result.Result = "Resolved Topic type name is not correct. ('" + typeName + "' != '" + typeName2 + "')"; System.Console.Out.WriteLine("NOTE\t\t: See STR/CP: TH020"); return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }