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

Sean V Kelley seanvk at posteo.de
Wed Sep 7 19:15:44 UTC 2016


> On Sep 7, 2016, at 10:35 AM, Sean V Kelley <seanvk at posteo.de> wrote:
> 
> On Wed, 2016-09-07 at 10:13 -0700, Sean V Kelley wrote:
>> On Wed, 2016-09-07 at 02:42 +0000, Xiang, Haihao wrote:
>>> 
>>> Hi Artie,
>>> 
>>> First I applied your patches to the latest master branch, then
>>> build
>>> the library and run test with the following steps:
>>> 
>>> 1. ./autogen.sh --enable-tests --prefix=/usr --
>>> libdir=/usr/lib/x86_64-
>>> linux-gnu/
>>> 
>>> 2.  make ; sudo make install
>>> 
>>> 3. cd test
>>> 
>>> 4. ./test_i965_drv_video
>>> 
>>> 5. make check-local
>>> 
>>> step 4 is OK, but there is segmentation fault in step 5.
>>> 
>>> hw:
>>> Haswell
>>> 
>>> sw:
>>> I am using Ubuntu 14.04.3 LTS but installed some packages from
>>> source
>>> code:
>>> libdrm 2.4.68
>>> linux kernel 4.5.0
>>> libva: master
>>> libva-intel-driver: master+your patches
>> 
>> 
>> Works for me.
>> 
>> ArchLinux
>> libdrm 2.4.70-1
>> linux kernel 4.7.2-1
>> Libva: matster
>> Libva-intel-driver: master + gtest patch series
>> 
>> Thanks,
>> 
>> Sean
> 
> 
> Haihao,
> 
> This sounds distro specific to me...No issue seen with Fedora or Arch.
>  Also, test with Ubuntu 16.04 LTS if you are using Ubuntu.
> 
> Sean


Works fine for me with Ubuntu 16.04.1 LTS

hw: Haswell

Ubuntu 16.04.1

Sean



> 
> 
>> 
>>> 
>>> 
>>> Thanks
>>> Haihao
>>> 
>>> 
>>> 
>>> 
>>>> 
>>>> 
>>>> Hi Haihao,
>>>> 
>>>> I am unable to duplicate your segmentation fault.  Could you
>>>> provide
>>>> more output and details on your setup?
>>>> 
>>>> Thanks,
>>>> 
>>>> ----
>>>> U. Artie
>>>> 
>>>>> 
>>>>> 
>>>>> -----Original Message-----
>>>>> From: Xiang, Haihao
>>>>> Sent: Friday, September 02, 2016 1:40 AM
>>>>> To: Eoff, Ullysses A <ullysses.a.eoff at intel.com>; libva at lists.f
>>>>> re
>>>>> ed
>>>>> esktop.org
>>>>> Subject: Re: [Libva] [PATCH RFC intel-driver 00/11] Automated
>>>>> (Unit) Test Suite
>>>>> 
>>>>> 
>>>>> Thanks for the patches to integrate gtest framework into libva-
>>>>> intel-
>>>>> driver. test_i965_drv_video works well for me, but I got
>>>>> segmentation
>>>>> fault when I ran 'make check-local', could you have a look at
>>>>> this
>>>>> issue?
>>>>> 
>>>>> libva info: Found init function __vaDriverInit_0_39
>>>>> libva info: va_openDriver() returns 0
>>>>> make: *** [check-local] Segmentation fault
>>>>> 
>>>>> Thanks
>>>>> Haihao
>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 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/go
>>>>>> og
>>>>>> le
>>>>>> test
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 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
>> _______________________________________________
>> Libva mailing list
>> Libva at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/libva
> _______________________________________________
> 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/20160907/5728f0bf/attachment-0001.sig>


More information about the Libva mailing list