[PATCH 06/12] test: message: Remove incorrect slow receiver test

Milan Zamazal mzamazal at redhat.com
Mon Jan 22 20:59:42 CET 2024


Laurent Pinchart <laurent.pinchart at ideasonboard.com> writes:

> The slow receiver test verifies there's no race condition between
> concurrent message delivery and object deletion. This is no a valid use
                                                           ^^^^
no

> case in the first place, as objects are not allowed to be deleted 

... or messaged ...

> from a different thread than the one they are bound to. Remove the incorrect
> test.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Milan Zamazal <mzamazal at redhat.com>

> ---
>  test/message.cpp | 34 ----------------------------------
>  1 file changed, 34 deletions(-)
>
> diff --git a/test/message.cpp b/test/message.cpp
> index 0e76f323e3b9..a34e0f0b5e10 100644
> --- a/test/message.cpp
> +++ b/test/message.cpp
> @@ -93,25 +93,6 @@ private:
>  	bool success_;
>  };
>  
> -class SlowMessageReceiver : public Object
> -{
> -protected:
> -	void message(Message *msg)
> -	{
> -		if (msg->type() != Message::None) {
> -			Object::message(msg);
> -			return;
> -		}
> -
> -		/*
> -		 * Don't access any member of the object here (including the
> -		 * vtable) as the object will be deleted by the main thread
> -		 * while we're sleeping.
> -		 */
> -		this_thread::sleep_for(chrono::milliseconds(100));
> -	}
> -};
> -
>  class MessageTest : public Test
>  {
>  protected:
> @@ -148,21 +129,6 @@ protected:
>  			break;
>  		}
>  
> -		/*
> -		 * Test for races between message delivery and object deletion.
> -		 * Failures result in assertion errors, there is no need for
> -		 * explicit checks.
> -		 */
> -		SlowMessageReceiver *slowReceiver = new SlowMessageReceiver();
> -		slowReceiver->moveToThread(&thread_);
> -		slowReceiver->postMessage(std::make_unique<Message>(Message::None));
> -
> -		this_thread::sleep_for(chrono::milliseconds(10));
> -
> -		delete slowReceiver;
> -
> -		this_thread::sleep_for(chrono::milliseconds(100));
> -
>  		/*
>  		 * Test recursive calls to Thread::dispatchMessages(). Messages
>  		 * should be delivered correctly, without crashes or memory



More information about the libcamera-devel mailing list