OSDN Git Service

Perfprofd: Move Sleep to Config
authorAndreas Gampe <agampe@google.com>
Thu, 21 Dec 2017 18:26:36 +0000 (10:26 -0800)
committerAndreas Gampe <agampe@google.com>
Fri, 22 Dec 2017 23:33:28 +0000 (15:33 -0800)
Move sleep call to Config to be able to factor it out and change behavior
easier (e.g., wakeup without SIGHUP).

Test: m
Change-Id: I94f54ffefd9d2688ed3cffb4a99c4e75b58007d8

perfprofd/config.h
perfprofd/perfprofdcore.cc
perfprofd/perfprofdmain.cc
perfprofd/perfprofdutils.h
perfprofd/tests/perfprofd_test.cc
perfprofd/tests/perfprofdmockutils.cc

index 2512faa..d712db0 100644 (file)
@@ -85,6 +85,9 @@ struct Config {
   bool collect_charging_state = true;
   bool collect_booting = true;
   bool collect_camera_active = false;
+
+  // Sleep for the given number of seconds.
+  virtual void Sleep(size_t seconds) = 0;
 };
 
 #endif  // SYSTEM_EXTRAS_PERFPROFD_CONFIG_H_
index 87eb74c..e86db8e 100644 (file)
@@ -900,7 +900,7 @@ int perfprofd_main(int argc, char** argv, Config* config)
     unsigned sleep_after_collect = 0;
     determine_before_after(sleep_before_collect, sleep_after_collect,
                            config->collection_interval_in_s);
-    perfprofd_sleep(sleep_before_collect);
+    config->Sleep(sleep_before_collect);
 
     // Reread config file -- the uploader may have rewritten it as a result
     // of a gservices change
@@ -926,7 +926,7 @@ int perfprofd_main(int argc, char** argv, Config* config)
         W_ALOGI("profile collection complete");
       }
     }
-    perfprofd_sleep(sleep_after_collect);
+    config->Sleep(sleep_after_collect);
     iterations += 1;
   }
 
index bb1fb3a..7c8b5eb 100644 (file)
@@ -21,6 +21,11 @@ extern int perfprofd_main(int argc, char** argv, Config* config);
 
 int main(int argc, char** argv)
 {
-  Config config;
+  struct PosixSleepConfig : public Config {
+    void Sleep(size_t seconds) override {
+      sleep(seconds);
+    }
+  };
+  PosixSleepConfig config;
   return perfprofd_main(argc, argv, &config);
 }
index a17356b..b59070f 100644 (file)
@@ -27,7 +27,6 @@ __BEGIN_DECLS
 extern void perfprofd_log_error(const char *fmt, ...);
 extern void perfprofd_log_warning(const char *fmt, ...);
 extern void perfprofd_log_info(const char *fmt, ...);
-extern void perfprofd_sleep(int seconds);
 
 #define W_ALOGE perfprofd_log_error
 #define W_ALOGW perfprofd_log_warning
index 4683ee2..0dcaa53 100644 (file)
@@ -222,6 +222,13 @@ class PerfProfdRunner {
     unlink(processed.c_str());
   }
 
+  struct LoggingConfig : public Config {
+    void Sleep(size_t seconds) override {
+      // Log sleep calls but don't sleep.
+      perfprofd_log_info("sleep %d seconds", seconds);
+    }
+  };
+
   int invoke()
   {
     static const char *argv[3] = { "perfprofd", "-c", "" };
@@ -230,7 +237,7 @@ class PerfProfdRunner {
     writeConfigFile(config_path_, config_text_);
 
     // execute daemon main
-    Config config;
+    LoggingConfig config;
     return perfprofd_main(3, (char **) argv, &config);
   }
 
@@ -555,7 +562,7 @@ TEST_F(PerfProfdTest, BasicRunWithCannedPerf)
   config_reader.overrideUnsignedEntry("collect_cpu_utilization", 0);
   config_reader.overrideUnsignedEntry("collect_charging_state", 0);
   config_reader.overrideUnsignedEntry("collect_camera_active", 0);
-  Config config;
+  PerfProfdRunner::LoggingConfig config;
   config_reader.FillConfig(&config);
 
   // Kick off encoder and check return code
@@ -629,7 +636,7 @@ TEST_F(PerfProfdTest, CallchainRunWithCannedPerf)
   config_reader.overrideUnsignedEntry("collect_cpu_utilization", 0);
   config_reader.overrideUnsignedEntry("collect_charging_state", 0);
   config_reader.overrideUnsignedEntry("collect_camera_active", 0);
-  Config config;
+  PerfProfdRunner::LoggingConfig config;
   config_reader.FillConfig(&config);
 
   // Kick off encoder and check return code
index 5af58c4..f885809 100644 (file)
@@ -98,9 +98,4 @@ void perfprofd_log_info(const char *fmt, ...)
     va_end(ap);
 }
 
-void perfprofd_sleep(int seconds)
-{
-    perfprofd_log_info("sleep %d seconds", seconds);
-}
-
 }