[Intel-gfx] [PATCH i-g-t 3/3] tests/kms_force_connector: Include in BAT set

Daniel Vetter daniel at ffwll.ch
Tue Dec 1 05:39:58 PST 2015


On Tue, Dec 01, 2015 at 10:33:22AM +0000, Thomas Wood wrote:
> On 1 December 2015 at 10:24, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> > Forcing connector state is a basic piece of our test infrastructure
> > that we use in all the kms_ tests. It allows us to run tests even if
> > no outputs are connected.
> >
> > They're also really fast, so perfect candidates for inclusion into the
> > BAT set.
> >
> > Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> > ---
> >  tests/.gitignore                  |   2 +-
> >  tests/Makefile.sources            |   2 +-
> >  tests/kms_force_connector.c       | 189 --------------------------------------
> >  tests/kms_force_connector_basic.c | 189 ++++++++++++++++++++++++++++++++++++++
> 
> Would it be worth renaming the subtests instead, in case there are
> future tests that would make sense in kms_force_connector but that
> shouldn't be included in the BAT list?

If we in the future can inject hdmi screens (or maybe even DP) I think
that should still stay a BAT testcase since it's basic test
infrastructure. Same reason for why all the pipe CRC and sink CRC tests
are in BAT in their entirety - if any of that fails large amounts of
testcase results will be highly suspect. That's why I opted to rename the
test binary, not the subtests.
-Daniel

> 
> 
> >  4 files changed, 191 insertions(+), 191 deletions(-)
> >  delete mode 100644 tests/kms_force_connector.c
> >  create mode 100644 tests/kms_force_connector_basic.c
> >
> > diff --git a/tests/.gitignore b/tests/.gitignore
> > index 43d63d3abac9..900c681caec9 100644
> > --- a/tests/.gitignore
> > +++ b/tests/.gitignore
> > @@ -138,7 +138,7 @@ kms_fence_pin_leak
> >  kms_flip
> >  kms_flip_event_leak
> >  kms_flip_tiling
> > -kms_force_connector
> > +kms_force_connector_basic
> >  kms_frontbuffer_tracking
> >  kms_legacy_colorkey
> >  kms_mmio_vs_cs_flip
> > diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> > index b70bca060253..63de439d8717 100644
> > --- a/tests/Makefile.sources
> > +++ b/tests/Makefile.sources
> > @@ -163,7 +163,7 @@ TESTS_progs = \
> >         gen7_forcewake_mt \
> >         kms_3d \
> >         kms_fence_pin_leak \
> > -       kms_force_connector \
> > +       kms_force_connector_basic \
> >         kms_pwrite_crc \
> >         kms_sink_crc_basic \
> >         prime_udl \
> > diff --git a/tests/kms_force_connector.c b/tests/kms_force_connector.c
> > deleted file mode 100644
> > index 637f625a852f..000000000000
> > --- a/tests/kms_force_connector.c
> > +++ /dev/null
> > @@ -1,189 +0,0 @@
> > -/*
> > - * Copyright © 2014 Intel Corporation
> > - *
> > - * Permission is hereby granted, free of charge, to any person obtaining a
> > - * copy of this software and associated documentation files (the "Software"),
> > - * to deal in the Software without restriction, including without limitation
> > - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > - * and/or sell copies of the Software, and to permit persons to whom the
> > - * Software is furnished to do so, subject to the following conditions:
> > - *
> > - * The above copyright notice and this permission notice (including the next
> > - * paragraph) shall be included in all copies or substantial portions of the
> > - * Software.
> > - *
> > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > - * IN THE SOFTWARE.
> > - *
> > - */
> > -
> > -#include "igt.h"
> > -
> > -IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
> > -                    " correctly.");
> > -
> > -#define CHECK_MODE(m, h, w, r) \
> > -       igt_assert_eq(m.hdisplay, h); igt_assert_eq(m.vdisplay, w); \
> > -       igt_assert_eq(m.vrefresh, r);
> > -
> > -static void reset_connectors(void)
> > -{
> > -       int drm_fd = 0;
> > -       drmModeRes *res;
> > -       drmModeConnector *connector = NULL;
> > -
> > -       drm_fd = drm_open_driver_master(DRIVER_INTEL);
> > -       res = drmModeGetResources(drm_fd);
> > -
> > -       for (int i = 0; i < res->count_connectors; i++) {
> > -
> > -               connector = drmModeGetConnectorCurrent(drm_fd,
> > -                                                      res->connectors[i]);
> > -
> > -               kmstest_force_connector(drm_fd, connector,
> > -                                       FORCE_CONNECTOR_UNSPECIFIED);
> > -
> > -               kmstest_force_edid(drm_fd, connector, NULL, 0);
> > -
> > -               drmModeFreeConnector(connector);
> > -       }
> > -}
> > -
> > -static int opt_handler(int opt, int opt_index, void *data)
> > -{
> > -       switch (opt) {
> > -       case 'r':
> > -               reset_connectors();
> > -               exit(0);
> > -               break;
> > -       }
> > -
> > -       return 0;
> > -}
> > -
> > -int main(int argc, char **argv)
> > -{
> > -       /* force the VGA output and test that it worked */
> > -       int drm_fd = 0;
> > -       drmModeRes *res;
> > -       drmModeConnector *vga_connector = NULL, *temp;
> > -       int start_n_modes, start_connection;
> > -       struct option long_opts[] = {
> > -               {"reset", 0, 0, 'r'},
> > -               {0, 0, 0, 0}
> > -       };
> > -       const char *help_str =
> > -              "  --reset\t\tReset all connector force states and edid.\n";
> > -
> > -       igt_subtest_init_parse_opts(&argc, argv, "", long_opts, help_str,
> > -                                   opt_handler, NULL);
> > -
> > -       igt_fixture {
> > -               drm_fd = drm_open_driver_master(DRIVER_INTEL);
> > -               res = drmModeGetResources(drm_fd);
> > -
> > -               /* find the vga connector */
> > -               for (int i = 0; i < res->count_connectors; i++) {
> > -
> > -                       vga_connector = drmModeGetConnectorCurrent(drm_fd,
> > -                                                                  res->connectors[i]);
> > -
> > -                       if (vga_connector->connector_type == DRM_MODE_CONNECTOR_VGA) {
> > -                               start_n_modes = vga_connector->count_modes;
> > -                               start_connection = vga_connector->connection;
> > -                               break;
> > -                       }
> > -
> > -                       drmModeFreeConnector(vga_connector);
> > -
> > -                       vga_connector = NULL;
> > -               }
> > -
> > -               igt_require(vga_connector);
> > -               igt_skip_on(vga_connector->connection == DRM_MODE_CONNECTED);
> > -       }
> > -
> > -       igt_subtest("force-connector-state") {
> > -               igt_display_t display;
> > -
> > -               /* force the connector on and check the reported values */
> > -               kmstest_force_connector(drm_fd, vga_connector, FORCE_CONNECTOR_ON);
> > -               temp = drmModeGetConnectorCurrent(drm_fd,
> > -                                                 vga_connector->connector_id);
> > -               igt_assert_eq(temp->connection, DRM_MODE_CONNECTED);
> > -               igt_assert_lt(0, temp->count_modes);
> > -               drmModeFreeConnector(temp);
> > -
> > -               /* attempt to use the display */
> > -               kmstest_set_vt_graphics_mode();
> > -               igt_display_init(&display, drm_fd);
> > -               igt_display_commit(&display);
> > -               igt_display_fini(&display);
> > -
> > -
> > -               /* force the connector off */
> > -               kmstest_force_connector(drm_fd, vga_connector,
> > -                                       FORCE_CONNECTOR_OFF);
> > -               temp = drmModeGetConnectorCurrent(drm_fd,
> > -                                                 vga_connector->connector_id);
> > -               igt_assert_eq(temp->connection, DRM_MODE_DISCONNECTED);
> > -               igt_assert_eq(0, temp->count_modes);
> > -               drmModeFreeConnector(temp);
> > -
> > -               /* check that the previous state is restored */
> > -               kmstest_force_connector(drm_fd, vga_connector,
> > -                                       FORCE_CONNECTOR_UNSPECIFIED);
> > -               temp = drmModeGetConnectorCurrent(drm_fd,
> > -                                                 vga_connector->connector_id);
> > -               igt_assert_eq(temp->connection, start_connection);
> > -               drmModeFreeConnector(temp);
> > -       }
> > -
> > -       igt_subtest("force-edid") {
> > -               kmstest_force_connector(drm_fd, vga_connector,
> > -                                       FORCE_CONNECTOR_ON);
> > -               temp = drmModeGetConnectorCurrent(drm_fd,
> > -                                                 vga_connector->connector_id);
> > -               drmModeFreeConnector(temp);
> > -
> > -               /* test edid forcing */
> > -               kmstest_force_edid(drm_fd, vga_connector,
> > -                                  igt_kms_get_base_edid(), EDID_LENGTH);
> > -               temp = drmModeGetConnectorCurrent(drm_fd,
> > -                                                 vga_connector->connector_id);
> > -
> > -               igt_debug("num_conn %i\n", temp->count_modes);
> > -
> > -               CHECK_MODE(temp->modes[0], 1920, 1080, 60);
> > -               /* Don't check non-preferred modes to avoid to tight coupling
> > -                * with the in-kernel EDID parser. */
> > -
> > -               drmModeFreeConnector(temp);
> > -
> > -               /* remove edid */
> > -               kmstest_force_edid(drm_fd, vga_connector, NULL, 0);
> > -               kmstest_force_connector(drm_fd, vga_connector,
> > -                                       FORCE_CONNECTOR_UNSPECIFIED);
> > -               temp = drmModeGetConnectorCurrent(drm_fd,
> > -                                                 vga_connector->connector_id);
> > -               /* the connector should now have the same number of modes that
> > -                * it started with */
> > -               igt_assert_eq(temp->count_modes, start_n_modes);
> > -               drmModeFreeConnector(temp);
> > -
> > -       }
> > -
> > -       igt_fixture {
> > -               drmModeFreeConnector(vga_connector);
> > -               close(drm_fd);
> > -
> > -               reset_connectors();
> > -       }
> > -
> > -       igt_exit();
> > -}
> > diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
> > new file mode 100644
> > index 000000000000..637f625a852f
> > --- /dev/null
> > +++ b/tests/kms_force_connector_basic.c
> > @@ -0,0 +1,189 @@
> > +/*
> > + * Copyright © 2014 Intel Corporation
> > + *
> > + * Permission is hereby granted, free of charge, to any person obtaining a
> > + * copy of this software and associated documentation files (the "Software"),
> > + * to deal in the Software without restriction, including without limitation
> > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > + * and/or sell copies of the Software, and to permit persons to whom the
> > + * Software is furnished to do so, subject to the following conditions:
> > + *
> > + * The above copyright notice and this permission notice (including the next
> > + * paragraph) shall be included in all copies or substantial portions of the
> > + * Software.
> > + *
> > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > + * IN THE SOFTWARE.
> > + *
> > + */
> > +
> > +#include "igt.h"
> > +
> > +IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
> > +                    " correctly.");
> > +
> > +#define CHECK_MODE(m, h, w, r) \
> > +       igt_assert_eq(m.hdisplay, h); igt_assert_eq(m.vdisplay, w); \
> > +       igt_assert_eq(m.vrefresh, r);
> > +
> > +static void reset_connectors(void)
> > +{
> > +       int drm_fd = 0;
> > +       drmModeRes *res;
> > +       drmModeConnector *connector = NULL;
> > +
> > +       drm_fd = drm_open_driver_master(DRIVER_INTEL);
> > +       res = drmModeGetResources(drm_fd);
> > +
> > +       for (int i = 0; i < res->count_connectors; i++) {
> > +
> > +               connector = drmModeGetConnectorCurrent(drm_fd,
> > +                                                      res->connectors[i]);
> > +
> > +               kmstest_force_connector(drm_fd, connector,
> > +                                       FORCE_CONNECTOR_UNSPECIFIED);
> > +
> > +               kmstest_force_edid(drm_fd, connector, NULL, 0);
> > +
> > +               drmModeFreeConnector(connector);
> > +       }
> > +}
> > +
> > +static int opt_handler(int opt, int opt_index, void *data)
> > +{
> > +       switch (opt) {
> > +       case 'r':
> > +               reset_connectors();
> > +               exit(0);
> > +               break;
> > +       }
> > +
> > +       return 0;
> > +}
> > +
> > +int main(int argc, char **argv)
> > +{
> > +       /* force the VGA output and test that it worked */
> > +       int drm_fd = 0;
> > +       drmModeRes *res;
> > +       drmModeConnector *vga_connector = NULL, *temp;
> > +       int start_n_modes, start_connection;
> > +       struct option long_opts[] = {
> > +               {"reset", 0, 0, 'r'},
> > +               {0, 0, 0, 0}
> > +       };
> > +       const char *help_str =
> > +              "  --reset\t\tReset all connector force states and edid.\n";
> > +
> > +       igt_subtest_init_parse_opts(&argc, argv, "", long_opts, help_str,
> > +                                   opt_handler, NULL);
> > +
> > +       igt_fixture {
> > +               drm_fd = drm_open_driver_master(DRIVER_INTEL);
> > +               res = drmModeGetResources(drm_fd);
> > +
> > +               /* find the vga connector */
> > +               for (int i = 0; i < res->count_connectors; i++) {
> > +
> > +                       vga_connector = drmModeGetConnectorCurrent(drm_fd,
> > +                                                                  res->connectors[i]);
> > +
> > +                       if (vga_connector->connector_type == DRM_MODE_CONNECTOR_VGA) {
> > +                               start_n_modes = vga_connector->count_modes;
> > +                               start_connection = vga_connector->connection;
> > +                               break;
> > +                       }
> > +
> > +                       drmModeFreeConnector(vga_connector);
> > +
> > +                       vga_connector = NULL;
> > +               }
> > +
> > +               igt_require(vga_connector);
> > +               igt_skip_on(vga_connector->connection == DRM_MODE_CONNECTED);
> > +       }
> > +
> > +       igt_subtest("force-connector-state") {
> > +               igt_display_t display;
> > +
> > +               /* force the connector on and check the reported values */
> > +               kmstest_force_connector(drm_fd, vga_connector, FORCE_CONNECTOR_ON);
> > +               temp = drmModeGetConnectorCurrent(drm_fd,
> > +                                                 vga_connector->connector_id);
> > +               igt_assert_eq(temp->connection, DRM_MODE_CONNECTED);
> > +               igt_assert_lt(0, temp->count_modes);
> > +               drmModeFreeConnector(temp);
> > +
> > +               /* attempt to use the display */
> > +               kmstest_set_vt_graphics_mode();
> > +               igt_display_init(&display, drm_fd);
> > +               igt_display_commit(&display);
> > +               igt_display_fini(&display);
> > +
> > +
> > +               /* force the connector off */
> > +               kmstest_force_connector(drm_fd, vga_connector,
> > +                                       FORCE_CONNECTOR_OFF);
> > +               temp = drmModeGetConnectorCurrent(drm_fd,
> > +                                                 vga_connector->connector_id);
> > +               igt_assert_eq(temp->connection, DRM_MODE_DISCONNECTED);
> > +               igt_assert_eq(0, temp->count_modes);
> > +               drmModeFreeConnector(temp);
> > +
> > +               /* check that the previous state is restored */
> > +               kmstest_force_connector(drm_fd, vga_connector,
> > +                                       FORCE_CONNECTOR_UNSPECIFIED);
> > +               temp = drmModeGetConnectorCurrent(drm_fd,
> > +                                                 vga_connector->connector_id);
> > +               igt_assert_eq(temp->connection, start_connection);
> > +               drmModeFreeConnector(temp);
> > +       }
> > +
> > +       igt_subtest("force-edid") {
> > +               kmstest_force_connector(drm_fd, vga_connector,
> > +                                       FORCE_CONNECTOR_ON);
> > +               temp = drmModeGetConnectorCurrent(drm_fd,
> > +                                                 vga_connector->connector_id);
> > +               drmModeFreeConnector(temp);
> > +
> > +               /* test edid forcing */
> > +               kmstest_force_edid(drm_fd, vga_connector,
> > +                                  igt_kms_get_base_edid(), EDID_LENGTH);
> > +               temp = drmModeGetConnectorCurrent(drm_fd,
> > +                                                 vga_connector->connector_id);
> > +
> > +               igt_debug("num_conn %i\n", temp->count_modes);
> > +
> > +               CHECK_MODE(temp->modes[0], 1920, 1080, 60);
> > +               /* Don't check non-preferred modes to avoid to tight coupling
> > +                * with the in-kernel EDID parser. */
> > +
> > +               drmModeFreeConnector(temp);
> > +
> > +               /* remove edid */
> > +               kmstest_force_edid(drm_fd, vga_connector, NULL, 0);
> > +               kmstest_force_connector(drm_fd, vga_connector,
> > +                                       FORCE_CONNECTOR_UNSPECIFIED);
> > +               temp = drmModeGetConnectorCurrent(drm_fd,
> > +                                                 vga_connector->connector_id);
> > +               /* the connector should now have the same number of modes that
> > +                * it started with */
> > +               igt_assert_eq(temp->count_modes, start_n_modes);
> > +               drmModeFreeConnector(temp);
> > +
> > +       }
> > +
> > +       igt_fixture {
> > +               drmModeFreeConnector(vga_connector);
> > +               close(drm_fd);
> > +
> > +               reset_connectors();
> > +       }
> > +
> > +       igt_exit();
> > +}
> > --
> > 2.1.0
> >
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> >

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list