[moblab] Add suites for power dev tests

The following tests will be runnable from moblab run suite
page, and their results will show up in CPCon
power_LoadTest
power_LoadTest.fast
power_LoadTest.1hour
power_Idle

BUG=b:73011574
TEST=Ran new test suites and verified they spawned in
autotest and the results ran through the pipeline to
CPCon.

Change-Id: I66da88c910ecb32c8bc4409e90e1bb267f7dbfc0
Reviewed-on: https://chromium-review.googlesource.com/957659
Commit-Ready: Matt Mallett <mattmallett@chromium.org>
Tested-by: Matt Mallett <mattmallett@chromium.org>
Reviewed-by: Keith Haddow <haddowk@chromium.org>
(cherry picked from commit 9591b6d327fec599ea05e2789c97657f1a7cdb67)
Reviewed-on: https://chromium-review.googlesource.com/963541
Commit-Queue: Matt Mallett <mattmallett@chromium.org>
Trybot-Ready: Matt Mallett <mattmallett@chromium.org>
diff --git a/client/site_tests/power_Idle/control b/client/site_tests/power_Idle/control
index 0f070b4..ed85e29 100644
--- a/client/site_tests/power_Idle/control
+++ b/client/site_tests/power_Idle/control
@@ -10,7 +10,7 @@
 TEST_CATEGORY = "Benchmark"
 TEST_CLASS = "power"
 TEST_TYPE = "client"
-ATTRIBUTES = "suite:bvt-perbuild"
+ATTRIBUTES = "suite:bvt-perbuild, suite:power_idle"
 
 DOC = """
 This test records power related statistics while the system is idling.
diff --git a/client/site_tests/power_LoadTest/control b/client/site_tests/power_LoadTest/control
index deba702..6cbf8e1 100755
--- a/client/site_tests/power_LoadTest/control
+++ b/client/site_tests/power_LoadTest/control
@@ -10,6 +10,7 @@
 TEST_CATEGORY = "Benchmark"
 TEST_CLASS = "power"
 TEST_TYPE = "client"
+ATTRIBUTES = "suite:power_loadtest"
 
 DOC = """
 This test runs a load test consisting of cycling though web pages, playing
diff --git a/client/site_tests/power_LoadTest/control.1hour b/client/site_tests/power_LoadTest/control.1hour
index 41c6f06..476b906 100644
--- a/client/site_tests/power_LoadTest/control.1hour
+++ b/client/site_tests/power_LoadTest/control.1hour
@@ -10,6 +10,7 @@
 TEST_CATEGORY = "Benchmark"
 TEST_CLASS = "power"
 TEST_TYPE = "client"
+ATTRIBUTES = "suite:power_loadtest_1hour"
 
 DOC = """
 This test runs a load test consisting of cycling though web pages, playing
diff --git a/client/site_tests/power_LoadTest/control.fast b/client/site_tests/power_LoadTest/control.fast
index e9ccc82..8d2bc44 100644
--- a/client/site_tests/power_LoadTest/control.fast
+++ b/client/site_tests/power_LoadTest/control.fast
@@ -10,7 +10,7 @@
 TEST_CATEGORY = "Benchmark"
 TEST_CLASS = "power"
 TEST_TYPE = "client"
-ATTRIBUTES = "suite:power_build"
+ATTRIBUTES = "suite:power_build, suite:power_loadtest_fast"
 
 DOC = """
 This test runs a load test consisting of cycling though web pages, playing
diff --git a/frontend/client/src/autotest/moblab/SuiteRunnerView.java b/frontend/client/src/autotest/moblab/SuiteRunnerView.java
index a915c88..824e31e 100644
--- a/frontend/client/src/autotest/moblab/SuiteRunnerView.java
+++ b/frontend/client/src/autotest/moblab/SuiteRunnerView.java
@@ -50,8 +50,9 @@
   private HashMap<String, String> modelBoardMap;
 
   private static List<String> suiteNames = Arrays.asList("bvt-cq",
-      "bvt-inline", "cts_N", "gts",
-      "hardware_storagequal", "hardware_memoryqual", "usb-camera");
+      "bvt-inline", "cts_N", "gts", "hardware_storagequal",
+      "hardware_memoryqual", "usb-camera","power_loadtest_fast",
+      "power_loadtest_1hour", "power_loadtest", "power_idle");
 
   private static String TEST_LIST_PLACEHOLDER = "arm.CtsAnimationTestCases, x86.CtsDeqpTestCases";
 
diff --git a/site_utils/attribute_whitelist.txt b/site_utils/attribute_whitelist.txt
index d1f3071..54bcca6 100644
--- a/site_utils/attribute_whitelist.txt
+++ b/site_utils/attribute_whitelist.txt
@@ -152,6 +152,10 @@
 suite:policy
 suite:power_build
 suite:power_daily
+suite:power_idle
+suite:power_loadtest
+suite:power_loadtest_1hour
+suite:power_loadtest_fast
 suite:power_requirements
 suite:powerplay
 suite:push_to_prod
diff --git a/test_suites/control.power_idle b/test_suites/control.power_idle
new file mode 100644
index 0000000..b6dce8d
--- /dev/null
+++ b/test_suites/control.power_idle
@@ -0,0 +1,26 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = "Chrome OS Team"
+NAME = "power_idle"
+PURPOSE = "Measure power usage when system is idle."
+
+TIME = "SHORT"
+TEST_CATEGORY = "General"
+TEST_CLASS = "suite"
+TEST_TYPE = "Server"
+
+DOC = """
+This test records power related statistics while the system is idling.
+"""
+
+import common
+from autotest_lib.server.cros import provision
+from autotest_lib.server.cros.dynamic_suite import dynamic_suite
+
+args_dict['add_experimental'] = True
+args_dict['name'] = NAME
+args_dict['job'] = job
+
+dynamic_suite.reimage_and_run(**args_dict)
diff --git a/test_suites/control.power_loadtest b/test_suites/control.power_loadtest
new file mode 100644
index 0000000..3597870
--- /dev/null
+++ b/test_suites/control.power_loadtest
@@ -0,0 +1,27 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = "Chrome OS Team"
+NAME = "power_loadtest"
+PURPOSE = "Power load testing."
+
+TIME = "LONG"
+TEST_CATEGORY = "General"
+TEST_CLASS = "suite"
+TEST_TYPE = "Server"
+
+DOC = """
+This test runs a load test consisting of cycling though web pages, playing
+videos, etc. and measures battery power draw.
+"""
+
+import common
+from autotest_lib.server.cros import provision
+from autotest_lib.server.cros.dynamic_suite import dynamic_suite
+
+args_dict['add_experimental'] = True
+args_dict['name'] = NAME
+args_dict['job'] = job
+
+dynamic_suite.reimage_and_run(**args_dict)
diff --git a/test_suites/control.power_loadtest_1hour b/test_suites/control.power_loadtest_1hour
new file mode 100644
index 0000000..f77d6c3
--- /dev/null
+++ b/test_suites/control.power_loadtest_1hour
@@ -0,0 +1,27 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = "Chrome OS Team"
+NAME = "power_loadtest_1hour"
+PURPOSE = "Power load testing."
+
+TIME = "LONG"
+TEST_CATEGORY = "General"
+TEST_CLASS = "suite"
+TEST_TYPE = "Server"
+
+DOC = """
+This test runs a load test consisting of cycling though web pages, playing
+videos, etc. and measures battery power draw.
+"""
+
+import common
+from autotest_lib.server.cros import provision
+from autotest_lib.server.cros.dynamic_suite import dynamic_suite
+
+args_dict['add_experimental'] = True
+args_dict['name'] = NAME
+args_dict['job'] = job
+
+dynamic_suite.reimage_and_run(**args_dict)
diff --git a/test_suites/control.power_loadtest_fast b/test_suites/control.power_loadtest_fast
new file mode 100644
index 0000000..6db0421
--- /dev/null
+++ b/test_suites/control.power_loadtest_fast
@@ -0,0 +1,27 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = "Chrome OS Team"
+NAME = "power_loadtest_fast"
+PURPOSE = "Power load testing."
+
+TIME = "SHORT"
+TEST_CATEGORY = "General"
+TEST_CLASS = "suite"
+TEST_TYPE = "Server"
+
+DOC = """
+This test runs a load test consisting of cycling though web pages, playing
+videos, etc. and measures battery power draw.
+"""
+
+import common
+from autotest_lib.server.cros import provision
+from autotest_lib.server.cros.dynamic_suite import dynamic_suite
+
+args_dict['add_experimental'] = True
+args_dict['name'] = NAME
+args_dict['job'] = job
+
+dynamic_suite.reimage_and_run(**args_dict)