@@ -19,6 +19,7 @@ const assertUtils = require('./utils.js');
1919const DistroUtils = require ( '../lib/distro.js' ) ;
2020const rclnodejs = require ( '../index.js' ) ;
2121const TypeDescriptionService = require ( '../lib/type_description_service.js' ) ;
22+ const { exec } = require ( 'child_process' ) ;
2223
2324describe ( 'type description service test suite' , function ( ) {
2425 this . timeout ( 60 * 1000 ) ;
@@ -35,14 +36,13 @@ describe('type description service test suite', function () {
3536 const nodeName = 'test_type_description_service' ;
3637 node = rclnodejs . createNode ( nodeName ) ;
3738 rclnodejs . spin ( node ) ;
38- await assertUtils . createDelay ( 1000 ) ;
3939 } ) ;
4040
4141 afterEach ( function ( ) {
4242 rclnodejs . shutdown ( ) ;
4343 } ) ;
4444
45- it ( 'Test type description service' , function ( done ) {
45+ it ( 'Test type description service' , async function ( ) {
4646 // Create a publisher
4747 const topic = 'test_get_type_description_publisher' ;
4848 const topicType = 'std_msgs/msg/String' ;
@@ -63,14 +63,68 @@ describe('type description service test suite', function () {
6363 const GetTypeDescription =
6464 'type_description_interfaces/srv/GetTypeDescription' ;
6565 const client = node . createClient ( GetTypeDescription , serviceName ) ;
66- client . sendRequest ( request , ( response ) => {
67- assert . strictEqual ( response . successful , true ) ;
68- assert . strictEqual (
69- response . type_description . type_description . type_name ,
70- topicType
71- ) ;
72- assert . notStrictEqual ( response . type_sources . length , 0 ) ;
73- done ( ) ;
66+ return client . waitForService ( 60 * 1000 ) . then ( ( result ) => {
67+ if ( ! result ) {
68+ throw new Error ( 'Service not available' ) ;
69+ }
70+ return new Promise ( ( resolve ) => {
71+ client . sendRequest ( request , ( response ) => {
72+ assert . strictEqual ( response . successful , true ) ;
73+ assert . strictEqual (
74+ response . type_description . type_description . type_name ,
75+ topicType
76+ ) ;
77+ assert . notStrictEqual ( response . type_sources . length , 0 ) ;
78+ resolve ( ) ;
79+ } ) ;
80+ } ) ;
7481 } ) ;
7582 } ) ;
83+
84+ it ( 'Test type description service configured by parameter' , function ( done ) {
85+ exec (
86+ 'ros2 param list /test_type_description_service' ,
87+ ( error , stdout , stderr ) => {
88+ if ( error || stderr ) {
89+ done (
90+ new Error (
91+ 'Test type description service configured by parameter failed.'
92+ )
93+ ) ;
94+ }
95+ if ( stdout . includes ( 'start_type_description_service' ) ) {
96+ done ( ) ;
97+ } else {
98+ done (
99+ new Error ( "'start_type_description_service' not found in stdout." )
100+ ) ;
101+ }
102+ }
103+ ) ;
104+ } ) ;
105+
106+ it ( 'Test start_type_description_service parameter value' , function ( done ) {
107+ exec (
108+ 'ros2 param get /test_type_description_service start_type_description_service' ,
109+ ( error , stdout , stderr ) => {
110+ if ( error || stderr ) {
111+ done (
112+ new Error (
113+ 'Test type description service configured by parameter failed.'
114+ )
115+ ) ;
116+ }
117+ if ( stdout . includes ( 'Boolean value is: True' ) ) {
118+ done ( ) ;
119+ } else {
120+ console . log ( stdout ) ;
121+ done (
122+ new Error (
123+ "'start_type_description_service param value' not found in stdout."
124+ )
125+ ) ;
126+ }
127+ }
128+ ) ;
129+ } ) ;
76130} ) ;
0 commit comments