build "core init server/report_rom test/report_rom drivers/timer" create_boot_directory install_config { <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="report_rom"> <resource name="RAM" quantum="2M"/> <provides> <service name="ROM"/> <service name="Report"/> </provides> <config> <policy label_prefix="test-report_rom ->" label_suffix="brightness" report="test-report_rom -> brightness"/> </config> </start> <start name="test-report_rom"> <resource name="RAM" quantum="2M"/> <route> <service name="ROM"> <if-arg key="label" value="brightness"/> <child name="report_rom"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> </config> } build_boot_image "core init timer report_rom test-report_rom" append qemu_args "-nographic -m 128" run_genode_until {child "test-report_rom" exited with exit value 0.*\n} 30 grep_output {^\[init -> test-report_rom} unify_output {\[init \-\> test\-report_rom\] upgrading quota donation for .* \([0-9]+ bytes\)} "" trim_lines compare_output_to { [init -> test-report_rom] --- test-report_rom started --- [init -> test-report_rom] Reporter: open session [init -> test-report_rom] Reporter: brightness 10 [init -> test-report_rom] ROM client: request brightness report [init -> test-report_rom] -> <brightness brightness="10"/> [init -> test-report_rom] [init -> test-report_rom] Reporter: updated brightness to 77 [init -> test-report_rom] ROM client: wait for update notification [init -> test-report_rom] ROM client: got signal [init -> test-report_rom] ROM client: request updated brightness report [init -> test-report_rom] -> <brightness brightness="77"/> [init -> test-report_rom] [init -> test-report_rom] Reporter: close report session [init -> test-report_rom] ROM client: ROM is available despite report was closed - OK [init -> test-report_rom] Reporter: start reporting (while the ROM client still listens) [init -> test-report_rom] ROM client: wait for update notification [init -> test-report_rom] ROM client: try to open the same report again [init -> test-report_rom] ROM client: catched Parent::Service_denied - OK [init -> test-report_rom] --- test-report_rom finished --- }