[Libva] [PATCH RFC intel-driver 00/11] Automated (Unit) Test Suite

Zhao, Yakui yakui.zhao at intel.com
Fri Sep 2 03:50:04 UTC 2016


Thanks for the explanation.
Now I understand the intent. 

Thanks
    Yakui

-----Original Message-----
From: Sean V Kelley [mailto:svkelley at posteo.de] 
Sent: Friday, September 2, 2016 11:45 AM
To: Zhao, Yakui <yakui.zhao at intel.com>; Haitao Huang <hthuang05 at gmail.com>
Cc: Eoff, Ullysses A <ullysses.a.eoff at intel.com>; libva at lists.freedesktop.org
Subject: Re: [Libva] [PATCH RFC intel-driver 00/11] Automated (Unit) Test Suite

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



More information about the Libva mailing list