@@ -365,3 +365,32 @@ TEST_F(LoadBackendOptionsMapTest, SetOptionsWithBuilderUpdatesExisting) {
365365 }
366366 EXPECT_EQ (num_threads2, 8 ); // Should be updated value
367367}
368+
369+ // Test entry_at returns each (backend_id, options) pair in insertion order
370+ // and the spans reference the same data the corresponding get_options
371+ // calls return.
372+ TEST_F (LoadBackendOptionsMapTest, EntryAtEnumeratesAllEntries) {
373+ LoadBackendOptionsMap map;
374+
375+ BackendOptions<2 > opts1;
376+ opts1.set_option (" k1" , 1 );
377+ ASSERT_EQ (map.set_options (" BackendA" , opts1.view ()), Error::Ok);
378+
379+ BackendOptions<2 > opts2;
380+ opts2.set_option (" k2" , true );
381+ opts2.set_option (" k3" , " v" );
382+ ASSERT_EQ (map.set_options (" BackendB" , opts2.view ()), Error::Ok);
383+
384+ ASSERT_EQ (map.size (), 2u );
385+
386+ const auto e0 = map.entry_at (0 );
387+ EXPECT_STREQ (e0 .backend_id , " BackendA" );
388+ EXPECT_EQ (e0 .options .size (), 1u );
389+ // Spans returned by entry_at point at the same storage as get_options.
390+ EXPECT_EQ (e0 .options .data (), map.get_options (" BackendA" ).data ());
391+
392+ const auto e1 = map.entry_at (1 );
393+ EXPECT_STREQ (e1 .backend_id , " BackendB" );
394+ EXPECT_EQ (e1 .options .size (), 2u );
395+ EXPECT_EQ (e1 .options .data (), map.get_options (" BackendB" ).data ());
396+ }
0 commit comments