tests/pm_pc8: add "stay" mode
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Wed, 26 Feb 2014 14:12:28 +0000 (11:12 -0300)
committerPaulo Zanoni <paulo.r.zanoni@intel.com>
Wed, 26 Feb 2014 22:14:56 +0000 (19:14 -0300)
I used to have a binary that would just disable all the screens - so
we can enter PC8/runtime PM - and then sleep forever. I used this
binary many times while debugging PC8 and runtime PM, and I also sent
the binary to many people so they would be able to test these things
without X running.

Since pm_pc8 already implements everything that the separate binary
needs, and it even has some additional code to try to configure the
environment to actually reach PC8, it's easier to just ask people to
run "sudo ./pm_pc8 --stay" instead of sending them a file, asking them
to compile it, setup the environment, and then run it.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
tests/pm_pc8.c

index 54d04b1..b8133e8 100644 (file)
@@ -1435,9 +1435,19 @@ static void pci_d3_state_subtest(void)
        igt_assert(!device_in_pci_d3());
 }
 
+static void stay_subtest(void)
+{
+       disable_all_screens(&ms_data);
+       igt_assert(wait_for_suspended());
+
+       while (1)
+               sleep(600);
+}
+
 int main(int argc, char *argv[])
 {
        int rounds = 50;
+       bool stay = false;
 
        igt_subtest_init(argc, argv);
 
@@ -1447,12 +1457,22 @@ int main(int argc, char *argv[])
        if (argc > 1 && strcmp(argv[1], "--quick") == 0)
                rounds = 10;
 
+       /* The --stay option enables a mode where we disable all the screens,
+        * then stay like that, runtime suspended. This mode is useful for
+        * running manual tests while debugging. */
+       if (argc > 1 && strcmp(argv[1], "--stay") == 0)
+               stay = true;
+
        /* Skip instead of failing in case the machine is not prepared to reach
         * PC8+. We don't want bug reports from cases where the machine is just
         * not properly configured. */
        igt_fixture
                setup_environment();
 
+       if (stay)
+               igt_subtest("stay")
+                       stay_subtest();
+
        /* Essential things */
        igt_subtest("rte")
                basic_subtest();