chromium/chromecast/crash/linux/crash_testing_utils.h

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMECAST_CRASH_LINUX_CRASH_TESTING_UTILS_H_
#define CHROMECAST_CRASH_LINUX_CRASH_TESTING_UTILS_H_

#include <memory>
#include <vector>

#include "base/time/time.h"

namespace chromecast {

class DumpInfo;

// Creates a DumpInfo object corresponding to the deserialization of
// |json_string|. Returned DumpInfo object maybe invalid if |json_string|
// doesn't correspond to a valid DumpInfo object.
std::unique_ptr<DumpInfo> CreateDumpInfo(const std::string& json_string);

// Populates |dumps| with all the DumpInfo entries serialized in the lockfile at
// |lockfile_path|. Returns true on success, false on error.
bool FetchDumps(const std::string& lockfile_path,
                std::vector<std::unique_ptr<DumpInfo>>* dumps);

// Clear all dumps in the lockfile at |lockfile_path|.
// Returns true on success, false on error.
bool ClearDumps(const std::string& lockfile_path);

// Creates an empty lockfile at |lockfile_path|. Creates a default initialized
// metadata file at |metadata_path|. Returns true on success, false on error.
bool CreateFiles(const std::string& lockfile_path,
                 const std::string& metadata_path);

// Appends serialization of |dump| onto the lockfile at |lockfile_path|.
// Creates default initialized lockfile in |lockfile_path| and metadata file in
// |metadata_path| if they don't exist.
// Returns true on success, false on error.
bool AppendLockFile(const std::string& lockfile_path,
                    const std::string& metadata_path,
                    const DumpInfo& dump);

// Set the ratelimit period start in the metadata file at |metadata_path| to
// |start|. Returns true on success, false on error.
bool SetRatelimitPeriodStart(const std::string& metadata_path,
                             const base::Time& start);

}  // namespace chromecast

#endif  // CHROMECAST_CRASH_LINUX_CRASH_TESTING_UTILS_H_