blob: 7b2b7ac3e82383ca5c43df34b8f355c7a36a12cd [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.
36 bool Init(FileDescriptorPtr /* fd */,
Amin Hassanicd7edbe2017-09-18 17:05:02 -070037 const google::protobuf::RepeatedPtrField<Extent>& /* extents */,
Alex Deymo2e71f902015-09-30 01:25:48 -070038 uint32_t /* block_size */) override {
39 init_called_ = true;
40 return true;
41 };
42 bool Write(const void* bytes, size_t count) override {
Sen Jiang5e1af982018-11-01 15:01:45 -070043 if (!init_called_)
Alex Deymo2e71f902015-09-30 01:25:48 -070044 return false;
45 written_data_.insert(written_data_.end(),
46 reinterpret_cast<const uint8_t*>(bytes),
47 reinterpret_cast<const uint8_t*>(bytes) + count);
48 return true;
49 }
Alex Deymo2e71f902015-09-30 01:25:48 -070050
51 // Fake methods.
52 bool InitCalled() { return init_called_; }
Alex Vakulenko3f39d5c2015-10-13 09:27:13 -070053 brillo::Blob WrittenData() { return written_data_; }
Alex Deymo2e71f902015-09-30 01:25:48 -070054
55 private:
56 bool init_called_{false};
Alex Vakulenko3f39d5c2015-10-13 09:27:13 -070057 brillo::Blob written_data_;
Alex Deymo2e71f902015-09-30 01:25:48 -070058
59 DISALLOW_COPY_AND_ASSIGN(FakeExtentWriter);
60};
61
62} // namespace chromeos_update_engine
63
Alex Deymo39910dc2015-11-09 17:04:30 -080064#endif // UPDATE_ENGINE_PAYLOAD_CONSUMER_FAKE_EXTENT_WRITER_H_