rock-core / tools-roby

The roby plan manager
Other
3 stars 11 forks source link

refactor the test harness #69

Closed doudou closed 7 years ago

doudou commented 7 years ago

Depends on:

This aims at fixing the many issues about the way the test harness was currently implemented. The current way was to try and do things "synchronously" (generate one event, get one exception, ...). This was going counter to the core of the Roby execution and was failing in all but the simple cases.

This PR creates a test harness that embraces the "do everything at the same time" nature to Roby's event processing. The scheme is:

expect_execution { ... do things ... }.
 to { .. predicates that test the result of the execution ... }

In the simplest example, assert_event_emission becomes

expect_execution { ... do things ... }.
  to { emit event }

Where things get interesting is that the harness will inhibit "expected" exceptions. I.e. if the test checks for an event and that the event is the source of an exception, the exception will not fail the test (this can be avoided with a flag).

All previously existing assertions should still work as-is, but will display a deprecation warning.

See https://github.com/rock-core/bundles-common_models/commit/ec77a9f7116bbafd44ed4cd8a70e966d5a0b6ad7 for an example of a conversion between the old-style tests and the new-style tests.

doudou commented 7 years ago

@gustavoneves12 this will affect you. I'm sorry, I had converted both dive and flat_fish but lost them when I had to delete the FF code from my laptop :(

I would suggest that you at least check if the harness breaks your current tests -- and if it does, let's try to fix the issues together. The "old" tests should still work, only with a lot of deprecation warnings.

gustavoneves12 commented 7 years ago

@doudou, I am going to check it tomorrow. I will inform you if I had some problem.

doudou commented 7 years ago

Don't forget to get the syskit and metaruby PRs as well.

doudou commented 7 years ago

Ping @gustavoneves12 ?

gustavoneves12 commented 7 years ago

@doudou sorry for the delay. I had other stuff to do. Today, after the lunch I am going to test it.

gustavoneves12 commented 7 years ago

@doudou,

After your changes I run the command syskit test -rgazebo and I get the error below:

= cannot load such file -- models/compositions/warp_robot (LoadError)
= Backtrace
| 
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:15:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/cucumber/models/actions/cucumber.rb:1:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:15:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/actions/gazebo/cucumber.rb:1:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:11:in `block in require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:8:in `each'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:8:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/test/actions/gazebo/test_cucumber.rb:1:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:15:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app/scripts/test.rb:116:in `block (2 levels) in <top (required)>'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app/scripts/test.rb:114:in `each'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app/scripts/test.rb:114:in `block in <top (required)>'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/exceptions.rb:506:in `display_exception'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app/scripts/test.rb:82:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/bin/syskit:22:in `<main>'

In the manifest, cucumber is a test_depend.

doudou commented 7 years ago

In the manifest, cucumber is a test_depend.

The manifest.xml, as in all Rock packages, is irrelevant to the package's function. manifest.xml is only used by autoproj, and this is by design so as to avoid tying package functionality to the build system.

You need to add cucumber to the list of dependent bundles in config/bundles.yml. This is not done in master so that bundles/cucumber is not required on the vehicle.

Interestingly, this will be solved once this PR is merged - after this PR, dependencies can be added in the robot config files.

gustavoneves12 commented 7 years ago

The manifest.xml, as in all Rock packages, is irrelevant to the package's function. manifest.xml is only used by autoproj, and this is by design so as to avoid tying package functionality to the build system.

Ok! Thanks for the explanation!

gustavoneves12 commented 7 years ago

@doudou,

When I run the command syskit run -rgazebo -c, I am getting the error below:

Roby[FATAL]: Application error in syskit:update_task_states
Roby[FATAL]: undefined method `read_with_result' for orocosrb_10875.efuse_nav.state.140:Orocos::OutputReader
Roby[FATAL]: Did you mean?  read_helper (NoMethodError)
Roby[FATAL]: = Backtrace
Roby[FATAL]: = 
Roby[FATAL]: 
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/task_context.rb:493:in `update_orogen_state'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/runtime/update_task_states.rb:58:in `block in update_task_states'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/plan.rb:1726:in `block in query_each'
Roby[FATAL]:   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/set.rb:306:in `each_key'
Roby[FATAL]:   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/set.rb:306:in `each'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/plan.rb:1725:in `query_each'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/queries/query.rb:182:in `each'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/runtime/update_task_states.rb:8:in `update_task_states'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:234:in `call'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:747:in `block (2 levels) in call_poll_blocks'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/droby/event_logging.rb:22:in `log_timepoint_group'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:746:in `block in call_poll_blocks'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:741:in `delete_if'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:741:in `call_poll_blocks'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:773:in `gather_external_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1671:in `block (2 levels) in process_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:811:in `gather_errors'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1662:in `block in process_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:563:in `block in gather_propagation'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:669:in `propagation_context'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:562:in `gather_propagation'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1661:in `process_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2263:in `block (2 levels) in event_loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/droby/event_logging.rb:22:in `log_timepoint_group'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2262:in `block in event_loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2219:in `loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2219:in `event_loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2139:in `run'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1756:in `block in run'
Roby[FATAL]: = 
Roby[FATAL]: Execution thread quitting because of unhandled exception
Roby[FATAL]: in syskit:update_task_states: undefined method `read_with_result' for orocosrb_10875.efuse_nav.state.140:Orocos::OutputReader
Roby[FATAL]: Did you mean?  read_helper
Roby[FATAL]: Did you mean?  read_helper (NoMethodError)
Roby[FATAL]: = Backtrace
Roby[FATAL]: = 
Roby[FATAL]: 
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/task_context.rb:493:in `update_orogen_state'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/runtime/update_task_states.rb:58:in `block in update_task_states'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/plan.rb:1726:in `block in query_each'
Roby[FATAL]:   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/set.rb:306:in `each_key'
Roby[FATAL]:   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/set.rb:306:in `each'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/plan.rb:1725:in `query_each'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/queries/query.rb:182:in `each'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/runtime/update_task_states.rb:8:in `update_task_states'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:234:in `call'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:747:in `block (2 levels) in call_poll_blocks'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/droby/event_logging.rb:22:in `log_timepoint_group'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:746:in `block in call_poll_blocks'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:741:in `delete_if'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:741:in `call_poll_blocks'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:773:in `gather_external_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1671:in `block (2 levels) in process_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:811:in `gather_errors'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1662:in `block in process_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:563:in `block in gather_propagation'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:669:in `propagation_context'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:562:in `gather_propagation'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1661:in `process_events'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2263:in `block (2 levels) in event_loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/droby/event_logging.rb:22:in `log_timepoint_group'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2262:in `block in event_loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2219:in `loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2219:in `event_loop'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:2139:in `run'
Roby[FATAL]:   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1756:in `block in run'
Roby[FATAL]: = 

Also, syskit gets freeze, because it is not possible to quit the syskit using ctrl+c. I needed to kill the process to finish syskit.

When I execute the command syskit test -rgazebo the test get into a infinite loop showing the warning below:

Roby[WARN]: more than 726 iterations while trying to shut down #<Roby::ExecutablePlan:0x00000002dd2fa0> after FlatFish::Compositions::UI::Gazebo::StatusMonitor#test_0001_starts, quarantine=0 tasks, tasks=2 tasks
Roby[WARN]: more than 727 iterations while trying to shut down #<Roby::ExecutablePlan:0x00000002dd2fa0> after FlatFish::Compositions::UI::Gazebo::StatusMonitor#test_0001_starts, quarantine=0 tasks, tasks=2 tasks
Roby[WARN]: more than 728 iterations while trying to shut down #<Roby::ExecutablePlan:0x00000002dd2fa0> after FlatFish::Compositions::UI::Gazebo::StatusMonitor#test_0001_starts, quarantine=0 tasks, tasks=2 tasks

After 7 minutes running I interrupt the test. Below you have the output message.

Interrupted. Exiting...

Finished in 629.868841s, 0.0000 runs/s, 0.0000 assertions/s.

0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
doudou commented 7 years ago

I forgot a PR on orocos.rb as well: https://github.com/rock-core/tools-orocosrb/pull/115

gustavoneves12 commented 7 years ago

Hey @doudou,

I set the branches and I executed the tests.

Running the command syskit test -rgazebo, the tested was executed, When the tests finished I get the following output.

628 runs, 3440 assertions, 10 failures, 45 errors, 1 skips

You have skipped tests. Run with --verbose for details.

Running the simulation by the command syskit run -rgazebo -c the syskit output keep sending the warning below:

Roby[WARN]: Deprecation Warning: accessing arguments using anything else than a symbol is deprecated at /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/task_arguments.rb:196:in `[]'
/home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/tasks/safety.rb:46:in `block in handle_missing_children'

When I run the commands syskit run -rlive --single --sim and syskit test -rlive, the syskit get the error below:

= wrong number of arguments (given 1, expected 0) (ArgumentError)
= Backtrace
| 
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/instance_requirements.rb:658:in `with_arguments'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/robot/master_device_instance.rb:332:in `with_arguments'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live/base.rb:267:in `block (2 levels) in <module:Live>'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/actions/profile.rb:443:in `instance_eval'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/actions/profile.rb:443:in `robot'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live/base.rb:61:in `block in <module:Live>'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/actions/profile.rb:591:in `instance_eval'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/actions/profile.rb:591:in `profile'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live/base.rb:52:in `<module:Live>'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live/base.rb:51:in `<module:Profiles>'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live/base.rb:50:in `<module:FlatFish>'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live/base.rb:49:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:11:in `block in require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:8:in `each'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:8:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/models/profiles/live.rb:1:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:11:in `block in require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:8:in `each'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/lib/syskit/custom_require.rb:8:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/config/robots/live.rb:32:in `block in <top (required)>'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1267:in `block (2 levels) in require_models'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1236:in `isolate_load_errors'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1266:in `block in require_models'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1265:in `each'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1265:in `require_models'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app.rb:1644:in `setup'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app/scripts/run.rb:87:in `block in <top (required)>'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/exceptions.rb:506:in `display_exception'
|   /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/app/scripts/run.rb:86:in `<top (required)>'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
|   /home/gustavoneves/rock/dev/flat_fish/tools/syskit/bin/syskit:22:in `<main>'
= 

The line models/profiles/live/base.rb:267 has the following code:

device(FlatFish::Devices::EcommBoardGPS, as: 'ecomm_board_gps').
    period(1).
    with_arguments('driver_dev' => ecomm_board_dev)

I had a look at the code, and the EcommBoardGPS does not have the argument driver_dev.

doudou commented 7 years ago

Roby[WARN]: Deprecation Warning:

Well, This is a deprecation warning. Change the code to not use the deprecated feature.

I had a look at the code, and the EcommBoardGPS does not have the argument driver_dev.

It does, the _dev arguments are there because of the driver_for declaration. Check the IDE. You will note that nowhere in the error message there is a "driver_dev is not an argument".

The change that causes this is due is the removal of using strings as argument names, e.g. in this case

with_arguments('driver_dev' => ecomm_board_dev)

should now be written

with_arguments(driver_dev: ecomm_board_dev)

I've re-added the support (with a deprecation warning) in the Syskit PR (https://github.com/rock-core/tools-syskit/pull/118/commits/2a20b5aadb4e9cc6c83ab045d8787cb589e2adc0)

gustavoneves12 commented 7 years ago

I performed the tests again:

The tests were executed, but I got the message during the execution of the command syskit test -rlive.

Syskit[FATAL]: nil
Syskit[FATAL]: Engine#resolve failed
Syskit[FATAL]: the generated plan has been saved
Syskit[FATAL]: use dot -Tsvg /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/logs/20170830-1042/syskit-plan-0003.dataflow.dot > /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/logs/20170830-1042/syskit-plan-0003.dataflow.dot.svg to convert the dataflow to SVG
Syskit[FATAL]: use dot -Tsvg /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/logs/20170830-1042/syskit-plan-0003.hierarchy.dot > /home/gustavoneves/rock/dev/flat_fish/bundles/flat_fish/logs/20170830-1042/syskit-plan-0003.hierarchy.dot.svg to convert to SVG

The tests kept running. In the end I got the following output:

 53) Error:
Rock::Compositions::ConstantGenerator::the task termination#test_0002_aborts if the write thread raises an exception:

cannot recursively call #expect_execution (Roby::Test::ExpectExecution::InvalidContext)
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/expect_execution.rb:94:in `expect_execution'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/assertions.rb:246:in `assert_event_emission'
    /home/gustavoneves/rock/dev/flat_fish/bundles/rock/test/compositions/test_constant_generator.rb:64:in `block (4 levels) in <module:Compositions>'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/assertions.rb:338:in `block in assert_fatal_exception'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/execution_expectations.rb:525:in `block (3 levels) in verify'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/execution_expectations.rb:524:in `delete_if'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/execution_expectations.rb:524:in `block (2 levels) in verify'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1664:in `block (2 levels) in process_events'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:811:in `gather_errors'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1662:in `block in process_events'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:563:in `block in gather_propagation'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:669:in `propagation_context'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:562:in `gather_propagation'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/execution_engine.rb:1661:in `process_events'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/execution_expectations.rb:523:in `block in verify'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/execution_expectations.rb:495:in `with_execution_engine_setup'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/execution_expectations.rb:522:in `verify'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/expect_execution.rb:74:in `to'
    /home/gustavoneves/rock/dev/flat_fish/tools/roby/lib/roby/test/assertions.rb:338:in `assert_fatal_exception'
    /home/gustavoneves/rock/dev/flat_fish/bundles/rock/test/compositions/test_constant_generator.rb:62:in `block (3 levels) in <module:Compositions>'

614 runs, 3425 assertions, 7 failures, 36 errors, 1 skips

You have skipped tests. Run with --verbose for details.

The gazebo test output was:

628 runs, 3462 assertions, 10 failures, 40 errors, 1 skips

You have skipped tests. Run with --verbose for details.

After changing the driver_dev argument to symbol, I performed the command syskit run -rlive -c --single --sim and it just showed warnings.

doudou commented 7 years ago

The error you got from the expect_execution block, I unfortunately cannot work around. You would need to convert to the new test syntax. You've only sent one error out of 53, though ... Same for gazebo. Could you send the whole test output ?

gustavoneves12 commented 7 years ago

Ok, I am going to send by email or slack.