[Libva] [PATCH RFC intel-driver 00/11] Automated (Unit) Test Suite
Sean V Kelley
seanvk at posteo.de
Fri Sep 2 17:42:51 UTC 2016
Hi Yakui,
As I mentioned before to Haihao who asked the same question, the focus here is on driver unit testing. The intent is not to test Libva API. That is a separate area.
Gtest is intended for the driver as unit tests and a first step in getting CI in place. VA-API conformance is a separate project that we will be adding at a later date.
This is not meant to validate VA-API.
Thanks,
Sean
> On 1 MFómh 2016, at 19:52, Zhao Yakui <yakui.zhao at intel.com> wrote:
>
> On 09/02/2016 03:59 AM, U. Artie Eoff wrote:
>
> HI, Artie
>
> thanks for your patch set.
> It is great idea to add gtest test-suite, which is helpful to improve the code quality and avoid the regression.
>
> I have one main concern. Can we add it into the libva instead of driver? In such case it is helpful to test the behaviour of VAAPI.
>
> Thanks
> Yakui
>
>> The following patchset integrates the Google Test Framework
>> into the source tree. This test framework provides a rich
>> set of features like automatic test discovery, assertion macros,
>> test fixtures, structured console and/or xml test results, and more.
>> These kinds of features allow developers to spend more time
>> focusing on writing the tests rather than the test framework
>> itself. You can learn more about GTest here:
>>
>> <https://github.com/google/googletest/tree/release-1.8.0/googletest>
>>
>> The intention is to give developers a simple way to write and
>> execute [unit] tests for the vaapi-intel-driver. With an "integrated"
>> automated test suite/framework, developers are enabled to develop
>> tests that can exercise internal driver functions, features and
>> concepts. It also helps developers to identify regressions before
>> submitting new patches. All of which, hopefully, leads to an overall
>> higher quality driver.
>>
>> As part of this patch series, I have provided a driver test fixture
>> that can be used as a foundation for most test cases. I've also
>> developed several test cases that can be used as a reference for other
>> developers to get started on developing their own test cases.
>>
>> This patch series is not meant to address *every* need that we might
>> have to test the driver. Rather, it serves as a point to get us
>> started. As new tests are developed, I would expect that this test
>> suite will evolve to accommodate additional needs.
>>
>> One foreseeable addition is that, sooner than later, new tests will need
>> to determine if the hardware supports a tested driver feature or not
>> (e.g. JPEG encode, HEVC decode, ...) and return early if needed. I'm
>> thinking we can just move the HAS_* macros (i.e. HAS_JPEG_ENCODING,
>> HAS_HEVC_DECODING, ...) out of the src/i965_drv_video.c implementation
>> file and put them into the src/i965_drv_video.h header file. This will
>> allow tests to use the same macros that the driver uses, for example:
>>
>> TEST_F(JPEGEncodeTest, Simple)
>> {
>> struct i965_driver_data *i965(*this);
>> ASSERT_PTR(i965);
>> if (!HAS_JPEG_ENCODING(i965)) {
>> RecordProperty("skipped", true);
>> std::cout<< “[SKIPPED] “<< testname()<< “ unsupported”
>> return;
>> }
>>
>> // do jpeg encode test
>> }
>>
>> Does this seem reasonable enough? Are there other suggestions or
>> recommendations?
>>
>> Cheers.
>>
>> U. Artie Eoff (11):
>> test: add googletest release-1.8.0 source
>> toolchain: build gtest convenience library
>> test: add initial test_i965_drv_video target
>> i965: compile driver source as convenience library
>> test: link to i965 convenience library
>> test: add i965 test fixture
>> test: add an i965 initialize test
>> test: add some JPEG decode test cases
>> test: add some object_heap tests
>> test: add some chipset tests
>> test: add TESTING readme file
>>
>> Makefile.am | 5 +
>> README | 7 +-
>> TESTING | 147 +
>> configure.ac | 11 +-
>> src/Makefile.am | 17 +-
>> test/Makefile.am | 91 +
>> test/gtest/LICENSE | 28 +
>> test/gtest/README.md | 280 +
>> test/gtest/docs/AdvancedGuide.md | 2182 ++++++++
>> test/gtest/docs/DevGuide.md | 126 +
>> test/gtest/docs/Documentation.md | 14 +
>> test/gtest/docs/FAQ.md | 1087 ++++
>> test/gtest/docs/Primer.md | 502 ++
>> test/gtest/docs/PumpManual.md | 177 +
>> test/gtest/docs/Samples.md | 14 +
>> test/gtest/docs/XcodeGuide.md | 93 +
>> test/gtest/include/gtest/gtest-death-test.h | 294 ++
>> test/gtest/include/gtest/gtest-message.h | 250 +
>> test/gtest/include/gtest/gtest-param-test.h | 1444 ++++++
>> test/gtest/include/gtest/gtest-param-test.h.pump | 510 ++
>> test/gtest/include/gtest/gtest-printers.h | 993 ++++
>> test/gtest/include/gtest/gtest-spi.h | 232 +
>> test/gtest/include/gtest/gtest-test-part.h | 179 +
>> test/gtest/include/gtest/gtest-typed-test.h | 263 +
>> test/gtest/include/gtest/gtest.h | 2236 ++++++++
>> test/gtest/include/gtest/gtest_pred_impl.h | 358 ++
>> test/gtest/include/gtest/gtest_prod.h | 58 +
>> .../include/gtest/internal/custom/gtest-port.h | 69 +
>> .../include/gtest/internal/custom/gtest-printers.h | 42 +
>> test/gtest/include/gtest/internal/custom/gtest.h | 41 +
>> .../gtest/internal/gtest-death-test-internal.h | 319 ++
>> test/gtest/include/gtest/internal/gtest-filepath.h | 206 +
>> test/gtest/include/gtest/internal/gtest-internal.h | 1238 +++++
>> .../include/gtest/internal/gtest-linked_ptr.h | 243 +
>> .../gtest/internal/gtest-param-util-generated.h | 5146 +++++++++++++++++++
>> .../internal/gtest-param-util-generated.h.pump | 286 ++
>> .../include/gtest/internal/gtest-param-util.h | 731 +++
>> .../gtest/include/gtest/internal/gtest-port-arch.h | 93 +
>> test/gtest/include/gtest/internal/gtest-port.h | 2554 ++++++++++
>> test/gtest/include/gtest/internal/gtest-string.h | 167 +
>> test/gtest/include/gtest/internal/gtest-tuple.h | 1020 ++++
>> .../include/gtest/internal/gtest-tuple.h.pump | 347 ++
>> .../gtest/include/gtest/internal/gtest-type-util.h | 3331 ++++++++++++
>> .../include/gtest/internal/gtest-type-util.h.pump | 297 ++
>> test/gtest/src/gtest-all.cc | 48 +
>> test/gtest/src/gtest-death-test.cc | 1342 +++++
>> test/gtest/src/gtest-filepath.cc | 387 ++
>> test/gtest/src/gtest-internal-inl.h | 1183 +++++
>> test/gtest/src/gtest-port.cc | 1259 +++++
>> test/gtest/src/gtest-printers.cc | 373 ++
>> test/gtest/src/gtest-test-part.cc | 110 +
>> test/gtest/src/gtest-typed-test.cc | 118 +
>> test/gtest/src/gtest.cc | 5388 ++++++++++++++++++++
>> test/gtest/src/gtest_main.cc | 38 +
>> test/i965_chipset_test.cpp | 104 +
>> test/i965_initialize_test.cpp | 66 +
>> test/i965_internal_decl.h | 74 +
>> test/i965_jpeg_decode_test.cpp | 292 ++
>> test/i965_jpeg_test_data.h | 1085 ++++
>> test/i965_test_fixture.cpp | 223 +
>> test/i965_test_fixture.h | 237 +
>> test/object_heap_test.cpp | 248 +
>> test/test.h | 52 +
>> test/test_main.cpp | 32 +
>> 64 files changed, 40381 insertions(+), 6 deletions(-)
>> create mode 100644 TESTING
>> create mode 100644 test/Makefile.am
>> create mode 100644 test/gtest/LICENSE
>> create mode 100644 test/gtest/README.md
>> create mode 100644 test/gtest/docs/AdvancedGuide.md
>> create mode 100644 test/gtest/docs/DevGuide.md
>> create mode 100644 test/gtest/docs/Documentation.md
>> create mode 100644 test/gtest/docs/FAQ.md
>> create mode 100644 test/gtest/docs/Primer.md
>> create mode 100644 test/gtest/docs/PumpManual.md
>> create mode 100644 test/gtest/docs/Samples.md
>> create mode 100644 test/gtest/docs/XcodeGuide.md
>> create mode 100644 test/gtest/include/gtest/gtest-death-test.h
>> create mode 100644 test/gtest/include/gtest/gtest-message.h
>> create mode 100644 test/gtest/include/gtest/gtest-param-test.h
>> create mode 100644 test/gtest/include/gtest/gtest-param-test.h.pump
>> create mode 100644 test/gtest/include/gtest/gtest-printers.h
>> create mode 100644 test/gtest/include/gtest/gtest-spi.h
>> create mode 100644 test/gtest/include/gtest/gtest-test-part.h
>> create mode 100644 test/gtest/include/gtest/gtest-typed-test.h
>> create mode 100644 test/gtest/include/gtest/gtest.h
>> create mode 100644 test/gtest/include/gtest/gtest_pred_impl.h
>> create mode 100644 test/gtest/include/gtest/gtest_prod.h
>> create mode 100644 test/gtest/include/gtest/internal/custom/gtest-port.h
>> create mode 100644 test/gtest/include/gtest/internal/custom/gtest-printers.h
>> create mode 100644 test/gtest/include/gtest/internal/custom/gtest.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-death-test-internal.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-filepath.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-internal.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-linked_ptr.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-param-util-generated.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
>> create mode 100644 test/gtest/include/gtest/internal/gtest-param-util.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-port-arch.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-port.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-string.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-tuple.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-tuple.h.pump
>> create mode 100644 test/gtest/include/gtest/internal/gtest-type-util.h
>> create mode 100644 test/gtest/include/gtest/internal/gtest-type-util.h.pump
>> create mode 100644 test/gtest/src/gtest-all.cc
>> create mode 100644 test/gtest/src/gtest-death-test.cc
>> create mode 100644 test/gtest/src/gtest-filepath.cc
>> create mode 100644 test/gtest/src/gtest-internal-inl.h
>> create mode 100644 test/gtest/src/gtest-port.cc
>> create mode 100644 test/gtest/src/gtest-printers.cc
>> create mode 100644 test/gtest/src/gtest-test-part.cc
>> create mode 100644 test/gtest/src/gtest-typed-test.cc
>> create mode 100644 test/gtest/src/gtest.cc
>> create mode 100644 test/gtest/src/gtest_main.cc
>> create mode 100644 test/i965_chipset_test.cpp
>> create mode 100644 test/i965_initialize_test.cpp
>> create mode 100644 test/i965_internal_decl.h
>> create mode 100644 test/i965_jpeg_decode_test.cpp
>> create mode 100644 test/i965_jpeg_test_data.h
>> create mode 100644 test/i965_test_fixture.cpp
>> create mode 100644 test/i965_test_fixture.h
>> create mode 100644 test/object_heap_test.cpp
>> create mode 100644 test/test.h
>> create mode 100644 test/test_main.cpp
>>
>
> _______________________________________________
> Libva mailing list
> Libva at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libva
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <https://lists.freedesktop.org/archives/libva/attachments/20160902/29c44186/attachment.sig>
More information about the Libva
mailing list