blob: 680b1b3b8ca1b265be06c984d744eba2ef642d06 [file] [log] [blame]
Alex Deymo2e71f902015-09-30 01:25:48 -07001//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
Alex Deymo39910dc2015-11-09 17:04:30 -080017#ifndef UPDATE_ENGINE_PAYLOAD_CONSUMER_FAKE_EXTENT_WRITER_H_
18#define UPDATE_ENGINE_PAYLOAD_CONSUMER_FAKE_EXTENT_WRITER_H_
Alex Deymo2e71f902015-09-30 01:25:48 -070019
20#include <memory>
Alex Deymo2e71f902015-09-30 01:25:48 -070021
Alex Vakulenko3f39d5c2015-10-13 09:27:13 -070022#include <brillo/secure_blob.h>
Alex Deymo2e71f902015-09-30 01:25:48 -070023
Alex Deymo39910dc2015-11-09 17:04:30 -080024#include "update_engine/payload_consumer/extent_writer.h"
Alex Deymo2e71f902015-09-30 01:25:48 -070025
26namespace chromeos_update_engine {
27
28// FakeExtentWriter is a concrete ExtentWriter subclass that keeps track of all
29// the written data, useful for testing.
30class FakeExtentWriter : public ExtentWriter {
31 public:
32 FakeExtentWriter() = default;
33 ~FakeExtentWriter() override = default;
34
35 // ExtentWriter overrides.
Kelvin Zhang4d22ca22021-02-09 14:06:25 -050036 bool Init(const google::protobuf::RepeatedPtrField<Extent>& /* extents */,
Alex Deymo2e71f902015-09-30 01:25:48 -070037 uint32_t /* block_size */) override {
38 init_called_ = true;
39 return true;
40 };
41 bool Write(const void* bytes, size_t count) override {
Sen Jiang5e1af982018-11-01 15:01:45 -070042 if (!init_called_)
Alex Deymo2e71f902015-09-30 01:25:48 -070043 return false;
44 written_data_.insert(written_data_.end(),
45 reinterpret_cast<const uint8_t*>(bytes),
46 reinterpret_cast<const uint8_t*>(bytes) + count);
47 return true;
48 }
Alex Deymo2e71f902015-09-30 01:25:48 -070049
50 // Fake methods.
51 bool InitCalled() { return init_called_; }
Alex Vakulenko3f39d5c2015-10-13 09:27:13 -070052 brillo::Blob WrittenData() { return written_data_; }
Alex Deymo2e71f902015-09-30 01:25:48 -070053
54 private:
55 bool init_called_{false};
Alex Vakulenko3f39d5c2015-10-13 09:27:13 -070056 brillo::Blob written_data_;
Alex Deymo2e71f902015-09-30 01:25:48 -070057
58 DISALLOW_COPY_AND_ASSIGN(FakeExtentWriter);
59};
60
61} // namespace chromeos_update_engine
62
Alex Deymo39910dc2015-11-09 17:04:30 -080063#endif // UPDATE_ENGINE_PAYLOAD_CONSUMER_FAKE_EXTENT_WRITER_H_