public override Test.Framework.TestResult Run() { mod.tstDataReader reader; mod.tstDataWriter writer; long handle; DDS.ReturnCode rc; Test.Framework.TestResult result; string expResult = "reader::lookup_instance test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); reader = (mod.tstDataReader) this.ResolveObject("datareader"); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); mod.tst t = new mod.tst(); t.long_1 = 1; t.long_2 = 1; t.long_3 = 1; rc = writer.Write(t); if (rc != DDS.ReturnCode.Ok) { result.Result = "write failed"; return(result); } // lookup instance with writer... handle = writer.LookupInstance(t); if (handle == 0) { result.Result = "writer LookupInstance, result == HANDLE_NIL"; return(result); } handle = reader.LookupInstance(t); if (handle == 0) { result.Result = "reader LookupInstance, result == HANDLE_NIL"; return(result); } mod.tst[] data = new mod.tst[0]; DDS.SampleInfo[] info = new DDS.SampleInfo[0]; rc = reader.ReadInstance(ref data, ref info, 1, handle, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (rc != DDS.ReturnCode.Ok) { result.Result = "read_instance failed"; return(result); } if ((t.long_1 != data[0].long_1) || (t.long_2 != data[0].long_2) || ( t.long_3 != data[0].long_3)) { result.Result = "incorrect data read"; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataReader reader; mod.tstDataWriter writer; long handle; DDS.ReturnCode rc; Test.Framework.TestResult result; string expResult = "reader::lookup_instance test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); reader = (mod.tstDataReader)this.ResolveObject("datareader"); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); mod.tst t = new mod.tst(); t.long_1 = 1; t.long_2 = 1; t.long_3 = 1; rc = writer.Write(t); if (rc != DDS.ReturnCode.Ok) { result.Result = "write failed"; return result; } // lookup instance with writer... handle = writer.LookupInstance(t); if (handle == 0) { result.Result = "writer LookupInstance, result == HANDLE_NIL"; return result; } handle = reader.LookupInstance(t); if (handle == 0) { result.Result = "reader LookupInstance, result == HANDLE_NIL"; return result; } mod.tst[] data = new mod.tst[0]; DDS.SampleInfo[] info = new DDS.SampleInfo[0]; rc = reader.ReadInstance(ref data, ref info, 1, handle, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (rc != DDS.ReturnCode.Ok) { result.Result = "read_instance failed"; return result; } if ((t.long_1 != data[0].long_1) || (t.long_2 != data[0].long_2) || ( t.long_3 != data[0].long_3)) { result.Result = "incorrect data read"; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; long handle; long handle2; Test.Framework.TestResult result; DDS.ReturnCode rc; mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; string expResult = "lookup_instance test successful."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); handle = writer.RegisterInstance(data); if (handle == DDS.InstanceHandle.Nil) { result.Result = "register_instance failed."; return(result); } handle2 = writer.LookupInstance(data); // TODO: JLS, java version is comparing handle to handle! if (handle != handle2) { result.Result = "lookup_instance returned wrong instance."; return(result); } rc = writer.UnregisterInstance(data, handle); if (rc != DDS.ReturnCode.Ok) { result.Result = "unregister_instance failed."; return(result); } handle2 = writer.LookupInstance(data); if (handle2 != DDS.InstanceHandle.Nil) { result.Result = "lookup_instance found non-existing instance."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; long handle; long handle2; Test.Framework.TestResult result; DDS.ReturnCode rc; mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; string expResult = "lookup_instance test successful."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); handle = writer.RegisterInstance(data); if (handle == DDS.InstanceHandle.Nil) { result.Result = "register_instance failed."; return result; } handle2 = writer.LookupInstance(data); // TODO: JLS, java version is comparing handle to handle! if (handle != handle2) { result.Result = "lookup_instance returned wrong instance."; return result; } rc = writer.UnregisterInstance(data, handle); if (rc != DDS.ReturnCode.Ok) { result.Result = "unregister_instance failed."; return result; } handle2 = writer.LookupInstance(data); if (handle2 != DDS.InstanceHandle.Nil) { result.Result = "lookup_instance found non-existing instance."; 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.IQueryCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] activeConditions = new DDS.Condition[0]; Test.Framework.TestResult result; DDS.DataReaderQos drQos = null; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; string[] queryParams; DDS.ITopic topic; DDS.ReturnCode rc; string expression; string[] ssHolder; string expResult = "QueryCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); reader = (mod.tstDataReader)this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); topic = (DDS.ITopic)this.ResolveObject("topic"); drQos = (DDS.DataReaderQos)this.ResolveObject("datareaderQos"); expression = "long_1=%0"; queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, expression, queryParams); if (condition == null) { result.Result = "Could not create query condition."; return result; } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return result; } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos); //, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return result; } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (3)."; return result; } mod.tst data = new mod.tst(); data.long_1 = 2; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return result; } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (4)."; return result; } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. "; return result; } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return result; } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return result; } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(2)."; return result; } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(2)."; return result; } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return result; } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return result; } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return result; } rc = subscriber.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "delete_datareader succeeded, but should not."; return result; } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed."; return result; } if (activeConditions.Length != 1) { result.Result = "Returned conditions not valid."; return result; } if (activeConditions[0] != condition) { result.Result = "Returned condition does not equal set condition."; return result; } DDS.IDataReader reader3 = condition.GetDataReader(); if (reader != reader3) { result.Result = "ReadCondition.get_datareader failed."; return result; } if (condition.GetInstanceStateMask() != DDS.InstanceStateKind.Any) { result.Result = "ReadCondition.get_instance_state_mask failed."; return result; } if (condition.GetViewStateMask() != DDS.ViewStateKind.Any) { result.Result = "ReadCondition.get_view_state_mask failed."; return result; } if (condition.GetSampleStateMask() != DDS.SampleStateKind.Any) { result.Result = "ReadCondition.get_sample_state_mask failed."; return result; } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed."; return result; } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(2)."; return result; } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(2)."; return result; } queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, "long_1=%0", queryParams); if (condition == null) { result.Result = "Could not create query condition."; return result; } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q1)."; return result; } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q1)."; return result; } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed(2)."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed (q2). "; return result; } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q2)."; return result; } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q2)."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return result; } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q3)."; return result; } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q3)."; return result; } tstHolder = new mod.tst[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed(q1)."; return result; } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return result; } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q5)."; return result; } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q6)."; return result; } string expression2 = condition.GetQueryExpression(); if (!expression.Equals(expression2)) { result.Result = "QueryCondition.get_query_expression does not work properly."; return result; } ssHolder = new string[0]; rc = condition.GetQueryParameters(ref ssHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.get_query_parameters call failed."; return result; } string[] queryParams2 = ssHolder; if (queryParams2 == null) { result.Result = "QueryCondition.get_query_parameters does not work properly (1)."; return result; } if (queryParams2.Length != queryParams.Length) { result.Result = "QueryCondition.get_query_parameters does not work properly (2)."; return result; } if (!queryParams2[0].Equals(queryParams[0])) { result.Result = "QueryCondition.get_query_parameters does not work properly (3)."; return result; } queryParams[0] = "5"; rc = condition.SetQueryParameters(queryParams); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.set_query_parameters does not work properly."; return result; } rc = condition.GetQueryParameters(ref ssHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.get_query_parameters call failed (1)."; return result; } queryParams2 = ssHolder; if (queryParams2 == null) { result.Result = "QueryCondition.get_query_parameters does not work properly (1)."; return result; } if (queryParams2.Length != queryParams.Length) { result.Result = "QueryCondition.get_query_parameters does not work properly (2)."; return result; } if (!queryParams2[0].Equals(queryParams[0])) { result.Result = "QueryCondition.get_query_parameters does not work properly (3)."; return result; } rc = condition.SetQueryParameters(null); if (rc == DDS.ReturnCode.Ok) { result.Result = "QueryCondition.set_query_parameters does not work properly (2)."; return result; } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed(q7)."; return result; } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(q7)."; return result; } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(q7)."; return result; } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { 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() { 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() { 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 = "Received 5 samples."; DDS.ReturnCode ddsReturnCode; mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; mod.tstDataWriter writer; mod.tstDataReader reader; DDS.DataReaderQos drQos; DDS.ISubscriber subscriber; DDS.ITopic topic; DDS.ResourceLimitsQosPolicy resource; DDS.Duration maxWait; DDS.Time maxSourceTime; DDS.Time minSourceTime; string[] @params; DDS.IDomainParticipant participant; DDS.Time tHolder = new DDS.Time(); mod.tst[] dataList; DDS.SampleInfo[] infoList; ddsReturnCode = DDS.ReturnCode.Ok; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); drQos = (DDS.DataReaderQos)this.ResolveObject("datareaderQos"); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); topic = (DDS.ITopic)this.ResolveObject("topic"); participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); ddsReturnCode = DDS.ReturnCode.Ok; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); for (int i = 0; (i < 10) && (ddsReturnCode == DDS.ReturnCode.Ok); i++) { data.long_1 = i; data.long_2 = data.long_1 + 1; data.long_3 = data.long_1 + 2; System.Console.Out.WriteLine("Write: " + data.long_1 + ", " + data.long_2 + ", " + data.long_3); ddsReturnCode = writer.Write(data, DDS.InstanceHandle.Nil); } if (ddsReturnCode != DDS.ReturnCode.Ok) { result.Result = "Writing data failed."; return result; } drQos = (DDS.DataReaderQos)this.ResolveObject("datareaderQos"); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); topic = (DDS.ITopic)this.ResolveObject("topic"); participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); reader = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader == null) { result.Result = "creating datareader failed."; return result; } resource = new DDS.ResourceLimitsQosPolicy(); resource.MaxInstances = -1; resource.MaxSamples = -1; resource.MaxSamplesPerInstance = -1; maxWait = new DDS.Duration(10, 0); minSourceTime = new DDS.Time(0, 0); participant.GetCurrentTime(out tHolder); maxSourceTime = tHolder; @params = new string[2]; @params[0] = "5"; @params[1] = "6"; // TODO: JLS, WaitForHistoricalDataWithCondition is missing // ddsReturnCode = reader.WaitForHistoricalDataWithCondition("long_1 < %0 AND long_2 < %1" // , @params, minSourceTime, maxSourceTime, resource, maxWait); if (ddsReturnCode != DDS.ReturnCode.Ok) { result.Result = "wait_for_historical_data_w_condition failed"; subscriber.DeleteDataReader(reader); return result; } dataList = null; infoList = null; ddsReturnCode = reader.Take(ref dataList, ref infoList, 10, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (ddsReturnCode != DDS.ReturnCode.Ok) { result.Result = "datareader.take failed " + ddsReturnCode + " (" + dataList.Length + " samples taken)"; this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "waitForHistoricalDataWithCondition not implemented yet."); result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; subscriber.DeleteDataReader(reader); subscriber.DeleteDataReader(reader); return result; } for (int i = 0; i < dataList.Length; i++) { System.Console.Out.WriteLine("Read sample [" + dataList[i].long_1 + ", " + dataList[i].long_2 + ", " + dataList[i].long_3 + "]"); } if (dataList.Length != 5) { result.Result = "Unexpected number of samples received."; subscriber.DeleteDataReader(reader); return result; } reader.ReturnLoan(ref dataList, ref infoList); subscriber.DeleteDataReader(reader); 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() { 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; string expResult = "Received 3 samples."; DDS.ReturnCode ddsReturnCode; mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; mod.tstDataWriter writer; mod.tstDataReader reader; DDS.DataReaderQos drQos; DDS.ISubscriber subscriber; DDS.ITopic topic; DDS.ResourceLimitsQosPolicy resource; DDS.Duration maxWait; DDS.Time maxSourceTime; DDS.Time minSourceTime; string[] @params; DDS.IDomainParticipant participant; DDS.Time tHolder = new DDS.Time(); mod.tst[] dataList; DDS.SampleInfo[] infoList; ddsReturnCode = DDS.ReturnCode.Ok; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); ddsReturnCode = DDS.ReturnCode.Ok; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); for (int i = 0; (i < 10) && (ddsReturnCode == DDS.ReturnCode.Ok); i++) { data.long_1 = i; data.long_2 = data.long_1 + 1; data.long_3 = data.long_1 + 2; System.Console.Out.WriteLine("Write: " + data.long_1 + ", " + data.long_2 + ", " + data.long_3); ddsReturnCode = writer.Write(data, DDS.InstanceHandle.Nil); } if (ddsReturnCode != DDS.ReturnCode.Ok) { result.Result = "Writing data failed."; return(result); } drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); reader = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos);//, null, 0); if (reader == null) { result.Result = "creating datareader failed."; return(result); } resource = new DDS.ResourceLimitsQosPolicy(); resource.MaxInstances = 3; resource.MaxSamples = -1; resource.MaxSamplesPerInstance = -1; maxWait = new DDS.Duration(10, 0); minSourceTime = new DDS.Time(0, 0); participant.GetCurrentTime(out tHolder); maxSourceTime = tHolder; @params = new string[2]; @params[0] = "5"; @params[1] = "6"; // TODO: JLS, WaitForHistoricalDataWithCondition is missing // ddsReturnCode = reader.WaitForHistoricalDataWithCondition("long_1 < %0 AND long_2 < %1" // , @params, minSourceTime, maxSourceTime, resource, maxWait); if (ddsReturnCode != DDS.ReturnCode.Ok) { result.Result = "wait_for_historical_data_w_condition failed"; subscriber.DeleteDataReader(reader); return(result); } dataList = null; infoList = null; ddsReturnCode = reader.Take(ref dataList, ref infoList, 10, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (ddsReturnCode != DDS.ReturnCode.Ok) { result.Result = "datareader.take failed " + ddsReturnCode + " (" + dataList.Length + " samples taken)"; this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "waitForHistoricalDataWithCondition not implemented yet."); result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; subscriber.DeleteDataReader(reader); subscriber.DeleteDataReader(reader); return(result); } for (int i = 0; i < dataList.Length; i++) { System.Console.Out.WriteLine("Read sample [" + dataList[i].long_1 + ", " + dataList[i].long_2 + ", " + dataList[i].long_3 + "]"); } if (dataList.Length != 3) { result.Result = "Unexpected number of samples received."; subscriber.DeleteDataReader(reader); return(result); } reader.ReturnLoan(ref dataList, ref infoList); subscriber.DeleteDataReader(reader); 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.IReadCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] activeConditions = null; 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); } activeConditions = new DDS.Condition[0]; rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (3)."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed."; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(2)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(2)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "delete_datareader succeeded, but should not."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed."; return(result); } if (activeConditions.Length != 1) { result.Result = "Returned conditions not valid."; return(result); } if (activeConditions[0] != condition) { result.Result = "Returned condition does not equal set condition."; return(result); } DDS.IDataReader reader3 = condition.GetDataReader(); if (reader != reader3) { result.Result = "ReadCondition.get_datareader failed."; return(result); } if (condition.GetInstanceStateMask() != DDS.InstanceStateKind.Any) { result.Result = "ReadCondition.get_instance_state_mask failed."; return(result); } if (condition.GetViewStateMask() != DDS.ViewStateKind.Any) { result.Result = "ReadCondition.get_view_state_mask failed."; return(result); } if (condition.GetSampleStateMask() != DDS.SampleStateKind.Any) { result.Result = "ReadCondition.get_sample_state_mask failed."; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(2)."; return(result); } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(2)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.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() { string expResult = "ContentFilteredTopic test succeeded"; mod.tstDataReader reader; mod.tstDataWriter writer; mod.tst[] seqHolder; DDS.SampleInfo[] infoList; Test.Framework.TestResult result; mod.tst testObject; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); reader = (mod.tstDataReader) this.ResolveObject("reader"); writer = (mod.tstDataWriter) this.ResolveObject("writer"); testObject = new mod.tst(); testObject.long_1 = 0; testObject.long_2 = 2; testObject.long_3 = 3; rc = writer.Write(testObject, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Recieved return code " + rc + " after calling writer.write (1)."; return(result); } seqHolder = new mod.tst[0]; infoList = new DDS.SampleInfo[0]; rc = reader.Take(ref seqHolder, ref infoList, DDS.Length.Unlimited, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive); if (rc != DDS.ReturnCode.Ok) { result.Result = "Recieved return code " + rc + " after calling reader.read (2)."; return(result); } if (seqHolder.Length != 1) { result.Result = "Recieved unexpected number of samples (2)"; return(result); } if (seqHolder[0].long_1 != 0) { result.Result = "Recieved incorrect data (2)"; return(result); } rc = reader.ReturnLoan(ref seqHolder, ref infoList); if (rc != DDS.ReturnCode.Ok) { result.Result = "reader.return_loan failed"; return(result); } testObject.long_1 = 5; testObject.long_2 = 2; testObject.long_3 = 3; rc = writer.Write(testObject, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Recieved return code " + rc + " after calling writer.write (3)."; return(result); } seqHolder = new mod.tst[0]; infoList = new DDS.SampleInfo[0]; rc = reader.Take(ref seqHolder, ref infoList, DDS.Length.Unlimited, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive); if (rc != DDS.ReturnCode.NoData) { if (rc == DDS.ReturnCode.Ok) { reader.ReturnLoan(ref seqHolder, ref infoList); } result.Result = "Recieved return code " + rc + " after calling reader.read for filtered data (4)."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; mod.tstDataWriter writer; mod.tstDataReader reader; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; test.sacs.MyParticipantListener listener; test.sacs.MyDataReaderListener listener2; string expResult = "DomainParticipantListener test succeeded."; DDS.ReturnCode rc; /* The code below should be replaced with the code following it as soon as scdds2162 is fixed. */ /* Start cutting here >>>>>>>>>>>>>>>>>>>> */ result = new Test.Framework.TestResult(expResult, "Crash by means of stackoverflow.", Test.Framework.TestVerdict.Fail, Test.Framework.TestVerdict.Fail); this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See scdds2162: Fix some remaining stability issues."); return(result); /* Stop cutting here <<<<<<<<<<<<<<<<<<<< */ result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); listener = new test.sacs.MyParticipantListener(); listener2 = new test.sacs.MyDataReaderListener(); rc = participant.SetListener(listener, (DDS.StatusKind) 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_listener on DomainParticipant failed."; return(result); } rc = participant.SetListener(null, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Null Listener could not be attached."; return(result); } rc = participant.SetListener(listener, (DDS.StatusKind) 1012131412); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (2)."; return(result); } rc = participant.SetListener(listener, DDS.StatusKind.DataAvailable); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (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, 0L); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } try { System.Threading.Thread.Sleep(3000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (!listener.onDataAvailableCalled) { result.Result = "on_data_available not called."; return(result); } listener.Reset(); 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 = reader.SetListener(listener2, DDS.StatusKind.DataAvailable); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (4)."; return(result); } rc = writer.Write(data, 0L); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } try { System.Threading.Thread.Sleep(3000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (listener.onDataAvailableCalled) { result.Result = "on_data_available is called but shouldn't be."; return(result); } if (!listener2.onDataAvailableCalled) { result.Result = "on_data_available not called (2)."; return(result); } listener.Reset(); listener2.Reset(); result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { DDS.ISubscriber subscriber; test.sacs.MySubscriberListener listener; mod.tstDataWriter datawriter; mod.tstDataReader datareader; Test.Framework.TestResult result; DDS.ReturnCode rc; semaphores = new Dictionary <DDS.StatusKind, Semaphore>(); semaphores.Add(DDS.StatusKind.DataOnReaders, new Semaphore(0, 1)); string expResult = "SubscriberListener test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); datawriter = (mod.tstDataWriter) this.ResolveObject("datawriter"); listener = new test.sacs.MySubscriberListener(semaphores); rc = subscriber.SetListener(listener, DDS.StatusKind.DataOnReaders); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached."; 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."; return(result); } if (semaphores[DDS.StatusKind.DataOnReaders].WaitOne(10000)) { if (!listener.onDataOnReadersCalled) { result.Result = "on_data_on_readers does not work properly."; return(result); } } else { result.Result = "on_data_on_readers did not trigger"; return(result); } listener.Reset(); rc = subscriber.SetListener(null, 0); datareader = (mod.tstDataReader) this.ResolveObject("datareader"); mod.tst[] data = new mod.tst[0]; DDS.SampleInfo[] info = new DDS.SampleInfo[0]; rc = datareader.Take(ref data, ref info, DDS.Length.Unlimited, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (rc == DDS.ReturnCode.Ok) { datareader.ReturnLoan(ref data, ref info); } if (rc != DDS.ReturnCode.Ok) { result.Result = "Null Listener could not be attached."; return(result); } rc = subscriber.SetListener(listener, (DDS.StatusKind) 1012131412); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (2)."; return(result); } rc = subscriber.SetListener(listener, DDS.StatusKind.DataOnReaders); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (3)."; return(result); } if (semaphores[DDS.StatusKind.DataOnReaders].WaitOne(1000)) { result.Result = "on_data_on_readers does not work properly (2)."; return(result); } listener.Reset(); result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { mod.tstDataWriter writer; mod.tstDataReader reader; mod.tstDataReader reader2; DDS.IQueryCondition condition; DDS.WaitSet waitset; DDS.ISubscriber subscriber; DDS.ICondition[] activeConditions = new DDS.Condition[0]; Test.Framework.TestResult result; DDS.DataReaderQos drQos = null; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; string[] queryParams; DDS.ITopic topic; DDS.ReturnCode rc; string expression; string[] ssHolder; string expResult = "QueryCondition test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); subscriber = (DDS.ISubscriber) this.ResolveObject("subscriber"); topic = (DDS.ITopic) this.ResolveObject("topic"); drQos = (DDS.DataReaderQos) this.ResolveObject("datareaderQos"); expression = "long_1=%0"; queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, expression, queryParams); if (condition == null) { result.Result = "Could not create query condition."; return(result); } waitset = new DDS.WaitSet(); rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } reader2 = (mod.tstDataReader)subscriber.CreateDataReader(topic, drQos); //, null, 0); if (reader2 == null) { result.Result = "Could not create datareader."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (3)."; return(result); } mod.tst data = new mod.tst(); data.long_1 = 2; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(3)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (4)."; return(result); } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed. "; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(2)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(2)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (2)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc == DDS.ReturnCode.Ok) { result.Result = "delete_datareader succeeded, but should not."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed."; return(result); } if (activeConditions.Length != 1) { result.Result = "Returned conditions not valid."; return(result); } if (activeConditions[0] != condition) { result.Result = "Returned condition does not equal set condition."; return(result); } DDS.IDataReader reader3 = condition.GetDataReader(); if (reader != reader3) { result.Result = "ReadCondition.get_datareader failed."; return(result); } if (condition.GetInstanceStateMask() != DDS.InstanceStateKind.Any) { result.Result = "ReadCondition.get_instance_state_mask failed."; return(result); } if (condition.GetViewStateMask() != DDS.ViewStateKind.Any) { result.Result = "ReadCondition.get_view_state_mask failed."; return(result); } if (condition.GetSampleStateMask() != DDS.SampleStateKind.Any) { result.Result = "ReadCondition.get_sample_state_mask failed."; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(2)."; return(result); } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(2)."; return(result); } queryParams = new string[1]; queryParams[0] = "1"; condition = reader.CreateQueryCondition(DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any, "long_1=%0", queryParams); if (condition == null) { result.Result = "Could not create query condition."; return(result); } rc = waitset.AttachCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "Could not attach condition."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q1)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q1)."; return(result); } data = new mod.tst(); data.long_1 = 1; data.long_2 = 2; data.long_3 = 3; rc = writer.Write(data, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed(2)."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed (q2). "; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q2)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q2)."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Ok) { result.Result = "WaitSet.Wait failed(2)."; return(result); } if (activeConditions.Length != 1) { result.Result = "WaitSet.Wait returned no or multiple conditions where it should return one(q3)."; return(result); } if (activeConditions[0] != condition) { result.Result = "WaitSet.Wait returned wrong condition(q3)."; return(result); } tstHolder = new mod.tst[0]; sampleInfoHolder = new DDS.SampleInfo[0]; rc = reader.TakeWithCondition(ref tstHolder, ref sampleInfoHolder, 1, condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.take failed(q1)."; return(result); } rc = reader.ReturnLoan(ref tstHolder, ref sampleInfoHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataReader.return_loan failed."; return(result); } rc = waitset.Wait(ref activeConditions, new DDS.Duration(3, 0)); if (rc != DDS.ReturnCode.Timeout) { result.Result = "WaitSet.Wait failed(q5)."; return(result); } if (activeConditions.Length != 0) { result.Result = "WaitSet.Wait returned conditions where it shouldn't (q6)."; return(result); } string expression2 = condition.GetQueryExpression(); if (!expression.Equals(expression2)) { result.Result = "QueryCondition.get_query_expression does not work properly."; return(result); } ssHolder = new string[0]; rc = condition.GetQueryParameters(ref ssHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.get_query_parameters call failed."; return(result); } string[] queryParams2 = ssHolder; if (queryParams2 == null) { result.Result = "QueryCondition.get_query_parameters does not work properly (1)."; return(result); } if (queryParams2.Length != queryParams.Length) { result.Result = "QueryCondition.get_query_parameters does not work properly (2)."; return(result); } if (!queryParams2[0].Equals(queryParams[0])) { result.Result = "QueryCondition.get_query_parameters does not work properly (3)."; return(result); } queryParams[0] = "5"; rc = condition.SetQueryParameters(queryParams); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.set_query_parameters does not work properly."; return(result); } rc = condition.GetQueryParameters(ref ssHolder); if (rc != DDS.ReturnCode.Ok) { result.Result = "QueryCondition.get_query_parameters call failed (1)."; return(result); } queryParams2 = ssHolder; if (queryParams2 == null) { result.Result = "QueryCondition.get_query_parameters does not work properly (1)."; return(result); } if (queryParams2.Length != queryParams.Length) { result.Result = "QueryCondition.get_query_parameters does not work properly (2)."; return(result); } if (!queryParams2[0].Equals(queryParams[0])) { result.Result = "QueryCondition.get_query_parameters does not work properly (3)."; return(result); } rc = condition.SetQueryParameters(null); if (rc == DDS.ReturnCode.Ok) { result.Result = "QueryCondition.set_query_parameters does not work properly (2)."; this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See OSPL-2628: Query parameter checking should be added."); result.ExpectedVerdict = Test.Framework.TestVerdict.Fail; return(result); } rc = reader.DeleteReadCondition(condition); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_readcondition failed(q7)."; return(result); } rc = waitset.GetConditions(ref activeConditions); if (rc != DDS.ReturnCode.Ok) { result.Result = "get_conditions failed(q7)."; return(result); } if (activeConditions.Length != 0) { result.Result = "Returned conditions not valid(q7)."; return(result); } rc = subscriber.DeleteDataReader(reader); if (rc != DDS.ReturnCode.Ok) { result.Result = "delete_datareader failed."; return(result); } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return(result); }
public override Test.Framework.TestResult Run() { string expResult = "ContentFilteredTopic test succeeded"; mod.tstDataReader reader; mod.tstDataWriter writer; mod.tst[] seqHolder; DDS.SampleInfo[] infoList; Test.Framework.TestResult result; mod.tst testObject; DDS.ReturnCode rc; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict.Pass, Test.Framework.TestVerdict.Fail); reader = (mod.tstDataReader)this.ResolveObject("reader"); writer = (mod.tstDataWriter)this.ResolveObject("writer"); testObject = new mod.tst(); testObject.long_1 = 0; testObject.long_2 = 2; testObject.long_3 = 3; rc = writer.Write(testObject, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Recieved return code " + rc + " after calling writer.write (1)."; return result; } seqHolder = new mod.tst[0]; infoList = new DDS.SampleInfo[0]; rc = reader.Take(ref seqHolder, ref infoList, DDS.Length.Unlimited, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive); if (rc != DDS.ReturnCode.Ok) { result.Result = "Recieved return code " + rc + " after calling reader.read (2)."; return result; } if (seqHolder.Length != 1) { result.Result = "Recieved unexpected number of samples (2)"; return result; } if (seqHolder[0].long_1 != 0) { result.Result = "Recieved incorrect data (2)"; return result; } rc = reader.ReturnLoan(ref seqHolder, ref infoList); if (rc != DDS.ReturnCode.Ok) { result.Result = "reader.return_loan failed"; return result; } testObject.long_1 = 5; testObject.long_2 = 2; testObject.long_3 = 3; rc = writer.Write(testObject, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Recieved return code " + rc + " after calling writer.write (3)."; return result; } seqHolder = new mod.tst[0]; infoList = new DDS.SampleInfo[0]; rc = reader.Take(ref seqHolder, ref infoList, DDS.Length.Unlimited, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive); if (rc != DDS.ReturnCode.NoData) { if (rc == DDS.ReturnCode.Ok) { reader.ReturnLoan(ref seqHolder, ref infoList); } result.Result = "Recieved return code " + rc + " after calling reader.read for filtered data (4)."; return result; } result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }
public override Test.Framework.TestResult Run() { DDS.IDomainParticipant participant; mod.tstDataWriter writer; mod.tstDataReader reader; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; test.sacs.MyParticipantListener listener; test.sacs.MyDataReaderListener listener2; string expResult = "DomainParticipantListener test succeeded."; DDS.ReturnCode rc; semaphoresParticipant = new Dictionary <DDS.StatusKind, Semaphore>(); semaphoresParticipant.Add(DDS.StatusKind.DataAvailable, new Semaphore(0, 1)); semaphoresReader = new Dictionary <DDS.StatusKind, Semaphore>(); semaphoresReader.Add(DDS.StatusKind.DataAvailable, new Semaphore(0, 2)); result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant) this.ResolveObject("participant"); writer = (mod.tstDataWriter) this.ResolveObject("datawriter"); reader = (mod.tstDataReader) this.ResolveObject("datareader"); listener = new test.sacs.MyParticipantListener(semaphoresParticipant); listener2 = new test.sacs.MyDataReaderListener(semaphoresReader); rc = participant.SetListener(listener, (DDS.StatusKind) 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_listener on DomainParticipant failed."; return(result); } rc = participant.SetListener(null, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Null Listener could not be attached."; return(result); } rc = participant.SetListener(listener, (DDS.StatusKind) 1012131412); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (2)."; return(result); } rc = participant.SetListener(listener, DDS.StatusKind.DataAvailable); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (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, 0L); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } if (semaphoresParticipant[DDS.StatusKind.DataAvailable].WaitOne(10000)) { if (!listener.onDataAvailableCalled) { result.Result = "on_data_available not called."; return(result); } } else { result.Result = "on_data_available did not trigger"; return(result); } listener.Reset(); 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 = reader.SetListener(listener2, DDS.StatusKind.DataAvailable); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (4)."; return(result); } rc = writer.Write(data, 0L); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return(result); } try { System.Threading.Thread.Sleep(1000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (listener.onDataAvailableCalled) { result.Result = "on_data_available is called but shouldn't be."; return(result); } if (!listener2.onDataAvailableCalled) { result.Result = "on_data_available not called (2)."; return(result); } listener.Reset(); listener2.Reset(); 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() { DDS.IDomainParticipant participant; mod.tstDataWriter writer; mod.tstDataReader reader; mod.tst[] tstHolder; DDS.SampleInfo[] sampleInfoHolder; Test.Framework.TestResult result; test.sacs.MyParticipantListener listener; test.sacs.MyDataReaderListener listener2; string expResult = "DomainParticipantListener test succeeded."; DDS.ReturnCode rc; /* The code below should be replaced with the code following it as soon as scdds2162 is fixed. */ /* Start cutting here >>>>>>>>>>>>>>>>>>>> */ result = new Test.Framework.TestResult(expResult, "Crash by means of stackoverflow.", Test.Framework.TestVerdict.Fail, Test.Framework.TestVerdict.Fail); this.testFramework.TestMessage(Test.Framework.TestMessage.Note, "See scdds2162: Fix some remaining stability issues."); return result; /* Stop cutting here <<<<<<<<<<<<<<<<<<<< */ result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); participant = (DDS.IDomainParticipant)this.ResolveObject("participant"); writer = (mod.tstDataWriter)this.ResolveObject("datawriter"); reader = (mod.tstDataReader)this.ResolveObject("datareader"); listener = new test.sacs.MyParticipantListener(); listener2 = new test.sacs.MyDataReaderListener(); rc = participant.SetListener(listener, (DDS.StatusKind)0); if (rc != DDS.ReturnCode.Ok) { result.Result = "set_listener on DomainParticipant failed."; return result; } rc = participant.SetListener(null, 0); if (rc != DDS.ReturnCode.Ok) { result.Result = "Null Listener could not be attached."; return result; } rc = participant.SetListener(listener, (DDS.StatusKind)1012131412); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (2)."; return result; } rc = participant.SetListener(listener, DDS.StatusKind.DataAvailable); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (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, 0L); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } try { System.Threading.Thread.Sleep(3000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (!listener.onDataAvailableCalled) { result.Result = "on_data_available not called."; return result; } listener.Reset(); 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 = reader.SetListener(listener2, DDS.StatusKind.DataAvailable); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (4)."; return result; } rc = writer.Write(data, 0L); if (rc != DDS.ReturnCode.Ok) { result.Result = "tstDataWriter.write failed."; return result; } try { System.Threading.Thread.Sleep(3000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (listener.onDataAvailableCalled) { result.Result = "on_data_available is called but shouldn't be."; return result; } if (!listener2.onDataAvailableCalled) { result.Result = "on_data_available not called (2)."; return result; } listener.Reset(); listener2.Reset(); 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() { DDS.ISubscriber subscriber; test.sacs.MySubscriberListener listener; mod.tstDataWriter datawriter; mod.tstDataReader datareader; Test.Framework.TestResult result; DDS.ReturnCode rc; string expResult = "SubscriberListener test succeeded."; result = new Test.Framework.TestResult(expResult, string.Empty, Test.Framework.TestVerdict .Pass, Test.Framework.TestVerdict.Fail); subscriber = (DDS.ISubscriber)this.ResolveObject("subscriber"); datawriter = (mod.tstDataWriter)this.ResolveObject("datawriter"); listener = new test.sacs.MySubscriberListener(); rc = subscriber.SetListener(listener, DDS.StatusKind.DataOnReaders); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached."; 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."; return result; } try { System.Threading.Thread.Sleep(5000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (!listener.onDataOnReadersCalled) { result.Result = "on_data_on_readers does not work properly."; return result; } listener.Reset(); rc = subscriber.SetListener(null, 0); datareader = (mod.tstDataReader)this.ResolveObject("datareader"); mod.tst[] data = new mod.tst[0]; DDS.SampleInfo[] info = new DDS.SampleInfo[0]; rc = datareader.Take(ref data, ref info, DDS.Length.Unlimited, DDS.SampleStateKind.Any, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Any); if (rc == DDS.ReturnCode.Ok) { datareader.ReturnLoan(ref data, ref info); } if (rc != DDS.ReturnCode.Ok) { result.Result = "Null Listener could not be attached."; return result; } rc = subscriber.SetListener(listener, (DDS.StatusKind)1012131412); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (2)."; return result; } rc = subscriber.SetListener(listener, DDS.StatusKind.DataOnReaders); if (rc != DDS.ReturnCode.Ok) { result.Result = "Listener could not be attached (3)."; return result; } try { System.Threading.Thread.Sleep(5000); } catch (System.Exception e) { System.Console.WriteLine(e); } if (listener.onDataOnReadersCalled) { result.Result = "on_data_on_readers does not work properly (2)."; return result; } listener.Reset(); result.Result = expResult; result.Verdict = Test.Framework.TestVerdict.Pass; return result; }