@@ -35,7 +35,7 @@ struct TestParseThreadAttrs : testing::Test
3535 attrs = rcutils_get_zero_initialized_thread_attrs ();
3636 allocator = rcutils_get_default_allocator ();
3737 ret = rcutils_thread_attrs_init (&attrs, allocator);
38- ASSERT_EQ (ret, RCUTILS_RET_OK );
38+ ASSERT_EQ (RCUTILS_RET_OK, ret );
3939
4040 int parser_ret = yaml_parser_initialize (&parser);
4141 ASSERT_NE (0 , parser_ret);
@@ -78,15 +78,15 @@ TEST_F(TestParseThreadAttr, success) {
7878 yaml_event_t event;
7979
8080 prepare_yaml_parser (
81- " { priority: 10, name: thread-1, core_affinity: 1 , scheduling_policy: FIFO }" );
81+ " { priority: 10, name: thread-1, core_affinity: [1] , scheduling_policy: FIFO }" );
8282
8383 ret = parse_thread_attr (&parser, &attrs);
8484 EXPECT_EQ (RCUTILS_RET_OK, ret);
8585
8686 EXPECT_EQ (1 , attrs.num_attributes );
8787 EXPECT_EQ (10 , attrs.attributes [0 ].priority );
8888 EXPECT_STREQ (" thread-1" , attrs.attributes [0 ].name );
89- EXPECT_EQ ( 1 , attrs.attributes [0 ].core_affinity );
89+ EXPECT_TRUE ( rcutils_thread_core_affinity_is_set (& attrs.attributes [0 ].core_affinity , 1 ) );
9090 EXPECT_EQ (RCUTILS_THREAD_SCHEDULING_POLICY_FIFO, attrs.attributes [0 ].scheduling_policy );
9191
9292 int parser_ret;
@@ -102,7 +102,7 @@ TEST_F(TestParseThreadAttr, unknown_key) {
102102 rcutils_ret_t ret;
103103
104104 prepare_yaml_parser (
105- " { priority: 10, name: thread-1, core_affinity: 1 , unknown_key: FIFO }" );
105+ " { priority: 10, name: thread-1, core_affinity: [1] , unknown_key: FIFO }" );
106106
107107 ret = parse_thread_attr (&parser, &attrs);
108108 EXPECT_EQ (RCUTILS_RET_ERROR, ret);
@@ -112,7 +112,8 @@ TEST_F(TestParseThreadAttr, all_valid_keys_with_unknown_key) {
112112 rcutils_ret_t ret;
113113
114114 prepare_yaml_parser (
115- " { priority: 10, name: thread-1, core_affinity: 1, scheduling_policy: FIFO, unknown_key: RR }" );
115+ " { priority: 10, name: thread-1, core_affinity: [1], "
116+ " scheduling_policy: FIFO, unknown_key: RR }" );
116117
117118 ret = parse_thread_attr (&parser, &attrs);
118119 EXPECT_EQ (RCUTILS_RET_ERROR, ret);
@@ -127,15 +128,6 @@ TEST_F(TestParseThreadAttr, missing_key_value) {
127128 EXPECT_EQ (RCUTILS_RET_ERROR, ret);
128129}
129130
130- TEST_F (TestParseThreadAttr, not_acceptable_mapping) {
131- rcutils_ret_t ret;
132- prepare_yaml_parser (
133- " { priority: 10, name: thread-1, core_affinity: [1,2,3], scheduling_policy: FIFO }" );
134-
135- ret = parse_thread_attr (&parser, &attrs);
136- EXPECT_EQ (RCUTILS_RET_ERROR, ret);
137- }
138-
139131TEST_F (TestParseThreadAttrs, success) {
140132 rcutils_ret_t ret;
141133
@@ -144,7 +136,7 @@ TEST_F(TestParseThreadAttrs, success) {
144136 for (std::size_t i = 0 ; i < 100 ; ++i) {
145137 ss << " { priority: " << i * 10 ;
146138 ss << " , name: thread-" << i;
147- ss << " , core_affinity: " << i;
139+ ss << " , core_affinity: [ " << i << " ] " ;
148140 ss << " , scheduling_policy: FIFO }," ;
149141 }
150142 ss << " ]" ;
@@ -162,7 +154,21 @@ TEST_F(TestParseThreadAttrs, success) {
162154 ss << " thread-" << i;
163155 buf = ss.str ();
164156 EXPECT_STREQ (buf.c_str (), attrs.attributes [i].name );
165- EXPECT_EQ (i, attrs.attributes [i].core_affinity );
157+ EXPECT_TRUE ( rcutils_thread_core_affinity_is_set (& attrs.attributes [i].core_affinity , i) );
166158 EXPECT_EQ (RCUTILS_THREAD_SCHEDULING_POLICY_FIFO, attrs.attributes [i].scheduling_policy );
167159 }
168160}
161+
162+ TEST_F (TestParseThreadAttr, affinity_multiple_core) {
163+ rcutils_ret_t ret;
164+ prepare_yaml_parser (
165+ " { priority: 10, name: thread-1, core_affinity: [1,2,3], scheduling_policy: FIFO }" );
166+
167+ ret = parse_thread_attr (&parser, &attrs);
168+ EXPECT_EQ (RCUTILS_RET_OK, ret);
169+ EXPECT_FALSE (rcutils_thread_core_affinity_is_set (&attrs.attributes [0 ].core_affinity , 0 ));
170+ EXPECT_TRUE (rcutils_thread_core_affinity_is_set (&attrs.attributes [0 ].core_affinity , 1 ));
171+ EXPECT_TRUE (rcutils_thread_core_affinity_is_set (&attrs.attributes [0 ].core_affinity , 2 ));
172+ EXPECT_TRUE (rcutils_thread_core_affinity_is_set (&attrs.attributes [0 ].core_affinity , 3 ));
173+ EXPECT_FALSE (rcutils_thread_core_affinity_is_set (&attrs.attributes [0 ].core_affinity , 4 ));
174+ }
0 commit comments