public override Test.Framework.TestResult Run() { DDS.GuardCondition condition; DDS.WaitSet waitset; Test.Framework.TestResult result; Condition1.GuardConditionWaitset threadedWaitset; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); condition = new DDS.GuardCondition(); waitset = new DDS.WaitSet(); waitset.AttachCondition(condition); DDS.ICondition[] activeConditions = new DDS.ICondition[0]; rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (activeConditions.Length > 0) { result.Result = "WaitSet.Wait returned condition where it shouldn't."; return(result); } threadedWaitset = new test.sacs.Condition1.GuardConditionWaitset(this, waitset); threadedWaitset.Start(); condition.SetTriggerValue(true); try { threadedWaitset.Join(); } catch (System.Exception e) { System.Console.WriteLine(e); } if (!threadedWaitset.Succeeded()) { result.Result = "GuardCondition trigger does not work properly."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.GuardCondition condition; DDS.WaitSet waitset; Test.Framework.TestResult result; Condition1.GuardConditionWaitset threadedWaitset; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); condition = new DDS.GuardCondition(); waitset = new DDS.WaitSet(); waitset.AttachCondition(condition); DDS.ICondition[] activeConditions = new DDS.ICondition[0]; rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return result; } if (activeConditions.Length > 0) { result.Result = "WaitSet.Wait returned condition where it shouldn't."; return result; } threadedWaitset = new test.sacs.Condition1.GuardConditionWaitset(this, waitset); threadedWaitset.Start(); condition.SetTriggerValue(true); try { threadedWaitset.Join(); } catch (System.Exception e) { System.Console.WriteLine(e); } if (!threadedWaitset.Succeeded()) { result.Result = "GuardCondition trigger does not work properly."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { DDS.ITopic topic; DDS.IStatusCondition condition; DDS.WaitSet waitset; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); topic = (DDS.ITopic) this.ResolveObject("topic"); condition = topic.StatusCondition; if (condition == null) { result.Result = "Could not resolve participant condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.ITopic topic; DDS.IStatusCondition condition; DDS.WaitSet waitset; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); topic = (DDS.ITopic)this.ResolveObject("topic"); condition = topic.StatusCondition; if (condition == null) { result.Result = "Could not resolve participant condition."; return result; } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return result; } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return result; } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public void Run() { thread = new System.Threading.Thread(delegate() { this.success = false; DDS.ICondition[] attachedConditions = null; DDS.ReturnCode rc = this.waitset.GetConditions(ref attachedConditions); if (rc == DDS.ReturnCode.Ok) { DDS.ICondition[] activeConditions = new DDS.ICondition[0]; rc = this.waitset.Wait(ref activeConditions, new DDS.Duration(30, 0)); if (rc == DDS.ReturnCode.Ok) { if (activeConditions.Length != 0) { this.success = true; } } } }); thread.Start(); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IReadCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.DataReaderQos drQos; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; DDS.ITopic topic; DDS.ReturnCode rc; string expResult = "ReadCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); reader = (mod.tstDataReader)this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); topic = (DDS.ITopic)this.ResolveObject("topic"); drQos = (DDS.DataReaderQos)this.ResolveObject("datareaderQos"); condition = reader.CreateReadCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (condition == null) { result.Result = "Could not resolve reader condition."; return result; } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return result; } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return result; } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return result; } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (3)."; return result; } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed."; return result; } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return result; } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return result; } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(2)."; return result; } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(2)."; return result; } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return result; } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return result; } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return result; } rc = subscriber.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "delete_datareader succeeded, but should not."; return result; } rc = waitset.GetConditions(ref conditionHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed."; return result; } if (conditionHolder.Length != 1) { result.Result = "Returned conditions not valid."; return result; } if (conditionHolder[0] != condition) { result.Result = "Returned condition does not equal set condition."; return result; } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed."; return result; } rc = waitset.GetConditions(ref conditionHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(2)."; return result; } if (conditionHolder.Length != 0) { result.Result = "Returned conditions not valid(2)."; return result; } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; DDS.IStatusCondition condition; DDS.IPublisher publisher; DDS.WaitSet waitset; mod.tst[] tstHolder; DDS.ICondition[] conditionHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); publisher = (DDS.IPublisher) this.ResolveObject("publisher"); condition = reader.StatusCondition; if (condition == null) { result.Result = "Could not resolve reader condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } conditionHolder = new DDS.ICondition[0]; /* The LivelinessChanged and SubscriptionMatched are not necessarily synced. * So, it can happen that one triggers the waitset while the other hasn't been * updated yet. */ DDS.StatusKind statuses = 0; do { bool livelinessChanged = false; bool subscriptionMatched = false; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(10, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (1): " + rc; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } livelinessChanged = ((reader.StatusChanges & DDS.StatusKind.LivelinessChanged) == DDS.StatusKind.LivelinessChanged); subscriptionMatched = ((reader.StatusChanges & DDS.StatusKind.SubscriptionMatched) == DDS.StatusKind.SubscriptionMatched); statuses |= reader.StatusChanges; if (livelinessChanged) { if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 1, 1, 0, 0)) { result.Result = "liveliness_changed not valid."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 1, 0, 0, 0)) { result.Result = "liveliness_changed not valid (2)."; return(result); } } /* This is only a useful test when both events were triggered at the same time, * because then getting liveliness status might have reset the subscription matched. */ if ((livelinessChanged && subscriptionMatched) && (reader.StatusChanges != DDS.StatusKind.SubscriptionMatched)) { result.Result = "Expected status change (SubscriptionMatched) should not have de-activated yet."; return(result); } if (subscriptionMatched) { if (!test.sacs.StatusValidator.SubscriptionMatchValid(reader, 1, 1, 1, 1)) { result.Result = "subscription_matched not valid."; return(result); } if (!test.sacs.StatusValidator.SubscriptionMatchValid(reader, 1, 0, 1, 0)) { result.Result = "subscription_matched not valid (2)."; return(result); } } } while (statuses != (DDS.StatusKind.LivelinessChanged | DDS.StatusKind.SubscriptionMatched)); if (reader.StatusChanges != 0) { result.Result = "Expected all statuses are reset: this does not seem to be the case."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed. (2)"; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (3)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one (2)."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition (2)."; return(result); } if (reader.StatusChanges != DDS.StatusKind.DataAvailable) { result.Result = "Expected status change DataAvailable, which is not currently set."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } if (reader.StatusChanges != 0) { result.Result = "Expected all statuses are reset: this does not seem to be the case (2)."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(4)."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't.(2)"; return(result); } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datawriter failed."; return(result); } try { System.Threading.Thread.Sleep(2000); } catch (System.Exception) { System.Console.Error.WriteLine("Sleep failed..."); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (5)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one (3)."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition (3)."; return(result); } if (reader.StatusChanges != (DDS.StatusKind.LivelinessChanged | DDS.StatusKind.SubscriptionMatched | DDS.StatusKind.DataAvailable)) { result.Result = "Expected status changes (LivelinessChanged AND SubscriptionMatched AND DataAvailable) did not occur."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 0, 1, 0, 0)) { result.Result = "liveliness_changed not valid (3)."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 0, 0, 0, 0)) { result.Result = "liveliness_changed not valid (4)."; return(result); } if (reader.StatusChanges != (DDS.StatusKind.SubscriptionMatched | DDS.StatusKind.DataAvailable)) { result.Result = "Expected status changes (SubscriptionMatched | DataAvailable) should not have de-activated yet."; return(result); } if (!test.sacs.StatusValidator.SubscriptionMatchValid(reader, 1, 0, 0, 1)) { result.Result = "subscription_matched not valid (3)."; return(result); } if (!test.sacs.StatusValidator.SubscriptionMatchValid(reader, 1, 0, 0, 0)) { result.Result = "subscription_matched not valid (4)."; return(result); } if (reader.StatusChanges != DDS.StatusKind.DataAvailable) { result.Result = "Expected status change (DataAvailable) should not have de-activated yet."; return(result); } rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } if (reader.StatusChanges != 0) { result.Result = "Expected all statuses are reset: this does not seem to be the case (3)."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(6)."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't.(3)"; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; mod.tstDataWriter writer; mod.tstDataReader reader; DDS.IStatusCondition subscriberCondition; DDS.WaitSet waitset; mod.tst[] tstHolder; DDS.ICondition[] conditionHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); reader = (mod.tstDataReader)this.ResolveObject("datareader"); subscriberCondition = subscriber.StatusCondition; if (subscriberCondition == null) { result.Result = "Could not resolve subscriber condition."; return result; } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(subscriberCondition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach subscriber condition."; return result; } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return result; } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't."; return result; } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed."; return result; } if (conditionHolder.Length < 1) { result.Result = "WaitSet.Wait returned no conditions where it should (1)."; return result; } if (conditionHolder[0] != subscriberCondition) { result.Result = "WaitSet.Wait returned wrong condition."; return result; } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(2)."; return result; } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IStatusCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.DataReaderQos drQos; DDS.ITopic topic; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); condition = writer.StatusCondition; if (condition == null) { result.Result = "Could not resolve reader condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return(result); } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (conditionHolder.Length != 0) { this.PrintStatusses(writer); result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (conditionHolder.Length > 0) { PrintStatusses(writer); result.Result = "WaitSet.Wait returned conditions where it shouldn't.(3)"; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IStatusCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.DataReaderQos drQos; DDS.ITopic topic; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; conditionHolder = new DDS.ICondition[0]; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); condition = writer.StatusCondition; if (condition == null) { result.Result = "Could not resolve reader condition."; return(result); } condition.SetEnabledStatuses(DDS.StatusKind.PublicationMatched); waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } /* A delay is required to make sure that 'reader' is created * and does not interfere with rest of the tests. Using the * waitset without checking all results as this garuantees * the fastest test execution. */ rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (0)"; return(result); } /* Get publication matched status to make sure waitset is not woken * by 'reader' matched event. */ DDS.PublicationMatchedStatus holder = null; rc = writer.GetPublicationMatchedStatus(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "Unable to clear PublicationMatchedStatus."; return(result); } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (1)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition (1)."; return(result); } if (writer.StatusChanges != DDS.StatusKind.PublicationMatched) { result.Result = "Expected status change (PublicationMatched) did not occur."; return(result); } if (!test.sacs.StatusValidator.PublicationMatchValid(writer, 2, 1, 2, 1)) { result.Result = "publication_matched not valid."; return(result); } if (!test.sacs.StatusValidator.PublicationMatchValid(writer, 2, 0, 2, 0)) { result.Result = "publication_matched not valid (2)."; return(result); } if (writer.StatusChanges != 0) { result.Result = "Expected all statuses are reset: this does not seem to be the case."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed (2)."; return(result); } if (conditionHolder.Length != 0) { this.PrintStatusses(writer); result.Result = "WaitSet.Wait returned conditions where it shouldn't (1)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (3)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one (3)."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition (2)."; return(result); } if (writer.StatusChanges != DDS.StatusKind.PublicationMatched) { result.Result = "Expected status change (PublicationMatched) did not occur."; return(result); } if (!test.sacs.StatusValidator.PublicationMatchValid(writer, 2, 0, 1, 1)) { result.Result = "publication_matched not valid (3)."; return(result); } if (!test.sacs.StatusValidator.PublicationMatchValid(writer, 2, 0, 1, 0)) { result.Result = "publication_matched not valid (4)."; return(result); } if (writer.StatusChanges != 0) { result.Result = "Expected all statuses are reset: this does not seem to be the case (3)."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(4)."; return(result); } if (conditionHolder.Length > 0) { PrintStatusses(writer); result.Result = "WaitSet.Wait returned conditions where it shouldn't.(2)"; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IQueryCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.DataReaderQos drQos; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; string[] queryParams; DDS.ITopic topic; DDS.ReturnCode rc; string expResult = "QueryCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, "long_1=1", null); if (condition == null) { result.Result = "Could not create query condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return(result); } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (3)."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 2; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (4)."; return(result); } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. "; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(2)."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(2)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "delete_datareader succeeded, but should not."; return(result); } rc = waitset.GetConditions(ref conditionHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed."; return(result); } if (conditionHolder.Length != 1) { result.Result = "Returned conditions not valid."; return(result); } if (conditionHolder[0] != condition) { result.Result = "Returned condition does not equal set condition."; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed."; return(result); } rc = waitset.GetConditions(ref conditionHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(2)."; return(result); } if (conditionHolder.Length != 0) { result.Result = "Returned conditions not valid(2)."; return(result); } queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, "long_1=%0", queryParams); if (condition == null) { result.Result = "Could not create query condition."; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q1)."; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q1)."; return(result); } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed(2)."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed (q2). "; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q2)." ; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q2)."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q3)." ; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q3)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed(q1)."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q5)."; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q6)."; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed(q7)."; return(result); } rc = waitset.GetConditions(ref conditionHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(q7)."; return(result); } if (conditionHolder.Length != 0) { result.Result = "Returned conditions not valid(q7)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Waitset StatusCondition succeeded."; DDS.ICondition[] holder; DDS.ReturnCode rc; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos qosHolder = null; DDS.IStatusCondition condition; DDS.IStatusCondition condition2; DDS.IPublisher publisher; DDS.PublisherQos pubQosHolder = null; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); holder = new DDS.ICondition[0]; DDS.WaitSet waitset = new DDS.WaitSet(); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "Factory get_instance failed."; return result; } if (factory.GetDefaultParticipantQos(ref qosHolder) != DDS.ReturnCode.Ok) { result.Result = "get_default_participant_qos failed."; return result; } participant = factory.CreateParticipant(string.Empty, qosHolder);//, null, 0); if (participant == null) { result.Result = "create_participant failed."; return result; } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return result; } publisher = participant.CreatePublisher(pubQosHolder);//, null, DDS.StatusKind.Any); if (publisher == null) { result.Result = "create_publisher failed."; return result; } condition = participant.StatusCondition; if (condition == null) { result.Result = "get_status_condition failed."; return result; } condition2 = publisher.StatusCondition; if (condition2 == null) { result.Result = "get_status_condition failed.(2)"; return result; } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return result; } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc; return result; } if (holder.Length != 1) { result.Result = "get_conditions returned " + holder.Length + " conditions."; return result; } if (holder[0] != condition) { result.Result = "get_conditions returned wrong condition."; return result; } rc = waitset.DetachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (1)"; return result; } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc + " (1)"; return result; } if (holder.Length != 0) { result.Result = "get_conditions returned " + holder.Length + " conditions (1)."; return result; } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return result; } rc = waitset.AttachCondition(condition2); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return result; } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc; return result; } if (holder.Length != 2) { result.Result = "get_conditions returned " + holder.Length + " conditions."; return result; } if ((holder[0] != condition) && (holder[1] != condition)) { result.Result = "get_conditions returned wrong conditions(1)."; return result; } if ((holder[0] != condition2) && (holder[1] != condition2)) { result.Result = "get_conditions returned wrong conditions(2)."; return result; } rc = waitset.DetachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (2)"; return result; } rc = waitset.DetachCondition(condition2); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (3)"; return result; } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities returned RETCODE: " + rc; return result; } rc = factory.DeleteParticipant(participant); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_participant returned RETCODE: " + rc; return result; } result.Result = expResult; result.Verdict = expVerdict; return result; }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; DDS.IStatusCondition condition; DDS.IPublisher publisher; DDS.WaitSet waitset; mod.tst[] tstHolder; DDS.ICondition[] conditionHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); reader = (mod.tstDataReader)this.ResolveObject("datareader"); publisher = (DDS.IPublisher)this.ResolveObject("publisher"); condition = reader.StatusCondition; if (condition == null) { result.Result = "Could not resolve reader condition."; return result; } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return result; } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (1)"; return result; } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return result; } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return result; } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 1, 1, 0, 0)) { result.Result = "liveliness_changed not valid."; return result; } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 1, 0, 0, 0)) { result.Result = "liveliness_changed not valid (2)."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed. (2)"; return result; } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return result; } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (3)"; return result; } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no conditions where it should (1)."; return result; } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition (1)."; return result; } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(4)."; return result; } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't.(2)"; return result; } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datawriter failed."; return result; } try { System.Threading.Thread.Sleep(2000); } catch (System.Exception) { System.Console.Error.WriteLine("Sleep failed..."); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (5)"; return result; } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return result; } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return result; } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 0, 1, 0, 0)) { result.Result = "liveliness_changed not valid (3)."; return result; } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 0, 0, 0, 0)) { result.Result = "liveliness_changed not valid (4)."; return result; } rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(6)."; return result; } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't.(3)"; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { Test.Framework.TestResult result; Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass; string expResult = "Waitset StatusCondition succeeded."; DDS.ICondition[] holder; DDS.ReturnCode rc; DDS.DomainParticipantFactory factory; DDS.IDomainParticipant participant; DDS.DomainParticipantQos qosHolder = null; DDS.IStatusCondition condition; DDS.IStatusCondition condition2; DDS.IPublisher publisher; DDS.PublisherQos pubQosHolder = null; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); holder = new DDS.ICondition[0]; DDS.WaitSet waitset = new DDS.WaitSet(); factory = DDS.DomainParticipantFactory.Instance; if (factory == null) { result.Result = "Factory get_instance failed."; return(result); } if (factory.GetDefaultParticipantQos(ref qosHolder) != DDS.ReturnCode.Ok) { result.Result = "get_default_participant_qos failed."; return(result); } participant = factory.CreateParticipant(DDS.DomainId.Default, qosHolder);//, null, 0); if (participant == null) { result.Result = "create_participant failed."; return(result); } if (participant.GetDefaultPublisherQos(ref pubQosHolder) != DDS.ReturnCode.Ok) { result.Result = "get_default_publisher_qos failed."; return(result); } publisher = participant.CreatePublisher(pubQosHolder);//, null, DDS.StatusKind.Any); if (publisher == null) { result.Result = "create_publisher failed."; return(result); } condition = participant.StatusCondition; if (condition == null) { result.Result = "get_status_condition failed."; return(result); } condition2 = publisher.StatusCondition; if (condition2 == null) { result.Result = "get_status_condition failed.(2)"; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return(result); } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc; return(result); } if (holder.Length != 1) { result.Result = "get_conditions returned " + holder.Length + " conditions."; return(result); } if (holder[0] != condition) { result.Result = "get_conditions returned wrong condition."; return(result); } rc = waitset.DetachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (1)"; return(result); } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc + " (1)"; return(result); } if (holder.Length != 0) { result.Result = "get_conditions returned " + holder.Length + " conditions (1)."; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return(result); } rc = waitset.AttachCondition(condition2); if (rc != DDS.ReturnCode.Ok) { result.Result = "attach_condition returned RETCODE: " + rc; return(result); } rc = waitset.GetConditions(ref holder); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions returned RETCODE: " + rc; return(result); } if (holder.Length != 2) { result.Result = "get_conditions returned " + holder.Length + " conditions."; return(result); } if ((holder[0] != condition) && (holder[1] != condition)) { result.Result = "get_conditions returned wrong conditions(1)."; return(result); } if ((holder[0] != condition2) && (holder[1] != condition2)) { result.Result = "get_conditions returned wrong conditions(2)."; return(result); } rc = waitset.DetachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (2)"; return(result); } rc = waitset.DetachCondition(condition2); if (rc != DDS.ReturnCode.Ok) { result.Result = "detach_condition returned RETCODE: " + rc + " (3)"; return(result); } rc = participant.DeleteContainedEntities(); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_contained_entities returned RETCODE: " + rc; return(result); } rc = factory.DeleteParticipant(participant); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_participant returned RETCODE: " + rc; return(result); } result.Result = expResult; result.Verdict = expVerdict; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; mod.tstDataWriter writer; mod.tstDataReader reader; DDS.IStatusCondition subscriberCondition; DDS.WaitSet waitset; mod.tst[] tstHolder; DDS.ICondition[] conditionHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); subscriberCondition = subscriber.StatusCondition; if (subscriberCondition == null) { result.Result = "Could not resolve subscriber condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(subscriberCondition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach subscriber condition."; return(result); } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed."; return(result); } if (conditionHolder.Length < 1) { result.Result = "WaitSet.Wait returned no conditions where it should (1)."; return(result); } if (conditionHolder[0] != subscriberCondition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; DDS.IStatusCondition condition; DDS.IPublisher publisher; DDS.WaitSet waitset; mod.tst[] tstHolder; DDS.ICondition[] conditionHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); publisher = (DDS.IPublisher) this.ResolveObject("publisher"); condition = reader.StatusCondition; if (condition == null) { result.Result = "Could not resolve reader condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (1)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 1, 1, 0, 0)) { result.Result = "liveliness_changed not valid."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 1, 0, 0, 0)) { result.Result = "liveliness_changed not valid (2)."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed. (2)"; return(result); } if (conditionHolder.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (3)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no conditions where it should (1)."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition (1)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(4)."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't.(2)"; return(result); } rc = publisher.DeleteDataWriter(writer); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datawriter failed."; return(result); } try { System.Threading.Thread.Sleep(2000); } catch (System.Exception) { System.Console.Error.WriteLine("Sleep failed..."); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. (5)"; return(result); } if (conditionHolder.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (conditionHolder[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 0, 1, 0, 0)) { result.Result = "liveliness_changed not valid (3)."; return(result); } if (!test.sacs.StatusValidator.LivelinessChangedValid(reader, 0, 0, 0, 0)) { result.Result = "liveliness_changed not valid (4)."; return(result); } rc = reader.Take(ref tstHolder, ref sampleInfoHolder, 1, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(6)."; return(result); } if (conditionHolder.Length > 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't.(3)"; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IStatusCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] conditionHolder; Test.Framework.TestResult result; DDS.DataReaderQos drQos; DDS.ITopic topic; DDS.ReturnCode rc; string expResult = "StatusCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); reader = (mod.tstDataReader)this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); topic = (DDS.ITopic)this.ResolveObject("topic"); drQos = (DDS.DataReaderQos)this.ResolveObject("datareaderQos"); condition = writer.StatusCondition; if (condition == null) { result.Result = "Could not resolve reader condition."; return result; } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return result; } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return result; } conditionHolder = new DDS.ICondition[0]; rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return result; } if (conditionHolder.Length != 0) { this.PrintStatusses(writer); result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return result; } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return result; } rc = waitset.Wait(ref conditionHolder, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return result; } if (conditionHolder.Length > 0) { PrintStatusses(writer); result.Result = "WaitSet.Wait returned conditions where it shouldn't.(3)"; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }