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

Xiang, Haihao haihao.xiang at intel.com
Wed Sep 7 02:42:14 UTC 2016


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

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.freed
> > 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/google
> > > 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
> > > 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: make.log
Type: text/x-log
Size: 8240 bytes
Desc: make.log
URL: <https://lists.freedesktop.org/archives/libva/attachments/20160907/fde1ac96/attachment-0001.bin>


More information about the Libva mailing list