[Rock-dev] Failing unit tests for RTT rock-master branch

Sylvain Joyeux sylvain.joyeux at dfki.de
Thu Mar 31 12:12:30 CEST 2011


On 03/31/2011 11:52 AM, Peter Soetens wrote:
> FYI, I merged rock-master to master and these unit tests are failing + my comments:
Damn. I thought I ran these tests. I'll have a look.

> 7: /home/kaltan/src/git/orocos-toolchain/rtt/tests/corba_ipc_test.cpp(685): error in "testBufferHalfs": check mi->read( result ) == NewData
> failed [OldData != NewData]
> 7: /home/kaltan/src/git/orocos-toolchain/rtt/tests/corba_ipc_test.cpp(686): error in "testBufferHalfs": check result == 4.44 failed
> [6.4400000000000004 != 4.4400000000000004]
> 7: /home/kaltan/src/git/orocos-toolchain/rtt/tests/corba_ipc_test.cpp(691): error in "testBufferHalfs": check result == 4.44 failed
> [6.4400000000000004 != 4.4400000000000004]
>
> Not sure what happened here, especially corba-test contains the same code (I assume) and does not fail.
My experience with fixing these "half" tests is that they are really 
fragile, as they try to reproduce, in the test, the connection protocol. 
I.e., if the protocol changes then we need to change the tests 
accordingly. This is really annoying.

> 9: Test command: /home/kaltan/src/git/orocos-toolchain/rtt/build/tests/mqueue-test
> 9: Test timeout computed to be: 1500
> 9: Running 5 test cases...
> 9: /home/kaltan/src/git/orocos-toolchain/rtt/tests/mqueue_test.cpp(361): fatal error in "testVectorTransport": critical check
> vout.createStream( policy ) failed
>
> Only mqueue test failing. Not sure why either.
Why do you call createStream on a mqueue ? Isn't it meant to be used 
with point-to-point connection ?

> 18: Test command: /home/kaltan/src/git/orocos-toolchain/rtt/build/tests/service_port_test
> 18: Test timeout computed to be: 1500
> 18: Running 6 test cases...
> 18: /home/kaltan/src/git/orocos-toolchain/rtt/tests/service_port_test.cpp(121): error in "testUsePort": check read.ready() failed
> 18: /home/kaltan/src/git/orocos-toolchain/rtt/tests/service_port_test.cpp(123): error in "testUsePort": check result == 3 failed [537 != 3]
> 18: /home/kaltan/src/git/orocos-toolchain/rtt/tests/service_port_test.cpp(124): error in "testUsePort": check fs == NewData failed [NoData
> != NewData]
> 18: /home/kaltan/src/git/orocos-toolchain/rtt/tests/service_port_test.cpp(144): error in "testUsePortWithOwner": check read.ready() failed
> 18: /home/kaltan/src/git/orocos-toolchain/rtt/tests/service_port_test.cpp(146): error in "testUsePortWithOwner": check result == 3 failed
> [537 != 3]
> 18: /home/kaltan/src/git/orocos-toolchain/rtt/tests/service_port_test.cpp(147): error in "testUsePortWithOwner": check fs == NewData
> failed [NoData != NewData]
>
> Only error here is that read.ready() failed.
What is read.ready() doing ?

> 22: Test command: /home/kaltan/src/git/orocos-toolchain/rtt/build/tests/ports_test
> 22: Test timeout computed to be: 1500
> 22: Running 9 test cases...
> 22: /home/kaltan/src/git/orocos-toolchain/rtt/tests/ports_test.cpp(468): error in "testPortObjects": check mget.ready() failed
> 22: /home/kaltan/src/git/orocos-toolchain/rtt/tests/ports_test.cpp(473): error in "testPortObjects": check mget(get_value) failed
> 22: /home/kaltan/src/git/orocos-toolchain/rtt/tests/ports_test.cpp(474): error in "testPortObjects": difference{inf%} between
> 3.991{3.9910000000000001} and get_value{0} exceeds 0.001%
>
> Error here is that the read function's signature changed. Since read() now takes two arguments, this breaks scripting and other code that
> used the signature of read(). See also next case:
Why does that change something for these tests ? copy_old_data=true is 
the default, so read(sample) should have exactly the same behaviour than 
before.

> 28: Test command: /home/kaltan/src/git/orocos-toolchain/rtt/build/tests/state_test
> 28: Test timeout computed to be: 1500
> 28: Running 14 test cases...
> 28: /home/kaltan/src/git/orocos-toolchain/rtt/tests/state_test.cpp(952): fatal error in "testStateEvents": Parse error at line 6: Wrong
> number of arguments in call of function "root.t_event.read": expected 2, received 1.
>
> A read() on a port in scripting now requires the 'bool' argument which was added.
>
> Summary: I would at least add a new read() function which implements the copy_old_data=false behavior. It should preferably have a
> different name as well, like readNew() or something similar.
I don't understand that proposal. Do you mean at the scripting level, or 
at the C++ level ?

The problem with read/readNew is that we would need 
readNewest/readNewestNew ... :P

If possible, I would prefer keeping the current C++ API. Obviously, not 
breaking the scripting API takes precedence, though.

> The others need more investigating, but clearly some behavior changed by improving the data port code.
Agreed ... The scripting behaviour is especially worrisome.
-- 
Sylvain Joyeux (Dr.Ing.)
Space & Security Robotics

!!! Achtung, neue Telefonnummer!!!

Standort Bremen:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Straße 5
28359 Bremen, Germany

Phone: +49 (0)421 178-454136
Fax:   +49 (0)421 218-454150
E-Mail: robotik at dfki.de

Weitere Informationen: http://www.dfki.de/robotik
-----------------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
(Vorsitzender) Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
USt-Id.Nr.:    DE 148646973
Steuernummer:  19/673/0060/3
-----------------------------------------------------------------------


More information about the Rock-dev mailing list