[libcamera-devel,v5,8/8] test: Test V4L2BufferCache::isEmpty() member function
diff mbox series

Message ID 20220325090903.880311-9-naush@raspberrypi.com
State Accepted
Headers show
Series
  • Raspberry Pi: Efficient start/stop/start sequences
Related show

Commit Message

Naushir Patuck March 25, 2022, 9:09 a.m. UTC
Add a test for V4L2BufferCache::isEmpty() for various levels for cache fullness.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
---
 test/v4l2_videodevice/buffer_cache.cpp | 36 ++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

Comments

Laurent Pinchart March 27, 2022, 11:12 p.m. UTC | #1
Hi Naush,

Thank you for the patch.

On Fri, Mar 25, 2022 at 09:09:03AM +0000, Naushir Patuck via libcamera-devel wrote:
> Add a test for V4L2BufferCache::isEmpty() for various levels for cache fullness.
> 
> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

You also have a R-b from Kieran on v4.

> ---
>  test/v4l2_videodevice/buffer_cache.cpp | 36 ++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/test/v4l2_videodevice/buffer_cache.cpp b/test/v4l2_videodevice/buffer_cache.cpp
> index b3f2bec11783..5a9aa2199c50 100644
> --- a/test/v4l2_videodevice/buffer_cache.cpp
> +++ b/test/v4l2_videodevice/buffer_cache.cpp
> @@ -126,6 +126,35 @@ public:
>  		return TestPass;
>  	}
>  
> +	int testIsEmpty(const std::vector<std::unique_ptr<FrameBuffer>> &buffers)
> +	{
> +		V4L2BufferCache cache(buffers.size());
> +
> +		if (!cache.isEmpty())
> +			return TestFail;
> +
> +		for (auto const &buffer : buffers) {
> +			FrameBuffer &b = *buffer.get();
> +			cache.get(b);
> +		}
> +
> +		if (cache.isEmpty())
> +			return TestFail;
> +
> +		unsigned int i;
> +		for (i = 0; i < buffers.size() - 1; i++)
> +			cache.put(i);
> +
> +		if (cache.isEmpty())
> +			return TestFail;
> +
> +		cache.put(i);
> +		if (!cache.isEmpty())
> +			return TestFail;
> +
> +		return TestPass;
> +	}
> +
>  	int init() override
>  	{
>  		std::random_device rd;
> @@ -204,6 +233,13 @@ public:
>  		if (testHot(&cacheHalf, buffers, numBuffers / 2) != TestPass)
>  			return TestFail;
>  
> +		/*
> +		 * Test that the isEmpty function reports the correct result at
> +		 * various levels of cache fullness.
> +		 */
> +		if (testIsEmpty(buffers) != TestPass)
> +			return TestFail;
> +
>  		return TestPass;
>  	}
>

Patch
diff mbox series

diff --git a/test/v4l2_videodevice/buffer_cache.cpp b/test/v4l2_videodevice/buffer_cache.cpp
index b3f2bec11783..5a9aa2199c50 100644
--- a/test/v4l2_videodevice/buffer_cache.cpp
+++ b/test/v4l2_videodevice/buffer_cache.cpp
@@ -126,6 +126,35 @@  public:
 		return TestPass;
 	}
 
+	int testIsEmpty(const std::vector<std::unique_ptr<FrameBuffer>> &buffers)
+	{
+		V4L2BufferCache cache(buffers.size());
+
+		if (!cache.isEmpty())
+			return TestFail;
+
+		for (auto const &buffer : buffers) {
+			FrameBuffer &b = *buffer.get();
+			cache.get(b);
+		}
+
+		if (cache.isEmpty())
+			return TestFail;
+
+		unsigned int i;
+		for (i = 0; i < buffers.size() - 1; i++)
+			cache.put(i);
+
+		if (cache.isEmpty())
+			return TestFail;
+
+		cache.put(i);
+		if (!cache.isEmpty())
+			return TestFail;
+
+		return TestPass;
+	}
+
 	int init() override
 	{
 		std::random_device rd;
@@ -204,6 +233,13 @@  public:
 		if (testHot(&cacheHalf, buffers, numBuffers / 2) != TestPass)
 			return TestFail;
 
+		/*
+		 * Test that the isEmpty function reports the correct result at
+		 * various levels of cache fullness.
+		 */
+		if (testIsEmpty(buffers) != TestPass)
+			return TestFail;
+
 		return TestPass;
 	}