[storage] Move ArrayBuffer out of test_support.
Also prepare it so that we can create a ResizeableArrayBuffer subclass.
Bug: 42096
Change-Id: I5f3be3a56c8f081bee8ccf0792c1c8fbebde67b3
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/362858
Commit-Queue: Chris Suter <csuter@google.com>
Reviewed-by: Abdulla Kamar <abdulla@google.com>
Reviewed-by: Ricardo Vargas <rvargas@google.com>
Testability-Review: Ricardo Vargas <rvargas@google.com>
diff --git a/build/unification/images/BUILD.gn b/build/unification/images/BUILD.gn
index f2e8774..e584230 100644
--- a/build/unification/images/BUILD.gn
+++ b/build/unification/images/BUILD.gn
@@ -2586,7 +2586,6 @@
#------------------
"//zircon/system/ulib/storage/buffer/test:storage_buffer-manifest",
#------------------
- "//zircon/system/ulib/storage/buffer/test_support/test:storage_buffer_test_support-manifest",
"//zircon/system/ulib/storage/operation/test:storage_operation-manifest",
#------------------
#------------------
@@ -3096,7 +3095,6 @@
#------------------
"//zircon/system/ulib/storage/buffer/test:storage_buffer-manifest",
#------------------
- "//zircon/system/ulib/storage/buffer/test_support/test:storage_buffer_test_support-manifest",
"//zircon/system/ulib/storage/operation/test:storage_operation-manifest",
#------------------
#------------------
diff --git a/zircon/system/ulib/BUILD.gn b/zircon/system/ulib/BUILD.gn
index 4f31424..2c527e2 100644
--- a/zircon/system/ulib/BUILD.gn
+++ b/zircon/system/ulib/BUILD.gn
@@ -394,9 +394,6 @@
"storage/buffer",
#------------------
#------------------
- "storage/buffer/test_support",
-#------------------
-#------------------
"storage/operation",
#------------------
#------------------
diff --git a/zircon/system/ulib/blobfs/test/unit/blobfs_inspector_test.cc b/zircon/system/ulib/blobfs/test/unit/blobfs_inspector_test.cc
index 493c36e5..6a43f52 100644
--- a/zircon/system/ulib/blobfs/test/unit/blobfs_inspector_test.cc
+++ b/zircon/system/ulib/blobfs/test/unit/blobfs_inspector_test.cc
@@ -9,7 +9,7 @@
#include <blobfs/common.h>
#include <blobfs/format.h>
-#include <buffer/test_support/array_buffer.h>
+#include <storage/buffer/array_buffer.h>
#include <disk_inspector/buffer_factory.h>
#include <fs/journal/format.h>
#include <fs/journal/initializer.h>
diff --git a/zircon/system/ulib/blobfs/test/unit/parser_test.cc b/zircon/system/ulib/blobfs/test/unit/parser_test.cc
index c6422f3..50472424 100644
--- a/zircon/system/ulib/blobfs/test/unit/parser_test.cc
+++ b/zircon/system/ulib/blobfs/test/unit/parser_test.cc
@@ -5,7 +5,7 @@
#include "inspector/parser.h"
#include <blobfs/format.h>
-#include <buffer/test_support/array_buffer.h>
+#include <storage/buffer/array_buffer.h>
#include <fs/transaction/block_transaction.h>
#include <zxtest/zxtest.h>
diff --git a/zircon/system/ulib/disk_inspector/test/loader_test.cc b/zircon/system/ulib/disk_inspector/test/loader_test.cc
index 0b45e4c..81a9f56 100644
--- a/zircon/system/ulib/disk_inspector/test/loader_test.cc
+++ b/zircon/system/ulib/disk_inspector/test/loader_test.cc
@@ -4,7 +4,7 @@
#include "disk_inspector/loader.h"
-#include <buffer/test_support/array_buffer.h>
+#include <storage/buffer/array_buffer.h>
#include <fs/transaction/block_transaction.h>
#include <zxtest/zxtest.h>
diff --git a/zircon/system/ulib/fs/journal/test/BUILD.gn b/zircon/system/ulib/fs/journal/test/BUILD.gn
index 3e25894..9500eba 100644
--- a/zircon/system/ulib/fs/journal/test/BUILD.gn
+++ b/zircon/system/ulib/fs/journal/test/BUILD.gn
@@ -61,7 +61,6 @@
"//zircon/public/lib/cksum",
"//zircon/public/lib/journal",
"//zircon/public/lib/sync",
- "//zircon/public/lib/test_support",
"//zircon/public/lib/zx",
"//zircon/public/lib/zxtest",
]
diff --git a/zircon/system/ulib/fs/journal/test/inspector_parser_test.cc b/zircon/system/ulib/fs/journal/test/inspector_parser_test.cc
index d0d669c..3397076 100644
--- a/zircon/system/ulib/fs/journal/test/inspector_parser_test.cc
+++ b/zircon/system/ulib/fs/journal/test/inspector_parser_test.cc
@@ -4,9 +4,9 @@
#include <inttypes.h>
-#include <buffer/test_support/array_buffer.h>
#include <fs/journal/format.h>
#include <fs/journal/internal/inspector_parser.h>
+#include <storage/buffer/array_buffer.h>
#include <zxtest/zxtest.h>
namespace fs {
diff --git a/zircon/system/ulib/fs/test_support/BUILD.gn b/zircon/system/ulib/fs/test_support/BUILD.gn
index e4417d0..913b03c 100644
--- a/zircon/system/ulib/fs/test_support/BUILD.gn
+++ b/zircon/system/ulib/fs/test_support/BUILD.gn
@@ -26,7 +26,7 @@
"$zx/system/ulib/fs-management:headers",
"$zx/system/ulib/fs/transaction:headers",
"$zx/system/ulib/ramdevice-client:headers",
- "$zx/system/ulib/storage/buffer/test_support:headers",
+ "$zx/system/ulib/storage/buffer:headers",
"$zx/system/ulib/zxtest:headers",
]
@@ -42,7 +42,7 @@
"$zx/system/ulib/fvm",
"$zx/system/ulib/fzl",
"$zx/system/ulib/ramdevice-client",
- "$zx/system/ulib/storage/buffer/test_support",
+ "$zx/system/ulib/storage/buffer",
"$zx/system/ulib/zircon",
"$zx/system/ulib/zxtest",
]
diff --git a/zircon/system/ulib/fs/test_support/test/BUILD.gn b/zircon/system/ulib/fs/test_support/test/BUILD.gn
index bbf83b8c4..2d1036f 100644
--- a/zircon/system/ulib/fs/test_support/test/BUILD.gn
+++ b/zircon/system/ulib/fs/test_support/test/BUILD.gn
@@ -46,7 +46,6 @@
"//zircon/public/lib/fs-management",
"//zircon/public/lib/fs_test_support",
"//zircon/public/lib/ramdevice-client",
- "//zircon/public/lib/test_support",
"//zircon/public/lib/zxtest",
]
include_dirs = [ "../include" ]
diff --git a/zircon/system/ulib/minfs/test/BUILD.gn b/zircon/system/ulib/minfs/test/BUILD.gn
index 0fade07..20b583e 100644
--- a/zircon/system/ulib/minfs/test/BUILD.gn
+++ b/zircon/system/ulib/minfs/test/BUILD.gn
@@ -69,7 +69,6 @@
"//zircon/public/lib/minfs",
"//zircon/public/lib/safemath",
"//zircon/public/lib/sync",
- "//zircon/public/lib/test_support",
"//zircon/public/lib/zircon-internal",
"//zircon/public/lib/zxtest",
"//zircon/system/fidl/fuchsia-minfs:c",
diff --git a/zircon/system/ulib/minfs/test/unit/loader_test.cc b/zircon/system/ulib/minfs/test/unit/loader_test.cc
index ed7f0de..36aa64c 100644
--- a/zircon/system/ulib/minfs/test/unit/loader_test.cc
+++ b/zircon/system/ulib/minfs/test/unit/loader_test.cc
@@ -4,10 +4,10 @@
#include "inspector/loader.h"
-#include <buffer/test_support/array_buffer.h>
#include <fs/journal/format.h>
#include <fs/transaction/block_transaction.h>
#include <minfs/format.h>
+#include <storage/buffer/array_buffer.h>
#include <zxtest/zxtest.h>
namespace minfs {
diff --git a/zircon/system/ulib/minfs/test/unit/parser_test.cc b/zircon/system/ulib/minfs/test/unit/parser_test.cc
index 4e2d362..f589bdb 100644
--- a/zircon/system/ulib/minfs/test/unit/parser_test.cc
+++ b/zircon/system/ulib/minfs/test/unit/parser_test.cc
@@ -4,9 +4,9 @@
#include "inspector/parser.h"
-#include <buffer/test_support/array_buffer.h>
#include <fs/transaction/block_transaction.h>
#include <minfs/format.h>
+#include <storage/buffer/array_buffer.h>
#include <zxtest/zxtest.h>
namespace minfs {
diff --git a/zircon/system/ulib/storage/buffer/BUILD.gn b/zircon/system/ulib/storage/buffer/BUILD.gn
index ec691f0..dae62ca 100644
--- a/zircon/system/ulib/storage/buffer/BUILD.gn
+++ b/zircon/system/ulib/storage/buffer/BUILD.gn
@@ -12,9 +12,10 @@
"storage/buffer/ring_buffer.h",
"storage/buffer/vmo_buffer.h",
"storage/buffer/vmoid_registry.h",
+ "storage/buffer/array_buffer.h",
]
host = true
- sources = []
+ sources = [ "array_buffer.cc" ]
static = true
if (is_fuchsia) {
diff --git a/zircon/system/ulib/storage/buffer/test_support/array_buffer.cc b/zircon/system/ulib/storage/buffer/array_buffer.cc
similarity index 69%
rename from zircon/system/ulib/storage/buffer/test_support/array_buffer.cc
rename to zircon/system/ulib/storage/buffer/array_buffer.cc
index 085352b..4bb1d3c 100644
--- a/zircon/system/ulib/storage/buffer/test_support/array_buffer.cc
+++ b/zircon/system/ulib/storage/buffer/array_buffer.cc
@@ -2,25 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "buffer/test_support/array_buffer.h"
+#include "storage/buffer/array_buffer.h"
#include <zircon/assert.h>
namespace storage {
ArrayBuffer::ArrayBuffer(size_t capacity, uint32_t block_size)
- : block_size_(block_size), capacity_(capacity) {
- if (capacity > 0) {
- buffer_ = std::make_unique<char[]>(block_size * capacity);
- }
-}
+ : buffer_(block_size * capacity), block_size_(block_size) {}
void* ArrayBuffer::Data(size_t index) {
return const_cast<void*>(const_cast<const ArrayBuffer*>(this)->Data(index));
}
const void* ArrayBuffer::Data(size_t index) const {
- ZX_DEBUG_ASSERT(index < capacity_);
+ ZX_DEBUG_ASSERT(index < capacity());
return &buffer_[index * block_size_];
}
diff --git a/zircon/system/ulib/storage/buffer/test_support/include/buffer/test_support/array_buffer.h b/zircon/system/ulib/storage/buffer/include/storage/buffer/array_buffer.h
similarity index 72%
rename from zircon/system/ulib/storage/buffer/test_support/include/buffer/test_support/array_buffer.h
rename to zircon/system/ulib/storage/buffer/include/storage/buffer/array_buffer.h
index a258602..1706ccb 100644
--- a/zircon/system/ulib/storage/buffer/test_support/include/buffer/test_support/array_buffer.h
+++ b/zircon/system/ulib/storage/buffer/include/storage/buffer/array_buffer.h
@@ -2,17 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BUFFER_TEST_SUPPORT_ARRAY_BUFFER_H_
-#define BUFFER_TEST_SUPPORT_ARRAY_BUFFER_H_
+#ifndef STORAGE_BUFFER_ARRAY_BUFFER_H_
+#define STORAGE_BUFFER_ARRAY_BUFFER_H_
-#include <array>
+#include <vector>
#include <storage/buffer/block_buffer.h>
namespace storage {
// Block buffer backed by a heap array.
-class ArrayBuffer final : public BlockBuffer {
+class ArrayBuffer : public BlockBuffer {
public:
explicit ArrayBuffer(size_t capacity, uint32_t block_size);
ArrayBuffer(const ArrayBuffer&) = delete;
@@ -22,19 +22,21 @@
~ArrayBuffer() = default;
// BlockBuffer interface:
- size_t capacity() const final { return capacity_; }
+ size_t capacity() const final { return buffer_.size() / block_size_; }
uint32_t BlockSize() const final { return block_size_; }
vmoid_t vmoid() const final { return BLOCK_VMOID_INVALID; }
zx_handle_t Vmo() const final { return ZX_HANDLE_INVALID; }
void* Data(size_t index) final;
const void* Data(size_t index) const final;
+ protected:
+ std::vector<uint8_t>& buffer() { return buffer_; }
+
private:
- std::unique_ptr<char[]> buffer_;
+ std::vector<uint8_t> buffer_;
uint32_t block_size_ = 0;
- size_t capacity_ = 0;
};
} // namespace storage
-#endif // BUFFER_TEST_SUPPORT_ARRAY_BUFFER_H_
+#endif // STORAGE_BUFFER_ARRAY_BUFFER_H_
diff --git a/zircon/system/ulib/storage/buffer/test_support/test/array_buffer_test.cc b/zircon/system/ulib/storage/buffer/test/array_buffer_test.cc
similarity index 95%
rename from zircon/system/ulib/storage/buffer/test_support/test/array_buffer_test.cc
rename to zircon/system/ulib/storage/buffer/test/array_buffer_test.cc
index b4a4dfa..72d5c92 100644
--- a/zircon/system/ulib/storage/buffer/test_support/test/array_buffer_test.cc
+++ b/zircon/system/ulib/storage/buffer/test/array_buffer_test.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "buffer/test_support/array_buffer.h"
+#include "storage/buffer/array_buffer.h"
#include <lib/zx/vmo.h>
diff --git a/zircon/system/ulib/storage/buffer/test_support/BUILD.gn b/zircon/system/ulib/storage/buffer/test_support/BUILD.gn
deleted file mode 100644
index 7d9b5cf..0000000
--- a/zircon/system/ulib/storage/buffer/test_support/BUILD.gn
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.
-
-zx_library("test_support") {
- sdk = "source"
- sdk_headers = [ "buffer/test_support/array_buffer.h" ]
- testonly = true
- sources = [ "array_buffer.cc" ]
- static = true
-
- public_deps = [
- "$zx/system/ulib/storage/buffer:headers",
- "$zx/system/ulib/zx:headers",
- ]
- deps = [
- "$zx/system/ulib/zircon",
- "$zx/system/ulib/zx",
- ]
-}
diff --git a/zircon/system/ulib/storage/buffer/test_support/test/BUILD.gn b/zircon/system/ulib/storage/buffer/test_support/test/BUILD.gn
deleted file mode 100644
index c65b2f8..0000000
--- a/zircon/system/ulib/storage/buffer/test_support/test/BUILD.gn
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2020 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.
-
-##########################################
-# Though under //zircon, this build file #
-# is meant to be used in the Fuchsia GN #
-# build. #
-# See fxb/36139. #
-##########################################
-
-assert(!defined(zx) || zx != "/",
- "This file can only be used in the Fuchsia GN build.")
-
-import("//build/test.gni")
-import("//build/unification/images/migrated_manifest.gni")
-
-group("test") {
- testonly = true
- deps = [ ":storage_buffer_test_support" ]
-}
-
-test("storage_buffer_test_support") {
- # Dependent manifests unfortunately cannot be marked as `testonly`.
- # TODO(44278): Remove when converting this file to proper GN build idioms.
- if (is_fuchsia) {
- testonly = false
- }
- if (is_fuchsia) {
- configs += [ "//build/unification/config:zircon-migrated" ]
- }
- if (is_fuchsia) {
- fdio_config = [ "//build/config/fuchsia:fdio_config" ]
- if (configs + fdio_config - fdio_config != configs) {
- configs -= fdio_config
- }
- }
- output_name = "storage-buffer-test-support-test"
- test_group = "storage"
- sources = [ "array_buffer_test.cc" ]
- deps = [
- "//zircon/public/lib/fdio",
- "//zircon/public/lib/test_support",
- "//zircon/public/lib/zxtest",
- ]
-}
-
-migrated_manifest("storage_buffer_test_support-manifest") {
- deps = [ ":storage_buffer_test_support" ]
-}