Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2c2d894 authored by Yunlian Jiang's avatar Yunlian Jiang Committed by chrome-internal-fetch
Browse files

metrics: fix memory leaks in unittest.

This fixes the memory leaks exposed in unittest.

BUG=chromium:408309
TEST=USE="clang asan" FEATURES="test" emerge-amd64-generic metrics
   passes.

Change-Id: I6f612499d7e67fa9171b95de4dbfac4e7f6698a0
Reviewed-on: https://chromium-review.googlesource.com/215887


Reviewed-by: default avatarYunlian Jiang <yunlian@chromium.org>
Tested-by: default avatarYunlian Jiang <yunlian@chromium.org>
Commit-Queue: Yunlian Jiang <yunlian@chromium.org>
parent ef3aebe6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ class ChromeUserMetricsExtension;
// information to simplify testing.
class SystemProfileSetter {
 public:
  virtual ~SystemProfileSetter() {}
  // Populates the protobuf with system informations.
  virtual void Populate(metrics::ChromeUserMetricsExtension* profile_proto) = 0;
};
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ void UploadService::StartNewLog() {
  CHECK(!staged_log_) << "the staged log should be discarded before starting "
                         "a new metrics log";
  MetricsLog* log = new MetricsLog();
  log->PopulateSystemProfile(system_profile_setter_);
  log->PopulateSystemProfile(system_profile_setter_.get());
  current_log_.reset(log);
}

+2 −1
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include "base/metrics/histogram_snapshot_manager.h"
#include "uploader/metrics_log.h"
#include "uploader/sender.h"
#include "uploader/system_profile_cache.h"

namespace metrics {
class ChromeUserMetricsExtension;
@@ -126,7 +127,7 @@ class UploadService : public base::HistogramFlattener {
  // Returns the current log. If there is no current log, creates it first.
  MetricsLog* GetOrCreateCurrentLog();

  SystemProfileSetter* system_profile_setter_;
  scoped_ptr<SystemProfileSetter> system_profile_setter_;
  base::HistogramSnapshotManager histogram_snapshot_manager_;
  scoped_ptr<Sender> sender_;
  int failed_upload_count_;
+7 −3
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ class UploadServiceTest : public testing::Test {
      : upload_service_(), exit_manager_(new base::AtExitManager()) {
    sender_ = new SenderMock;
    upload_service_.sender_.reset(sender_);
    upload_service_.system_profile_setter_ = new MockSystemProfileSetter();
    upload_service_.system_profile_setter_.reset(new MockSystemProfileSetter());
    upload_service_.Init();
  }

@@ -191,8 +191,12 @@ TEST_F(UploadServiceTest, ValuesInConfigFileAreSent) {
  base::SysInfo::SetChromeOSVersionInfoForTest(content, base::Time());
  scoped_ptr<metrics::MetricSample> histogram =
      metrics::MetricSample::SparseHistogramSample("myhistogram", 1);
  SystemProfileCache* local_cache_ = new SystemProfileCache;
  local_cache_->is_testing_ = true;
  local_cache_->session_id_.reset(new chromeos_metrics::PersistentInteger(
        dir_.path().Append("session_id").value()));

  upload_service_.system_profile_setter_ = &cache_;
  upload_service_.system_profile_setter_.reset(local_cache_);
  // Reset to create the new log with the profile setter.
  upload_service_.Reset();
  upload_service_.AddSample(*histogram.get());