Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/12082/?format=api
{ "id": 12082, "url": "https://patchwork.libcamera.org/api/1.1/covers/12082/?format=api", "web_url": "https://patchwork.libcamera.org/cover/12082/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20210422210609.425987-1-nfraprado@collabora.com>", "date": "2021-04-22T21:06:07", "name": "[libcamera-devel,RFC,0/2] lc-compliance: Refactor using Googletest", "submitter": { "id": 84, "url": "https://patchwork.libcamera.org/api/1.1/people/84/?format=api", "name": "Nícolas F. R. A. Prado", "email": "nfraprado@collabora.com" }, "mbox": "https://patchwork.libcamera.org/cover/12082/mbox/", "series": [ { "id": 1965, "url": "https://patchwork.libcamera.org/api/1.1/series/1965/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1965", "date": "2021-04-22T21:06:07", "name": "lc-compliance: Refactor using Googletest", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1965/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/12082/comments/", "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id F379ABDB1A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 22 Apr 2021 21:06:51 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 324436885C;\n\tThu, 22 Apr 2021 23:06:51 +0200 (CEST)", "from bhuna.collabora.co.uk (bhuna.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B8EDB60516\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 22 Apr 2021 23:06:49 +0200 (CEST)", "from [127.0.0.1] (localhost [127.0.0.1])\n\t(Authenticated sender: nfraprado) with ESMTPSA id B8B7D1F43738" ], "From": "=?utf-8?b?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= <nfraprado@collabora.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 22 Apr 2021 18:06:07 -0300", "Message-Id": "<20210422210609.425987-1-nfraprado@collabora.com>", "X-Mailer": "git-send-email 2.31.1", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [RFC PATCH 0/2] lc-compliance: Refactor using\n\tGoogletest", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Cc": "kernel@collabora.com, =?utf-8?q?Andr=C3=A9_Almeida?=\n\t<andrealmeid@collabora.com>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "This is another prototype of the refactoring of lc-compliance, this time using\nGoogletest as the framework.\n\nPatch 1 is just to simplify cleanup and is the same patch used in the previous\nrefactoring series using Catch2 [1]. Patch 2 does the actual refactor.\n\nThe biggest advantage this has over the previous one using Catch2, is that\nGoogletest has a GTEST_SKIP() macro which skips the current test during runtime,\nwhich is essential for lc-compliance.\n\nOne drawback of Gtest is the need to use different assertion macros for each\ntype of comparison, like ASSERT_LE(a, b), instead of a single one used in\nCatch2, ASSERT(a <= b), which makes the code a little less clear, but is not a\nshow stopper.\n\nThe parameters for Gtest have yet to be wired up, but can currently be passed\nafter double dashes, like\n\n\tlc-compliance -c '<camera_name>' -- --gtest_list_tests\n\nto list all current tests defined. The parameter --gtest_filter can be used to\nfilter the individual tests or test suites to run. It uses string matching and\nglobing for the test names so it's easy to run a whole test suite MyTestSuite\nwith --gtest_list_tests='*MyTestSuite*'.\n\nFour INSTANTIATE_TEST_SUITE_P(), one for each stream role, were used in the code\nto make the StreamRole part of the test name string, making it possible to\nfilter only tests of a single StreamRole to run. In order to not have to define\neach new parametrized test suite four times, a macro could be used for the\nsubstitution.\n\nThis is a snippet of a successful run:\n\n\t[==========] Running 120 tests from 4 test suites.\n\t[----------] Global test environment set-up.\n\t[----------] 30 tests from Raw/FixedRequestsTest\n\t[ RUN ] Raw/FixedRequestsTest.BalancedSingleCycle/0\n\t[79:31:45.624016307] [421717] INFO Camera camera.cpp:905 configuring streams: (0) 1280x720-MJPEG\n\tCamera needs 4 requests, can't test only 1\n\t[ SKIPPED ] Raw/FixedRequestsTest.BalancedSingleCycle/0 (64 ms)\n\n\t[...]\n\n\t[ RUN ] Viewfinder/FixedRequestsTest.Unbalanced/9\n\t[79:34:38.653213305] [421717] INFO Camera camera.cpp:905 configuring streams: (0) 1280x720-MJPEG\n\t[ OK ] Viewfinder/FixedRequestsTest.Unbalanced/9 (3146 ms)\n\t[----------] 30 tests from Viewfinder/FixedRequestsTest (43964 ms total)\n\n\t[----------] Global test environment tear-down\n\t[==========] 120 tests from 4 test suites ran. (176177 ms total)\n\t[ PASSED ] 96 tests.\n\t[ SKIPPED ] 24 tests, listed below:\n\t[ SKIPPED ] Raw/FixedRequestsTest.BalancedSingleCycle/0\n\t[ SKIPPED ] Raw/FixedRequestsTest.BalancedSingleCycle/1\n\n\t[...]\n\nAnd how a failure looks like:\n\n\t[ RUN ] Raw/FixedRequestsTest.BalancedSingleCycle/3\n\t[79:46:37.536423187] [424054] INFO Camera camera.cpp:905 configuring streams: (0) 1280x720-MJPEG\n\t../src/lc-compliance/simple_capture.cpp:110: Failure\n\tExpected equality of these values:\n\t captureCount_\n\t Which is: 5\n\t captureLimit_\n\t Which is: 4\n\t[ FAILED ] Raw/FixedRequestsTest.BalancedSingleCycle/3, where GetParam() = (0, 5) (318 ms)\n\nThe current complete list of tests is shown below:\n\n\tRaw/FixedRequestsTest.\n\t BalancedSingleCycle/0 # GetParam() = (0, 1)\n\t BalancedSingleCycle/1 # GetParam() = (0, 2)\n\t BalancedSingleCycle/2 # GetParam() = (0, 3)\n\t BalancedSingleCycle/3 # GetParam() = (0, 5)\n\t BalancedSingleCycle/4 # GetParam() = (0, 8)\n\t BalancedSingleCycle/5 # GetParam() = (0, 13)\n\t BalancedSingleCycle/6 # GetParam() = (0, 21)\n\t BalancedSingleCycle/7 # GetParam() = (0, 34)\n\t BalancedSingleCycle/8 # GetParam() = (0, 55)\n\t BalancedSingleCycle/9 # GetParam() = (0, 89)\n\t BalancedMultiCycle/0 # GetParam() = (0, 1)\n\t BalancedMultiCycle/1 # GetParam() = (0, 2)\n\t BalancedMultiCycle/2 # GetParam() = (0, 3)\n\t BalancedMultiCycle/3 # GetParam() = (0, 5)\n\t BalancedMultiCycle/4 # GetParam() = (0, 8)\n\t BalancedMultiCycle/5 # GetParam() = (0, 13)\n\t BalancedMultiCycle/6 # GetParam() = (0, 21)\n\t BalancedMultiCycle/7 # GetParam() = (0, 34)\n\t BalancedMultiCycle/8 # GetParam() = (0, 55)\n\t BalancedMultiCycle/9 # GetParam() = (0, 89)\n\t Unbalanced/0 # GetParam() = (0, 1)\n\t Unbalanced/1 # GetParam() = (0, 2)\n\t Unbalanced/2 # GetParam() = (0, 3)\n\t Unbalanced/3 # GetParam() = (0, 5)\n\t Unbalanced/4 # GetParam() = (0, 8)\n\t Unbalanced/5 # GetParam() = (0, 13)\n\t Unbalanced/6 # GetParam() = (0, 21)\n\t Unbalanced/7 # GetParam() = (0, 34)\n\t Unbalanced/8 # GetParam() = (0, 55)\n\t Unbalanced/9 # GetParam() = (0, 89)\n\tStillCapture/FixedRequestsTest.\n\t BalancedSingleCycle/0 # GetParam() = (1, 1)\n\t BalancedSingleCycle/1 # GetParam() = (1, 2)\n\t BalancedSingleCycle/2 # GetParam() = (1, 3)\n\t BalancedSingleCycle/3 # GetParam() = (1, 5)\n\t BalancedSingleCycle/4 # GetParam() = (1, 8)\n\t BalancedSingleCycle/5 # GetParam() = (1, 13)\n\t BalancedSingleCycle/6 # GetParam() = (1, 21)\n\t BalancedSingleCycle/7 # GetParam() = (1, 34)\n\t BalancedSingleCycle/8 # GetParam() = (1, 55)\n\t BalancedSingleCycle/9 # GetParam() = (1, 89)\n\t BalancedMultiCycle/0 # GetParam() = (1, 1)\n\t BalancedMultiCycle/1 # GetParam() = (1, 2)\n\t BalancedMultiCycle/2 # GetParam() = (1, 3)\n\t BalancedMultiCycle/3 # GetParam() = (1, 5)\n\t BalancedMultiCycle/4 # GetParam() = (1, 8)\n\t BalancedMultiCycle/5 # GetParam() = (1, 13)\n\t BalancedMultiCycle/6 # GetParam() = (1, 21)\n\t BalancedMultiCycle/7 # GetParam() = (1, 34)\n\t BalancedMultiCycle/8 # GetParam() = (1, 55)\n\t BalancedMultiCycle/9 # GetParam() = (1, 89)\n\t Unbalanced/0 # GetParam() = (1, 1)\n\t Unbalanced/1 # GetParam() = (1, 2)\n\t Unbalanced/2 # GetParam() = (1, 3)\n\t Unbalanced/3 # GetParam() = (1, 5)\n\t Unbalanced/4 # GetParam() = (1, 8)\n\t Unbalanced/5 # GetParam() = (1, 13)\n\t Unbalanced/6 # GetParam() = (1, 21)\n\t Unbalanced/7 # GetParam() = (1, 34)\n\t Unbalanced/8 # GetParam() = (1, 55)\n\t Unbalanced/9 # GetParam() = (1, 89)\n\tVideoRecording/FixedRequestsTest.\n\t BalancedSingleCycle/0 # GetParam() = (2, 1)\n\t BalancedSingleCycle/1 # GetParam() = (2, 2)\n\t BalancedSingleCycle/2 # GetParam() = (2, 3)\n\t BalancedSingleCycle/3 # GetParam() = (2, 5)\n\t BalancedSingleCycle/4 # GetParam() = (2, 8)\n\t BalancedSingleCycle/5 # GetParam() = (2, 13)\n\t BalancedSingleCycle/6 # GetParam() = (2, 21)\n\t BalancedSingleCycle/7 # GetParam() = (2, 34)\n\t BalancedSingleCycle/8 # GetParam() = (2, 55)\n\t BalancedSingleCycle/9 # GetParam() = (2, 89)\n\t BalancedMultiCycle/0 # GetParam() = (2, 1)\n\t BalancedMultiCycle/1 # GetParam() = (2, 2)\n\t BalancedMultiCycle/2 # GetParam() = (2, 3)\n\t BalancedMultiCycle/3 # GetParam() = (2, 5)\n\t BalancedMultiCycle/4 # GetParam() = (2, 8)\n\t BalancedMultiCycle/5 # GetParam() = (2, 13)\n\t BalancedMultiCycle/6 # GetParam() = (2, 21)\n\t BalancedMultiCycle/7 # GetParam() = (2, 34)\n\t BalancedMultiCycle/8 # GetParam() = (2, 55)\n\t BalancedMultiCycle/9 # GetParam() = (2, 89)\n\t Unbalanced/0 # GetParam() = (2, 1)\n\t Unbalanced/1 # GetParam() = (2, 2)\n\t Unbalanced/2 # GetParam() = (2, 3)\n\t Unbalanced/3 # GetParam() = (2, 5)\n\t Unbalanced/4 # GetParam() = (2, 8)\n\t Unbalanced/5 # GetParam() = (2, 13)\n\t Unbalanced/6 # GetParam() = (2, 21)\n\t Unbalanced/7 # GetParam() = (2, 34)\n\t Unbalanced/8 # GetParam() = (2, 55)\n\t Unbalanced/9 # GetParam() = (2, 89)\n\tViewfinder/FixedRequestsTest.\n\t BalancedSingleCycle/0 # GetParam() = (3, 1)\n\t BalancedSingleCycle/1 # GetParam() = (3, 2)\n\t BalancedSingleCycle/2 # GetParam() = (3, 3)\n\t BalancedSingleCycle/3 # GetParam() = (3, 5)\n\t BalancedSingleCycle/4 # GetParam() = (3, 8)\n\t BalancedSingleCycle/5 # GetParam() = (3, 13)\n\t BalancedSingleCycle/6 # GetParam() = (3, 21)\n\t BalancedSingleCycle/7 # GetParam() = (3, 34)\n\t BalancedSingleCycle/8 # GetParam() = (3, 55)\n\t BalancedSingleCycle/9 # GetParam() = (3, 89)\n\t BalancedMultiCycle/0 # GetParam() = (3, 1)\n\t BalancedMultiCycle/1 # GetParam() = (3, 2)\n\t BalancedMultiCycle/2 # GetParam() = (3, 3)\n\t BalancedMultiCycle/3 # GetParam() = (3, 5)\n\t BalancedMultiCycle/4 # GetParam() = (3, 8)\n\t BalancedMultiCycle/5 # GetParam() = (3, 13)\n\t BalancedMultiCycle/6 # GetParam() = (3, 21)\n\t BalancedMultiCycle/7 # GetParam() = (3, 34)\n\t BalancedMultiCycle/8 # GetParam() = (3, 55)\n\t BalancedMultiCycle/9 # GetParam() = (3, 89)\n\t Unbalanced/0 # GetParam() = (3, 1)\n\t Unbalanced/1 # GetParam() = (3, 2)\n\t Unbalanced/2 # GetParam() = (3, 3)\n\t Unbalanced/3 # GetParam() = (3, 5)\n\t Unbalanced/4 # GetParam() = (3, 8)\n\t Unbalanced/5 # GetParam() = (3, 13)\n\t Unbalanced/6 # GetParam() = (3, 21)\n\t Unbalanced/7 # GetParam() = (3, 34)\n\t Unbalanced/8 # GetParam() = (3, 55)\n\t Unbalanced/9 # GetParam() = (3, 89)\n\n[1] https://lists.libcamera.org/pipermail/libcamera-devel/2021-April/019358.html\n\nNícolas F. R. A. Prado (2):\n lc-compliance: Make SimpleCapture::stop() idempotent\n lc-compliance: Refactor using Googletest\n\n src/lc-compliance/main.cpp | 60 +++++------\n src/lc-compliance/meson.build | 3 +\n src/lc-compliance/simple_capture.cpp | 85 ++++++----------\n src/lc-compliance/simple_capture.h | 8 +-\n src/lc-compliance/single_stream.cpp | 142 ++++++++++++++-------------\n 5 files changed, 137 insertions(+), 161 deletions(-)" }