| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_DEVELOPER_MEMORY_METRICS_TESTS_TEST_UTILS_H_ |
| #define SRC_DEVELOPER_MEMORY_METRICS_TESTS_TEST_UTILS_H_ |
| |
| #include <vector> |
| |
| #include "src/developer/memory/metrics/capture.h" |
| #include "src/developer/memory/metrics/summary.h" |
| |
| namespace memory { |
| |
| struct CaptureTemplate { |
| zx_time_t time; |
| zx_info_kmem_stats_t kmem; |
| std::vector<zx_info_vmo_t> vmos; |
| std::vector<Process> processes; |
| std::vector<std::string> rooted_vmo_names; |
| }; |
| |
| struct GetProcessesCallback { |
| int depth; |
| zx_handle_t handle; |
| zx_koid_t koid; |
| zx_koid_t parent_koid; |
| }; |
| |
| struct GetProcessesResponse { |
| zx_status_t ret; |
| std::vector<GetProcessesCallback> callbacks; |
| }; |
| |
| struct GetPropertyResponse { |
| zx_handle_t handle; |
| uint32_t property; |
| const void* value; |
| size_t value_len; |
| zx_status_t ret; |
| }; |
| |
| struct GetInfoResponse { |
| zx_handle_t handle; |
| uint32_t topic; |
| const void* values; |
| size_t value_size; |
| size_t value_count; |
| zx_status_t ret; |
| }; |
| |
| struct OsResponses { |
| const std::vector<GetProcessesResponse> get_processes; |
| const std::vector<GetPropertyResponse> get_property; |
| const std::vector<GetInfoResponse> get_info; |
| }; |
| |
| class CaptureSupplier { |
| public: |
| explicit CaptureSupplier(std::vector<CaptureTemplate> templates) |
| : templates_(std::move(templates)), index_(0) {} |
| |
| zx_status_t GetCapture(Capture* capture, CaptureLevel level, |
| bool use_capture_supplier_time = false); |
| bool empty() const { return index_ == templates_.size(); } |
| |
| private: |
| std::vector<CaptureTemplate> templates_; |
| size_t index_; |
| }; |
| |
| class TestUtils { |
| public: |
| const static zx_handle_t kRootHandle; |
| const static zx_handle_t kSelfHandle; |
| const static zx_koid_t kSelfKoid; |
| |
| static void CreateCapture(Capture* capture, const CaptureTemplate& t, CaptureLevel level = VMO); |
| static zx_status_t GetCapture(Capture* capture, CaptureLevel level, const OsResponses& r); |
| |
| // Sorted by koid. |
| static std::vector<ProcessSummary> GetProcessSummaries(const Summary& summary); |
| }; |
| |
| } // namespace memory |
| |
| #endif // SRC_DEVELOPER_MEMORY_METRICS_TESTS_TEST_UTILS_H_ |