From ed6b71246137f9793f2d56b4d050b271a3da29fd Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 9 Jun 2025 20:35:44 +0800 Subject: [PATCH] src: Fix memory leaks in generate_test_instance() by returning values instead of pointers Problem: The current `generate_test_instance()` function returns `std::list`, which creates memory management issues: - Inconsistent lifecycle management of test instances - Callers don't always properly clean up allocated memory - Results in ASan memory leak reports in unit tests and ceph-dencoder Solution: Change `generate_test_instance()` to return `std::list` instead of `std::list`: Core Changes: - Modified all classes with `generate_test_instance()` to return `std::list` - Use `emplace_back()` without parameters** to avoid copy/move constructors for classes that don't define them - Updated ceph-dencoder to handle the new return type ceph-dencoder Adaptations: Since `m_list` now holds `T` objects instead of `T*`, and we can't assume `T` is copyable/moveable: - Keep `m_object` as a pointer for flexibility - Handle two scenarios: 1. `m_object` points to an element in `m_list` 2. `m_object` points to a decoded instance (requires manual cleanup) - Introduce `make_ptr()` as a factory function to create a smart pointer to conditionally free the managed pointer. Additional Cleanup: - Simplify DencoderBase constructor from template to plain function (extra parameters were never used in derived classes) With this change, object lifecycles are now managed by value semantics instead of raw pointers, eliminating memory leaks. Signed-off-by: Kefu Chai --- src/auth/Auth.h | 64 +- src/auth/Crypto.cc | 14 +- src/auth/Crypto.h | 2 +- src/auth/cephx/CephxKeyServer.cc | 6 +- src/auth/cephx/CephxKeyServer.h | 28 +- src/auth/cephx/CephxProtocol.h | 138 +-- src/cls/2pc_queue/cls_2pc_queue_ops.h | 70 +- src/cls/2pc_queue/cls_2pc_queue_types.h | 30 +- src/cls/cas/cls_cas_internal.h | 28 +- src/cls/cas/cls_cas_ops.h | 18 +- src/cls/fifo/cls_fifo.cc | 10 +- src/cls/fifo/cls_fifo_ops.h | 48 +- src/cls/fifo/cls_fifo_types.h | 56 +- src/cls/journal/cls_journal_types.cc | 35 +- src/cls/journal/cls_journal_types.h | 8 +- src/cls/lock/cls_lock_ops.cc | 140 +-- src/cls/lock/cls_lock_ops.h | 16 +- src/cls/lock/cls_lock_types.cc | 44 +- src/cls/lock/cls_lock_types.h | 6 +- src/cls/log/cls_log_ops.h | 86 +- src/cls/log/cls_log_types.h | 30 +- src/cls/queue/cls_queue_ops.h | 74 +- src/cls/queue/cls_queue_types.h | 46 +- src/cls/rbd/cls_rbd.h | 37 +- src/cls/rbd/cls_rbd_types.cc | 248 +++--- src/cls/rbd/cls_rbd_types.h | 33 +- src/cls/refcount/cls_refcount_ops.cc | 67 +- src/cls/refcount/cls_refcount_ops.h | 12 +- src/cls/rgw/cls_rgw_ops.cc | 460 +++++----- src/cls/rgw/cls_rgw_ops.h | 250 +++--- src/cls/rgw/cls_rgw_types.cc | 389 +++++---- src/cls/rgw/cls_rgw_types.h | 76 +- src/cls/rgw_gc/cls_rgw_gc_ops.h | 10 +- src/cls/rgw_gc/cls_rgw_gc_types.h | 14 +- src/cls/timeindex/cls_timeindex_ops.h | 36 +- src/cls/timeindex/cls_timeindex_types.cc | 16 +- src/cls/timeindex/cls_timeindex_types.h | 2 +- src/cls/user/cls_user_ops.cc | 164 ++-- src/cls/user/cls_user_ops.h | 33 +- src/cls/user/cls_user_types.cc | 66 +- src/cls/user/cls_user_types.h | 12 +- src/cls/version/cls_version_ops.h | 64 +- src/cls/version/cls_version_types.h | 16 +- src/common/CompatSet.cc | 16 +- src/common/DecayCounter.cc | 15 +- src/common/DecayCounter.h | 2 +- src/common/LogEntry.cc | 20 +- src/common/LogEntry.h | 6 +- src/common/SloppyCRCMap.cc | 14 +- src/common/SloppyCRCMap.h | 2 +- src/common/bit_vector.hpp | 19 +- src/common/bloom_filter.cc | 50 +- src/common/bloom_filter.hpp | 4 +- src/common/ceph_json.h | 54 +- src/common/entity_name.cc | 18 +- src/common/entity_name.h | 2 +- src/common/frag.cc | 18 +- src/common/fs_types.cc | 18 +- src/common/histogram.cc | 16 +- src/common/histogram.h | 2 +- src/common/hobject.cc | 44 +- src/common/hobject.h | 4 +- src/common/snap_types.cc | 50 +- src/common/snap_types.h | 6 +- src/crush/CrushWrapper.cc | 6 +- src/crush/CrushWrapper.h | 2 +- src/include/CompatSet.h | 2 +- src/include/cephfs/metrics/Types.h | 6 +- src/include/cephfs/types.h | 30 +- src/include/filepath.cc | 14 +- src/include/filepath.h | 2 +- src/include/frag.h | 4 +- src/include/fs_types.h | 10 +- src/include/object.cc | 16 +- src/include/object.h | 4 +- src/include/types.cc | 26 +- src/include/types.h | 20 +- src/include/util.h | 16 +- src/include/utime.cc | 14 +- src/include/utime.h | 2 +- src/include/uuid.cc | 20 +- src/include/uuid.h | 2 +- src/journal/Entry.cc | 10 +- src/journal/Entry.h | 2 +- src/librbd/WatchNotifyTypes.cc | 64 +- src/librbd/WatchNotifyTypes.h | 4 +- src/librbd/cache/pwl/Types.cc | 58 +- src/librbd/cache/pwl/Types.h | 4 +- src/librbd/cache/pwl/ssd/Types.h | 24 +- src/librbd/journal/Types.cc | 94 ++- src/librbd/journal/Types.h | 6 +- src/librbd/mirroring_watcher/Types.cc | 10 +- src/librbd/mirroring_watcher/Types.h | 2 +- src/librbd/trash_watcher/Types.cc | 8 +- src/librbd/trash_watcher/Types.h | 2 +- src/mds/Anchor.cc | 16 +- src/mds/Anchor.h | 2 +- src/mds/CInode.cc | 36 +- src/mds/CInode.h | 4 +- src/mds/Capability.cc | 50 +- src/mds/Capability.h | 8 +- src/mds/FSMap.cc | 32 +- src/mds/FSMap.h | 4 +- src/mds/FSMapUser.cc | 20 +- src/mds/FSMapUser.h | 2 +- src/mds/InoTable.cc | 6 +- src/mds/InoTable.h | 2 +- src/mds/JournalPointer.h | 12 +- src/mds/MDSMap.cc | 43 +- src/mds/MDSMap.h | 4 +- src/mds/PurgeQueue.cc | 22 +- src/mds/PurgeQueue.h | 2 +- src/mds/SessionMap.cc | 6 +- src/mds/SessionMap.h | 2 +- src/mds/SimpleLock.cc | 10 +- src/mds/SimpleLock.h | 2 +- src/mds/SnapServer.cc | 40 +- src/mds/SnapServer.h | 2 +- src/mds/events/ECommitted.h | 2 +- src/mds/events/EExport.h | 2 +- src/mds/events/EFragment.h | 2 +- src/mds/events/EImportFinish.h | 2 +- src/mds/events/EImportStart.h | 2 +- src/mds/events/ELid.h | 2 +- src/mds/events/EMetaBlob.h | 10 +- src/mds/events/EOpen.h | 2 +- src/mds/events/EPeerUpdate.h | 10 +- src/mds/events/EResetJournal.h | 2 +- src/mds/events/ESegment.h | 2 +- src/mds/events/ESession.h | 2 +- src/mds/events/ESessions.h | 2 +- src/mds/events/ESubtreeMap.h | 2 +- src/mds/events/ETableClient.h | 2 +- src/mds/events/ETableServer.h | 2 +- src/mds/events/EUpdate.h | 2 +- src/mds/flock.cc | 16 +- src/mds/flock.h | 2 +- src/mds/inode_backtrace.cc | 38 +- src/mds/inode_backtrace.h | 4 +- src/mds/journal.cc | 201 +++-- src/mds/mdstypes.cc | 303 ++++--- src/mds/mdstypes.h | 55 +- src/mds/snap.cc | 70 +- src/mds/snap.h | 6 +- src/messages/MClientReply.h | 12 +- src/messages/MClientRequest.h | 24 +- src/messages/MMDSBeacon.h | 24 +- src/messages/MMDSCacheRejoin.h | 32 +- src/messages/MMgrReport.h | 20 +- src/mgr/DaemonHealthMetric.h | 8 +- src/mgr/MDSPerfMetricTypes.h | 12 +- src/mgr/MetricTypes.h | 26 +- src/mgr/MgrCap.cc | 42 +- src/mgr/MgrCap.h | 2 +- src/mgr/OSDPerfMetricTypes.h | 90 +- src/mgr/ServiceMap.cc | 42 +- src/mgr/ServiceMap.h | 6 +- src/mon/AuthMonitor.h | 20 +- src/mon/ConnectionTracker.cc | 40 +- src/mon/ConnectionTracker.h | 4 +- src/mon/CreatingPGs.h | 44 +- src/mon/MgrMap.h | 64 +- src/mon/MonCap.cc | 34 +- src/mon/MonCap.h | 2 +- src/mon/MonCommand.h | 18 +- src/mon/MonMap.cc | 54 +- src/mon/MonMap.h | 4 +- src/mon/MonitorDBStore.h | 24 +- src/mon/PGMap.cc | 60 +- src/mon/PGMap.h | 20 +- src/mon/health_check.h | 49 +- src/mon/mon_types.h | 132 +-- src/msg/msg_types.cc | 66 +- src/msg/msg_types.h | 8 +- src/os/SequencerPosition.h | 10 +- src/os/Transaction.cc | 58 +- src/os/Transaction.h | 2 +- src/os/bluestore/bluefs_types.cc | 85 +- src/os/bluestore/bluefs_types.h | 11 +- src/os/bluestore/bluestore_types.cc | 238 +++--- src/os/bluestore/bluestore_types.h | 32 +- src/os/kstore/kstore_types.cc | 16 +- src/os/kstore/kstore_types.h | 4 +- src/osd/ECMsgTypes.cc | 120 +-- src/osd/ECMsgTypes.h | 8 +- src/osd/ECTypes.h | 8 +- src/osd/ECUtilL.cc | 14 +- src/osd/ECUtilL.h | 4 +- src/osd/HitSet.cc | 51 +- src/osd/HitSet.h | 72 +- src/osd/OSDMap.cc | 56 +- src/osd/OSDMap.h | 20 +- src/osd/SnapMapper.cc | 15 +- src/osd/SnapMapper.h | 14 +- src/osd/osd_types.cc | 796 ++++++++++-------- src/osd/osd_types.h | 346 ++++---- src/osdc/Journaler.h | 24 +- src/rbd_replay/ActionTypes.cc | 84 +- src/rbd_replay/ActionTypes.h | 4 +- src/rgw/driver/rados/groups.cc | 12 +- src/rgw/driver/rados/groups.h | 2 +- src/rgw/driver/rados/rgw_bucket.cc | 17 +- src/rgw/driver/rados/rgw_d3n_datacache.h | 1 - src/rgw/driver/rados/rgw_data_sync.cc | 36 +- src/rgw/driver/rados/rgw_data_sync.h | 6 +- src/rgw/driver/rados/rgw_datalog.cc | 16 +- src/rgw/driver/rados/rgw_datalog.h | 2 +- src/rgw/driver/rados/rgw_obj_manifest.cc | 71 +- src/rgw/driver/rados/rgw_obj_manifest.h | 8 +- src/rgw/driver/rados/rgw_rados.cc | 38 +- src/rgw/driver/rados/rgw_rados.h | 6 +- src/rgw/driver/rados/rgw_user.h | 10 +- src/rgw/driver/rados/roles.cc | 12 +- src/rgw/driver/rados/roles.h | 2 +- src/rgw/driver/rados/users.cc | 12 +- src/rgw/driver/rados/users.h | 2 +- src/rgw/rgw_acl.cc | 99 +-- src/rgw/rgw_acl.h | 8 +- src/rgw/rgw_acl_types.h | 10 +- src/rgw/rgw_basic_types.cc | 20 +- src/rgw/rgw_basic_types.h | 10 +- src/rgw/rgw_bucket_encryption.h | 2 +- src/rgw/rgw_bucket_types.h | 2 +- src/rgw/rgw_cache.cc | 44 +- src/rgw/rgw_cache.h | 6 +- src/rgw/rgw_common.cc | 189 +++-- src/rgw/rgw_common.h | 24 +- src/rgw/rgw_compression.cc | 20 +- src/rgw/rgw_compression_types.h | 2 +- src/rgw/rgw_cors.cc | 24 +- src/rgw/rgw_cors.h | 2 +- src/rgw/rgw_dencoder.cc | 30 +- src/rgw/rgw_lc.cc | 7 +- src/rgw/rgw_lc.h | 4 +- src/rgw/rgw_log.cc | 48 +- src/rgw/rgw_log.h | 2 +- src/rgw/rgw_mdlog.h | 2 +- src/rgw/rgw_meta_sync_status.h | 6 +- src/rgw/rgw_metadata.cc | 18 +- src/rgw/rgw_multi.cc | 16 +- src/rgw/rgw_obj_types.h | 16 +- src/rgw/rgw_object_lock.cc | 27 +- src/rgw/rgw_object_lock.h | 4 +- src/rgw/rgw_oidc_provider.cc | 22 +- src/rgw/rgw_oidc_provider.h | 2 +- src/rgw/rgw_period.cc | 9 +- src/rgw/rgw_placement_types.h | 8 +- src/rgw/rgw_pool_types.h | 8 +- src/rgw/rgw_quota.cc | 16 +- src/rgw/rgw_quota_types.h | 2 +- src/rgw/rgw_realm.cc | 9 +- src/rgw/rgw_sync_policy.cc | 7 +- src/rgw/rgw_sync_policy.h | 2 +- src/rgw/rgw_tag.cc | 14 +- src/rgw/rgw_tag.h | 2 +- src/rgw/rgw_user_types.h | 2 +- src/rgw/rgw_zone.cc | 119 +-- src/rgw/rgw_zone.h | 10 +- src/rgw/rgw_zone_types.h | 62 +- src/test/osd/types.cc | 17 +- src/test/rgw/test_rgw_common.h | 1 - src/test/rgw/test_rgw_manifest.cc | 1 - src/tools/ceph-dencoder/ceph_time.h | 12 +- src/tools/ceph-dencoder/denc_registry.h | 60 +- src/tools/ceph-dencoder/nvmeof_types.h | 19 +- src/tools/ceph-dencoder/sstring.h | 10 +- src/tools/ceph-dencoder/str.h | 8 +- src/tools/rbd_mirror/image_map/Types.cc | 6 +- src/tools/rbd_mirror/image_map/Types.h | 2 +- .../rbd_mirror/instance_watcher/Types.cc | 24 +- src/tools/rbd_mirror/instance_watcher/Types.h | 2 +- src/tools/rbd_mirror/leader_watcher/Types.cc | 10 +- src/tools/rbd_mirror/leader_watcher/Types.h | 2 +- 273 files changed, 5217 insertions(+), 4159 deletions(-) diff --git a/src/auth/Auth.h b/src/auth/Auth.h index 615b44752a03..366aeb69ce50 100644 --- a/src/auth/Auth.h +++ b/src/auth/Auth.h @@ -74,8 +74,10 @@ struct EntityAuth { encode_json("caps", caps, f); f->dump_object("pending_key", pending_key); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new EntityAuth); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(EntityAuth{}); + return ls; } }; WRITE_CLASS_ENCODER(EntityAuth) @@ -118,13 +120,15 @@ struct AuthCapsInfo { encode_json("caps", caps, f); f->dump_unsigned("caps_len", caps.length()); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new AuthCapsInfo); - ls.push_back(new AuthCapsInfo); - ls.back()->allow_all = true; - ls.push_back(new AuthCapsInfo); - ls.back()->caps.append("foo"); - ls.back()->caps.append("bar"); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(AuthCapsInfo{}); + ls.push_back(AuthCapsInfo{}); + ls.back().allow_all = true; + ls.push_back(AuthCapsInfo{}); + ls.back().caps.append("foo"); + ls.back().caps.append("bar"); + return ls; } }; WRITE_CLASS_ENCODER(AuthCapsInfo) @@ -184,15 +188,17 @@ struct AuthTicket { f->dump_object("caps", caps); f->dump_unsigned("flags", flags); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new AuthTicket); - ls.push_back(new AuthTicket); - ls.back()->name.set_id("client.123"); - ls.back()->global_id = 123; - ls.back()->init_timestamps(utime_t(123, 456), 7); - ls.back()->caps.caps.append("foo"); - ls.back()->caps.caps.append("bar"); - ls.back()->flags = 0x12345678; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(AuthTicket{}); + ls.push_back(AuthTicket{}); + ls.back().name.set_id("client.123"); + ls.back().global_id = 123; + ls.back().init_timestamps(utime_t(123, 456), 7); + ls.back().caps.caps.append("foo"); + ls.back().caps.caps.append("bar"); + ls.back().flags = 0x12345678; + return ls; } }; WRITE_CLASS_ENCODER(AuthTicket) @@ -282,11 +288,13 @@ struct ExpiringCryptoKey { f->dump_object("key", key); f->dump_stream("expiration") << expiration; } - static void generate_test_instances(std::list& ls) { - ls.push_back(new ExpiringCryptoKey); - ls.push_back(new ExpiringCryptoKey); - ls.back()->key.set_secret( + static std::list generate_test_instances() { + std::list ls; + ls.push_back(ExpiringCryptoKey{}); + ls.push_back(ExpiringCryptoKey{}); + ls.back().key.set_secret( CEPH_CRYPTO_AES, bufferptr("1234567890123456", 16), utime_t(123, 456)); + return ls; } }; WRITE_CLASS_ENCODER(ExpiringCryptoKey) @@ -355,11 +363,13 @@ struct RotatingSecrets { void dump(ceph::Formatter *f) const { encode_json("secrets", secrets, f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new RotatingSecrets); - ls.push_back(new RotatingSecrets); - auto eck = new ExpiringCryptoKey; - ls.back()->add(*eck); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(RotatingSecrets{}); + ls.push_back(RotatingSecrets{}); + ExpiringCryptoKey eck{}; + ls.back().add(eck); + return ls; } }; WRITE_CLASS_ENCODER(RotatingSecrets) diff --git a/src/auth/Crypto.cc b/src/auth/Crypto.cc index 80cc0b949d2b..6f9cf7cb68c8 100644 --- a/src/auth/Crypto.cc +++ b/src/auth/Crypto.cc @@ -519,14 +519,16 @@ void CryptoKey::dump(Formatter *f) const f->dump_int("secret.length", secret.length()); } -void CryptoKey::generate_test_instances(std::list& ls) +std::list CryptoKey::generate_test_instances() { - ls.push_back(new CryptoKey); - ls.push_back(new CryptoKey); - ls.back()->type = CEPH_CRYPTO_AES; - ls.back()->set_secret( + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().type = CEPH_CRYPTO_AES; + ls.back().set_secret( CEPH_CRYPTO_AES, bufferptr("1234567890123456", 16), utime_t(123, 456)); - ls.back()->created = utime_t(123, 456); + ls.back().created = utime_t(123, 456); + return ls; } int CryptoKey::set_secret(int type, const bufferptr& s, utime_t c) diff --git a/src/auth/Crypto.h b/src/auth/Crypto.h index 3ce655a12562..cc9557912fad 100644 --- a/src/auth/Crypto.h +++ b/src/auth/Crypto.h @@ -112,7 +112,7 @@ public: void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void clear() { *this = CryptoKey(); diff --git a/src/auth/cephx/CephxKeyServer.cc b/src/auth/cephx/CephxKeyServer.cc index 77f33c4b1cbc..e49cea16a542 100644 --- a/src/auth/cephx/CephxKeyServer.cc +++ b/src/auth/cephx/CephxKeyServer.cc @@ -263,9 +263,11 @@ void KeyServer::dump(Formatter *f) const f->dump_object("data", data); } -void KeyServer::generate_test_instances(std::list& ls) +std::list KeyServer::generate_test_instances() { - ls.push_back(new KeyServer(nullptr, nullptr)); + std::list ls; + ls.emplace_back(nullptr, nullptr); + return ls; } bool KeyServer::generate_secret(CryptoKey& secret) diff --git a/src/auth/cephx/CephxKeyServer.h b/src/auth/cephx/CephxKeyServer.h index b87c30886e04..addac53e7260 100644 --- a/src/auth/cephx/CephxKeyServer.h +++ b/src/auth/cephx/CephxKeyServer.h @@ -78,10 +78,12 @@ struct KeyServerData { encode_json("secrets", secrets, f); encode_json("rotating_secrets", rotating_secrets, f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new KeyServerData); - ls.push_back(new KeyServerData); - ls.back()->version = 1; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(KeyServerData{}); + ls.push_back(KeyServerData{}); + ls.back().version = 1; + return ls; } bool contains(const EntityName& name) const { return (secrets.find(name) != secrets.end()); @@ -176,13 +178,15 @@ struct KeyServerData { f->dump_object("name", name); f->dump_object("auth", auth); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new Incremental); - ls.back()->op = AUTH_INC_DEL; - ls.push_back(new Incremental); - ls.back()->op = AUTH_INC_ADD; - ls.push_back(new Incremental); - ls.back()->op = AUTH_INC_SET_ROTATING; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(Incremental{}); + ls.back().op = AUTH_INC_DEL; + ls.push_back(Incremental{}); + ls.back().op = AUTH_INC_ADD; + ls.push_back(Incremental{}); + ls.back().op = AUTH_INC_SET_ROTATING; + return ls; } }; @@ -274,7 +278,7 @@ public: decode(data, bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool contains(const EntityName& name) const; int encode_secrets(ceph::Formatter *f, std::stringstream *ds) const; void encode_formatted(std::string label, ceph::Formatter *f, ceph::buffer::list &bl); diff --git a/src/auth/cephx/CephxProtocol.h b/src/auth/cephx/CephxProtocol.h index 260cb13ff5ab..f47eb8856dce 100644 --- a/src/auth/cephx/CephxProtocol.h +++ b/src/auth/cephx/CephxProtocol.h @@ -58,9 +58,11 @@ struct CephXServerChallenge { void dump(ceph::Formatter *f) const { f->dump_unsigned("server_challenge", server_challenge); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXServerChallenge); - ls.back()->server_challenge = 1; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXServerChallenge{}); + ls.back().server_challenge = 1; + return ls; } }; WRITE_CLASS_ENCODER(CephXServerChallenge) @@ -82,9 +84,11 @@ struct CephXRequestHeader { void dump(ceph::Formatter *f) const { f->dump_unsigned("request_type", request_type); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXRequestHeader); - ls.back()->request_type = 1; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXRequestHeader{}); + ls.back().request_type = 1; + return ls; } }; WRITE_CLASS_ENCODER(CephXRequestHeader) @@ -107,10 +111,12 @@ struct CephXResponseHeader { f->dump_unsigned("request_type", request_type); f->dump_int("status", status); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXResponseHeader); - ls.back()->request_type = 1; - ls.back()->status = 0; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXResponseHeader{}); + ls.back().request_type = 1; + ls.back().status = 0; + return ls; } }; WRITE_CLASS_ENCODER(CephXResponseHeader) @@ -142,10 +148,12 @@ struct CephXTicketBlob { f->dump_unsigned("blob_len", blob.length()); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXTicketBlob); - ls.back()->secret_id = 123; - ls.back()->blob.append(std::string_view("this is a blob")); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXTicketBlob{}); + ls.back().secret_id = 123; + ls.back().blob.append(std::string_view("this is a blob")); + return ls; } }; WRITE_CLASS_ENCODER(CephXTicketBlob) @@ -194,16 +202,18 @@ struct CephXAuthenticate { f->close_section(); f->dump_unsigned("other_keys", other_keys); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXAuthenticate); - ls.back()->client_challenge = 0; - ls.back()->key = 0; - ls.push_back(new CephXAuthenticate); - ls.back()->client_challenge = 1; - ls.back()->key = 2; - ls.back()->old_ticket.secret_id = 3; - ls.back()->old_ticket.blob.append(std::string_view("this is a blob")); - ls.back()->other_keys = 4; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXAuthenticate{}); + ls.back().client_challenge = 0; + ls.back().key = 0; + ls.push_back(CephXAuthenticate{}); + ls.back().client_challenge = 1; + ls.back().key = 2; + ls.back().old_ticket.secret_id = 3; + ls.back().old_ticket.blob.append(std::string_view("this is a blob")); + ls.back().other_keys = 4; + return ls; } }; WRITE_CLASS_ENCODER(CephXAuthenticate) @@ -225,10 +235,12 @@ struct CephXChallengeBlob { f->dump_unsigned("server_challenge", server_challenge); f->dump_unsigned("client_challenge", client_challenge); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXChallengeBlob); - ls.back()->server_challenge = 123; - ls.back()->client_challenge = 456; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXChallengeBlob{}); + ls.back().server_challenge = 123; + ls.back().client_challenge = 456; + return ls; } }; WRITE_CLASS_ENCODER(CephXChallengeBlob) @@ -285,9 +297,11 @@ struct CephXServiceTicketRequest { f->dump_unsigned("keys", keys); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXServiceTicketRequest); - ls.back()->keys = 123; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXServiceTicketRequest{}); + ls.back().keys = 123; + return ls; } }; WRITE_CLASS_ENCODER(CephXServiceTicketRequest) @@ -326,12 +340,14 @@ struct CephXAuthorizeReply { f->dump_unsigned("nonce_plus_one", nonce_plus_one); f->dump_string("connection_secret", connection_secret); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXAuthorizeReply); - ls.back()->nonce_plus_one = 0; - ls.push_back(new CephXAuthorizeReply); - ls.back()->nonce_plus_one = 123; - ls.back()->connection_secret = "secret"; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXAuthorizeReply{}); + ls.back().nonce_plus_one = 0; + ls.push_back(CephXAuthorizeReply{}); + ls.back().nonce_plus_one = 123; + ls.back().connection_secret = "secret"; + return ls; } }; WRITE_CLASS_ENCODER(CephXAuthorizeReply) @@ -439,12 +455,14 @@ struct CephXServiceTicket { session_key.dump(f); validity.dump(f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXServiceTicket); - ls.push_back(new CephXServiceTicket); - ls.back()->session_key.set_secret( + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXServiceTicket{}); + ls.push_back(CephXServiceTicket{}); + ls.back().session_key.set_secret( CEPH_CRYPTO_AES, bufferptr("1234567890123456", 16), utime_t(123, 456)); - ls.back()->validity = utime_t(123, 456); + ls.back().validity = utime_t(123, 456); + return ls; } }; WRITE_CLASS_ENCODER(CephXServiceTicket) @@ -472,13 +490,15 @@ struct CephXServiceTicketInfo { ticket.dump(f); session_key.dump(f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXServiceTicketInfo); - ls.push_back(new CephXServiceTicketInfo); - ls.back()->ticket.global_id = 1234; - ls.back()->ticket.init_timestamps(utime_t(123, 456), utime_t(123, 456)); - ls.back()->session_key.set_secret( + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXServiceTicketInfo{}); + ls.push_back(CephXServiceTicketInfo{}); + ls.back().ticket.global_id = 1234; + ls.back().ticket.init_timestamps(utime_t(123, 456), utime_t(123, 456)); + ls.back().session_key.set_secret( CEPH_CRYPTO_AES, bufferptr("1234567890123456", 16), utime_t(123, 456)); + return ls; } }; WRITE_CLASS_ENCODER(CephXServiceTicketInfo) @@ -500,9 +520,11 @@ struct CephXAuthorizeChallenge : public AuthAuthorizerChallenge { void dump(ceph::Formatter *f) const { f->dump_unsigned("server_challenge", server_challenge); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXAuthorizeChallenge); - ls.back()->server_challenge = 1234; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXAuthorizeChallenge{}); + ls.back().server_challenge = 1234; + return ls; } }; WRITE_CLASS_ENCODER(CephXAuthorizeChallenge) @@ -534,12 +556,14 @@ struct CephXAuthorize { f->dump_unsigned("have_challenge", have_challenge); f->dump_unsigned("server_challenge_plus_one", server_challenge_plus_one); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new CephXAuthorize); - ls.push_back(new CephXAuthorize); - ls.back()->nonce = 1234; - ls.back()->have_challenge = true; - ls.back()->server_challenge_plus_one = 1234; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(CephXAuthorize{}); + ls.push_back(CephXAuthorize{}); + ls.back().nonce = 1234; + ls.back().have_challenge = true; + ls.back().server_challenge_plus_one = 1234; + return ls; } }; WRITE_CLASS_ENCODER(CephXAuthorize) diff --git a/src/cls/2pc_queue/cls_2pc_queue_ops.h b/src/cls/2pc_queue/cls_2pc_queue_ops.h index fa4f8765ffe2..65435c521f8b 100644 --- a/src/cls/2pc_queue/cls_2pc_queue_ops.h +++ b/src/cls/2pc_queue/cls_2pc_queue_ops.h @@ -30,12 +30,14 @@ struct cls_2pc_queue_reserve_op { f->dump_unsigned("entries", entries); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_queue_reserve_op); - ls.back()->size = 0; - ls.push_back(new cls_2pc_queue_reserve_op); - ls.back()->size = 123; - ls.back()->entries = 456; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_queue_reserve_op{}); + ls.back().size = 0; + ls.push_back(cls_2pc_queue_reserve_op{}); + ls.back().size = 123; + ls.back().entries = 456; + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_queue_reserve_op) @@ -59,9 +61,11 @@ struct cls_2pc_queue_reserve_ret { f->dump_unsigned("id", id); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_queue_reserve_ret); - ls.back()->id = 123; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_queue_reserve_ret{}); + ls.back().id = 123; + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_queue_reserve_ret) @@ -89,13 +93,15 @@ struct cls_2pc_queue_commit_op { encode_json("bl_data_vec", bl_data_vec, f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_queue_commit_op); - ls.back()->id = 123; - ls.back()->bl_data_vec.push_back(ceph::buffer::list()); - ls.back()->bl_data_vec.back().append("foo"); - ls.back()->bl_data_vec.push_back(ceph::buffer::list()); - ls.back()->bl_data_vec.back().append("bar"); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_queue_commit_op{}); + ls.back().id = 123; + ls.back().bl_data_vec.push_back(ceph::buffer::list()); + ls.back().bl_data_vec.back().append("foo"); + ls.back().bl_data_vec.push_back(ceph::buffer::list()); + ls.back().bl_data_vec.back().append("bar"); + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_queue_commit_op) @@ -117,9 +123,11 @@ struct cls_2pc_queue_abort_op { void dump(ceph::Formatter *f) const { f->dump_unsigned("id", id); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_queue_abort_op); - ls.back()->id = 1; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_queue_abort_op{}); + ls.back().id = 1; + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_queue_abort_op) @@ -142,10 +150,12 @@ struct cls_2pc_queue_expire_op { void dump(ceph::Formatter *f) const { f->dump_stream("stale_time") << stale_time; } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_queue_expire_op); - ls.push_back(new cls_2pc_queue_expire_op); - ls.back()->stale_time = ceph::coarse_real_time::min(); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_queue_expire_op{}); + ls.push_back(cls_2pc_queue_expire_op{}); + ls.back().stale_time = ceph::coarse_real_time::min(); + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_queue_expire_op) @@ -175,11 +185,13 @@ struct cls_2pc_queue_reservations_ret { f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_queue_reservations_ret); - ls.push_back(new cls_2pc_queue_reservations_ret); - ls.back()->reservations[1] = cls_2pc_reservation(); - ls.back()->reservations[2] = cls_2pc_reservation(); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_queue_reservations_ret{}); + ls.push_back(cls_2pc_queue_reservations_ret{}); + ls.back().reservations[1] = cls_2pc_reservation(); + ls.back().reservations[2] = cls_2pc_reservation(); + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_queue_reservations_ret) @@ -206,4 +218,4 @@ struct cls_2pc_queue_remove_op { DECODE_FINISH(bl); } }; -WRITE_CLASS_ENCODER(cls_2pc_queue_remove_op) \ No newline at end of file +WRITE_CLASS_ENCODER(cls_2pc_queue_remove_op) diff --git a/src/cls/2pc_queue/cls_2pc_queue_types.h b/src/cls/2pc_queue/cls_2pc_queue_types.h index 17c19b6ab0d1..c64ce58632f7 100644 --- a/src/cls/2pc_queue/cls_2pc_queue_types.h +++ b/src/cls/2pc_queue/cls_2pc_queue_types.h @@ -42,12 +42,14 @@ struct cls_2pc_reservation f->dump_stream("timestamp") << timestamp; } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_reservation); - ls.back()->size = 0; - ls.push_back(new cls_2pc_reservation); - ls.back()->size = 123; - ls.back()->timestamp = ceph::coarse_real_clock::zero(); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_reservation{}); + ls.back().size = 0; + ls.push_back(cls_2pc_reservation{}); + ls.back().size = 123; + ls.back().timestamp = ceph::coarse_real_clock::zero(); + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_reservation) @@ -98,13 +100,15 @@ struct cls_2pc_urgent_data f->dump_bool("has_xattrs", has_xattrs); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_2pc_urgent_data); - ls.push_back(new cls_2pc_urgent_data); - ls.back()->reserved_size = 123; - ls.back()->last_id = 456; - ls.back()->reservations.emplace(789, cls_2pc_reservation(1, ceph::coarse_real_clock::zero(), 2)); - ls.back()->has_xattrs = true; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_2pc_urgent_data{}); + ls.push_back(cls_2pc_urgent_data{}); + ls.back().reserved_size = 123; + ls.back().last_id = 456; + ls.back().reservations.emplace(789, cls_2pc_reservation(1, ceph::coarse_real_clock::zero(), 2)); + ls.back().has_xattrs = true; + return ls; } }; WRITE_CLASS_ENCODER(cls_2pc_urgent_data) diff --git a/src/cls/cas/cls_cas_internal.h b/src/cls/cas/cls_cas_internal.h index 0b5c56977d29..a4020566eead 100644 --- a/src/cls/cas/cls_cas_internal.h +++ b/src/cls/cas/cls_cas_internal.h @@ -93,8 +93,10 @@ struct chunk_refs_t { void dump(Formatter *f) const { r->dump(f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new chunk_refs_t()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(chunk_refs_t{}); + return ls; } }; WRITE_CLASS_ENCODER(chunk_refs_t) @@ -145,11 +147,13 @@ struct chunk_refs_by_object_t : public chunk_refs_t::refs_t { } f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new chunk_refs_by_object_t()); - ls.push_back(new chunk_refs_by_object_t()); - ls.back()->by_object.insert(hobject_t(sobject_t("foo", CEPH_NOSNAP))); - ls.back()->by_object.insert(hobject_t(sobject_t("bar", CEPH_NOSNAP))); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(chunk_refs_by_object_t{}); + ls.push_back(chunk_refs_by_object_t{}); + ls.back().by_object.insert(hobject_t(sobject_t("foo", CEPH_NOSNAP))); + ls.back().by_object.insert(hobject_t(sobject_t("bar", CEPH_NOSNAP))); + return ls; } }; WRITE_CLASS_ENCODER(chunk_refs_by_object_t) @@ -392,10 +396,12 @@ struct chunk_refs_count_t : public chunk_refs_t::refs_t { f->dump_string("type", "count"); f->dump_unsigned("count", total); } - static void generate_test_instances(std::list& o) { - o.push_back(new chunk_refs_count_t); - o.push_back(new chunk_refs_count_t); - o.back()->total = 123; + static std::list generate_test_instances() { + std::list o; + o.push_back(chunk_refs_count_t{}); + o.push_back(chunk_refs_count_t{}); + o.back().total = 123; + return o; } }; WRITE_CLASS_ENCODER(chunk_refs_count_t) diff --git a/src/cls/cas/cls_cas_ops.h b/src/cls/cas/cls_cas_ops.h index a79013f0ea12..fdc3ea9fc7cf 100644 --- a/src/cls/cas/cls_cas_ops.h +++ b/src/cls/cas/cls_cas_ops.h @@ -39,8 +39,10 @@ struct cls_cas_chunk_create_or_get_ref_op { f->dump_unsigned("flags", flags); f->dump_unsigned("data_len", data.length()); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_cas_chunk_create_or_get_ref_op()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_cas_chunk_create_or_get_ref_op{}); + return ls; } }; WRITE_CLASS_ENCODER(cls_cas_chunk_create_or_get_ref_op) @@ -65,8 +67,10 @@ struct cls_cas_chunk_get_ref_op { void dump(ceph::Formatter *f) const { f->dump_object("source", source); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_cas_chunk_get_ref_op()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_cas_chunk_get_ref_op{}); + return ls; } }; WRITE_CLASS_ENCODER(cls_cas_chunk_get_ref_op) @@ -92,8 +96,10 @@ struct cls_cas_chunk_put_ref_op { void dump(ceph::Formatter *f) const { f->dump_object("source", source); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_cas_chunk_put_ref_op()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_cas_chunk_put_ref_op{}); + return ls; } }; WRITE_CLASS_ENCODER(cls_cas_chunk_put_ref_op) diff --git a/src/cls/fifo/cls_fifo.cc b/src/cls/fifo/cls_fifo.cc index 4b02903916dc..6526f7ee51d3 100644 --- a/src/cls/fifo/cls_fifo.cc +++ b/src/cls/fifo/cls_fifo.cc @@ -57,10 +57,12 @@ struct entry_header { void dump(ceph::Formatter *f) const { f->dump_stream("mtime") << mtime; } - static void generate_test_instances(std::list& ls) { - ls.push_back(new entry_header); - ls.push_back(new entry_header); - ls.back()->mtime = ceph::real_clock::now(); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(entry_header{}); + ls.push_back(entry_header{}); + ls.back().mtime = ceph::real_clock::now(); + return ls; } }; WRITE_CLASS_ENCODER(entry_header) diff --git a/src/cls/fifo/cls_fifo_ops.h b/src/cls/fifo/cls_fifo_ops.h index d466122a9527..0328e4ca0f90 100644 --- a/src/cls/fifo/cls_fifo_ops.h +++ b/src/cls/fifo/cls_fifo_ops.h @@ -77,20 +77,22 @@ struct create_meta f->dump_unsigned("max_entry_size", max_entry_size); f->dump_bool("exclusive", exclusive); } - static void generate_test_instances(std::list& o) { - o.push_back(new create_meta); - o.push_back(new create_meta); - o.back()->id = "id"; + static std::list generate_test_instances() { + std::list o; + o.push_back(create_meta{}); + o.push_back(create_meta{}); + o.back().id = "id"; objv v1; v1.instance = "inst1"; v1.ver = 1; - o.back()->version = v1; - o.back()->pool.name = "pool"; - o.back()->pool.ns = "ns"; - o.back()->oid_prefix = "prefix"; - o.back()->max_part_size = 1024; - o.back()->max_entry_size = 1024; - o.back()->exclusive = true; + o.back().version = v1; + o.back().pool.name = "pool"; + o.back().pool.ns = "ns"; + o.back().oid_prefix = "prefix"; + o.back().max_part_size = 1024; + o.back().max_entry_size = 1024; + o.back().exclusive = true; + return o; } }; WRITE_CLASS_ENCODER(create_meta) @@ -112,13 +114,15 @@ struct get_meta void dump(ceph::Formatter *f) const { f->dump_object("version", version.value_or(objv())); } - static void generate_test_instances(std::list& o) { - o.push_back(new get_meta); - o.push_back(new get_meta); + static std::list generate_test_instances() { + std::list o; + o.push_back(get_meta{}); + o.push_back(get_meta{}); objv v1; v1.instance = "inst1"; v1.ver = 1; - o.back()->version = v1; + o.back().version = v1; + return o; } }; WRITE_CLASS_ENCODER(get_meta) @@ -149,12 +153,14 @@ struct get_meta_reply f->dump_unsigned("part_header_size", part_header_size); f->dump_unsigned("part_entry_overhead", part_entry_overhead); } - static void generate_test_instances(std::list& o) { - o.push_back(new get_meta_reply); - o.push_back(new get_meta_reply); - o.back()->info = fifo::info(); - o.back()->part_header_size = 1024; - o.back()->part_entry_overhead = 1024; + static std::list generate_test_instances() { + std::list o; + o.push_back(get_meta_reply{}); + o.push_back(get_meta_reply{}); + o.back().info = fifo::info(); + o.back().part_header_size = 1024; + o.back().part_entry_overhead = 1024; + return o; } }; WRITE_CLASS_ENCODER(get_meta_reply) diff --git a/src/cls/fifo/cls_fifo_types.h b/src/cls/fifo/cls_fifo_types.h index 139b29860075..03f1d58cad2e 100644 --- a/src/cls/fifo/cls_fifo_types.h +++ b/src/cls/fifo/cls_fifo_types.h @@ -58,11 +58,13 @@ struct objv { f->dump_string("instance", instance); f->dump_unsigned("ver", ver); } - static void generate_test_instances(std::list& o) { - o.push_back(new objv); - o.push_back(new objv); - o.back()->instance = "instance"; - o.back()->ver = 1; + static std::list generate_test_instances() { + std::list o; + o.emplace_back(); + o.emplace_back(); + o.back().instance = "instance"; + o.back().ver = 1; + return o; } void decode_json(JSONObj* obj); @@ -117,12 +119,14 @@ struct data_params { f->dump_unsigned("max_entry_size", max_entry_size); f->dump_unsigned("full_size_threshold", full_size_threshold); } - static void generate_test_instances(std::list& o) { - o.push_back(new data_params); - o.push_back(new data_params); - o.back()->max_part_size = 1; - o.back()->max_entry_size = 2; - o.back()->full_size_threshold = 3; + static std::list generate_test_instances() { + std::list o; + o.push_back(data_params{}); + o.push_back(data_params{}); + o.back().max_part_size = 1; + o.back().max_entry_size = 2; + o.back().full_size_threshold = 3; + return o; } void decode_json(JSONObj* obj); @@ -437,20 +441,22 @@ struct info { } f->close_section(); } - static void generate_test_instances(std::list& o) { - o.push_back(new info); - o.push_back(new info); - o.back()->id = "myid"; - o.back()->version = objv(); - o.back()->oid_prefix = "myprefix"; - o.back()->params = data_params(); - o.back()->tail_part_num = 123; - o.back()->head_part_num = 456; - o.back()->min_push_part_num = 789; - o.back()->max_push_part_num = 101112; - o.back()->journal.insert(journal_entry(journal_entry::Op::create, 1)); - o.back()->journal.insert(journal_entry(journal_entry::Op::create, 2)); - o.back()->journal.insert(journal_entry(journal_entry::Op::create, 3)); + static std::list generate_test_instances() { + std::list o; + o.push_back(info{}); + o.push_back(info{}); + o.back().id = "myid"; + o.back().version = objv(); + o.back().oid_prefix = "myprefix"; + o.back().params = data_params(); + o.back().tail_part_num = 123; + o.back().head_part_num = 456; + o.back().min_push_part_num = 789; + o.back().max_push_part_num = 101112; + o.back().journal.insert(journal_entry(journal_entry::Op::create, 1)); + o.back().journal.insert(journal_entry(journal_entry::Op::create, 2)); + o.back().journal.insert(journal_entry(journal_entry::Op::create, 3)); + return o; } void decode_json(JSONObj* obj); diff --git a/src/cls/journal/cls_journal_types.cc b/src/cls/journal/cls_journal_types.cc index 6e9dfde87818..d311811165b2 100644 --- a/src/cls/journal/cls_journal_types.cc +++ b/src/cls/journal/cls_journal_types.cc @@ -33,9 +33,11 @@ void ObjectPosition::dump(Formatter *f) const { f->dump_unsigned("entry_tid", entry_tid); } -void ObjectPosition::generate_test_instances(std::list &o) { - o.push_back(new ObjectPosition()); - o.push_back(new ObjectPosition(1, 2, 3)); +std::list ObjectPosition::generate_test_instances() { + std::list o; + o.push_back(ObjectPosition{}); + o.push_back(ObjectPosition(1, 2, 3)); + return o; } void ObjectSetPosition::encode(bufferlist& bl) const { @@ -60,10 +62,11 @@ void ObjectSetPosition::dump(Formatter *f) const { f->close_section(); } -void ObjectSetPosition::generate_test_instances( - std::list &o) { - o.push_back(new ObjectSetPosition()); - o.push_back(new ObjectSetPosition({{0, 1, 120}, {121, 2, 121}})); +std::list ObjectSetPosition::generate_test_instances() { + std::list o; + o.push_back(ObjectSetPosition{}); + o.push_back(ObjectSetPosition({{0, 1, 120}, {121, 2, 121}})); + return o; } void Client::encode(bufferlist& bl) const { @@ -101,13 +104,15 @@ void Client::dump(Formatter *f) const { f->dump_string("state", stringify(state)); } -void Client::generate_test_instances(std::list &o) { +std::list Client::generate_test_instances() { + std::list o; bufferlist data; data.append(std::string(128, '1')); - o.push_back(new Client()); - o.push_back(new Client("id", data)); - o.push_back(new Client("id", data, {{{1, 2, 120}, {2, 3, 121}}})); + o.push_back(Client()); + o.push_back(Client("id", data)); + o.push_back(Client("id", data, {{{1, 2, 120}, {2, 3, 121}}})); + return o; } void Tag::encode(bufferlist& bl) const { @@ -135,12 +140,14 @@ void Tag::dump(Formatter *f) const { f->dump_string("data", data_ss.str()); } -void Tag::generate_test_instances(std::list &o) { - o.push_back(new Tag()); +std::list Tag::generate_test_instances() { + std::list o; + o.push_back(Tag{}); bufferlist data; data.append(std::string(128, '1')); - o.push_back(new Tag(123, 234, data)); + o.push_back(Tag(123, 234, data)); + return o; } std::ostream &operator<<(std::ostream &os, const ClientState &state) { diff --git a/src/cls/journal/cls_journal_types.h b/src/cls/journal/cls_journal_types.h index f82d30c7e469..0471b593f17e 100644 --- a/src/cls/journal/cls_journal_types.h +++ b/src/cls/journal/cls_journal_types.h @@ -52,7 +52,7 @@ struct ObjectPosition { return entry_tid < rhs.entry_tid; } - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; typedef std::list ObjectPositions; @@ -73,7 +73,7 @@ struct ObjectSetPosition { return (object_positions == rhs.object_positions); } - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; enum ClientState { @@ -107,7 +107,7 @@ struct Client { void decode(ceph::buffer::list::const_iterator& iter); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; struct Tag { @@ -134,7 +134,7 @@ struct Tag { void decode(ceph::buffer::list::const_iterator& iter); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ObjectPosition); diff --git a/src/cls/lock/cls_lock_ops.cc b/src/cls/lock/cls_lock_ops.cc index 1f878be48eb7..2d4e607b9e47 100644 --- a/src/cls/lock/cls_lock_ops.cc +++ b/src/cls/lock/cls_lock_ops.cc @@ -39,18 +39,20 @@ void cls_lock_lock_op::dump(Formatter *f) const f->dump_int("flags", (int)flags); } -void cls_lock_lock_op::generate_test_instances(list& o) -{ - cls_lock_lock_op *i = new cls_lock_lock_op; - i->name = "name"; - i->type = ClsLockType::SHARED; - i->cookie = "cookie"; - i->tag = "tag"; - i->description = "description"; - i->duration = utime_t(5, 0); - i->flags = LOCK_FLAG_MAY_RENEW; - o.push_back(i); - o.push_back(new cls_lock_lock_op); +list cls_lock_lock_op::generate_test_instances() +{ + list o; + cls_lock_lock_op i; + i.name = "name"; + i.type = ClsLockType::SHARED; + i.cookie = "cookie"; + i.tag = "tag"; + i.description = "description"; + i.duration = utime_t(5, 0); + i.flags = LOCK_FLAG_MAY_RENEW; + o.push_back(std::move(i)); + o.push_back(cls_lock_lock_op{}); + return o; } void cls_lock_unlock_op::dump(Formatter *f) const @@ -59,13 +61,15 @@ void cls_lock_unlock_op::dump(Formatter *f) const f->dump_string("cookie", cookie); } -void cls_lock_unlock_op::generate_test_instances(list& o) +list cls_lock_unlock_op::generate_test_instances() { - cls_lock_unlock_op *i = new cls_lock_unlock_op; - i->name = "name"; - i->cookie = "cookie"; - o.push_back(i); - o.push_back(new cls_lock_unlock_op); + list o; + cls_lock_unlock_op i; + i.name = "name"; + i.cookie = "cookie"; + o.push_back(std::move(i)); + o.push_back(cls_lock_unlock_op{}); + return o; } void cls_lock_break_op::dump(Formatter *f) const @@ -75,14 +79,16 @@ void cls_lock_break_op::dump(Formatter *f) const f->dump_stream("locker") << locker; } -void cls_lock_break_op::generate_test_instances(list& o) +list cls_lock_break_op::generate_test_instances() { - cls_lock_break_op *i = new cls_lock_break_op; - i->name = "name"; - i->cookie = "cookie"; - i->locker = entity_name_t::CLIENT(1); - o.push_back(i); - o.push_back(new cls_lock_break_op); + list o; + cls_lock_break_op i; + i.name = "name"; + i.cookie = "cookie"; + i.locker = entity_name_t::CLIENT(1); + o.push_back(std::move(i)); + o.push_back(cls_lock_break_op{}); + return o; } void cls_lock_get_info_op::dump(Formatter *f) const @@ -90,12 +96,14 @@ void cls_lock_get_info_op::dump(Formatter *f) const f->dump_string("name", name); } -void cls_lock_get_info_op::generate_test_instances(list& o) +list cls_lock_get_info_op::generate_test_instances() { - cls_lock_get_info_op *i = new cls_lock_get_info_op; - i->name = "name"; - o.push_back(i); - o.push_back(new cls_lock_get_info_op); + list o; + cls_lock_get_info_op i; + i.name = "name"; + o.push_back(std::move(i)); + o.push_back(cls_lock_get_info_op{}); + return o; } static void generate_test_addr(entity_addr_t& a, int nonce, int port) @@ -130,22 +138,24 @@ void cls_lock_get_info_reply::dump(Formatter *f) const f->close_section(); } -void cls_lock_get_info_reply::generate_test_instances(list& o) +list cls_lock_get_info_reply::generate_test_instances() { - cls_lock_get_info_reply *i = new cls_lock_get_info_reply; - i->lock_type = ClsLockType::SHARED; - i->tag = "tag"; + list o; + cls_lock_get_info_reply i; + i.lock_type = ClsLockType::SHARED; + i.tag = "tag"; locker_id_t id1, id2; entity_addr_t addr1, addr2; generate_lock_id(id1, 1, "cookie1"); generate_test_addr(addr1, 10, 20); - i->lockers[id1] = locker_info_t(utime_t(10, 0), addr1, "description1"); + i.lockers[id1] = locker_info_t(utime_t(10, 0), addr1, "description1"); generate_lock_id(id2, 2, "cookie2"); generate_test_addr(addr2, 30, 40); - i->lockers[id2] = locker_info_t(utime_t(20, 0), addr2, "description2"); + i.lockers[id2] = locker_info_t(utime_t(20, 0), addr2, "description2"); - o.push_back(i); - o.push_back(new cls_lock_get_info_reply); + o.push_back(std::move(i)); + o.push_back(cls_lock_get_info_reply{}); + return o; } void cls_lock_list_locks_reply::dump(Formatter *f) const @@ -160,15 +170,17 @@ void cls_lock_list_locks_reply::dump(Formatter *f) const f->close_section(); } -void cls_lock_list_locks_reply::generate_test_instances(list& o) +list cls_lock_list_locks_reply::generate_test_instances() { - cls_lock_list_locks_reply *i = new cls_lock_list_locks_reply; - i->locks.push_back("lock1"); - i->locks.push_back("lock2"); - i->locks.push_back("lock3"); + list o; + cls_lock_list_locks_reply i; + i.locks.push_back("lock1"); + i.locks.push_back("lock2"); + i.locks.push_back("lock3"); - o.push_back(i); - o.push_back(new cls_lock_list_locks_reply); + o.push_back(std::move(i)); + o.push_back(cls_lock_list_locks_reply{}); + return o; } void cls_lock_assert_op::dump(Formatter *f) const @@ -179,15 +191,17 @@ void cls_lock_assert_op::dump(Formatter *f) const f->dump_string("tag", tag); } -void cls_lock_assert_op::generate_test_instances(list& o) +list cls_lock_assert_op::generate_test_instances() { - cls_lock_assert_op *i = new cls_lock_assert_op; - i->name = "name"; - i->type = ClsLockType::SHARED; - i->cookie = "cookie"; - i->tag = "tag"; - o.push_back(i); - o.push_back(new cls_lock_assert_op); + list o; + cls_lock_assert_op i; + i.name = "name"; + i.type = ClsLockType::SHARED; + i.cookie = "cookie"; + i.tag = "tag"; + o.push_back(std::move(i)); + o.push_back(cls_lock_assert_op{}); + return o; } void cls_lock_set_cookie_op::dump(Formatter *f) const @@ -199,15 +213,17 @@ void cls_lock_set_cookie_op::dump(Formatter *f) const f->dump_string("new_cookie", new_cookie); } -void cls_lock_set_cookie_op::generate_test_instances(list& o) +list cls_lock_set_cookie_op::generate_test_instances() { - cls_lock_set_cookie_op *i = new cls_lock_set_cookie_op; - i->name = "name"; - i->type = ClsLockType::SHARED; - i->cookie = "cookie"; - i->tag = "tag"; - i->new_cookie = "new cookie"; - o.push_back(i); - o.push_back(new cls_lock_set_cookie_op); + list o; + cls_lock_set_cookie_op i; + i.name = "name"; + i.type = ClsLockType::SHARED; + i.cookie = "cookie"; + i.tag = "tag"; + i.new_cookie = "new cookie"; + o.push_back(std::move(i)); + o.push_back(cls_lock_set_cookie_op{}); + return o; } diff --git a/src/cls/lock/cls_lock_ops.h b/src/cls/lock/cls_lock_ops.h index 4de050f186b9..866ea504218e 100644 --- a/src/cls/lock/cls_lock_ops.h +++ b/src/cls/lock/cls_lock_ops.h @@ -46,7 +46,7 @@ struct cls_lock_lock_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_lock_op) @@ -70,7 +70,7 @@ struct cls_lock_unlock_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_unlock_op) @@ -97,7 +97,7 @@ struct cls_lock_break_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_break_op) @@ -118,7 +118,7 @@ struct cls_lock_get_info_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_get_info_op) @@ -148,7 +148,7 @@ struct cls_lock_get_info_reply DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(cls_lock_get_info_reply) @@ -169,7 +169,7 @@ struct cls_lock_list_locks_reply DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_list_locks_reply) @@ -202,7 +202,7 @@ struct cls_lock_assert_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_assert_op) @@ -238,7 +238,7 @@ struct cls_lock_set_cookie_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_lock_set_cookie_op) diff --git a/src/cls/lock/cls_lock_types.cc b/src/cls/lock/cls_lock_types.cc index 904ed268eaf1..5bf7f8602b86 100644 --- a/src/cls/lock/cls_lock_types.cc +++ b/src/cls/lock/cls_lock_types.cc @@ -30,12 +30,14 @@ void locker_id_t::dump(ceph::Formatter *f) const f->dump_string("cookie", cookie); } -void locker_id_t::generate_test_instances(std::list& o) +std::list locker_id_t::generate_test_instances() { - locker_id_t *i = new locker_id_t; - generate_lock_id(*i, 1, "cookie"); - o.push_back(i); - o.push_back(new locker_id_t); + std::list o; + locker_id_t i; + generate_lock_id(i, 1, "cookie"); + o.push_back(std::move(i)); + o.push_back(locker_id_t{}); + return o; } void locker_info_t::dump(ceph::Formatter *f) const @@ -57,14 +59,16 @@ static void generate_test_addr(entity_addr_t& a, int nonce, int port) a.set_port(port); } -void locker_info_t::generate_test_instances(std::list& o) +std::list locker_info_t::generate_test_instances() { - locker_info_t *i = new locker_info_t; - i->expiration = utime_t(5, 0); - generate_test_addr(i->addr, 1, 2); - i->description = "description"; - o.push_back(i); - o.push_back(new locker_info_t); + std::list o; + locker_info_t i; + i.expiration = utime_t(5, 0); + generate_test_addr(i.addr, 1, 2); + i.description = "description"; + o.push_back(std::move(i)); + o.push_back(locker_info_t{}); + return o; } void lock_info_t::dump(ceph::Formatter *f) const @@ -81,18 +85,20 @@ void lock_info_t::dump(ceph::Formatter *f) const f->close_section(); } -void lock_info_t::generate_test_instances(std::list& o) +std::list lock_info_t::generate_test_instances() { - lock_info_t *i = new lock_info_t; + std::list o; + lock_info_t i; locker_id_t id; locker_info_t info; generate_lock_id(id, 1, "cookie"); info.expiration = utime_t(5, 0); generate_test_addr(info.addr, 1, 2); info.description = "description"; - i->lockers[id] = info; - i->lock_type = ClsLockType::EXCLUSIVE; - i->tag = "tag"; - o.push_back(i); - o.push_back(new lock_info_t); + i.lockers[id] = info; + i.lock_type = ClsLockType::EXCLUSIVE; + i.tag = "tag"; + o.push_back(std::move(i)); + o.push_back(lock_info_t{}); + return o; } diff --git a/src/cls/lock/cls_lock_types.h b/src/cls/lock/cls_lock_types.h index 13f3e1478108..55dbe8410557 100644 --- a/src/cls/lock/cls_lock_types.h +++ b/src/cls/lock/cls_lock_types.h @@ -90,7 +90,7 @@ namespace rados { out << data.locker; return out; } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(locker_id_t) @@ -133,7 +133,7 @@ namespace rados { return out; } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(locker_info_t) @@ -164,7 +164,7 @@ namespace rados { lock_info_t() : lock_type(ClsLockType::NONE) {} void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(lock_info_t); } diff --git a/src/cls/log/cls_log_ops.h b/src/cls/log/cls_log_ops.h index 6c1e5bb224ba..d0609aa0e425 100644 --- a/src/cls/log/cls_log_ops.h +++ b/src/cls/log/cls_log_ops.h @@ -40,17 +40,19 @@ struct add_op { encode_json("monotonic_inc", monotonic_inc, f); } - static void generate_test_instances(std::list& l) { + static std::list generate_test_instances() { using namespace std::literals; - l.push_back(new add_op); - l.push_back(new add_op); - l.back()->entries.push_back(entry{}); - l.back()->entries.push_back(entry{}); - l.back()->entries.back().section = "section"; - l.back()->entries.back().name = "name"; - l.back()->entries.back().timestamp = ceph::real_time{1s + 2ns}; - l.back()->entries.back().data.append("data"); - l.back()->entries.back().id = "id"; + std::list l; + l.emplace_back(); + l.emplace_back(); + l.back().entries.push_back(entry{}); + l.back().entries.push_back(entry{}); + l.back().entries.back().section = "section"; + l.back().entries.back().name = "name"; + l.back().entries.back().timestamp = ceph::real_time{1s + 2ns}; + l.back().entries.back().data.append("data"); + l.back().entries.back().id = "id"; + return l; } }; WRITE_CLASS_ENCODER(add_op) @@ -88,14 +90,16 @@ struct list_op { f->dump_stream("to_time") << to_time; f->dump_int("max_entries", max_entries); } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { using namespace std::literals; - ls.push_back(new list_op); - ls.push_back(new list_op); - ls.back()->from_time = ceph::real_time{1s + 2ns}; - ls.back()->marker = "marker"; - ls.back()->to_time = ceph::real_time{3s + 4ns}; - ls.back()->max_entries = 5; + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().from_time = ceph::real_time{1s + 2ns}; + ls.back().marker = "marker"; + ls.back().to_time = ceph::real_time{3s + 4ns}; + ls.back().max_entries = 5; + return ls; } }; WRITE_CLASS_ENCODER(list_op) @@ -128,19 +132,21 @@ struct list_ret { f->dump_string("marker", marker); f->dump_bool("truncated", truncated); } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { using namespace std::literals; - ls.push_back(new list_ret); - ls.push_back(new list_ret); - ls.back()->entries.push_back(entry{}); - ls.back()->entries.push_back(entry{}); - ls.back()->entries.back().section = "section"; - ls.back()->entries.back().name = "name"; - ls.back()->entries.back().timestamp = ceph::real_time{1s + 2ns}; - ls.back()->entries.back().data.append("data"); - ls.back()->entries.back().id = "id"; - ls.back()->marker = "marker"; - ls.back()->truncated = true; + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().entries.push_back(entry{}); + ls.back().entries.push_back(entry{}); + ls.back().entries.back().section = "section"; + ls.back().entries.back().name = "name"; + ls.back().entries.back().timestamp = ceph::real_time{1s + 2ns}; + ls.back().entries.back().data.append("data"); + ls.back().entries.back().id = "id"; + ls.back().marker = "marker"; + ls.back().truncated = true; + return ls; } }; WRITE_CLASS_ENCODER(list_ret) @@ -182,14 +188,16 @@ struct trim_op { f->dump_string("from_marker", from_marker); f->dump_string("to_marker", to_marker); } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { using namespace std::literals; - ls.push_back(new trim_op); - ls.push_back(new trim_op); - ls.back()->from_time = ceph::real_time{1s + 2ns}; - ls.back()->to_time = ceph::real_time(3s + 4ns); - ls.back()->from_marker = "from_marker"; - ls.back()->to_marker = "to_marker"; + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().from_time = ceph::real_time{1s + 2ns}; + ls.back().to_time = ceph::real_time(3s + 4ns); + ls.back().from_marker = "from_marker"; + ls.back().to_marker = "to_marker"; + return ls; } }; WRITE_CLASS_ENCODER(trim_op) @@ -212,8 +220,10 @@ struct info_op { void dump(ceph::Formatter* f) const { } - static void generate_test_instances(std::list& ls) { - ls.push_back(new info_op); + static std::list generate_test_instances() { + std::list ls; + ls.emplace_back(); + return ls; } }; WRITE_CLASS_ENCODER(info_op) diff --git a/src/cls/log/cls_log_types.h b/src/cls/log/cls_log_types.h index 2e31313c4a17..75f9116563c5 100644 --- a/src/cls/log/cls_log_types.h +++ b/src/cls/log/cls_log_types.h @@ -69,16 +69,18 @@ struct entry { JSONDecoder::decode_json("id", id, obj); } - static void generate_test_instances(std::list& l) { - l.push_back(new cls::log::entry{}); - l.push_back(new cls::log::entry); - l.back()->id = "test_id"; - l.back()->section = "test_section"; - l.back()->name = "test_name"; - l.back()->timestamp = ceph::real_time{}; + static std::list generate_test_instances() { + std::list l; + l.push_back(cls::log::entry{}); + l.push_back(cls::log::entry{}); + l.back().id = "test_id"; + l.back().section = "test_section"; + l.back().name = "test_name"; + l.back().timestamp = ceph::real_time{}; ceph::buffer::list bl; ceph::encode(std::string("Test"), bl, 0); - l.back()->data = bl; + l.back().data = bl; + return l; } }; WRITE_CLASS_ENCODER(entry) @@ -105,11 +107,13 @@ struct header { f->dump_string("max_marker", max_marker); f->dump_stream("max_time") << max_time; } - static void generate_test_instances(std::list& o) { - o.push_back(new header); - o.push_back(new header); - o.back()->max_marker = "test_marker"; - o.back()->max_time = ceph::real_clock::zero(); + static std::list
generate_test_instances() { + std::list
o; + o.push_back(header{}); + o.push_back(header{}); + o.back().max_marker = "test_marker"; + o.back().max_time = ceph::real_clock::zero(); + return o; } friend auto operator <=>(const header&, const header&) = default; }; diff --git a/src/cls/queue/cls_queue_ops.h b/src/cls/queue/cls_queue_ops.h index 25bf1200c547..db0e901a5c39 100644 --- a/src/cls/queue/cls_queue_ops.h +++ b/src/cls/queue/cls_queue_ops.h @@ -36,12 +36,14 @@ struct cls_queue_init_op { f->dump_unsigned("urgent_data_len", bl_urgent_data.length()); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_init_op); - o.push_back(new cls_queue_init_op); - o.back()->queue_size = 1024; - o.back()->max_urgent_data_size = 1024; - o.back()->bl_urgent_data.append(std::string_view("data")); + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_init_op{}); + o.push_back(cls_queue_init_op{}); + o.back().queue_size = 1024; + o.back().max_urgent_data_size = 1024; + o.back().bl_urgent_data.append(std::string_view("data")); + return o; } }; WRITE_CLASS_ENCODER(cls_queue_init_op) @@ -67,11 +69,13 @@ struct cls_queue_enqueue_op { f->dump_unsigned("data_vec_len", bl_data_vec.size()); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_enqueue_op); - o.push_back(new cls_queue_enqueue_op); - o.back()->bl_data_vec.push_back(ceph::buffer::list()); - o.back()->bl_data_vec.back().append(std::string_view("data")); + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_enqueue_op{}); + o.push_back(cls_queue_enqueue_op{}); + o.back().bl_data_vec.push_back(ceph::buffer::list()); + o.back().bl_data_vec.back().append(std::string_view("data")); + return o; } }; WRITE_CLASS_ENCODER(cls_queue_enqueue_op) @@ -106,11 +110,13 @@ struct cls_queue_list_op { f->dump_string("start_marker", start_marker); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_list_op); - o.push_back(new cls_queue_list_op); - o.back()->max = 123; - o.back()->start_marker = "foo"; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_list_op{}); + o.push_back(cls_queue_list_op{}); + o.back().max = 123; + o.back().start_marker = "foo"; + return o; } }; WRITE_CLASS_ENCODER(cls_queue_list_op) @@ -144,14 +150,16 @@ struct cls_queue_list_ret { encode_json("entries", entries, f); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_list_ret); - o.back()->is_truncated = true; - o.back()->next_marker = "foo"; - o.back()->entries.push_back(cls_queue_entry()); - o.back()->entries.push_back(cls_queue_entry()); - o.back()->entries.back().marker = "id"; - o.back()->entries.back().data.append(std::string_view("data")); + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_list_ret{}); + o.back().is_truncated = true; + o.back().next_marker = "foo"; + o.back().entries.push_back(cls_queue_entry()); + o.back().entries.push_back(cls_queue_entry()); + o.back().entries.back().marker = "id"; + o.back().entries.back().data.append(std::string_view("data")); + return o; } }; WRITE_CLASS_ENCODER(cls_queue_list_ret) @@ -176,10 +184,12 @@ struct cls_queue_remove_op { void dump(ceph::Formatter *f) const { f->dump_string("end_marker", end_marker); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_remove_op); - o.push_back(new cls_queue_remove_op); - o.back()->end_marker = "foo"; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_remove_op{}); + o.push_back(cls_queue_remove_op{}); + o.back().end_marker = "foo"; + return o; } }; WRITE_CLASS_ENCODER(cls_queue_remove_op) @@ -204,9 +214,11 @@ struct cls_queue_get_capacity_ret { void dump(ceph::Formatter *f) const { f->dump_unsigned("queue_capacity", queue_capacity); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_get_capacity_ret); - o.back()->queue_capacity = 123; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_get_capacity_ret{}); + o.back().queue_capacity = 123; + return o; } }; WRITE_CLASS_ENCODER(cls_queue_get_capacity_ret) diff --git a/src/cls/queue/cls_queue_types.h b/src/cls/queue/cls_queue_types.h index 3c3e828edf0a..7d31e57ac06a 100644 --- a/src/cls/queue/cls_queue_types.h +++ b/src/cls/queue/cls_queue_types.h @@ -39,11 +39,13 @@ struct cls_queue_entry f->dump_string("marker", marker); f->dump_unsigned("data_len", data.length()); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_entry); - o.push_back(new cls_queue_entry); - o.back()->data.append(std::string_view("data")); - o.back()->marker = "marker"; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_entry{}); + o.push_back(cls_queue_entry{}); + o.back().data.append(std::string_view("data")); + o.back().marker = "marker"; + return o; } }; WRITE_CLASS_ENCODER(cls_queue_entry) @@ -95,11 +97,13 @@ struct cls_queue_marker f->dump_unsigned("offset", offset); f->dump_unsigned("gen", gen); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_marker); - o.push_back(new cls_queue_marker); - o.back()->offset = 1024; - o.back()->gen = 0; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_marker{}); + o.push_back(cls_queue_marker{}); + o.back().offset = 1024; + o.back().gen = 0; + return o; } }; WRITE_CLASS_ENCODER(cls_queue_marker) @@ -144,16 +148,18 @@ struct cls_queue_head f->dump_unsigned("tail_offset", tail.offset); f->dump_unsigned("tail_gen", tail.gen); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_queue_head); - o.push_back(new cls_queue_head); - o.back()->max_head_size = 1024; - o.back()->front.offset = 1024; - o.back()->front.gen = 0; - o.back()->tail.offset = 1024; - o.back()->tail.gen = 0; - o.back()->queue_size = 1024; - o.back()->max_urgent_data_size = 0; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_queue_head{}); + o.push_back(cls_queue_head{}); + o.back().max_head_size = 1024; + o.back().front.offset = 1024; + o.back().front.gen = 0; + o.back().tail.offset = 1024; + o.back().tail.gen = 0; + o.back().queue_size = 1024; + o.back().max_urgent_data_size = 0; + return o; } }; WRITE_CLASS_ENCODER(cls_queue_head) diff --git a/src/cls/rbd/cls_rbd.h b/src/cls/rbd/cls_rbd.h index 9d9bf3264906..91df6d20e103 100644 --- a/src/cls/rbd/cls_rbd.h +++ b/src/cls/rbd/cls_rbd.h @@ -93,11 +93,13 @@ struct cls_rbd_parent { } } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_rbd_parent{}); - o.push_back(new cls_rbd_parent{{1, "", "image id", 234}, {}}); - o.push_back(new cls_rbd_parent{{1, "", "image id", 234}, {123}}); - o.push_back(new cls_rbd_parent{{1, "ns", "image id", 234}, {123}}); + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_rbd_parent{}); + o.push_back(cls_rbd_parent{{1, "", "image id", 234}, {}}); + o.push_back(cls_rbd_parent{{1, "", "image id", 234}, {123}}); + o.push_back(cls_rbd_parent{{1, "ns", "image id", 234}, {123}}); + return o; } }; WRITE_CLASS_ENCODER_FEATURES(cls_rbd_parent) @@ -225,21 +227,22 @@ struct cls_rbd_snap { } } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_rbd_snap{}); + static std::list generate_test_instances() { + std::list o; + o.emplace_back(); // the parent field is ignored in v8 and up, so let's avoid setting it. // otherwise check-generated.sh would fail due to the disprepancies between // the original dump and re-encoded dump - o.push_back(new cls_rbd_snap{1, "snap", 123456, - RBD_PROTECTION_STATUS_PROTECTED, {}, 31, {}, - cls::rbd::UserSnapshotNamespace{}, 543, {}}); - o.push_back(new cls_rbd_snap{1, "snap", 123456, - RBD_PROTECTION_STATUS_PROTECTED, {}, 31, {}, - cls::rbd::UserSnapshotNamespace{}, 543, {0}}); - o.push_back(new cls_rbd_snap{1, "snap", 123456, - RBD_PROTECTION_STATUS_PROTECTED, {}, 31, {}, - cls::rbd::UserSnapshotNamespace{}, 543, - {123}}); + o.push_back(cls_rbd_snap{1, "snap", 123456, + RBD_PROTECTION_STATUS_PROTECTED, cls_rbd_parent{}, 31, {}, + cls::rbd::UserSnapshotNamespace{}, 543, {}}); + o.push_back(cls_rbd_snap{1, "snap", 123456, + RBD_PROTECTION_STATUS_PROTECTED, cls_rbd_parent{}, 31, utime_t{}, + cls::rbd::UserSnapshotNamespace{}, 543, std::optional{0}}); + o.push_back(cls_rbd_snap{1, "snap", 123456, + RBD_PROTECTION_STATUS_PROTECTED, {}, 31, {}, + cls::rbd::UserSnapshotNamespace{}, 543, {123}}); + return o; } }; WRITE_CLASS_ENCODER_FEATURES(cls_rbd_snap) diff --git a/src/cls/rbd/cls_rbd_types.cc b/src/cls/rbd/cls_rbd_types.cc index 1fdfbd0f63e0..794dbfee1042 100644 --- a/src/cls/rbd/cls_rbd_types.cc +++ b/src/cls/rbd/cls_rbd_types.cc @@ -79,14 +79,16 @@ void MirrorPeer::dump(Formatter *f) const { f->dump_stream("last_seen") << last_seen; } -void MirrorPeer::generate_test_instances(std::list &o) { - o.push_back(new MirrorPeer()); - o.push_back(new MirrorPeer("uuid-123", MIRROR_PEER_DIRECTION_RX, "site A", - "client name", "")); - o.push_back(new MirrorPeer("uuid-234", MIRROR_PEER_DIRECTION_TX, "site B", - "", "mirror_uuid")); - o.push_back(new MirrorPeer("uuid-345", MIRROR_PEER_DIRECTION_RX_TX, "site C", - "client name", "mirror_uuid")); +std::list MirrorPeer::generate_test_instances() { + std::list o; + o.push_back(MirrorPeer()); + o.push_back(MirrorPeer("uuid-123", MIRROR_PEER_DIRECTION_RX, "site A", + "client name", "")); + o.push_back(MirrorPeer("uuid-234", MIRROR_PEER_DIRECTION_TX, "site B", + "", "mirror_uuid")); + o.push_back(MirrorPeer("uuid-345", MIRROR_PEER_DIRECTION_RX_TX, "site C", + "client name", "mirror_uuid")); + return o; } bool MirrorPeer::operator==(const MirrorPeer &rhs) const { @@ -159,12 +161,14 @@ void MirrorImage::dump(Formatter *f) const { f->dump_stream("state") << state; } -void MirrorImage::generate_test_instances(std::list &o) { - o.push_back(new MirrorImage()); - o.push_back(new MirrorImage(MIRROR_IMAGE_MODE_JOURNAL, "uuid-123", - MIRROR_IMAGE_STATE_ENABLED)); - o.push_back(new MirrorImage(MIRROR_IMAGE_MODE_SNAPSHOT, "uuid-abc", - MIRROR_IMAGE_STATE_DISABLING)); +std::list MirrorImage::generate_test_instances() { + std::list o; + o.push_back(MirrorImage()); + o.push_back(MirrorImage(MIRROR_IMAGE_MODE_JOURNAL, "uuid-123", + MIRROR_IMAGE_STATE_ENABLED)); + o.push_back(MirrorImage(MIRROR_IMAGE_MODE_SNAPSHOT, "uuid-abc", + MIRROR_IMAGE_STATE_DISABLING)); + return o; } bool MirrorImage::operator==(const MirrorImage &rhs) const { @@ -306,15 +310,16 @@ std::string MirrorImageSiteStatus::state_to_string() const { return ss.str(); } -void MirrorImageSiteStatus::generate_test_instances( - std::list &o) { - o.push_back(new MirrorImageSiteStatus()); - o.push_back(new MirrorImageSiteStatus("", MIRROR_IMAGE_STATUS_STATE_REPLAYING, - "")); - o.push_back(new MirrorImageSiteStatus("", MIRROR_IMAGE_STATUS_STATE_ERROR, - "error")); - o.push_back(new MirrorImageSiteStatus("2fb68ca9-1ba0-43b3-8cdf-8c5a9db71e65", - MIRROR_IMAGE_STATUS_STATE_STOPPED, "")); +std::list MirrorImageSiteStatus::generate_test_instances() { + std::list o; + o.push_back(MirrorImageSiteStatus()); + o.push_back(MirrorImageSiteStatus("", MIRROR_IMAGE_STATUS_STATE_REPLAYING, + "")); + o.push_back(MirrorImageSiteStatus("", MIRROR_IMAGE_STATUS_STATE_ERROR, + "error")); + o.push_back(MirrorImageSiteStatus("2fb68ca9-1ba0-43b3-8cdf-8c5a9db71e65", + MIRROR_IMAGE_STATUS_STATE_STOPPED, "")); + return o; } bool MirrorImageSiteStatus::operator==(const MirrorImageSiteStatus &rhs) const { @@ -357,13 +362,14 @@ void MirrorImageSiteStatusOnDisk::decode(bufferlist::const_iterator &it) { cls::rbd::MirrorImageSiteStatus::decode(it); } -void MirrorImageSiteStatusOnDisk::generate_test_instances( - std::list &o) { - o.push_back(new MirrorImageSiteStatusOnDisk()); - o.push_back(new MirrorImageSiteStatusOnDisk( +std::list MirrorImageSiteStatusOnDisk::generate_test_instances() { + std::list o; + o.push_back(MirrorImageSiteStatusOnDisk()); + o.push_back(MirrorImageSiteStatusOnDisk( {"", MIRROR_IMAGE_STATUS_STATE_ERROR, "error"})); - o.push_back(new MirrorImageSiteStatusOnDisk( + o.push_back(MirrorImageSiteStatusOnDisk( {"siteA", MIRROR_IMAGE_STATUS_STATE_STOPPED, ""})); + return o; } int MirrorImageStatus::get_local_mirror_image_site_status( @@ -469,12 +475,13 @@ bool MirrorImageStatus::operator==(const MirrorImageStatus &rhs) const { return (mirror_image_site_statuses == rhs.mirror_image_site_statuses); } -void MirrorImageStatus::generate_test_instances( - std::list &o) { - o.push_back(new MirrorImageStatus()); - o.push_back(new MirrorImageStatus({{"", MIRROR_IMAGE_STATUS_STATE_ERROR, ""}})); - o.push_back(new MirrorImageStatus({{"", MIRROR_IMAGE_STATUS_STATE_STOPPED, ""}, - {"siteA", MIRROR_IMAGE_STATUS_STATE_REPLAYING, ""}})); +std::list MirrorImageStatus::generate_test_instances() { + std::list o; + o.push_back(MirrorImageStatus()); + o.push_back(MirrorImageStatus({{"", MIRROR_IMAGE_STATUS_STATE_ERROR, ""}})); + o.push_back(MirrorImageStatus({{"", MIRROR_IMAGE_STATUS_STATE_STOPPED, ""}, + {"siteA", MIRROR_IMAGE_STATUS_STATE_REPLAYING, ""}})); + return o; } std::ostream& operator<<(std::ostream& os, @@ -530,10 +537,12 @@ void ParentImageSpec::dump(Formatter *f) const { f->dump_unsigned("snap_id", snap_id); } -void ParentImageSpec::generate_test_instances(std::list& o) { - o.push_back(new ParentImageSpec{}); - o.push_back(new ParentImageSpec{1, "", "foo", 3}); - o.push_back(new ParentImageSpec{1, "ns", "foo", 3}); +std::list ParentImageSpec::generate_test_instances() { + std::list o; + o.push_back(ParentImageSpec{}); + o.push_back(ParentImageSpec{1, "", "foo", 3}); + o.push_back(ParentImageSpec{1, "ns", "foo", 3}); + return o; } std::ostream& operator<<(std::ostream& os, const ParentImageSpec& rhs) { @@ -570,10 +579,12 @@ void ChildImageSpec::dump(Formatter *f) const { f->dump_string("image_id", image_id); } -void ChildImageSpec::generate_test_instances(std::list &o) { - o.push_back(new ChildImageSpec()); - o.push_back(new ChildImageSpec(123, "", "abc")); - o.push_back(new ChildImageSpec(123, "ns", "abc")); +std::list ChildImageSpec::generate_test_instances() { + std::list o; + o.push_back(ChildImageSpec()); + o.push_back(ChildImageSpec(123, "", "abc")); + o.push_back(ChildImageSpec(123, "ns", "abc")); + return o; } std::ostream& operator<<(std::ostream& os, const ChildImageSpec& rhs) { @@ -637,9 +648,11 @@ std::string GroupImageSpec::image_key() { } } -void GroupImageSpec::generate_test_instances(std::list &o) { - o.push_back(new GroupImageSpec("10152ae8944a", 0)); - o.push_back(new GroupImageSpec("1018643c9869", 3)); +std::list GroupImageSpec::generate_test_instances() { + std::list o; + o.push_back(GroupImageSpec("10152ae8944a", 0)); + o.push_back(GroupImageSpec("1018643c9869", 3)); + return o; } void GroupImageStatus::encode(bufferlist &bl) const { @@ -672,11 +685,13 @@ void GroupImageStatus::dump(Formatter *f) const { f->dump_string("state", state_to_string()); } -void GroupImageStatus::generate_test_instances(std::list &o) { - o.push_back(new GroupImageStatus(GroupImageSpec("10152ae8944a", 0), GROUP_IMAGE_LINK_STATE_ATTACHED)); - o.push_back(new GroupImageStatus(GroupImageSpec("1018643c9869", 3), GROUP_IMAGE_LINK_STATE_ATTACHED)); - o.push_back(new GroupImageStatus(GroupImageSpec("10152ae8944a", 0), GROUP_IMAGE_LINK_STATE_INCOMPLETE)); - o.push_back(new GroupImageStatus(GroupImageSpec("1018643c9869", 3), GROUP_IMAGE_LINK_STATE_INCOMPLETE)); +std::list GroupImageStatus::generate_test_instances() { + std::list o; + o.push_back(GroupImageStatus(GroupImageSpec("10152ae8944a", 0), GROUP_IMAGE_LINK_STATE_ATTACHED)); + o.push_back(GroupImageStatus(GroupImageSpec("1018643c9869", 3), GROUP_IMAGE_LINK_STATE_ATTACHED)); + o.push_back(GroupImageStatus(GroupImageSpec("10152ae8944a", 0), GROUP_IMAGE_LINK_STATE_INCOMPLETE)); + o.push_back(GroupImageStatus(GroupImageSpec("1018643c9869", 3), GROUP_IMAGE_LINK_STATE_INCOMPLETE)); + return o; } @@ -703,9 +718,11 @@ bool GroupSpec::is_valid() const { return (!group_id.empty()) && (pool_id != -1); } -void GroupSpec::generate_test_instances(std::list &o) { - o.push_back(new GroupSpec("10152ae8944a", 0)); - o.push_back(new GroupSpec("1018643c9869", 3)); +std::list GroupSpec::generate_test_instances() { + std::list o; + o.push_back(GroupSpec("10152ae8944a", 0)); + o.push_back(GroupSpec("1018643c9869", 3)); + return o; } void GroupSnapshotNamespace::encode(bufferlist& bl) const { @@ -881,24 +898,26 @@ void SnapshotInfo::dump(Formatter *f) const { f->dump_stream("timestamp") << timestamp; } -void SnapshotInfo::generate_test_instances(std::list &o) { - o.push_back(new SnapshotInfo(1ULL, UserSnapshotNamespace{}, "snap1", 123, - {123456, 0}, 12)); - o.push_back(new SnapshotInfo(2ULL, - GroupSnapshotNamespace{567, "group1", "snap1"}, - "snap1", 123, {123456, 0}, 987)); - o.push_back(new SnapshotInfo(3ULL, - TrashSnapshotNamespace{ - SNAPSHOT_NAMESPACE_TYPE_USER, "snap1"}, - "12345", 123, {123456, 0}, 429)); - o.push_back(new SnapshotInfo(1ULL, - MirrorSnapshotNamespace{MIRROR_SNAPSHOT_STATE_PRIMARY, - {"1", "2"}, "", CEPH_NOSNAP}, - "snap1", 123, {123456, 0}, 12)); - o.push_back(new SnapshotInfo(1ULL, - MirrorSnapshotNamespace{MIRROR_SNAPSHOT_STATE_NON_PRIMARY, - {"1", "2"}, "uuid", 123}, - "snap1", 123, {123456, 0}, 12)); +std::list SnapshotInfo::generate_test_instances() { + std::list o; + o.push_back(SnapshotInfo(1ULL, UserSnapshotNamespace{}, "snap1", 123, + {123456, 0}, 12)); + o.push_back(SnapshotInfo(2ULL, + GroupSnapshotNamespace{567, "group1", "snap1"}, + "snap1", 123, {123456, 0}, 987)); + o.push_back(SnapshotInfo(3ULL, + TrashSnapshotNamespace{ + SNAPSHOT_NAMESPACE_TYPE_USER, "snap1"}, + "12345", 123, {123456, 0}, 429)); + o.push_back(SnapshotInfo(1ULL, + MirrorSnapshotNamespace{MIRROR_SNAPSHOT_STATE_PRIMARY, + {"1", "2"}, "", CEPH_NOSNAP}, + "snap1", 123, {123456, 0}, 12)); + o.push_back(SnapshotInfo(1ULL, + MirrorSnapshotNamespace{MIRROR_SNAPSHOT_STATE_NON_PRIMARY, + {"1", "2"}, "uuid", 123}, + "snap1", 123, {123456, 0}, 12)); + return o; } void SnapshotNamespace::encode(bufferlist& bl) const { @@ -937,25 +956,27 @@ void SnapshotNamespace::dump(Formatter *f) const { visit(DumpSnapshotNamespaceVisitor(f, "snapshot_namespace_type")); } -void SnapshotNamespace::generate_test_instances(std::list &o) { - o.push_back(new SnapshotNamespace(UserSnapshotNamespace())); - o.push_back(new SnapshotNamespace(GroupSnapshotNamespace(0, "10152ae8944a", - "2118643c9732"))); - o.push_back(new SnapshotNamespace(GroupSnapshotNamespace(5, "1018643c9869", - "33352be8933c"))); - o.push_back(new SnapshotNamespace(TrashSnapshotNamespace())); - o.push_back(new SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_PRIMARY, - {"peer uuid"}, - "", CEPH_NOSNAP))); - o.push_back(new SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED, - {"peer uuid"}, - "", CEPH_NOSNAP))); - o.push_back(new SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_NON_PRIMARY, - {"peer uuid"}, - "uuid", 123))); - o.push_back(new SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_NON_PRIMARY_DEMOTED, - {"peer uuid"}, - "uuid", 123))); +std::list SnapshotNamespace::generate_test_instances() { + std::list o; + o.push_back(SnapshotNamespace(UserSnapshotNamespace())); + o.push_back(SnapshotNamespace(GroupSnapshotNamespace(0, "10152ae8944a", + "2118643c9732"))); + o.push_back(SnapshotNamespace(GroupSnapshotNamespace(5, "1018643c9869", + "33352be8933c"))); + o.push_back(SnapshotNamespace(TrashSnapshotNamespace())); + o.push_back(SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_PRIMARY, + {"peer uuid"}, + "", CEPH_NOSNAP))); + o.push_back(SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED, + {"peer uuid"}, + "", CEPH_NOSNAP))); + o.push_back(SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_NON_PRIMARY, + {"peer uuid"}, + "uuid", 123))); + o.push_back(SnapshotNamespace(MirrorSnapshotNamespace(MIRROR_SNAPSHOT_STATE_NON_PRIMARY_DEMOTED, + {"peer uuid"}, + "uuid", 123))); + return o; } std::ostream& operator<<(std::ostream& os, const SnapshotNamespace& ns) { @@ -1073,9 +1094,11 @@ void ImageSnapshotSpec::dump(Formatter *f) const { f->dump_int("snap_id", snap_id); } -void ImageSnapshotSpec::generate_test_instances(std::list &o) { - o.push_back(new ImageSnapshotSpec(0, "myimage", 2)); - o.push_back(new ImageSnapshotSpec(1, "testimage", 7)); +std::list ImageSnapshotSpec::generate_test_instances() { + std::list o; + o.push_back(ImageSnapshotSpec(0, "myimage", 2)); + o.push_back(ImageSnapshotSpec(1, "testimage", 7)); + return o; } void GroupSnapshot::encode(bufferlist& bl) const { @@ -1104,9 +1127,11 @@ void GroupSnapshot::dump(Formatter *f) const { f->dump_int("state", state); } -void GroupSnapshot::generate_test_instances(std::list &o) { - o.push_back(new GroupSnapshot("10152ae8944a", "groupsnapshot1", GROUP_SNAPSHOT_STATE_INCOMPLETE)); - o.push_back(new GroupSnapshot("1018643c9869", "groupsnapshot2", GROUP_SNAPSHOT_STATE_COMPLETE)); +std::list GroupSnapshot::generate_test_instances() { + std::list o; + o.push_back(GroupSnapshot("10152ae8944a", "groupsnapshot1", GROUP_SNAPSHOT_STATE_INCOMPLETE)); + o.push_back(GroupSnapshot("1018643c9869", "groupsnapshot2", GROUP_SNAPSHOT_STATE_COMPLETE)); + return o; } void TrashImageSpec::encode(bufferlist& bl) const { ENCODE_START(2, 1, bl); @@ -1162,13 +1187,14 @@ void MirrorImageMap::dump(Formatter *f) const { f->dump_string("data", data_ss.str()); } -void MirrorImageMap::generate_test_instances( - std::list &o) { +std::list MirrorImageMap::generate_test_instances() { + std::list o; bufferlist data; data.append(std::string(128, '1')); - o.push_back(new MirrorImageMap("uuid-123", utime_t(), data)); - o.push_back(new MirrorImageMap("uuid-abc", utime_t(), data)); + o.push_back(MirrorImageMap("uuid-123", utime_t(), data)); + o.push_back(MirrorImageMap("uuid-abc", utime_t(), data)); + return o; } bool MirrorImageMap::operator==(const MirrorImageMap &rhs) const { @@ -1307,16 +1333,18 @@ void MigrationSpec::dump(Formatter *f) const { f->dump_stream("mirror_image_mode") << mirror_image_mode; } -void MigrationSpec::generate_test_instances(std::list &o) { - o.push_back(new MigrationSpec()); - o.push_back(new MigrationSpec(MIGRATION_HEADER_TYPE_SRC, 1, "ns", - "image_name", "image_id", "", {{1, 2}}, 123, - true, MIRROR_IMAGE_MODE_SNAPSHOT, true, - MIGRATION_STATE_PREPARED, "description")); - o.push_back(new MigrationSpec(MIGRATION_HEADER_TYPE_DST, -1, "", "", "", - "{\"format\": \"raw\"}", {{1, 2}}, 123, - true, MIRROR_IMAGE_MODE_SNAPSHOT, true, - MIGRATION_STATE_PREPARED, "description")); +std::list MigrationSpec::generate_test_instances() { + std::list o; + o.push_back(MigrationSpec()); + o.push_back(MigrationSpec(MIGRATION_HEADER_TYPE_SRC, 1, "ns", + "image_name", "image_id", "", {{1, 2}}, 123, + true, MIRROR_IMAGE_MODE_SNAPSHOT, true, + MIGRATION_STATE_PREPARED, "description")); + o.push_back(MigrationSpec(MIGRATION_HEADER_TYPE_DST, -1, "", "", "", + "{\"format\": \"raw\"}", {{1, 2}}, 123, + true, MIRROR_IMAGE_MODE_SNAPSHOT, true, + MIGRATION_STATE_PREPARED, "description")); + return o; } std::ostream& operator<<(std::ostream& os, diff --git a/src/cls/rbd/cls_rbd_types.h b/src/cls/rbd/cls_rbd_types.h index d5f65abd75f4..3e1ec79fc39d 100644 --- a/src/cls/rbd/cls_rbd_types.h +++ b/src/cls/rbd/cls_rbd_types.h @@ -122,7 +122,7 @@ struct MirrorPeer { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); bool operator==(const MirrorPeer &rhs) const; bool operator!=(const MirrorPeer &rhs) const { @@ -163,7 +163,7 @@ struct MirrorImage { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); bool operator==(const MirrorImage &rhs) const; bool operator<(const MirrorImage &rhs) const; @@ -230,7 +230,7 @@ struct MirrorImageSiteStatus { bool operator==(const MirrorImageSiteStatus &rhs) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(MirrorImageSiteStatus); @@ -251,8 +251,7 @@ struct MirrorImageSiteStatusOnDisk : cls::rbd::MirrorImageSiteStatus { void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &it); - static void generate_test_instances( - std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(MirrorImageSiteStatusOnDisk) @@ -274,7 +273,7 @@ struct MirrorImageStatus { bool operator==(const MirrorImageStatus& rhs) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(MirrorImageStatus); @@ -313,7 +312,7 @@ struct ParentImageSpec { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ParentImageSpec); @@ -335,7 +334,7 @@ struct ChildImageSpec { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); inline bool operator==(const ChildImageSpec& rhs) const { return (pool_id == rhs.pool_id && @@ -373,7 +372,7 @@ struct GroupImageSpec { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); std::string image_key(); @@ -399,7 +398,7 @@ struct GroupImageStatus { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); std::string state_to_string() const; }; @@ -419,7 +418,7 @@ struct GroupSpec { void dump(ceph::Formatter *f) const; bool is_valid() const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(GroupSpec); @@ -700,7 +699,7 @@ struct SnapshotNamespace : public SnapshotNamespaceVariant { decltype(auto) visit(F&& f) & { return std::visit(std::forward(f), static_cast(*this)); } - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(SnapshotNamespace); @@ -732,7 +731,7 @@ struct SnapshotInfo { void decode(ceph::buffer::list::const_iterator& it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(SnapshotInfo); @@ -772,7 +771,7 @@ struct ImageSnapshotSpec { void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ImageSnapshotSpec); @@ -794,7 +793,7 @@ struct GroupSnapshot { void decode(ceph::buffer::list::const_iterator& it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(GroupSnapshot); enum TrashImageSource { @@ -911,7 +910,7 @@ struct MirrorImageMap { void decode(ceph::buffer::list::const_iterator &it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); bool operator==(const MirrorImageMap &rhs) const; bool operator<(const MirrorImageMap &rhs) const; @@ -998,7 +997,7 @@ struct MigrationSpec { void decode(ceph::buffer::list::const_iterator& it); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); inline bool operator==(const MigrationSpec& ms) const { return header_type == ms.header_type && pool_id == ms.pool_id && diff --git a/src/cls/refcount/cls_refcount_ops.cc b/src/cls/refcount/cls_refcount_ops.cc index 3731269a9be1..22d6ae36284a 100644 --- a/src/cls/refcount/cls_refcount_ops.cc +++ b/src/cls/refcount/cls_refcount_ops.cc @@ -13,12 +13,14 @@ void cls_refcount_get_op::dump(ceph::Formatter *f) const f->dump_int("implicit_ref", (int)implicit_ref); } -void cls_refcount_get_op::generate_test_instances(list& ls) +list cls_refcount_get_op::generate_test_instances() { - ls.push_back(new cls_refcount_get_op); - ls.push_back(new cls_refcount_get_op); - ls.back()->tag = "foo"; - ls.back()->implicit_ref = true; + list ls; + ls.push_back(cls_refcount_get_op{}); + ls.push_back(cls_refcount_get_op{}); + ls.back().tag = "foo"; + ls.back().implicit_ref = true; + return ls; } @@ -28,12 +30,14 @@ void cls_refcount_put_op::dump(ceph::Formatter *f) const f->dump_int("implicit_ref", (int)implicit_ref); } -void cls_refcount_put_op::generate_test_instances(list& ls) +list cls_refcount_put_op::generate_test_instances() { - ls.push_back(new cls_refcount_put_op); - ls.push_back(new cls_refcount_put_op); - ls.back()->tag = "foo"; - ls.back()->implicit_ref = true; + list ls; + ls.push_back(cls_refcount_put_op{}); + ls.push_back(cls_refcount_put_op{}); + ls.back().tag = "foo"; + ls.back().implicit_ref = true; + return ls; } @@ -43,12 +47,14 @@ void cls_refcount_set_op::dump(ceph::Formatter *f) const encode_json("refs", refs, f); } -void cls_refcount_set_op::generate_test_instances(list& ls) +list cls_refcount_set_op::generate_test_instances() { - ls.push_back(new cls_refcount_set_op); - ls.push_back(new cls_refcount_set_op); - ls.back()->refs.push_back("foo"); - ls.back()->refs.push_back("bar"); + list ls; + ls.push_back(cls_refcount_set_op{}); + ls.push_back(cls_refcount_set_op{}); + ls.back().refs.push_back("foo"); + ls.back().refs.push_back("bar"); + return ls; } @@ -57,11 +63,12 @@ void cls_refcount_read_op::dump(ceph::Formatter *f) const f->dump_int("implicit_ref", (int)implicit_ref); } -void cls_refcount_read_op::generate_test_instances(list& ls) +list cls_refcount_read_op::generate_test_instances() { - ls.push_back(new cls_refcount_read_op); - ls.push_back(new cls_refcount_read_op); - ls.back()->implicit_ref = true; + list ls; + ls.push_back(cls_refcount_read_op{}); + ls.push_back(cls_refcount_read_op{}); + return ls; } @@ -73,12 +80,14 @@ void cls_refcount_read_ret::dump(ceph::Formatter *f) const f->close_section(); } -void cls_refcount_read_ret::generate_test_instances(list& ls) +list cls_refcount_read_ret::generate_test_instances() { - ls.push_back(new cls_refcount_read_ret); - ls.push_back(new cls_refcount_read_ret); - ls.back()->refs.push_back("foo"); - ls.back()->refs.push_back("bar"); + list ls; + ls.push_back(cls_refcount_read_ret{}); + ls.push_back(cls_refcount_read_ret{}); + ls.back().refs.push_back("foo"); + ls.back().refs.push_back("bar"); + return ls; } void obj_refcount::dump(ceph::Formatter *f) const @@ -98,9 +107,11 @@ void obj_refcount::dump(ceph::Formatter *f) const f->close_section(); } -void obj_refcount::generate_test_instances(list& ls) +list obj_refcount::generate_test_instances() { - ls.push_back(new obj_refcount); - ls.back()->refs.emplace("foo",true); - ls.back()->retired_refs.emplace("bar"); + list ls; + ls.push_back(obj_refcount{}); + ls.back().refs.emplace("foo",true); + ls.back().retired_refs.emplace("bar"); + return ls; } diff --git a/src/cls/refcount/cls_refcount_ops.h b/src/cls/refcount/cls_refcount_ops.h index 5d60b161fd5a..3d50db062a5e 100644 --- a/src/cls/refcount/cls_refcount_ops.h +++ b/src/cls/refcount/cls_refcount_ops.h @@ -27,7 +27,7 @@ struct cls_refcount_get_op { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_refcount_get_op) @@ -53,7 +53,7 @@ struct cls_refcount_put_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_refcount_put_op) @@ -75,7 +75,7 @@ struct cls_refcount_set_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_refcount_set_op) @@ -98,7 +98,7 @@ struct cls_refcount_read_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_refcount_read_op) @@ -120,7 +120,7 @@ struct cls_refcount_read_ret { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_refcount_read_ret) @@ -147,7 +147,7 @@ struct obj_refcount { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(obj_refcount) diff --git a/src/cls/rgw/cls_rgw_ops.cc b/src/cls/rgw/cls_rgw_ops.cc index 5a0030bc37ec..7a0c58454e90 100644 --- a/src/cls/rgw/cls_rgw_ops.cc +++ b/src/cls/rgw/cls_rgw_ops.cc @@ -17,11 +17,13 @@ void rgw_cls_tag_timeout_op::dump(Formatter *f) const f->dump_int("tag_timeout", tag_timeout); } -void rgw_cls_tag_timeout_op::generate_test_instances(list& ls) +list rgw_cls_tag_timeout_op::generate_test_instances() { - ls.push_back(new rgw_cls_tag_timeout_op); - ls.push_back(new rgw_cls_tag_timeout_op); - ls.back()->tag_timeout = 23323; + list ls; + ls.push_back(rgw_cls_tag_timeout_op{}); + ls.push_back(rgw_cls_tag_timeout_op{}); + ls.back().tag_timeout = 23323; + return ls; } void cls_rgw_gc_set_entry_op::dump(Formatter *f) const @@ -32,11 +34,13 @@ void cls_rgw_gc_set_entry_op::dump(Formatter *f) const f->close_section(); } -void cls_rgw_gc_set_entry_op::generate_test_instances(list& ls) +list cls_rgw_gc_set_entry_op::generate_test_instances() { - ls.push_back(new cls_rgw_gc_set_entry_op); - ls.push_back(new cls_rgw_gc_set_entry_op); - ls.back()->expiration_secs = 123; + list ls; + ls.push_back(cls_rgw_gc_set_entry_op{}); + ls.push_back(cls_rgw_gc_set_entry_op{}); + ls.back().expiration_secs = 123; + return ls; } void cls_rgw_gc_defer_entry_op::dump(Formatter *f) const @@ -45,12 +49,14 @@ void cls_rgw_gc_defer_entry_op::dump(Formatter *f) const f->dump_string("tag", tag); } -void cls_rgw_gc_defer_entry_op::generate_test_instances(list& ls) +list cls_rgw_gc_defer_entry_op::generate_test_instances() { - ls.push_back(new cls_rgw_gc_defer_entry_op); - ls.push_back(new cls_rgw_gc_defer_entry_op); - ls.back()->expiration_secs = 123; - ls.back()->tag = "footag"; + list ls; + ls.push_back(cls_rgw_gc_defer_entry_op{}); + ls.push_back(cls_rgw_gc_defer_entry_op{}); + ls.back().expiration_secs = 123; + ls.back().tag = "footag"; + return ls; } void cls_rgw_gc_list_op::dump(Formatter *f) const @@ -60,12 +66,14 @@ void cls_rgw_gc_list_op::dump(Formatter *f) const f->dump_bool("expired_only", expired_only); } -void cls_rgw_gc_list_op::generate_test_instances(list& ls) +list cls_rgw_gc_list_op::generate_test_instances() { - ls.push_back(new cls_rgw_gc_list_op); - ls.push_back(new cls_rgw_gc_list_op); - ls.back()->marker = "mymarker"; - ls.back()->max = 2312; + list ls; + ls.push_back(cls_rgw_gc_list_op{}); + ls.push_back(cls_rgw_gc_list_op{}); + ls.back().marker = "mymarker"; + ls.back().max = 2312; + return ls; } void cls_rgw_gc_list_ret::dump(Formatter *f) const @@ -75,12 +83,14 @@ void cls_rgw_gc_list_ret::dump(Formatter *f) const f->dump_int("truncated", (int)truncated); } -void cls_rgw_gc_list_ret::generate_test_instances(list& ls) +list cls_rgw_gc_list_ret::generate_test_instances() { - ls.push_back(new cls_rgw_gc_list_ret); - ls.push_back(new cls_rgw_gc_list_ret); - ls.back()->entries.push_back(cls_rgw_gc_obj_info()); - ls.back()->truncated = true; + list ls; + ls.push_back(cls_rgw_gc_list_ret{}); + ls.push_back(cls_rgw_gc_list_ret{}); + ls.back().entries.push_back(cls_rgw_gc_obj_info()); + ls.back().truncated = true; + return ls; } void cls_rgw_gc_remove_op::dump(Formatter *f) const @@ -88,12 +98,14 @@ void cls_rgw_gc_remove_op::dump(Formatter *f) const encode_json("tags", tags, f); } -void cls_rgw_gc_remove_op::generate_test_instances(list& ls) +list cls_rgw_gc_remove_op::generate_test_instances() { - ls.push_back(new cls_rgw_gc_remove_op); - ls.push_back(new cls_rgw_gc_remove_op); - ls.back()->tags.push_back("tag1"); - ls.back()->tags.push_back("tag2"); + list ls; + ls.push_back(cls_rgw_gc_remove_op{}); + ls.push_back(cls_rgw_gc_remove_op{}); + ls.back().tags.push_back("tag1"); + ls.back().tags.push_back("tag2"); + return ls; } void cls_rgw_lc_get_entry_ret::dump(Formatter *f) const @@ -101,22 +113,26 @@ void cls_rgw_lc_get_entry_ret::dump(Formatter *f) const encode_json("entry", entry, f); } -void cls_rgw_lc_get_entry_ret::generate_test_instances(list& ls) +list cls_rgw_lc_get_entry_ret::generate_test_instances() { + list ls; cls_rgw_lc_entry entry("bucket1", 6000, 0); - ls.push_back(new cls_rgw_lc_get_entry_ret); - ls.back()->entry = entry; + ls.push_back(cls_rgw_lc_get_entry_ret{}); + ls.back().entry = entry; + return ls; } -void rgw_cls_obj_prepare_op::generate_test_instances(list& o) +list rgw_cls_obj_prepare_op::generate_test_instances() { - rgw_cls_obj_prepare_op *op = new rgw_cls_obj_prepare_op; - op->op = CLS_RGW_OP_ADD; - op->key.name = "name"; - op->tag = "tag"; - op->locator = "locator"; - o.push_back(op); - o.push_back(new rgw_cls_obj_prepare_op); + list o; + rgw_cls_obj_prepare_op op; + op.op = CLS_RGW_OP_ADD; + op.key.name = "name"; + op.tag = "tag"; + op.locator = "locator"; + o.push_back(std::move(op)); + o.push_back(rgw_cls_obj_prepare_op{}); + return o; } void rgw_cls_obj_prepare_op::dump(Formatter *f) const @@ -127,24 +143,24 @@ void rgw_cls_obj_prepare_op::dump(Formatter *f) const f->dump_string("locator", locator); } -void rgw_cls_obj_complete_op::generate_test_instances(list& o) +list rgw_cls_obj_complete_op::generate_test_instances() { - rgw_cls_obj_complete_op *op = new rgw_cls_obj_complete_op; - op->op = CLS_RGW_OP_DEL; - op->key.name = "name"; - op->locator = "locator"; - op->ver.pool = 2; - op->ver.epoch = 100; - op->tag = "tag"; + list o; + rgw_cls_obj_complete_op op; + op.op = CLS_RGW_OP_DEL; + op.key.name = "name"; + op.locator = "locator"; + op.ver.pool = 2; + op.ver.epoch = 100; + op.tag = "tag"; - list l; - rgw_bucket_dir_entry_meta::generate_test_instances(l); + list l = rgw_bucket_dir_entry_meta::generate_test_instances(); auto iter = l.begin(); - op->meta = *(*iter); + op.meta = *iter; - o.push_back(op); - - o.push_back(new rgw_cls_obj_complete_op); + o.push_back(std::move(op)); + o.push_back(rgw_cls_obj_complete_op{}); + return o; } void rgw_cls_obj_complete_op::dump(Formatter *f) const @@ -165,23 +181,24 @@ void rgw_cls_obj_complete_op::dump(Formatter *f) const encode_json("zones_trace", zones_trace, f); } -void rgw_cls_link_olh_op::generate_test_instances(list& o) +list rgw_cls_link_olh_op::generate_test_instances() { - rgw_cls_link_olh_op *op = new rgw_cls_link_olh_op; - op->key.name = "name"; - op->olh_tag = "olh_tag"; - op->delete_marker = true; - op->op_tag = "op_tag"; - op->olh_epoch = 123; - list l; - rgw_bucket_dir_entry_meta::generate_test_instances(l); + list o; + rgw_cls_link_olh_op op; + op.key.name = "name"; + op.olh_tag = "olh_tag"; + op.delete_marker = true; + op.op_tag = "op_tag"; + op.olh_epoch = 123; + list l = rgw_bucket_dir_entry_meta::generate_test_instances(); auto iter = l.begin(); - op->meta = *(*iter); - op->log_op = true; + op.meta = *iter; + op.log_op = true; - o.push_back(op); + o.push_back(std::move(op)); - o.push_back(new rgw_cls_link_olh_op); + o.push_back(rgw_cls_link_olh_op{}); + return o; } void rgw_cls_link_olh_op::dump(Formatter *f) const @@ -200,17 +217,19 @@ void rgw_cls_link_olh_op::dump(Formatter *f) const encode_json("zones_trace", zones_trace, f); } -void rgw_cls_unlink_instance_op::generate_test_instances(list& o) +list rgw_cls_unlink_instance_op::generate_test_instances() { - rgw_cls_unlink_instance_op *op = new rgw_cls_unlink_instance_op; - op->key.name = "name"; - op->op_tag = "op_tag"; - op->olh_epoch = 124; - op->log_op = true; + list o; + rgw_cls_unlink_instance_op op; + op.key.name = "name"; + op.op_tag = "op_tag"; + op.olh_epoch = 124; + op.log_op = true; - o.push_back(op); + o.push_back(std::move(op)); - o.push_back(new rgw_cls_unlink_instance_op); + o.push_back(rgw_cls_unlink_instance_op{}); + return o; } void rgw_cls_unlink_instance_op::dump(Formatter *f) const @@ -223,16 +242,17 @@ void rgw_cls_unlink_instance_op::dump(Formatter *f) const encode_json("zones_trace", zones_trace, f); } -void rgw_cls_read_olh_log_op::generate_test_instances(list& o) +list rgw_cls_read_olh_log_op::generate_test_instances() { - rgw_cls_read_olh_log_op *op = new rgw_cls_read_olh_log_op; - op->olh.name = "name"; - op->ver_marker = 123; - op->olh_tag = "olh_tag"; - - o.push_back(op); + list o; + rgw_cls_read_olh_log_op op; + op.olh.name = "name"; + op.ver_marker = 123; + op.olh_tag = "olh_tag"; - o.push_back(new rgw_cls_read_olh_log_op); + o.push_back(std::move(op)); + o.push_back(rgw_cls_read_olh_log_op{}); + return o; } void rgw_cls_read_olh_log_op::dump(Formatter *f) const @@ -242,18 +262,18 @@ void rgw_cls_read_olh_log_op::dump(Formatter *f) const encode_json("olh_tag", olh_tag, f); } -void rgw_cls_read_olh_log_ret::generate_test_instances(list& o) +list rgw_cls_read_olh_log_ret::generate_test_instances() { - rgw_cls_read_olh_log_ret *r = new rgw_cls_read_olh_log_ret; - r->is_truncated = true; - list l; - rgw_bucket_olh_log_entry::generate_test_instances(l); + list o; + rgw_cls_read_olh_log_ret r; + r.is_truncated = true; + list l = rgw_bucket_olh_log_entry::generate_test_instances(); auto iter = l.begin(); - r->log[1].push_back(*(*iter)); - - o.push_back(r); + r.log[1].push_back(*iter); - o.push_back(new rgw_cls_read_olh_log_ret); + o.push_back(std::move(r)); + o.push_back(rgw_cls_read_olh_log_ret{}); + return o; } void rgw_cls_read_olh_log_ret::dump(Formatter *f) const @@ -262,16 +282,17 @@ void rgw_cls_read_olh_log_ret::dump(Formatter *f) const encode_json("is_truncated", is_truncated, f); } -void rgw_cls_trim_olh_log_op::generate_test_instances(list& o) +list rgw_cls_trim_olh_log_op::generate_test_instances() { - rgw_cls_trim_olh_log_op *op = new rgw_cls_trim_olh_log_op; - op->olh.name = "olh.name"; - op->ver = 100; - op->olh_tag = "olh_tag"; + list o; + rgw_cls_trim_olh_log_op op; + op.olh.name = "olh.name"; + op.ver = 100; + op.olh_tag = "olh_tag"; - o.push_back(op); - - o.push_back(new rgw_cls_trim_olh_log_op); + o.push_back(std::move(op)); + o.push_back(rgw_cls_trim_olh_log_op{}); + return o; } void rgw_cls_trim_olh_log_op::dump(Formatter *f) const @@ -281,15 +302,16 @@ void rgw_cls_trim_olh_log_op::dump(Formatter *f) const encode_json("olh_tag", olh_tag, f); } -void rgw_cls_bucket_clear_olh_op::generate_test_instances(list& o) +list rgw_cls_bucket_clear_olh_op::generate_test_instances() { + list o; + rgw_cls_bucket_clear_olh_op op; + op.key.name = "key.name"; + op.olh_tag = "olh_tag"; - rgw_cls_bucket_clear_olh_op *op = new rgw_cls_bucket_clear_olh_op; - op->key.name = "key.name"; - op->olh_tag = "olh_tag"; - - o.push_back(op); - o.push_back(new rgw_cls_bucket_clear_olh_op); + o.push_back(std::move(op)); + o.push_back(rgw_cls_bucket_clear_olh_op{}); + return o; } void rgw_cls_bucket_clear_olh_op::dump(Formatter *f) const @@ -298,14 +320,16 @@ void rgw_cls_bucket_clear_olh_op::dump(Formatter *f) const encode_json("olh_tag", olh_tag, f); } -void rgw_cls_list_op::generate_test_instances(list& o) +list rgw_cls_list_op::generate_test_instances() { - rgw_cls_list_op *op = new rgw_cls_list_op; - op->start_obj.name = "start_obj"; - op->num_entries = 100; - op->filter_prefix = "filter_prefix"; - o.push_back(op); - o.push_back(new rgw_cls_list_op); + list o; + rgw_cls_list_op op; + op.start_obj.name = "start_obj"; + op.num_entries = 100; + op.filter_prefix = "filter_prefix"; + o.push_back(std::move(op)); + o.push_back(rgw_cls_list_op{}); + return o; } void rgw_cls_list_op::dump(Formatter *f) const @@ -314,23 +338,19 @@ void rgw_cls_list_op::dump(Formatter *f) const f->dump_unsigned("num_entries", num_entries); } -void rgw_cls_list_ret::generate_test_instances(list& o) +list rgw_cls_list_ret::generate_test_instances() { - list l; - rgw_bucket_dir::generate_test_instances(l); - for (auto iter = l.begin(); iter != l.end(); ++iter) { - rgw_bucket_dir *d = *iter; - - rgw_cls_list_ret *ret = new rgw_cls_list_ret; - ret->dir = *d; - ret->is_truncated = true; + list o; + for (auto& d : rgw_bucket_dir::generate_test_instances()) { + rgw_cls_list_ret ret; + ret.dir = d; + ret.is_truncated = true; - o.push_back(ret); - - delete d; + o.push_back(std::move(ret)); } - o.push_back(new rgw_cls_list_ret); + o.push_back(rgw_cls_list_ret{}); + return o; } void rgw_cls_list_ret::dump(Formatter *f) const @@ -341,19 +361,18 @@ void rgw_cls_list_ret::dump(Formatter *f) const f->dump_int("is_truncated", (int)is_truncated); } -void rgw_cls_check_index_ret::generate_test_instances(list& o) +list rgw_cls_check_index_ret::generate_test_instances() { - list h; - rgw_bucket_dir_header::generate_test_instances(h); - rgw_cls_check_index_ret *r = new rgw_cls_check_index_ret; - r->existing_header = *(h.front()); - r->calculated_header = *(h.front()); - o.push_back(r); + list o; - for (auto iter = h.begin(); iter != h.end(); ++iter) { - delete *iter; - } - o.push_back(new rgw_cls_check_index_ret); + list h = rgw_bucket_dir_header::generate_test_instances(); + rgw_cls_check_index_ret r; + r.existing_header = h.front(); + r.calculated_header = h.front(); + o.push_back(std::move(r)); + + o.push_back(rgw_cls_check_index_ret{}); + return o; } void rgw_cls_check_index_ret::dump(Formatter *f) const @@ -362,21 +381,23 @@ void rgw_cls_check_index_ret::dump(Formatter *f) const encode_json("calculated_header", calculated_header, f); } -void rgw_cls_bucket_update_stats_op::generate_test_instances(list& o) +list rgw_cls_bucket_update_stats_op::generate_test_instances() { - rgw_cls_bucket_update_stats_op *r = new rgw_cls_bucket_update_stats_op; - r->absolute = true; - rgw_bucket_category_stats& s = r->stats[RGWObjCategory::None]; + list o; + + rgw_cls_bucket_update_stats_op r; + r.absolute = true; + rgw_bucket_category_stats& s = r.stats[RGWObjCategory::None]; s.total_size = 1; s.total_size_rounded = 4096; s.num_entries = 1; - rgw_bucket_category_stats& dec_s = r->dec_stats[RGWObjCategory::None]; + rgw_bucket_category_stats& dec_s = r.dec_stats[RGWObjCategory::None]; dec_s.total_size = 1; dec_s.total_size_rounded = 4096; dec_s.num_entries = 1; - o.push_back(r); - - o.push_back(new rgw_cls_bucket_update_stats_op); + o.push_back(std::move(r)); + o.push_back(rgw_cls_bucket_update_stats_op{}); + return o; } void rgw_cls_bucket_update_stats_op::dump(Formatter *f) const @@ -400,12 +421,14 @@ void cls_rgw_bi_log_list_op::dump(Formatter *f) const f->dump_unsigned("max", max); } -void cls_rgw_bi_log_list_op::generate_test_instances(list& ls) +list cls_rgw_bi_log_list_op::generate_test_instances() { - ls.push_back(new cls_rgw_bi_log_list_op); - ls.push_back(new cls_rgw_bi_log_list_op); - ls.back()->marker = "mark"; - ls.back()->max = 123; + list ls; + ls.push_back(cls_rgw_bi_log_list_op{}); + ls.push_back(cls_rgw_bi_log_list_op{}); + ls.back().marker = "mark"; + ls.back().max = 123; + return ls; } void cls_rgw_bi_log_trim_op::dump(Formatter *f) const @@ -414,12 +437,14 @@ void cls_rgw_bi_log_trim_op::dump(Formatter *f) const f->dump_string("end_marker", end_marker); } -void cls_rgw_bi_log_trim_op::generate_test_instances(list& ls) +list cls_rgw_bi_log_trim_op::generate_test_instances() { - ls.push_back(new cls_rgw_bi_log_trim_op); - ls.push_back(new cls_rgw_bi_log_trim_op); - ls.back()->start_marker = "foo"; - ls.back()->end_marker = "bar"; + list ls; + ls.push_back(cls_rgw_bi_log_trim_op{}); + ls.push_back(cls_rgw_bi_log_trim_op{}); + ls.back().start_marker = "foo"; + ls.back().end_marker = "bar"; + return ls; } void cls_rgw_bi_log_list_ret::dump(Formatter *f) const @@ -428,20 +453,24 @@ void cls_rgw_bi_log_list_ret::dump(Formatter *f) const f->dump_unsigned("truncated", (int)truncated); } -void cls_rgw_bi_log_list_ret::generate_test_instances(list& ls) +list cls_rgw_bi_log_list_ret::generate_test_instances() { - ls.push_back(new cls_rgw_bi_log_list_ret); - ls.push_back(new cls_rgw_bi_log_list_ret); - ls.back()->entries.push_back(rgw_bi_log_entry()); - ls.back()->truncated = true; + list ls; + ls.push_back(cls_rgw_bi_log_list_ret{}); + ls.push_back(cls_rgw_bi_log_list_ret{}); + ls.back().entries.push_back(rgw_bi_log_entry()); + ls.back().truncated = true; + return ls; } -void cls_rgw_mp_upload_part_info_update_op::generate_test_instances(std::list& ls) +std::list cls_rgw_mp_upload_part_info_update_op::generate_test_instances() { - ls.push_back(new cls_rgw_mp_upload_part_info_update_op); - ls.back()->part_key = "part1"; - ls.push_back(new cls_rgw_mp_upload_part_info_update_op); - ls.back()->part_key = "part2"; + std::list ls; + ls.push_back(cls_rgw_mp_upload_part_info_update_op{}); + ls.back().part_key = "part1"; + ls.push_back(cls_rgw_mp_upload_part_info_update_op{}); + ls.back().part_key = "part2"; + return ls; } void cls_rgw_mp_upload_part_info_update_op::dump(Formatter* f) const @@ -451,14 +480,15 @@ void cls_rgw_mp_upload_part_info_update_op::dump(Formatter* f) const encode_json("part_prefix", info.manifest.get_prefix(), f); } -void cls_rgw_reshard_add_op::generate_test_instances(list& ls) +list cls_rgw_reshard_add_op::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_add_op); - ls.push_back(new cls_rgw_reshard_add_op); - list l; - cls_rgw_reshard_entry::generate_test_instances(l); + list ls; + ls.push_back(cls_rgw_reshard_add_op{}); + ls.push_back(cls_rgw_reshard_add_op{}); + list l = cls_rgw_reshard_entry::generate_test_instances(); auto iter = l.begin(); - ls.back()->entry = *(*iter); + ls.back().entry = *iter; + return ls; } void cls_rgw_reshard_add_op::dump(Formatter *f) const @@ -466,12 +496,14 @@ void cls_rgw_reshard_add_op::dump(Formatter *f) const encode_json("entry", entry, f); } -void cls_rgw_reshard_list_op::generate_test_instances(list& ls) +list cls_rgw_reshard_list_op::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_list_op); - ls.push_back(new cls_rgw_reshard_list_op); - ls.back()->max = 1000; - ls.back()->marker = "foo"; + list ls; + ls.push_back(cls_rgw_reshard_list_op{}); + ls.push_back(cls_rgw_reshard_list_op{}); + ls.back().max = 1000; + ls.back().marker = "foo"; + return ls; } void cls_rgw_reshard_list_op::dump(Formatter *f) const @@ -480,12 +512,14 @@ void cls_rgw_reshard_list_op::dump(Formatter *f) const encode_json("marker", marker, f); } -void cls_rgw_reshard_list_ret::generate_test_instances(list& ls) +list cls_rgw_reshard_list_ret::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_list_ret); - ls.push_back(new cls_rgw_reshard_list_ret); - ls.back()->entries.push_back(cls_rgw_reshard_entry()); - ls.back()->is_truncated = true; + list ls; + ls.push_back(cls_rgw_reshard_list_ret{}); + ls.push_back(cls_rgw_reshard_list_ret{}); + ls.back().entries.push_back(cls_rgw_reshard_entry()); + ls.back().is_truncated = true; + return ls; } void cls_rgw_reshard_list_ret::dump(Formatter *f) const @@ -494,10 +528,12 @@ void cls_rgw_reshard_list_ret::dump(Formatter *f) const encode_json("is_truncated", is_truncated, f); } -void cls_rgw_reshard_get_op::generate_test_instances(list& ls) +list cls_rgw_reshard_get_op::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_get_op); - ls.push_back(new cls_rgw_reshard_get_op); + list ls; + ls.push_back(cls_rgw_reshard_get_op{}); + ls.push_back(cls_rgw_reshard_get_op{}); + return ls; } void cls_rgw_reshard_get_op::dump(Formatter *f) const @@ -505,10 +541,12 @@ void cls_rgw_reshard_get_op::dump(Formatter *f) const encode_json("entry", entry, f); } -void cls_rgw_reshard_get_ret::generate_test_instances(list& ls) +list cls_rgw_reshard_get_ret::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_get_ret); - ls.push_back(new cls_rgw_reshard_get_ret); + list ls; + ls.push_back(cls_rgw_reshard_get_ret{}); + ls.push_back(cls_rgw_reshard_get_ret{}); + return ls; } void cls_rgw_reshard_get_ret::dump(Formatter *f) const @@ -516,12 +554,14 @@ void cls_rgw_reshard_get_ret::dump(Formatter *f) const encode_json("entry", entry, f); } -void cls_rgw_reshard_remove_op::generate_test_instances(list& ls) +list cls_rgw_reshard_remove_op::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_remove_op); - ls.push_back(new cls_rgw_reshard_remove_op); - ls.back()->bucket_name = "foo"; - ls.back()->bucket_id = "bucket_id"; + list ls; + ls.push_back(cls_rgw_reshard_remove_op{}); + ls.push_back(cls_rgw_reshard_remove_op{}); + ls.back().bucket_name = "foo"; + ls.back().bucket_id = "bucket_id"; + return ls; } void cls_rgw_reshard_remove_op::dump(Formatter *f) const @@ -531,11 +571,12 @@ void cls_rgw_reshard_remove_op::dump(Formatter *f) const } -void cls_rgw_set_bucket_resharding_op::generate_test_instances( - list& ls) +list cls_rgw_set_bucket_resharding_op::generate_test_instances() { - ls.push_back(new cls_rgw_set_bucket_resharding_op); - ls.push_back(new cls_rgw_set_bucket_resharding_op); + list ls; + ls.push_back(cls_rgw_set_bucket_resharding_op{}); + ls.push_back(cls_rgw_set_bucket_resharding_op{}); + return ls; } void cls_rgw_set_bucket_resharding_op::dump(Formatter *f) const @@ -543,22 +584,24 @@ void cls_rgw_set_bucket_resharding_op::dump(Formatter *f) const encode_json("entry", entry, f); } -void cls_rgw_clear_bucket_resharding_op::generate_test_instances( - list& ls) +list cls_rgw_clear_bucket_resharding_op::generate_test_instances() { - ls.push_back(new cls_rgw_clear_bucket_resharding_op); - ls.push_back(new cls_rgw_clear_bucket_resharding_op); + list ls; + ls.push_back(cls_rgw_clear_bucket_resharding_op{}); + ls.push_back(cls_rgw_clear_bucket_resharding_op{}); + return ls; } void cls_rgw_clear_bucket_resharding_op::dump(Formatter *f) const { } -void cls_rgw_guard_bucket_resharding_op::generate_test_instances( - list& ls) +list cls_rgw_guard_bucket_resharding_op::generate_test_instances() { - ls.push_back(new cls_rgw_guard_bucket_resharding_op); - ls.push_back(new cls_rgw_guard_bucket_resharding_op); + list ls; + ls.push_back(cls_rgw_guard_bucket_resharding_op{}); + ls.push_back(cls_rgw_guard_bucket_resharding_op{}); + return ls; } void cls_rgw_guard_bucket_resharding_op::dump(Formatter *f) const @@ -567,11 +610,12 @@ void cls_rgw_guard_bucket_resharding_op::dump(Formatter *f) const } -void cls_rgw_get_bucket_resharding_op::generate_test_instances( - list& ls) +list cls_rgw_get_bucket_resharding_op::generate_test_instances() { - ls.push_back(new cls_rgw_get_bucket_resharding_op); - ls.push_back(new cls_rgw_get_bucket_resharding_op); + list ls; + ls.push_back(cls_rgw_get_bucket_resharding_op{}); + ls.push_back(cls_rgw_get_bucket_resharding_op{}); + return ls; } void cls_rgw_get_bucket_resharding_op::dump(Formatter *f) const diff --git a/src/cls/rgw/cls_rgw_ops.h b/src/cls/rgw/cls_rgw_ops.h index 225df29fe510..5b63280eeffc 100644 --- a/src/cls/rgw/cls_rgw_ops.h +++ b/src/cls/rgw/cls_rgw_ops.h @@ -20,7 +20,7 @@ struct rgw_cls_tag_timeout_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_tag_timeout_op) @@ -75,7 +75,7 @@ struct rgw_cls_obj_prepare_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_obj_prepare_op) @@ -158,7 +158,7 @@ struct rgw_cls_obj_complete_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_obj_complete_op) @@ -224,7 +224,7 @@ struct rgw_cls_link_olh_op { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(rgw_cls_link_olh_op) @@ -268,7 +268,7 @@ struct rgw_cls_unlink_instance_op { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(rgw_cls_unlink_instance_op) @@ -295,7 +295,7 @@ struct rgw_cls_read_olh_log_op decode(olh_tag, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(rgw_cls_read_olh_log_op) @@ -320,7 +320,7 @@ struct rgw_cls_read_olh_log_ret decode(is_truncated, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(rgw_cls_read_olh_log_ret) @@ -347,7 +347,7 @@ struct rgw_cls_trim_olh_log_op decode(olh_tag, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(rgw_cls_trim_olh_log_op) @@ -372,7 +372,7 @@ struct rgw_cls_bucket_clear_olh_op { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(rgw_cls_bucket_clear_olh_op) @@ -417,7 +417,7 @@ struct rgw_cls_list_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_list_op) @@ -459,7 +459,7 @@ struct rgw_cls_list_ret { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_list_ret) @@ -483,7 +483,7 @@ struct rgw_cls_check_index_ret DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_check_index_ret) @@ -511,7 +511,7 @@ struct rgw_cls_bucket_update_stats_op DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_cls_bucket_update_stats_op) @@ -534,11 +534,13 @@ struct rgw_cls_obj_remove_op { encode_json("keep_attr_prefixes", keep_attr_prefixes, f); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_obj_remove_op); - o.back()->keep_attr_prefixes.push_back("keep_attr_prefixes1"); - o.back()->keep_attr_prefixes.push_back("keep_attr_prefixes2"); - o.back()->keep_attr_prefixes.push_back("keep_attr_prefixes3"); + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_obj_remove_op{}); + o.back().keep_attr_prefixes.push_back("keep_attr_prefixes1"); + o.back().keep_attr_prefixes.push_back("keep_attr_prefixes2"); + o.back().keep_attr_prefixes.push_back("keep_attr_prefixes3"); + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_obj_remove_op) @@ -562,9 +564,11 @@ struct rgw_cls_obj_store_pg_ver_op { f->dump_string("attr", attr); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_obj_store_pg_ver_op); - o.back()->attr = "attr"; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_obj_store_pg_ver_op{}); + o.back().attr = "attr"; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_obj_store_pg_ver_op) @@ -594,10 +598,12 @@ struct rgw_cls_obj_check_attrs_prefix { f->dump_bool("fail_if_exist", fail_if_exist); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_obj_check_attrs_prefix); - o.back()->check_prefix = "prefix"; - o.back()->fail_if_exist = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_obj_check_attrs_prefix{}); + o.back().check_prefix = "prefix"; + o.back().fail_if_exist = true; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_obj_check_attrs_prefix) @@ -658,8 +664,10 @@ struct rgw_cls_usage_log_add_op { f->dump_string("user", user.to_str()); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_usage_log_add_op); + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_usage_log_add_op{}); + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_usage_log_add_op) @@ -691,12 +699,14 @@ struct rgw_cls_bi_get_op { f->dump_int("type", (int)type); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_bi_get_op); - o.push_back(new rgw_cls_bi_get_op); - o.back()->key.name = "key"; - o.back()->key.instance = "instance"; - o.back()->type = BIIndexType::Plain; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_bi_get_op{}); + o.push_back(rgw_cls_bi_get_op{}); + o.back().key.name = "key"; + o.back().key.instance = "instance"; + o.back().type = BIIndexType::Plain; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_bi_get_op) @@ -722,9 +732,11 @@ struct rgw_cls_bi_get_ret { f->dump_string("entry", entry.idx); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_bi_get_ret); - o.back()->entry.idx = "entry"; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_bi_get_ret{}); + o.back().entry.idx = "entry"; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_bi_get_ret) @@ -750,10 +762,12 @@ struct rgw_cls_bi_put_op { f->dump_string("entry", entry.idx); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_bi_put_op); - o.push_back(new rgw_cls_bi_put_op); - o.back()->entry.idx = "entry"; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_bi_put_op{}); + o.push_back(rgw_cls_bi_put_op{}); + o.back().entry.idx = "entry"; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_bi_put_op) @@ -778,11 +792,13 @@ struct rgw_cls_bi_put_entries_op { void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_bi_put_entries_op); - o.push_back(new rgw_cls_bi_put_entries_op); - o.back()->entries.push_back({.idx = "entry"}); - o.back()->check_existing = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_bi_put_entries_op{}); + o.push_back(rgw_cls_bi_put_entries_op{}); + o.back().entries.push_back({.idx = "entry"}); + o.back().check_existing = true; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_bi_put_entries_op) @@ -822,13 +838,15 @@ struct rgw_cls_bi_list_op { f->dump_bool("reshardlog", reshardlog); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_bi_list_op); - o.push_back(new rgw_cls_bi_list_op); - o.back()->max = 100; - o.back()->name_filter = "name_filter"; - o.back()->marker = "marker"; - o.back()->reshardlog = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_bi_list_op{}); + o.push_back(rgw_cls_bi_list_op{}); + o.back().max = 100; + o.back().name_filter = "name_filter"; + o.back().marker = "marker"; + o.back().reshardlog = true; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_bi_list_op) @@ -858,13 +876,15 @@ struct rgw_cls_bi_list_ret { encode_json("entries", entries, f); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_bi_list_ret); - o.push_back(new rgw_cls_bi_list_ret); - o.back()->entries.push_back(rgw_cls_bi_entry()); - o.back()->entries.push_back(rgw_cls_bi_entry()); - o.back()->entries.back().idx = "entry"; - o.back()->is_truncated = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_bi_list_ret{}); + o.push_back(rgw_cls_bi_list_ret{}); + o.back().entries.push_back(rgw_cls_bi_entry()); + o.back().entries.push_back(rgw_cls_bi_entry()); + o.back().entries.back().idx = "entry"; + o.back().is_truncated = true; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_bi_list_ret) @@ -911,14 +931,16 @@ struct rgw_cls_usage_log_read_op { f->dump_unsigned("max_entries", max_entries); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_usage_log_read_op); - o.back()->start_epoch = 1; - o.back()->end_epoch = 2; - o.back()->owner = "owner"; - o.back()->bucket = "bucket"; - o.back()->iter = "iter"; - o.back()->max_entries = 100; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_usage_log_read_op{}); + o.back().start_epoch = 1; + o.back().end_epoch = 2; + o.back().owner = "owner"; + o.back().bucket = "bucket"; + o.back().iter = "iter"; + o.back().max_entries = 100; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_usage_log_read_op) @@ -950,16 +972,18 @@ struct rgw_cls_usage_log_read_ret { encode_json("usage", usage, f); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_cls_usage_log_read_ret); - o.back()->next_iter = "123"; - o.back()->truncated = true; - o.back()->usage.clear(); - o.push_back(new rgw_cls_usage_log_read_ret); - o.back()->usage[rgw_user_bucket("user1", "bucket1")] = rgw_usage_log_entry(); - o.back()->usage[rgw_user_bucket("user2", "bucket2")] = rgw_usage_log_entry(); - o.back()->truncated = true; - o.back()->next_iter = "next_iter"; + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_cls_usage_log_read_ret{}); + o.back().next_iter = "123"; + o.back().truncated = true; + o.back().usage.clear(); + o.push_back(rgw_cls_usage_log_read_ret{}); + o.back().usage[rgw_user_bucket("user1", "bucket1")] = rgw_usage_log_entry(); + o.back().usage[rgw_user_bucket("user2", "bucket2")] = rgw_usage_log_entry(); + o.back().truncated = true; + o.back().next_iter = "next_iter"; + return o; } }; WRITE_CLASS_ENCODER(rgw_cls_usage_log_read_ret) @@ -997,13 +1021,15 @@ struct rgw_cls_usage_log_trim_op { f->dump_string("bucket", bucket); } - static void generate_test_instances(std::list& ls) { - rgw_cls_usage_log_trim_op *m = new rgw_cls_usage_log_trim_op; - m->start_epoch = 1; - m->end_epoch = 2; - m->user = "user"; - m->bucket = "bucket"; - ls.push_back(m); + static std::list generate_test_instances() { + std::list ls; + rgw_cls_usage_log_trim_op m; + m.start_epoch = 1; + m.end_epoch = 2; + m.user = "user"; + m.bucket = "bucket"; + ls.push_back(std::move(m)); + return ls; } }; WRITE_CLASS_ENCODER(rgw_cls_usage_log_trim_op) @@ -1028,7 +1054,7 @@ struct cls_rgw_gc_set_entry_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); size_t estimate_encoded_size() const { constexpr size_t start_overhead = sizeof(__u8) + sizeof(__u8) + sizeof(ceph_le32); // version and length prefix @@ -1058,7 +1084,7 @@ struct cls_rgw_gc_defer_entry_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_gc_defer_entry_op) @@ -1088,7 +1114,7 @@ struct cls_rgw_gc_list_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_gc_list_op) @@ -1117,7 +1143,7 @@ struct cls_rgw_gc_list_ret { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_gc_list_ret) @@ -1139,7 +1165,7 @@ struct cls_rgw_gc_remove_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_gc_remove_op) @@ -1164,7 +1190,7 @@ struct cls_rgw_bi_log_list_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_bi_log_list_op) @@ -1189,7 +1215,7 @@ struct cls_rgw_bi_log_trim_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_bi_log_trim_op) @@ -1214,7 +1240,7 @@ struct cls_rgw_bi_log_list_ret { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_bi_log_list_ret) @@ -1316,7 +1342,7 @@ struct cls_rgw_lc_get_entry_ret { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_lc_get_entry_ret) @@ -1372,12 +1398,14 @@ struct cls_rgw_lc_set_entry_op { f->dump_int("status", entry.status); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_rgw_lc_set_entry_op); - ls.push_back(new cls_rgw_lc_set_entry_op); - ls.back()->entry.bucket = "foo"; - ls.back()->entry.start_time = 123; - ls.back()->entry.status = 456; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_rgw_lc_set_entry_op{}); + ls.push_back(cls_rgw_lc_set_entry_op{}); + ls.back().entry.bucket = "foo"; + ls.back().entry.start_time = 123; + ls.back().entry.status = 456; + return ls; } }; WRITE_CLASS_ENCODER(cls_rgw_lc_set_entry_op) @@ -1512,7 +1540,7 @@ struct cls_rgw_mp_upload_part_info_update_op { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void dump(Formatter* f) const; }; WRITE_CLASS_ENCODER(cls_rgw_mp_upload_part_info_update_op) @@ -1541,7 +1569,7 @@ struct cls_rgw_reshard_add_op { } DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_reshard_add_op) @@ -1565,7 +1593,7 @@ struct cls_rgw_reshard_list_op { decode(marker, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_reshard_list_op) @@ -1590,7 +1618,7 @@ struct cls_rgw_reshard_list_ret { decode(is_truncated, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_reshard_list_ret) @@ -1611,7 +1639,7 @@ struct cls_rgw_reshard_get_op { decode(entry, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_reshard_get_op) @@ -1632,7 +1660,7 @@ struct cls_rgw_reshard_get_ret { decode(entry, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_reshard_get_ret) @@ -1659,7 +1687,7 @@ struct cls_rgw_reshard_remove_op { decode(bucket_id, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_reshard_remove_op) @@ -1678,7 +1706,7 @@ struct cls_rgw_set_bucket_resharding_op { decode(entry, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_set_bucket_resharding_op) @@ -1693,7 +1721,7 @@ struct cls_rgw_clear_bucket_resharding_op { DECODE_START(1, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::listgenerate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_clear_bucket_resharding_op) @@ -1713,7 +1741,7 @@ struct cls_rgw_guard_bucket_resharding_op { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::listgenerate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_guard_bucket_resharding_op) @@ -1730,7 +1758,7 @@ struct cls_rgw_get_bucket_resharding_op { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::listgenerate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_get_bucket_resharding_op) @@ -1750,7 +1778,7 @@ struct cls_rgw_get_bucket_resharding_ret { DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::listgenerate_test_instances(); void dump(ceph::Formatter *f) const; }; WRITE_CLASS_ENCODER(cls_rgw_get_bucket_resharding_ret) diff --git a/src/cls/rgw/cls_rgw_types.cc b/src/cls/rgw/cls_rgw_types.cc index 9fd60aaff3f3..8f665bc714fe 100644 --- a/src/cls/rgw/cls_rgw_types.cc +++ b/src/cls/rgw/cls_rgw_types.cc @@ -61,14 +61,16 @@ void rgw_zone_set::dump(Formatter *f) const encode_json("entries", entries, f); } -void rgw_zone_set::generate_test_instances(list& o) +list rgw_zone_set::generate_test_instances() { - o.push_back(new rgw_zone_set); - o.push_back(new rgw_zone_set); + list o; + o.push_back(rgw_zone_set{}); + o.push_back(rgw_zone_set{}); std::optional loc_key = "loc_key"; - o.back()->insert("zone1", loc_key); - o.back()->insert("zone2", loc_key); - o.back()->insert("zone3", loc_key); + o.back().insert("zone1", loc_key); + o.back().insert("zone2", loc_key); + o.back().insert("zone3", loc_key); + return o; } void rgw_zone_set::insert(const string& zone, std::optional location_key) @@ -142,13 +144,15 @@ std::string_view to_string(RGWObjCategory c) } } -void rgw_bucket_pending_info::generate_test_instances(list& o) +list rgw_bucket_pending_info::generate_test_instances() { - rgw_bucket_pending_info *i = new rgw_bucket_pending_info; - i->state = CLS_RGW_STATE_COMPLETE; - i->op = CLS_RGW_OP_DEL; - o.push_back(i); - o.push_back(new rgw_bucket_pending_info); + list o; + rgw_bucket_pending_info i; + i.state = CLS_RGW_STATE_COMPLETE; + i.op = CLS_RGW_OP_DEL; + o.push_back(std::move(i)); + o.push_back(rgw_bucket_pending_info{}); + return o; } void rgw_bucket_pending_info::dump(Formatter *f) const @@ -174,17 +178,19 @@ void cls_rgw_obj_key::decode_json(JSONObj *obj) { JSONDecoder::decode_json("instance", instance, obj); } -void rgw_bucket_dir_entry_meta::generate_test_instances(list& o) +list rgw_bucket_dir_entry_meta::generate_test_instances() { - rgw_bucket_dir_entry_meta *m = new rgw_bucket_dir_entry_meta; - m->category = RGWObjCategory::Main; - m->size = 100; - m->etag = "etag"; - m->owner = "owner"; - m->owner_display_name = "display name"; - m->content_type = "content/type"; - o.push_back(m); - o.push_back(new rgw_bucket_dir_entry_meta); + list o; + rgw_bucket_dir_entry_meta m; + m.category = RGWObjCategory::Main; + m.size = 100; + m.etag = "etag"; + m.owner = "owner"; + m.owner_display_name = "display name"; + m.content_type = "content/type"; + o.push_back(std::move(m)); + o.push_back(rgw_bucket_dir_entry_meta{}); + return o; } void rgw_bucket_dir_entry_meta::dump(Formatter *f) const @@ -223,27 +229,24 @@ void rgw_bucket_dir_entry_meta::decode_json(JSONObj *obj) { JSONDecoder::decode_json("appendable", appendable, obj); } -void rgw_bucket_dir_entry::generate_test_instances(list& o) +list rgw_bucket_dir_entry::generate_test_instances() { - list l; - rgw_bucket_dir_entry_meta::generate_test_instances(l); + list o; - for (auto iter = l.begin(); iter != l.end(); ++iter) { - rgw_bucket_dir_entry_meta *m = *iter; - rgw_bucket_dir_entry *e = new rgw_bucket_dir_entry; - e->key.name = "name"; - e->ver.pool = 1; - e->ver.epoch = 1234; - e->locator = "locator"; - e->exists = true; - e->meta = *m; - e->tag = "tag"; + for (auto& m : rgw_bucket_dir_entry_meta::generate_test_instances()) { + rgw_bucket_dir_entry e; + e.key.name = "name"; + e.ver.pool = 1; + e.ver.epoch = 1234; + e.locator = "locator"; + e.exists = true; + e.meta = m; + e.tag = "tag"; - o.push_back(e); - - delete m; + o.push_back(std::move(e)); } - o.push_back(new rgw_bucket_dir_entry); + o.push_back(rgw_bucket_dir_entry{}); + return o; } void rgw_bucket_entry_ver::dump(Formatter *f) const @@ -257,12 +260,14 @@ void rgw_bucket_entry_ver::decode_json(JSONObj *obj) { JSONDecoder::decode_json("epoch", epoch, obj); } -void rgw_bucket_entry_ver::generate_test_instances(list& ls) +list rgw_bucket_entry_ver::generate_test_instances() { - ls.push_back(new rgw_bucket_entry_ver); - ls.push_back(new rgw_bucket_entry_ver); - ls.back()->pool = 123; - ls.back()->epoch = 12322; + list ls; + ls.push_back(rgw_bucket_entry_ver{}); + ls.push_back(rgw_bucket_entry_ver{}); + ls.back().pool = 123; + ls.back().epoch = 12322; + return ls; } @@ -441,10 +446,11 @@ bool rgw_cls_bi_entry::get_info(cls_rgw_obj_key *key, return false; } -void rgw_cls_bi_entry::generate_test_instances(list& o) +list rgw_cls_bi_entry::generate_test_instances() { using ceph::encode; - rgw_cls_bi_entry *m = new rgw_cls_bi_entry; + list o; + rgw_cls_bi_entry m; rgw_bucket_olh_entry entry; entry.delete_marker = true; entry.epoch = 1234; @@ -453,11 +459,12 @@ void rgw_cls_bi_entry::generate_test_instances(list& o) entry.key.instance = "key.instance"; entry.exists = true; entry.pending_removal = true; - m->type = BIIndexType::OLH; - m->idx = "idx"; - encode(entry,m->data); - o.push_back(m); - o.push_back(new rgw_cls_bi_entry); + m.type = BIIndexType::OLH; + m.idx = "idx"; + encode(entry, m.data); + o.push_back(std::move(m)); + o.push_back(rgw_cls_bi_entry{}); + return o; } void rgw_bucket_olh_entry::dump(Formatter *f) const @@ -482,18 +489,20 @@ void rgw_bucket_olh_entry::decode_json(JSONObj *obj) JSONDecoder::decode_json("pending_removal", pending_removal, obj); } -void rgw_bucket_olh_entry::generate_test_instances(list& o) +list rgw_bucket_olh_entry::generate_test_instances() { - rgw_bucket_olh_entry *entry = new rgw_bucket_olh_entry; - entry->delete_marker = true; - entry->epoch = 1234; - entry->tag = "tag"; - entry->key.name = "key.name"; - entry->key.instance = "key.instance"; - entry->exists = true; - entry->pending_removal = true; - o.push_back(entry); - o.push_back(new rgw_bucket_olh_entry); + list o; + rgw_bucket_olh_entry entry; + entry.delete_marker = true; + entry.epoch = 1234; + entry.tag = "tag"; + entry.key.name = "key.name"; + entry.key.instance = "key.instance"; + entry.exists = true; + entry.pending_removal = true; + o.push_back(std::move(entry)); + o.push_back(rgw_bucket_olh_entry{}); + return o; } void rgw_bucket_deleted_entry::dump(Formatter *f) const @@ -506,26 +515,30 @@ void rgw_bucket_deleted_entry::decode_json(JSONObj *obj) JSONDecoder::decode_json("key", key, obj); } -void rgw_bucket_deleted_entry::generate_test_instances(list& o) +list rgw_bucket_deleted_entry::generate_test_instances() { - rgw_bucket_deleted_entry *entry = new rgw_bucket_deleted_entry; - entry->key.name = "key.name"; - entry->key.instance = "key.instance"; - o.push_back(entry); - o.push_back(new rgw_bucket_deleted_entry); + list o; + rgw_bucket_deleted_entry entry; + entry.key.name = "key.name"; + entry.key.instance = "key.instance"; + o.push_back(std::move(entry)); + o.push_back(rgw_bucket_deleted_entry{}); + return o; } -void rgw_bucket_olh_log_entry::generate_test_instances(list& o) +list rgw_bucket_olh_log_entry::generate_test_instances() { - rgw_bucket_olh_log_entry *entry = new rgw_bucket_olh_log_entry; - entry->epoch = 1234; - entry->op = CLS_RGW_OLH_OP_LINK_OLH; - entry->op_tag = "op_tag"; - entry->key.name = "key.name"; - entry->key.instance = "key.instance"; - entry->delete_marker = true; - o.push_back(entry); - o.push_back(new rgw_bucket_olh_log_entry); + list o; + rgw_bucket_olh_log_entry entry; + entry.epoch = 1234; + entry.op = CLS_RGW_OLH_OP_LINK_OLH; + entry.op_tag = "op_tag"; + entry.key.name = "key.name"; + entry.key.instance = "key.instance"; + entry.delete_marker = true; + o.push_back(std::move(entry)); + o.push_back(rgw_bucket_olh_log_entry{}); + return o; } void rgw_bucket_olh_log_entry::dump(Formatter *f) const @@ -634,28 +647,32 @@ void rgw_bi_log_entry::dump(Formatter *f) const encode_json("zones_trace", zones_trace, f); } -void rgw_bi_log_entry::generate_test_instances(list& ls) +list rgw_bi_log_entry::generate_test_instances() { - ls.push_back(new rgw_bi_log_entry); - ls.push_back(new rgw_bi_log_entry); - ls.back()->id = "midf"; - ls.back()->object = "obj"; - ls.back()->timestamp = ceph::real_clock::from_ceph_timespec({ceph_le32(2), ceph_le32(3)}); - ls.back()->index_ver = 4323; - ls.back()->tag = "tagasdfds"; - ls.back()->op = CLS_RGW_OP_DEL; - ls.back()->state = CLS_RGW_STATE_PENDING_MODIFY; + list ls; + ls.push_back(rgw_bi_log_entry{}); + ls.push_back(rgw_bi_log_entry{}); + ls.back().id = "midf"; + ls.back().object = "obj"; + ls.back().timestamp = ceph::real_clock::from_ceph_timespec({ceph_le32(2), ceph_le32(3)}); + ls.back().index_ver = 4323; + ls.back().tag = "tagasdfds"; + ls.back().op = CLS_RGW_OP_DEL; + ls.back().state = CLS_RGW_STATE_PENDING_MODIFY; + return ls; } -void rgw_bucket_category_stats::generate_test_instances(list& o) +list rgw_bucket_category_stats::generate_test_instances() { - rgw_bucket_category_stats *s = new rgw_bucket_category_stats; - s->total_size = 1024; - s->total_size_rounded = 4096; - s->num_entries = 2; - s->actual_size = 1024; - o.push_back(s); - o.push_back(new rgw_bucket_category_stats); + list o; + rgw_bucket_category_stats s; + s.total_size = 1024; + s.total_size_rounded = 4096; + s.num_entries = 2; + s.actual_size = 1024; + o.push_back(std::move(s)); + o.push_back(rgw_bucket_category_stats{}); + return o; } void rgw_bucket_category_stats::dump(Formatter *f) const @@ -666,24 +683,24 @@ void rgw_bucket_category_stats::dump(Formatter *f) const f->dump_unsigned("actual_size", actual_size); } -void rgw_bucket_dir_header::generate_test_instances(list& o) +list rgw_bucket_dir_header::generate_test_instances() { - list l; - rgw_bucket_category_stats::generate_test_instances(l); + list o; + list l = rgw_bucket_category_stats::generate_test_instances(); + uint8_t i = 0; for (auto iter = l.begin(); iter != l.end(); ++iter, ++i) { RGWObjCategory c = static_cast(i); - rgw_bucket_dir_header *h = new rgw_bucket_dir_header; - rgw_bucket_category_stats *s = *iter; - h->stats[c] = *s; - - o.push_back(h); + rgw_bucket_dir_header h; + rgw_bucket_category_stats& s = *iter; + h.stats[c] = s; - delete s; + o.push_back(std::move(h)); } - o.push_back(new rgw_bucket_dir_header); + o.push_back(rgw_bucket_dir_header{}); + return o; } void rgw_bucket_dir_header::dump(Formatter *f) const @@ -702,31 +719,31 @@ void rgw_bucket_dir_header::dump(Formatter *f) const f->dump_int("reshardlog_entries", reshardlog_entries); } -void rgw_bucket_dir::generate_test_instances(list& o) +list rgw_bucket_dir::generate_test_instances() { - list l; - rgw_bucket_dir_header::generate_test_instances(l); + list o; + + list l = rgw_bucket_dir_header::generate_test_instances(); uint8_t i = 0; for (auto iter = l.begin(); iter != l.end(); ++iter, ++i) { - rgw_bucket_dir *d = new rgw_bucket_dir; - rgw_bucket_dir_header *h = *iter; - d->header = *h; + rgw_bucket_dir d; + rgw_bucket_dir_header& h = *iter; + d.header = h; list el; for (auto eiter = el.begin(); eiter != el.end(); ++eiter) { rgw_bucket_dir_entry *e = *eiter; - d->m[e->key.name] = *e; + d.m[e->key.name] = *e; delete e; } - o.push_back(d); - - delete h; + o.push_back(std::move(d)); } - o.push_back(new rgw_bucket_dir); + o.push_back(rgw_bucket_dir{}); + return o; } void rgw_bucket_dir::dump(Formatter *f) const @@ -745,13 +762,15 @@ void rgw_bucket_dir::dump(Formatter *f) const f->close_section(); } -void rgw_s3select_usage_data::generate_test_instances(list& o) +list rgw_s3select_usage_data::generate_test_instances() { - rgw_s3select_usage_data *s = new rgw_s3select_usage_data; - s->bytes_processed = 1024; - s->bytes_returned = 512; - o.push_back(s); - o.push_back(new rgw_s3select_usage_data); + list o; + rgw_s3select_usage_data s; + s.bytes_processed = 1024; + s.bytes_returned = 512; + o.push_back(std::move(s)); + o.push_back(rgw_s3select_usage_data{}); + return o; } void rgw_s3select_usage_data::dump(Formatter *f) const @@ -760,15 +779,17 @@ void rgw_s3select_usage_data::dump(Formatter *f) const f->dump_unsigned("bytes_returned", bytes_returned); } -void rgw_usage_data::generate_test_instances(list& o) +list rgw_usage_data::generate_test_instances() { - rgw_usage_data *s = new rgw_usage_data; - s->bytes_sent = 1024; - s->bytes_received = 1024; - s->ops = 2; - s->successful_ops = 1; - o.push_back(s); - o.push_back(new rgw_usage_data); + list o; + rgw_usage_data s; + s.bytes_sent = 1024; + s.bytes_received = 1024; + s.ops = 2; + s.successful_ops = 1; + o.push_back(std::move(s)); + o.push_back(rgw_usage_data{}); + return o; } void rgw_usage_data::dump(Formatter *f) const @@ -779,17 +800,19 @@ void rgw_usage_data::dump(Formatter *f) const f->dump_int("successful_ops", successful_ops); } -void rgw_usage_log_info::generate_test_instances(list& o) +list rgw_usage_log_info::generate_test_instances() { - rgw_usage_log_info *s = new rgw_usage_log_info; + list o; + rgw_usage_log_info s; std::string owner = "owner"; std::string payer = "payer"; std::string bucket = "bucket"; rgw_usage_log_entry r(owner, payer, bucket); - s->entries.push_back(r); - o.push_back(s); - o.push_back(new rgw_usage_log_info); + s.entries.push_back(r); + o.push_back(std::move(s)); + o.push_back(rgw_usage_log_info{}); + return o; } void rgw_usage_log_info::dump(Formatter *f) const @@ -797,13 +820,15 @@ void rgw_usage_log_info::dump(Formatter *f) const encode_json("entries", entries, f); } -void rgw_user_bucket::generate_test_instances(list& o) +list rgw_user_bucket::generate_test_instances() { - rgw_user_bucket *s = new rgw_user_bucket; - s->user = "user"; - s->bucket = "bucket"; - o.push_back(s); - o.push_back(new rgw_user_bucket); + list o; + rgw_user_bucket s; + s.user = "user"; + s.bucket = "bucket"; + o.push_back(std::move(s)); + o.push_back(rgw_user_bucket{}); + return o; } void rgw_user_bucket::dump(Formatter *f) const @@ -847,23 +872,25 @@ void rgw_usage_log_entry::dump(Formatter *f) const f->close_section(); } -void rgw_usage_log_entry::generate_test_instances(list &o) +list rgw_usage_log_entry::generate_test_instances() { - rgw_usage_log_entry *entry = new rgw_usage_log_entry; + list o; + rgw_usage_log_entry entry; rgw_usage_data usage_data{1024, 2048}; rgw_s3select_usage_data s3select_usage_data{8192, 4096}; - entry->owner = rgw_user("owner"); - entry->payer = rgw_user("payer"); - entry->bucket = "bucket"; - entry->epoch = 1234; - entry->total_usage.bytes_sent = usage_data.bytes_sent; - entry->total_usage.bytes_received = usage_data.bytes_received; - entry->total_usage.ops = usage_data.ops; - entry->total_usage.successful_ops = usage_data.successful_ops; - entry->usage_map["get_obj"] = usage_data; - entry->s3select_usage = s3select_usage_data; - o.push_back(entry); - o.push_back(new rgw_usage_log_entry); + entry.owner = rgw_user("owner"); + entry.payer = rgw_user("payer"); + entry.bucket = "bucket"; + entry.epoch = 1234; + entry.total_usage.bytes_sent = usage_data.bytes_sent; + entry.total_usage.bytes_received = usage_data.bytes_received; + entry.total_usage.ops = usage_data.ops; + entry.total_usage.successful_ops = usage_data.successful_ops; + entry.usage_map["get_obj"] = usage_data; + entry.s3select_usage = s3select_usage_data; + o.push_back(std::move(entry)); + o.push_back(rgw_usage_log_entry{}); + return o; } std::string to_string(cls_rgw_reshard_initiator i) { @@ -901,16 +928,18 @@ void cls_rgw_reshard_entry::dump(Formatter *f) const encode_json("initiator", to_string(initiator), f); } -void cls_rgw_reshard_entry::generate_test_instances(list& ls) +list cls_rgw_reshard_entry::generate_test_instances() { - ls.push_back(new cls_rgw_reshard_entry); - ls.push_back(new cls_rgw_reshard_entry); - ls.back()->time = ceph::real_clock::from_ceph_timespec({ceph_le32(2), ceph_le32(3)}); - ls.back()->tenant = "tenant"; - ls.back()->bucket_name = "bucket1"""; - ls.back()->bucket_id = "bucket_id"; - ls.back()->old_num_shards = 8; - ls.back()->new_num_shards = 64; + list ls; + ls.push_back(cls_rgw_reshard_entry{}); + ls.push_back(cls_rgw_reshard_entry{}); + ls.back().time = ceph::real_clock::from_ceph_timespec({ceph_le32(2), ceph_le32(3)}); + ls.back().tenant = "tenant"; + ls.back().bucket_name = "bucket1"""; + ls.back().bucket_id = "bucket_id"; + ls.back().old_num_shards = 8; + ls.back().new_num_shards = 64; + return ls; } void cls_rgw_bucket_instance_entry::dump(Formatter *f) const @@ -918,12 +947,13 @@ void cls_rgw_bucket_instance_entry::dump(Formatter *f) const encode_json("reshard_status", to_string(reshard_status), f); } -void cls_rgw_bucket_instance_entry::generate_test_instances( -list& ls) +list cls_rgw_bucket_instance_entry::generate_test_instances() { - ls.push_back(new cls_rgw_bucket_instance_entry); - ls.push_back(new cls_rgw_bucket_instance_entry); - ls.back()->reshard_status = RESHARD_STATUS::IN_PROGRESS; + list ls; + ls.push_back(cls_rgw_bucket_instance_entry{}); + ls.push_back(cls_rgw_bucket_instance_entry{}); + ls.back().reshard_status = RESHARD_STATUS::IN_PROGRESS; + return ls; } void cls_rgw_lc_entry::dump(Formatter *f) const @@ -933,14 +963,16 @@ void cls_rgw_lc_entry::dump(Formatter *f) const encode_json("status", status, f); } -void cls_rgw_lc_entry::generate_test_instances(list& o) +list cls_rgw_lc_entry::generate_test_instances() { - cls_rgw_lc_entry *s = new cls_rgw_lc_entry; - s->bucket = "bucket"; - s->start_time = 10; - s->status = 1; - o.push_back(s); - o.push_back(new cls_rgw_lc_entry); + list o; + cls_rgw_lc_entry s; + s.bucket = "bucket"; + s.start_time = 10; + s.status = 1; + o.push_back(std::move(s)); + o.push_back(cls_rgw_lc_entry{}); + return o; } void cls_rgw_lc_obj_head::dump(Formatter *f) const @@ -949,8 +981,9 @@ void cls_rgw_lc_obj_head::dump(Formatter *f) const encode_json("marker", marker, f); } -void cls_rgw_lc_obj_head::generate_test_instances(list& ls) +list cls_rgw_lc_obj_head::generate_test_instances() { + return {}; } std::ostream& operator<<(std::ostream& out, cls_rgw_reshard_status status) { diff --git a/src/cls/rgw/cls_rgw_types.h b/src/cls/rgw/cls_rgw_types.h index 1bfcbcc97b89..8dbdae7aa911 100644 --- a/src/cls/rgw/cls_rgw_types.h +++ b/src/cls/rgw/cls_rgw_types.h @@ -76,7 +76,7 @@ struct rgw_zone_set { ceph::decode(entries, bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void insert(const std::string& zone, std::optional location_key); bool exists(const std::string& zone, std::optional location_key) const; }; @@ -170,7 +170,7 @@ struct rgw_bucket_pending_info { } void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_pending_info) @@ -252,7 +252,7 @@ struct rgw_bucket_dir_entry_meta { } void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_dir_entry_meta) @@ -352,7 +352,7 @@ struct rgw_bucket_entry_ver { } void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_entry_ver) @@ -464,7 +464,7 @@ struct rgw_bucket_dir_entry { void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_dir_entry) @@ -503,7 +503,7 @@ struct rgw_cls_bi_entry { void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj, cls_rgw_obj_key *effective_key = NULL); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool get_info(cls_rgw_obj_key *key, RGWObjCategory *category, rgw_bucket_category_stats *accounted_stats) const; }; @@ -546,7 +546,7 @@ struct rgw_bucket_olh_log_entry { decode(delete_marker, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); }; @@ -587,7 +587,7 @@ struct rgw_bucket_olh_entry { } void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_olh_entry) @@ -606,7 +606,7 @@ struct rgw_bucket_deleted_entry { } void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_deleted_entry) @@ -674,7 +674,7 @@ struct rgw_bi_log_entry { } void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool is_versioned() { return ((bilog_flags & RGW_BILOG_FLAG_VERSIONED_OP) != 0); @@ -716,7 +716,7 @@ struct rgw_bucket_category_stats { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_category_stats) @@ -787,7 +787,7 @@ struct cls_rgw_bucket_instance_entry { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void clear() { reshard_status = RESHARD_STATUS::NOT_RESHARDING; @@ -876,7 +876,7 @@ struct rgw_bucket_dir_header { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool resharding() const { return new_instance.resharding(); @@ -910,7 +910,7 @@ struct rgw_bucket_dir { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_bucket_dir) @@ -942,7 +942,7 @@ struct rgw_s3select_usage_data { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_s3select_usage_data) @@ -980,7 +980,7 @@ struct rgw_usage_data { successful_ops += usage.successful_ops; } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_usage_data) @@ -1077,7 +1077,7 @@ struct rgw_usage_log_entry { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_usage_log_entry) @@ -1097,7 +1097,7 @@ struct rgw_usage_log_info { DECODE_FINISH(bl); } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); rgw_usage_log_info() {} }; @@ -1134,7 +1134,7 @@ struct rgw_user_bucket { return false; } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_user_bucket) @@ -1177,12 +1177,14 @@ struct cls_rgw_obj { f->dump_string("key", loc); f->dump_string("instance", key.instance); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_rgw_obj); - ls.push_back(new cls_rgw_obj); - ls.back()->pool = "mypool"; - ls.back()->key.name = "myoid"; - ls.back()->loc = "mykey"; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_rgw_obj{}); + ls.push_back(cls_rgw_obj{}); + ls.back().pool = "mypool"; + ls.back().key.name = "myoid"; + ls.back().loc = "mykey"; + return ls; } size_t estimate_encoded_size() const { @@ -1229,8 +1231,10 @@ struct cls_rgw_obj_chain { } f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_rgw_obj_chain); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_rgw_obj_chain{}); + return ls; } bool empty() { @@ -1280,12 +1284,14 @@ struct cls_rgw_gc_obj_info f->close_section(); f->dump_stream("time") << time; } - static void generate_test_instances(std::list& ls) { - ls.push_back(new cls_rgw_gc_obj_info); - ls.push_back(new cls_rgw_gc_obj_info); - ls.back()->tag = "footag"; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(cls_rgw_gc_obj_info{}); + ls.push_back(cls_rgw_gc_obj_info{}); + ls.back().tag = "footag"; ceph_timespec ts{ceph_le32(21), ceph_le32(32)}; - ls.back()->time = ceph::real_clock::from_ceph_timespec(ts); + ls.back().time = ceph::real_clock::from_ceph_timespec(ts); + return ls; } size_t estimate_encoded_size() const { @@ -1331,7 +1337,7 @@ struct cls_rgw_lc_obj_head } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_lc_obj_head) @@ -1364,7 +1370,7 @@ struct cls_rgw_lc_entry { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_rgw_lc_entry); @@ -1426,7 +1432,7 @@ struct cls_rgw_reshard_entry } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); static void generate_key(const std::string& tenant, const std::string& bucket_name, std::string *key); void get_key(std::string *key) const; diff --git a/src/cls/rgw_gc/cls_rgw_gc_ops.h b/src/cls/rgw_gc/cls_rgw_gc_ops.h index 4c507c09e24d..3c741a0e2c66 100644 --- a/src/cls/rgw_gc/cls_rgw_gc_ops.h +++ b/src/cls/rgw_gc/cls_rgw_gc_ops.h @@ -30,10 +30,12 @@ struct cls_rgw_gc_queue_init_op { f->dump_unsigned("num_deferred_entries", num_deferred_entries); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_rgw_gc_queue_init_op); - o.back()->size = 1024; - o.back()->num_deferred_entries = 512; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_rgw_gc_queue_init_op{}); + o.back().size = 1024; + o.back().num_deferred_entries = 512; + return o; } }; WRITE_CLASS_ENCODER(cls_rgw_gc_queue_init_op) diff --git a/src/cls/rgw_gc/cls_rgw_gc_types.h b/src/cls/rgw_gc/cls_rgw_gc_types.h index d9a553fdcb4c..672563c858ab 100644 --- a/src/cls/rgw_gc/cls_rgw_gc_types.h +++ b/src/cls/rgw_gc/cls_rgw_gc_types.h @@ -40,12 +40,14 @@ struct cls_rgw_gc_urgent_data f->dump_unsigned("num_head_urgent_entries", num_head_urgent_entries); f->dump_unsigned("num_xattr_urgent_entries", num_xattr_urgent_entries); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_rgw_gc_urgent_data); - o.push_back(new cls_rgw_gc_urgent_data); - o.back()->num_urgent_data_entries = 1024; - o.back()->num_head_urgent_entries = 512; - o.back()->num_xattr_urgent_entries = 512; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_rgw_gc_urgent_data{}); + o.push_back(cls_rgw_gc_urgent_data{}); + o.back().num_urgent_data_entries = 1024; + o.back().num_head_urgent_entries = 512; + o.back().num_xattr_urgent_entries = 512; + return o; } }; WRITE_CLASS_ENCODER(cls_rgw_gc_urgent_data) diff --git a/src/cls/timeindex/cls_timeindex_ops.h b/src/cls/timeindex/cls_timeindex_ops.h index f0f0cc024751..dea9859413e4 100644 --- a/src/cls/timeindex/cls_timeindex_ops.h +++ b/src/cls/timeindex/cls_timeindex_ops.h @@ -64,13 +64,15 @@ struct cls_timeindex_list_op { f->dump_int("max_entries", max_entries); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_timeindex_list_op); - o.push_back(new cls_timeindex_list_op); - o.back()->from_time = utime_t(1, 2); - o.back()->marker = "marker"; - o.back()->to_time = utime_t(3, 4); - o.back()->max_entries = 5; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_timeindex_list_op{}); + o.push_back(cls_timeindex_list_op{}); + o.back().from_time = utime_t(1, 2); + o.back().marker = "marker"; + o.back().to_time = utime_t(3, 4); + o.back().max_entries = 5; + return o; } }; WRITE_CLASS_ENCODER(cls_timeindex_list_op) @@ -104,15 +106,17 @@ struct cls_timeindex_list_ret { f->dump_bool("truncated", truncated); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_timeindex_list_ret); - o.push_back(new cls_timeindex_list_ret); - o.back()->entries.push_back(cls_timeindex_entry()); - o.back()->entries.back().key_ts = utime_t(1, 2); - o.back()->entries.back().key_ext = "key_ext"; - o.back()->entries.back().value.append("value"); - o.back()->marker = "marker"; - o.back()->truncated = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_timeindex_list_ret{}); + o.push_back(cls_timeindex_list_ret{}); + o.back().entries.push_back(cls_timeindex_entry()); + o.back().entries.back().key_ts = utime_t(1, 2); + o.back().entries.back().key_ext = "key_ext"; + o.back().entries.back().value.append("value"); + o.back().marker = "marker"; + o.back().truncated = true; + return o; } }; WRITE_CLASS_ENCODER(cls_timeindex_list_ret) diff --git a/src/cls/timeindex/cls_timeindex_types.cc b/src/cls/timeindex/cls_timeindex_types.cc index 1a748967bd82..c9d0c058bac2 100644 --- a/src/cls/timeindex/cls_timeindex_types.cc +++ b/src/cls/timeindex/cls_timeindex_types.cc @@ -8,14 +8,16 @@ void cls_timeindex_entry::dump(Formatter *f) const f->dump_string("value", value.to_str()); } -void cls_timeindex_entry::generate_test_instances(std::list& o) +std::list cls_timeindex_entry::generate_test_instances() { - cls_timeindex_entry *i = new cls_timeindex_entry; - i->key_ts = utime_t(0,0); - i->key_ext = "foo"; + std::list o; + cls_timeindex_entry i; + i.key_ts = utime_t(0,0); + i.key_ext = "foo"; bufferlist bl; bl.append("bar"); - i->value = bl; - o.push_back(i); - o.push_back(new cls_timeindex_entry); + i.value = bl; + o.push_back(std::move(i)); + o.push_back(cls_timeindex_entry{}); + return o; } diff --git a/src/cls/timeindex/cls_timeindex_types.h b/src/cls/timeindex/cls_timeindex_types.h index ea8d6c93d2c8..6221a1766f08 100644 --- a/src/cls/timeindex/cls_timeindex_types.h +++ b/src/cls/timeindex/cls_timeindex_types.h @@ -39,7 +39,7 @@ struct cls_timeindex_entry { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_timeindex_entry) diff --git a/src/cls/user/cls_user_ops.cc b/src/cls/user/cls_user_ops.cc index f787c1eeb022..c0de485768e0 100644 --- a/src/cls/user/cls_user_ops.cc +++ b/src/cls/user/cls_user_ops.cc @@ -16,18 +16,20 @@ void cls_user_set_buckets_op::dump(Formatter *f) const encode_json("time", utime_t(time), f); } -void cls_user_set_buckets_op::generate_test_instances(list& ls) +list cls_user_set_buckets_op::generate_test_instances() { - ls.push_back(new cls_user_set_buckets_op); - cls_user_set_buckets_op *op = new cls_user_set_buckets_op; + list ls; + ls.push_back(cls_user_set_buckets_op{}); + cls_user_set_buckets_op op; for (int i = 0; i < 3; i++) { cls_user_bucket_entry e; cls_user_gen_test_bucket_entry(&e, i); - op->entries.push_back(e); + op.entries.push_back(e); } - op->add = true; - op->time = utime_t(1, 0).to_real_time(); + op.add = true; + op.time = utime_t(1, 0).to_real_time(); ls.push_back(op); + return ls; } void cls_user_remove_bucket_op::dump(Formatter *f) const @@ -35,12 +37,14 @@ void cls_user_remove_bucket_op::dump(Formatter *f) const encode_json("bucket", bucket, f); } -void cls_user_remove_bucket_op::generate_test_instances(list& ls) +list cls_user_remove_bucket_op::generate_test_instances() { - ls.push_back(new cls_user_remove_bucket_op); - cls_user_remove_bucket_op *op = new cls_user_remove_bucket_op; - cls_user_gen_test_bucket(&op->bucket, 0); - ls.push_back(op); + list ls; + ls.push_back(cls_user_remove_bucket_op{}); + cls_user_remove_bucket_op op; + cls_user_gen_test_bucket(&op.bucket, 0); + ls.push_back(std::move(op)); + return ls; } void cls_user_list_buckets_op::dump(Formatter *f) const @@ -49,13 +53,15 @@ void cls_user_list_buckets_op::dump(Formatter *f) const encode_json("max_entries", max_entries, f); } -void cls_user_list_buckets_op::generate_test_instances(list& ls) +list cls_user_list_buckets_op::generate_test_instances() { - ls.push_back(new cls_user_list_buckets_op); - cls_user_list_buckets_op *op = new cls_user_list_buckets_op; - op->marker = "marker"; - op->max_entries = 1000; - ls.push_back(op); + list ls; + ls.push_back(cls_user_list_buckets_op{}); + cls_user_list_buckets_op op;; + op.marker = "marker"; + op.max_entries = 1000; + ls.push_back(std::move(op)); + return ls; } void cls_user_list_buckets_ret::dump(Formatter *f) const @@ -65,18 +71,20 @@ void cls_user_list_buckets_ret::dump(Formatter *f) const encode_json("truncated", truncated, f); } -void cls_user_list_buckets_ret::generate_test_instances(list& ls) +list cls_user_list_buckets_ret::generate_test_instances() { - ls.push_back(new cls_user_list_buckets_ret); - cls_user_list_buckets_ret *ret = new cls_user_list_buckets_ret; + list ls; + ls.push_back(cls_user_list_buckets_ret{}); + cls_user_list_buckets_ret ret;; for (int i = 0; i < 3; i++) { cls_user_bucket_entry e; cls_user_gen_test_bucket_entry(&e, i); - ret->entries.push_back(e); + ret.entries.push_back(e); } - ret->marker = "123"; - ret->truncated = true; - ls.push_back(ret); + ret.marker = "123"; + ret.truncated = true; + ls.push_back(std::move(ret)); + return ls; } void cls_user_get_header_op::dump(Formatter *f) const @@ -84,9 +92,11 @@ void cls_user_get_header_op::dump(Formatter *f) const // empty! } -void cls_user_get_header_op::generate_test_instances(list& ls) +list cls_user_get_header_op::generate_test_instances() { - ls.push_back(new cls_user_get_header_op); + list ls; + ls.push_back(cls_user_get_header_op{}); + return ls; } void cls_user_get_header_ret::dump(Formatter *f) const @@ -94,12 +104,14 @@ void cls_user_get_header_ret::dump(Formatter *f) const encode_json("header", header, f); } -void cls_user_get_header_ret::generate_test_instances(list& ls) +list cls_user_get_header_ret::generate_test_instances() { - ls.push_back(new cls_user_get_header_ret); - cls_user_get_header_ret *ret = new cls_user_get_header_ret; - cls_user_gen_test_header(&ret->header); - ls.push_back(ret); + list ls; + ls.push_back(cls_user_get_header_ret{}); + cls_user_get_header_ret ret; + cls_user_gen_test_header(&ret.header); + ls.push_back(std::move(ret)); + return ls; } void cls_user_complete_stats_sync_op::dump(Formatter *f) const @@ -107,12 +119,14 @@ void cls_user_complete_stats_sync_op::dump(Formatter *f) const encode_json("time", utime_t(time), f); } -void cls_user_complete_stats_sync_op::generate_test_instances(list& ls) +list cls_user_complete_stats_sync_op::generate_test_instances() { - ls.push_back(new cls_user_complete_stats_sync_op); - cls_user_complete_stats_sync_op *op = new cls_user_complete_stats_sync_op; - op->time = utime_t(12345, 0).to_real_time(); - ls.push_back(op); + list ls; + ls.push_back(cls_user_complete_stats_sync_op{}); + cls_user_complete_stats_sync_op op; + op.time = utime_t(12345, 0).to_real_time(); + ls.push_back(std::move(op)); + return ls; } @@ -123,12 +137,14 @@ void cls_user_account_resource_add_op::dump(Formatter *f) const encode_json("limit", limit, f); } -void cls_user_account_resource_add_op::generate_test_instances(std::list& ls) +std::list cls_user_account_resource_add_op::generate_test_instances() { - ls.push_back(new cls_user_account_resource_add_op); - cls_user_account_resource_add_op *op = new cls_user_account_resource_add_op; - cls_user_gen_test_resource(op->entry); - ls.push_back(op); + std::list ls; + ls.push_back(cls_user_account_resource_add_op{}); + cls_user_account_resource_add_op op; + cls_user_gen_test_resource(op.entry); + ls.push_back(std::move(op)); + return ls; } void cls_user_account_resource_get_op::dump(Formatter *f) const @@ -136,12 +152,14 @@ void cls_user_account_resource_get_op::dump(Formatter *f) const encode_json("name", name, f); } -void cls_user_account_resource_get_op::generate_test_instances(std::list& ls) +std::list cls_user_account_resource_get_op::generate_test_instances() { - ls.push_back(new cls_user_account_resource_get_op); - cls_user_account_resource_get_op *op = new cls_user_account_resource_get_op; - op->name = "name"; - ls.push_back(op); + std::list ls; + ls.push_back(cls_user_account_resource_get_op{}); + cls_user_account_resource_get_op op; + op.name = "name"; + ls.push_back(std::move(op)); + return ls; } void cls_user_account_resource_get_ret::dump(Formatter *f) const @@ -149,12 +167,14 @@ void cls_user_account_resource_get_ret::dump(Formatter *f) const encode_json("entry", entry, f); } -void cls_user_account_resource_get_ret::generate_test_instances(std::list& ls) +std::list cls_user_account_resource_get_ret::generate_test_instances() { - ls.push_back(new cls_user_account_resource_get_ret); - cls_user_account_resource_get_ret *ret = new cls_user_account_resource_get_ret; - cls_user_gen_test_resource(ret->entry); - ls.push_back(ret); + std::list ls; + ls.push_back(cls_user_account_resource_get_ret{}); + cls_user_account_resource_get_ret ret; + cls_user_gen_test_resource(ret.entry); + ls.push_back(std::move(ret)); + return ls; } void cls_user_account_resource_rm_op::dump(Formatter *f) const @@ -162,12 +182,14 @@ void cls_user_account_resource_rm_op::dump(Formatter *f) const encode_json("name", name, f); } -void cls_user_account_resource_rm_op::generate_test_instances(std::list& ls) +std::list cls_user_account_resource_rm_op::generate_test_instances() { - ls.push_back(new cls_user_account_resource_rm_op); - cls_user_account_resource_rm_op *op = new cls_user_account_resource_rm_op; - op->name = "name"; - ls.push_back(op); + std::list ls; + ls.push_back(cls_user_account_resource_rm_op{}); + cls_user_account_resource_rm_op op; + op.name = "name"; + ls.push_back(std::move(op)); + return ls; } void cls_user_account_resource_list_op::dump(Formatter *f) const @@ -177,14 +199,16 @@ void cls_user_account_resource_list_op::dump(Formatter *f) const encode_json("max_entries", max_entries, f); } -void cls_user_account_resource_list_op::generate_test_instances(std::list& ls) +std::list cls_user_account_resource_list_op::generate_test_instances() { - ls.push_back(new cls_user_account_resource_list_op); - cls_user_account_resource_list_op *op = new cls_user_account_resource_list_op; - op->marker = "marker"; - op->path_prefix = "path"; - op->max_entries = 20; - ls.push_back(op); + std::list ls; + ls.push_back(cls_user_account_resource_list_op{}); + cls_user_account_resource_list_op op; + op.marker = "marker"; + op.path_prefix = "path"; + op.max_entries = 20; + ls.push_back(std::move(op)); + return ls; } void cls_user_account_resource_list_ret::dump(Formatter *f) const @@ -194,11 +218,13 @@ void cls_user_account_resource_list_ret::dump(Formatter *f) const encode_json("marker", marker, f); } -void cls_user_account_resource_list_ret::generate_test_instances(std::list& ls) +std::list cls_user_account_resource_list_ret::generate_test_instances() { - ls.push_back(new cls_user_account_resource_list_ret); - cls_user_account_resource_list_ret *ret = new cls_user_account_resource_list_ret; - cls_user_gen_test_resource(ret->entries.emplace_back()); - ret->truncated = true; - ls.push_back(ret); + std::list ls; + ls.push_back(cls_user_account_resource_list_ret{}); + cls_user_account_resource_list_ret ret; + cls_user_gen_test_resource(ret.entries.emplace_back()); + ret.truncated = true; + ls.push_back(std::move(ret)); + return ls; } diff --git a/src/cls/user/cls_user_ops.h b/src/cls/user/cls_user_ops.h index d638896340b8..33276d1fc178 100644 --- a/src/cls/user/cls_user_ops.h +++ b/src/cls/user/cls_user_ops.h @@ -30,7 +30,7 @@ struct cls_user_set_buckets_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_set_buckets_op) @@ -52,7 +52,7 @@ struct cls_user_remove_bucket_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_remove_bucket_op) @@ -84,7 +84,7 @@ struct cls_user_list_buckets_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_list_buckets_op) @@ -112,7 +112,7 @@ struct cls_user_list_buckets_ret { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_list_buckets_ret) @@ -131,7 +131,7 @@ struct cls_user_get_header_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_get_header_op) @@ -152,7 +152,7 @@ struct cls_user_reset_stats_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_reset_stats_op); @@ -180,7 +180,7 @@ struct cls_user_reset_stats2_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_reset_stats2_op); @@ -214,8 +214,7 @@ struct cls_user_reset_stats2_ret { } void dump(ceph::Formatter *f) const; - static void generate_test_instances( - std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_reset_stats2_ret); @@ -237,7 +236,7 @@ struct cls_user_get_header_ret { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_get_header_ret) @@ -259,7 +258,7 @@ struct cls_user_complete_stats_sync_op { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_complete_stats_sync_op) @@ -285,7 +284,7 @@ struct cls_user_account_resource_add_op { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource_add_op) @@ -304,7 +303,7 @@ struct cls_user_account_resource_get_op { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource_get_op) @@ -323,7 +322,7 @@ struct cls_user_account_resource_get_ret { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource_get_ret) @@ -342,7 +341,7 @@ struct cls_user_account_resource_rm_op { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource_rm_op) @@ -367,7 +366,7 @@ struct cls_user_account_resource_list_op { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource_list_op) @@ -392,7 +391,7 @@ struct cls_user_account_resource_list_ret { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource_list_ret) diff --git a/src/cls/user/cls_user_types.cc b/src/cls/user/cls_user_types.cc index 23f2044e9636..d26a059163cc 100644 --- a/src/cls/user/cls_user_types.cc +++ b/src/cls/user/cls_user_types.cc @@ -30,12 +30,14 @@ void cls_user_bucket::dump(Formatter *f) const encode_json("bucket_id", bucket_id,f); } -void cls_user_bucket::generate_test_instances(list& ls) +list cls_user_bucket::generate_test_instances() { - ls.push_back(new cls_user_bucket); - cls_user_bucket *b = new cls_user_bucket; - cls_user_gen_test_bucket(b, 0); - ls.push_back(b); + list ls; + ls.push_back(cls_user_bucket{}); + cls_user_bucket b; + cls_user_gen_test_bucket(&b, 0); + ls.push_back(std::move(b)); + return ls; } void cls_user_bucket_entry::dump(Formatter *f) const @@ -58,12 +60,14 @@ void cls_user_gen_test_bucket_entry(cls_user_bucket_entry *entry, int i) entry->user_stats_sync = true; } -void cls_user_bucket_entry::generate_test_instances(list& ls) +list cls_user_bucket_entry::generate_test_instances() { - ls.push_back(new cls_user_bucket_entry); - cls_user_bucket_entry *entry = new cls_user_bucket_entry; - cls_user_gen_test_bucket_entry(entry, 0); - ls.push_back(entry); + list ls; + ls.push_back(cls_user_bucket_entry{}); + cls_user_bucket_entry entry; + cls_user_gen_test_bucket_entry(&entry, 0); + ls.push_back(std::move(entry)); + return ls; } void cls_user_gen_test_stats(cls_user_stats *s) @@ -80,12 +84,14 @@ void cls_user_stats::dump(Formatter *f) const f->dump_int("total_bytes_rounded", total_bytes_rounded); } -void cls_user_stats::generate_test_instances(list& ls) +list cls_user_stats::generate_test_instances() { - ls.push_back(new cls_user_stats); - cls_user_stats *s = new cls_user_stats; - cls_user_gen_test_stats(s); - ls.push_back(s); + list ls; + ls.push_back(cls_user_stats{}); + cls_user_stats s; + cls_user_gen_test_stats(&s); + ls.push_back(std::move(s)); + return ls; } void cls_user_gen_test_header(cls_user_header *h) @@ -102,12 +108,14 @@ void cls_user_header::dump(Formatter *f) const encode_json("last_stats_update", utime_t(last_stats_update), f); } -void cls_user_header::generate_test_instances(list& ls) +list cls_user_header::generate_test_instances() { - ls.push_back(new cls_user_header); - cls_user_header *h = new cls_user_header; - cls_user_gen_test_header(h); - ls.push_back(h); + list ls; + ls.push_back(cls_user_header{}); + cls_user_header h; + cls_user_gen_test_header(&h); + ls.push_back(std::move(h)); + return ls; } @@ -116,9 +124,11 @@ void cls_user_account_header::dump(ceph::Formatter* f) const encode_json("count", count, f); } -void cls_user_account_header::generate_test_instances(std::list& ls) +std::list cls_user_account_header::generate_test_instances() { - ls.push_back(new cls_user_account_header); + std::list ls; + ls.push_back(cls_user_account_header{}); + return ls; } void cls_user_account_resource::dump(ceph::Formatter* f) const @@ -134,10 +144,12 @@ void cls_user_gen_test_resource(cls_user_account_resource& r) r.path = "path"; } -void cls_user_account_resource::generate_test_instances(std::list& ls) +std::list cls_user_account_resource::generate_test_instances() { - ls.push_back(new cls_user_account_resource); - auto p = new cls_user_account_resource; - cls_user_gen_test_resource(*p); - ls.push_back(p); + std::list ls; + ls.push_back(cls_user_account_resource{}); + cls_user_account_resource p; + cls_user_gen_test_resource(p); + ls.push_back(std::move(p)); + return ls; } diff --git a/src/cls/user/cls_user_types.h b/src/cls/user/cls_user_types.h index 8193ff4139ac..50e61ac757ad 100644 --- a/src/cls/user/cls_user_types.h +++ b/src/cls/user/cls_user_types.h @@ -90,7 +90,7 @@ struct cls_user_bucket { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_bucket) @@ -154,7 +154,7 @@ struct cls_user_bucket_entry { DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_bucket_entry) @@ -184,7 +184,7 @@ struct cls_user_stats { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_stats) @@ -212,7 +212,7 @@ struct cls_user_header { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_header) @@ -231,7 +231,7 @@ struct cls_user_account_header { DECODE_FINISH(bl); } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_header) @@ -259,7 +259,7 @@ struct cls_user_account_resource { DECODE_FINISH(bl); } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(cls_user_account_resource) diff --git a/src/cls/version/cls_version_ops.h b/src/cls/version/cls_version_ops.h index 2eff788ce52c..74447753f136 100644 --- a/src/cls/version/cls_version_ops.h +++ b/src/cls/version/cls_version_ops.h @@ -28,11 +28,13 @@ struct cls_version_set_op { f->dump_object("objv", objv); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_version_set_op); - o.push_back(new cls_version_set_op); - o.back()->objv.ver = 123; - o.back()->objv.tag = "foo"; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_version_set_op{}); + o.push_back(cls_version_set_op{}); + o.back().objv.ver = 123; + o.back().objv.tag = "foo"; + return o; } }; WRITE_CLASS_ENCODER(cls_version_set_op) @@ -62,15 +64,17 @@ struct cls_version_inc_op { encode_json("conds", conds, f); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_version_inc_op); - o.push_back(new cls_version_inc_op); - o.back()->objv.ver = 123; - o.back()->objv.tag = "foo"; - o.back()->conds.push_back(obj_version_cond()); - o.back()->conds.back().ver.ver = 123; - o.back()->conds.back().ver.tag = "foo"; - o.back()->conds.back().cond = VER_COND_GE; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_version_inc_op{}); + o.push_back(cls_version_inc_op{}); + o.back().objv.ver = 123; + o.back().objv.tag = "foo"; + o.back().conds.push_back(obj_version_cond()); + o.back().conds.back().ver.ver = 123; + o.back().conds.back().ver.tag = "foo"; + o.back().conds.back().cond = VER_COND_GE; + return o; } }; WRITE_CLASS_ENCODER(cls_version_inc_op) @@ -100,15 +104,17 @@ struct cls_version_check_op { encode_json("conds", conds, f); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_version_check_op); - o.push_back(new cls_version_check_op); - o.back()->objv.ver = 123; - o.back()->objv.tag = "foo"; - o.back()->conds.push_back(obj_version_cond()); - o.back()->conds.back().ver.ver = 123; - o.back()->conds.back().ver.tag = "foo"; - o.back()->conds.back().cond = VER_COND_GE; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_version_check_op{}); + o.push_back(cls_version_check_op{}); + o.back().objv.ver = 123; + o.back().objv.tag = "foo"; + o.back().conds.push_back(obj_version_cond()); + o.back().conds.back().ver.ver = 123; + o.back().conds.back().ver.tag = "foo"; + o.back().conds.back().cond = VER_COND_GE; + return o; } }; WRITE_CLASS_ENCODER(cls_version_check_op) @@ -134,11 +140,13 @@ struct cls_version_read_ret { f->dump_object("objv", objv); } - static void generate_test_instances(std::list& o) { - o.push_back(new cls_version_read_ret); - o.push_back(new cls_version_read_ret); - o.back()->objv.ver = 123; - o.back()->objv.tag = "foo"; + static std::list generate_test_instances() { + std::list o; + o.push_back(cls_version_read_ret{}); + o.push_back(cls_version_read_ret{}); + o.back().objv.ver = 123; + o.back().objv.tag = "foo"; + return o; } }; WRITE_CLASS_ENCODER(cls_version_read_ret) diff --git a/src/cls/version/cls_version_types.h b/src/cls/version/cls_version_types.h index 10442cdb154b..faf083388623 100644 --- a/src/cls/version/cls_version_types.h +++ b/src/cls/version/cls_version_types.h @@ -67,7 +67,7 @@ struct obj_version { } void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(obj_version) @@ -112,12 +112,14 @@ struct obj_version_cond { f->dump_unsigned("cond", cond); } - static void generate_test_instances(std::list& o) { - o.push_back(new obj_version_cond); - o.push_back(new obj_version_cond); - o.back()->ver.ver = 1; - o.back()->ver.tag = "foo"; - o.back()->cond = VER_COND_EQ; + static std::list generate_test_instances() { + std::list o; + o.push_back(obj_version_cond{}); + o.push_back(obj_version_cond{}); + o.back().ver.ver = 1; + o.back().ver.tag = "foo"; + o.back().cond = VER_COND_EQ; + return o; } }; WRITE_CLASS_ENCODER(obj_version_cond) diff --git a/src/common/CompatSet.cc b/src/common/CompatSet.cc index 54f45be5cfa2..77145d8f2ebf 100644 --- a/src/common/CompatSet.cc +++ b/src/common/CompatSet.cc @@ -81,13 +81,15 @@ void CompatSet::dump(ceph::Formatter *f) const { f->close_section(); } -void CompatSet::generate_test_instances(std::list& o) { - o.push_back(new CompatSet); - o.push_back(new CompatSet); - o.back()->compat.insert(Feature(1, "one")); - o.back()->compat.insert(Feature(2, "two")); - o.back()->ro_compat.insert(Feature(4, "four")); - o.back()->incompat.insert(Feature(3, "three")); +std::list CompatSet::generate_test_instances() { + std::list o; + o.push_back(CompatSet{}); + o.push_back(CompatSet{}); + o.back().compat.insert(Feature(1, "one")); + o.back().compat.insert(Feature(2, "two")); + o.back().ro_compat.insert(Feature(4, "four")); + o.back().incompat.insert(Feature(3, "three")); + return o; } std::ostream& operator<<(std::ostream& out, const CompatSet::Feature& f) diff --git a/src/common/DecayCounter.cc b/src/common/DecayCounter.cc index 99f3de22dba2..5a84e9c6079c 100644 --- a/src/common/DecayCounter.cc +++ b/src/common/DecayCounter.cc @@ -55,13 +55,16 @@ void DecayCounter::dump(ceph::Formatter *f) const f->dump_float("halflife", rate.get_halflife()); } -void DecayCounter::generate_test_instances(std::list& ls) +std::list DecayCounter::generate_test_instances() { - DecayCounter *counter = new DecayCounter(); - counter->val = 3.0; - ls.push_back(counter); - counter = new DecayCounter(); - ls.push_back(counter); + std::listls; + + DecayCounter counter; + counter.val = 3.0; + ls.push_back(std::move(counter)); + counter = DecayCounter(); + ls.push_back(std::move(counter)); + return ls; } void DecayCounter::decay(double delta) const diff --git a/src/common/DecayCounter.h b/src/common/DecayCounter.h index 6584b519072d..d33dfe201184 100644 --- a/src/common/DecayCounter.h +++ b/src/common/DecayCounter.h @@ -63,7 +63,7 @@ public: void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); /** * reading diff --git a/src/common/LogEntry.cc b/src/common/LogEntry.cc index 7bb49432268b..4ebc64f70854 100644 --- a/src/common/LogEntry.cc +++ b/src/common/LogEntry.cc @@ -29,10 +29,12 @@ void LogEntryKey::dump(Formatter *f) const f->dump_unsigned("seq", seq); } -void LogEntryKey::generate_test_instances(list& o) +list LogEntryKey::generate_test_instances() { - o.push_back(new LogEntryKey); - o.push_back(new LogEntryKey(entity_name_t::CLIENT(1234), utime_t(1,2), 34)); + list o; + o.push_back(LogEntryKey{}); + o.push_back(LogEntryKey(entity_name_t::CLIENT(1234), utime_t(1,2), 34)); + return o; } clog_type LogEntry::str_to_level(std::string const &str) @@ -269,9 +271,11 @@ void LogEntry::dump(Formatter *f) const f->dump_string("message", msg); } -void LogEntry::generate_test_instances(list& o) +list LogEntry::generate_test_instances() { - o.push_back(new LogEntry); + list o; + o.push_back(LogEntry{}); + return o; } @@ -352,8 +356,10 @@ void LogSummary::dump(Formatter *f) const f->close_section(); } -void LogSummary::generate_test_instances(list& o) +list LogSummary::generate_test_instances() { - o.push_back(new LogSummary); + list o; + o.push_back(LogSummary{}); // more! + return o; } diff --git a/src/common/LogEntry.h b/src/common/LogEntry.h index 2b77f77e01fe..8383edbdad27 100644 --- a/src/common/LogEntry.h +++ b/src/common/LogEntry.h @@ -83,7 +83,7 @@ public: } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend bool operator==(const LogEntryKey& l, const LogEntryKey& r) { return l.rank == r.rank && l.stamp == r.stamp && l.seq == r.seq; @@ -132,7 +132,7 @@ struct LogEntry { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); static clog_type str_to_level(std::string const &str); static std::string_view level_to_str(clog_type t) { switch (t) { @@ -191,7 +191,7 @@ struct LogSummary { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(LogSummary) diff --git a/src/common/SloppyCRCMap.cc b/src/common/SloppyCRCMap.cc index f82a70701d21..6c60c63953dd 100644 --- a/src/common/SloppyCRCMap.cc +++ b/src/common/SloppyCRCMap.cc @@ -171,13 +171,15 @@ void SloppyCRCMap::dump(ceph::Formatter *f) const f->close_section(); } -void SloppyCRCMap::generate_test_instances(list& ls) +list SloppyCRCMap::generate_test_instances() { - ls.push_back(new SloppyCRCMap); - ls.push_back(new SloppyCRCMap(2)); + list ls; + ls.push_back(SloppyCRCMap{}); + ls.push_back(SloppyCRCMap(2)); bufferlist bl; bl.append("some data"); - ls.back()->write(1, bl.length(), bl); - ls.back()->write(10, bl.length(), bl); - ls.back()->zero(4, 2); + ls.back().write(1, bl.length(), bl); + ls.back().write(10, bl.length(), bl); + ls.back().zero(4, 2); + return ls; } diff --git a/src/common/SloppyCRCMap.h b/src/common/SloppyCRCMap.h index dcb26671f4a3..0ad8ec7140bf 100644 --- a/src/common/SloppyCRCMap.h +++ b/src/common/SloppyCRCMap.h @@ -71,7 +71,7 @@ public: void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(SloppyCRCMap) diff --git a/src/common/bit_vector.hpp b/src/common/bit_vector.hpp index c5fd491ed293..7f864a8beca1 100644 --- a/src/common/bit_vector.hpp +++ b/src/common/bit_vector.hpp @@ -219,7 +219,7 @@ public: bool operator==(const BitVector &b) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); private: bufferlist m_data; uint64_t m_size; @@ -616,18 +616,21 @@ typename BitVector<_b>::Reference& BitVector<_b>::Reference::operator=(uint8_t v } template -void BitVector<_b>::generate_test_instances(std::list &o) { - o.push_back(new BitVector()); +auto BitVector<_b>::generate_test_instances() -> std::list { + std::list o; - BitVector *b = new BitVector(); - const uint64_t radix = 1 << b->BIT_COUNT; + o.push_back(BitVector{}); + + BitVector b; + const uint64_t radix = 1 << b.BIT_COUNT; const uint64_t size = 1024; - b->resize(size, false); + b.resize(size, false); for (uint64_t i = 0; i < size; ++i) { - (*b)[i] = rand() % radix; + b[i] = rand() % radix; } - o.push_back(b); + o.push_back(std::move(b)); + return o; } diff --git a/src/common/bloom_filter.cc b/src/common/bloom_filter.cc index 4bacb5473ae3..8034fd1fc4f0 100644 --- a/src/common/bloom_filter.cc +++ b/src/common/bloom_filter.cc @@ -72,18 +72,20 @@ void bloom_filter::dump(Formatter *f) const f->close_section(); } -void bloom_filter::generate_test_instances(std::list& ls) +std::list bloom_filter::generate_test_instances() { - ls.push_back(new bloom_filter(10, .5, 1)); - ls.push_back(new bloom_filter(10, .5, 1)); - ls.back()->insert("foo"); - ls.back()->insert("bar"); - ls.push_back(new bloom_filter(50, .5, 1)); - ls.back()->insert("foo"); - ls.back()->insert("bar"); - ls.back()->insert("baz"); - ls.back()->insert("boof"); - ls.back()->insert("boogggg"); + std::list ls; + ls.push_back(bloom_filter(10, .5, 1)); + ls.push_back(bloom_filter(10, .5, 1)); + ls.back().insert("foo"); + ls.back().insert("bar"); + ls.push_back(bloom_filter(50, .5, 1)); + ls.back().insert("foo"); + ls.back().insert("bar"); + ls.back().insert("baz"); + ls.back().insert("boof"); + ls.back().insert("boogggg"); + return ls; } @@ -129,17 +131,19 @@ void compressible_bloom_filter::dump(Formatter *f) const f->close_section(); } -void compressible_bloom_filter::generate_test_instances(std::list& ls) +std::list compressible_bloom_filter::generate_test_instances() { - ls.push_back(new compressible_bloom_filter(10, .5, 1)); - ls.push_back(new compressible_bloom_filter(10, .5, 1)); - ls.back()->insert("foo"); - ls.back()->insert("bar"); - ls.push_back(new compressible_bloom_filter(50, .5, 1)); - ls.back()->insert("foo"); - ls.back()->insert("bar"); - ls.back()->insert("baz"); - ls.back()->insert("boof"); - ls.back()->compress(20); - ls.back()->insert("boogggg"); + std::list ls; + ls.push_back(compressible_bloom_filter(10, .5, 1)); + ls.push_back(compressible_bloom_filter(10, .5, 1)); + ls.back().insert("foo"); + ls.back().insert("bar"); + ls.push_back(compressible_bloom_filter(50, .5, 1)); + ls.back().insert("foo"); + ls.back().insert("bar"); + ls.back().insert("baz"); + ls.back().insert("boof"); + ls.back().compress(20); + ls.back().insert("boogggg"); + return ls; } diff --git a/src/common/bloom_filter.hpp b/src/common/bloom_filter.hpp index 639516fe40e5..8fe1e4ee5e93 100644 --- a/src/common/bloom_filter.hpp +++ b/src/common/bloom_filter.hpp @@ -468,7 +468,7 @@ public: void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(bloom_filter) @@ -565,7 +565,7 @@ public: void encode(ceph::bufferlist& bl) const; void decode(ceph::bufferlist::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(compressible_bloom_filter) diff --git a/src/common/ceph_json.h b/src/common/ceph_json.h index 951b8b47e825..22e729bcd433 100644 --- a/src/common/ceph_json.h +++ b/src/common/ceph_json.h @@ -856,32 +856,34 @@ public: break; } } - static void generate_test_instances(std::list& o) { - o.push_back(new JSONFormattable); - o.push_back(new JSONFormattable); - o.back()->set_type(FMT_VALUE); - o.back()->value.str = "foo"; - o.back()->value.quoted = true; - o.push_back(new JSONFormattable); - o.back()->set_type(FMT_VALUE); - o.back()->value.str = "foo"; - o.back()->value.quoted = false; - o.push_back(new JSONFormattable); - o.back()->set_type(FMT_ARRAY); - o.back()->arr.push_back(JSONFormattable()); - o.back()->arr.back().set_type(FMT_VALUE); - o.back()->arr.back().value.str = "foo"; - o.back()->arr.back().value.quoted = true; - o.back()->arr.push_back(JSONFormattable()); - o.back()->arr.back().set_type(FMT_VALUE); - o.back()->arr.back().value.str = "bar"; - o.back()->arr.back().value.quoted = true; - o.push_back(new JSONFormattable); - o.back()->set_type(FMT_OBJ); - o.back()->obj["foo"] = JSONFormattable(); - o.back()->obj["foo"].set_type(FMT_VALUE); - o.back()->obj["foo"].value.str = "bar"; - o.back()->obj["foo"].value.quoted = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(JSONFormattable{}); + o.push_back(JSONFormattable{}); + o.back().set_type(FMT_VALUE); + o.back().value.str = "foo"; + o.back().value.quoted = true; + o.push_back(JSONFormattable{}); + o.back().set_type(FMT_VALUE); + o.back().value.str = "foo"; + o.back().value.quoted = false; + o.push_back(JSONFormattable{}); + o.back().set_type(FMT_ARRAY); + o.back().arr.push_back(JSONFormattable()); + o.back().arr.back().set_type(FMT_VALUE); + o.back().arr.back().value.str = "foo"; + o.back().arr.back().value.quoted = true; + o.back().arr.push_back(JSONFormattable()); + o.back().arr.back().set_type(FMT_VALUE); + o.back().arr.back().value.str = "bar"; + o.back().arr.back().value.quoted = true; + o.push_back(JSONFormattable{}); + o.back().set_type(FMT_OBJ); + o.back().obj["foo"] = JSONFormattable(); + o.back().obj["foo"].set_type(FMT_VALUE); + o.back().obj["foo"].value.str = "bar"; + o.back().obj["foo"].value.quoted = true; + return o; } const std::string& val() const { diff --git a/src/common/entity_name.cc b/src/common/entity_name.cc index 502f28f9d622..6d07652167c0 100644 --- a/src/common/entity_name.cc +++ b/src/common/entity_name.cc @@ -50,14 +50,16 @@ void EntityName::dump(ceph::Formatter *f) const { f->dump_string("id", id); } -void EntityName::generate_test_instances(std::list& ls) { - ls.push_back(new EntityName); - ls.push_back(new EntityName); - ls.back()->set_type(CEPH_ENTITY_TYPE_OSD); - ls.back()->set_id("0"); - ls.push_back(new EntityName); - ls.back()->set_type(CEPH_ENTITY_TYPE_MDS); - ls.back()->set_id("a"); +std::list EntityName::generate_test_instances() { + std::list ls; + ls.push_back(EntityName{}); + ls.push_back(EntityName{}); + ls.back().set_type(CEPH_ENTITY_TYPE_OSD); + ls.back().set_id("0"); + ls.push_back(EntityName{}); + ls.back().set_type(CEPH_ENTITY_TYPE_MDS); + ls.back().set_id("a"); + return ls; } const std::string& EntityName::to_str() const { diff --git a/src/common/entity_name.h b/src/common/entity_name.h index 04aa666ad357..a336198c60f1 100644 --- a/src/common/entity_name.h +++ b/src/common/entity_name.h @@ -37,7 +37,7 @@ struct EntityName void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); const std::string& to_str() const; const char *to_cstr() const; bool from_str(std::string_view s); diff --git a/src/common/frag.cc b/src/common/frag.cc index 3d2f820fe475..071a8cd43b60 100644 --- a/src/common/frag.cc +++ b/src/common/frag.cc @@ -45,10 +45,12 @@ void frag_t::dump(ceph::Formatter *f) const { f->dump_unsigned("bits", bits()); } -void frag_t::generate_test_instances(std::list& ls) { - ls.push_back(new frag_t); - ls.push_back(new frag_t(10, 2)); - ls.push_back(new frag_t(11, 3)); +std::list frag_t::generate_test_instances() { + std::list ls; + ls.push_back(frag_t{}); + ls.push_back(frag_t(10, 2)); + ls.push_back(frag_t(11, 3)); + return ls; } std::ostream& operator<<(std::ostream& out, const frag_t& hb) @@ -185,9 +187,11 @@ void fragtree_t::dump(ceph::Formatter *f) const { f->close_section(); // splits } -void fragtree_t::generate_test_instances(std::list& ls) { - ls.push_back(new fragtree_t); - ls.push_back(new fragtree_t); +std::list fragtree_t::generate_test_instances() { + std::list ls; + ls.push_back(fragtree_t{}); + ls.push_back(fragtree_t{}); + return ls; } std::ostream& operator<<(std::ostream& out, const fragtree_t& ft) diff --git a/src/common/fs_types.cc b/src/common/fs_types.cc index 1639a9313d16..a0db94d27bf1 100644 --- a/src/common/fs_types.cc +++ b/src/common/fs_types.cc @@ -143,15 +143,17 @@ void file_layout_t::decode_json(JSONObj *obj){ JSONDecoder::decode_json("pool_ns", pool_ns, obj, true); } -void file_layout_t::generate_test_instances(std::list& o) +std::list file_layout_t::generate_test_instances() { - o.push_back(new file_layout_t); - o.push_back(new file_layout_t); - o.back()->stripe_unit = 4096; - o.back()->stripe_count = 16; - o.back()->object_size = 1048576; - o.back()->pool_id = 3; - o.back()->pool_ns = "myns"; + std::list o; + o.push_back(file_layout_t{}); + o.push_back(file_layout_t{}); + o.back().stripe_unit = 4096; + o.back().stripe_count = 16; + o.back().object_size = 1048576; + o.back().pool_id = 3; + o.back().pool_ns = "myns"; + return o; } std::ostream& operator<<(std::ostream& out, const file_layout_t &layout) diff --git a/src/common/histogram.cc b/src/common/histogram.cc index 62a7f44926bd..fbc04cecd653 100644 --- a/src/common/histogram.cc +++ b/src/common/histogram.cc @@ -39,14 +39,16 @@ void pow2_hist_t::decode(ceph::buffer::list::const_iterator& p) DECODE_FINISH(p); } -void pow2_hist_t::generate_test_instances(std::list& ls) +std::list pow2_hist_t::generate_test_instances() { - ls.push_back(new pow2_hist_t); - ls.push_back(new pow2_hist_t); - ls.back()->h.push_back(1); - ls.back()->h.push_back(3); - ls.back()->h.push_back(0); - ls.back()->h.push_back(2); + std::list ls; + ls.push_back(pow2_hist_t{}); + ls.push_back(pow2_hist_t{}); + ls.back().h.push_back(1); + ls.back().h.push_back(3); + ls.back().h.push_back(0); + ls.back().h.push_back(2); + return ls; } void pow2_hist_t::decay(int bits) diff --git a/src/common/histogram.h b/src/common/histogram.h index cdaca61c2776..8ca4ef4f619f 100644 --- a/src/common/histogram.h +++ b/src/common/histogram.h @@ -121,7 +121,7 @@ public: void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pow2_hist_t) diff --git a/src/common/hobject.cc b/src/common/hobject.cc index 648045f73f01..c6156ea768af 100644 --- a/src/common/hobject.cc +++ b/src/common/hobject.cc @@ -194,16 +194,18 @@ void hobject_t::dump(Formatter *f) const f->dump_string("namespace", nspace); } -void hobject_t::generate_test_instances(list& o) +list hobject_t::generate_test_instances() { - o.push_back(new hobject_t); - o.push_back(new hobject_t); - o.back()->max = true; - o.push_back(new hobject_t(object_t("oname"), string(), 1, 234, -1, "")); - o.push_back(new hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, + list o; + o.push_back(hobject_t{}); + o.push_back(hobject_t{}); + o.back().max = true; + o.push_back(hobject_t(object_t("oname"), string(), 1, 234, -1, "")); + o.push_back(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, 67, 0, "n1")); - o.push_back(new hobject_t(object_t("oname3"), string("oname3"), + o.push_back(hobject_t(object_t("oname3"), string("oname3"), CEPH_SNAPDIR, 910, 1, "n2")); + return o; } static void append_out_escaped(const string &in, string *out) @@ -495,29 +497,31 @@ void ghobject_t::dump(Formatter *f) const f->dump_int("max", (int)max); } -void ghobject_t::generate_test_instances(list& o) +list ghobject_t::generate_test_instances() { - o.push_back(new ghobject_t); - o.push_back(new ghobject_t); - o.back()->hobj.max = true; - o.push_back(new ghobject_t(hobject_t(object_t("oname"), string(), 1, 234, -1, ""))); + list o; + o.push_back(ghobject_t{}); + o.push_back(ghobject_t{}); + o.back().hobj.max = true; + o.push_back(ghobject_t(hobject_t(object_t("oname"), string(), 1, 234, -1, ""))); - o.push_back(new ghobject_t(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, + o.push_back(ghobject_t(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, 67, 0, "n1"), 1, shard_id_t(0))); - o.push_back(new ghobject_t(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, + o.push_back(ghobject_t(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, 67, 0, "n1"), 1, shard_id_t(1))); - o.push_back(new ghobject_t(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, + o.push_back(ghobject_t(hobject_t(object_t("oname2"), string("okey"), CEPH_NOSNAP, 67, 0, "n1"), 1, shard_id_t(2))); - o.push_back(new ghobject_t(hobject_t(object_t("oname3"), string("oname3"), + o.push_back(ghobject_t(hobject_t(object_t("oname3"), string("oname3"), CEPH_SNAPDIR, 910, 1, "n2"), 1, shard_id_t(0))); - o.push_back(new ghobject_t(hobject_t(object_t("oname3"), string("oname3"), + o.push_back(ghobject_t(hobject_t(object_t("oname3"), string("oname3"), CEPH_SNAPDIR, 910, 1, "n2"), 2, shard_id_t(0))); - o.push_back(new ghobject_t(hobject_t(object_t("oname3"), string("oname3"), + o.push_back(ghobject_t(hobject_t(object_t("oname3"), string("oname3"), CEPH_SNAPDIR, 910, 1, "n2"), 3, shard_id_t(0))); - o.push_back(new ghobject_t(hobject_t(object_t("oname3"), string("oname3"), + o.push_back(ghobject_t(hobject_t(object_t("oname3"), string("oname3"), CEPH_SNAPDIR, 910, 1, "n2"), 3, shard_id_t(1))); - o.push_back(new ghobject_t(hobject_t(object_t("oname3"), string("oname3"), + o.push_back(ghobject_t(hobject_t(object_t("oname3"), string("oname3"), CEPH_SNAPDIR, 910, 1, "n2"), 3, shard_id_t(2))); + return o; } ostream& operator<<(ostream& out, const ghobject_t& o) diff --git a/src/common/hobject.h b/src/common/hobject.h index 600c4b0deb9e..f0d203569513 100644 --- a/src/common/hobject.h +++ b/src/common/hobject.h @@ -344,7 +344,7 @@ public: void decode(ceph::bufferlist::const_iterator& bl); void decode(json_spirit::Value& v); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend int cmp(const hobject_t& l, const hobject_t& r); constexpr auto operator<=>(const hobject_t &rhs) const noexcept { auto cmp = max <=> rhs.max; @@ -594,7 +594,7 @@ struct ghobject_t { void decode(json_spirit::Value& v); size_t encoded_size() const; void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend int cmp(const ghobject_t& l, const ghobject_t& r); constexpr auto operator<=>(const ghobject_t&) const = default; bool operator==(const ghobject_t&) const = default; diff --git a/src/common/snap_types.cc b/src/common/snap_types.cc index 93c85f4c5c80..078a2c6716d1 100644 --- a/src/common/snap_types.cc +++ b/src/common/snap_types.cc @@ -42,16 +42,18 @@ void SnapRealmInfo::dump(ceph::Formatter *f) const f->close_section(); } -void SnapRealmInfo::generate_test_instances(std::list& o) +std::list SnapRealmInfo::generate_test_instances() { - o.push_back(new SnapRealmInfo); - o.push_back(new SnapRealmInfo(1, 10, 10, 0)); - o.push_back(new SnapRealmInfo(1, 10, 10, 0)); - o.back()->my_snaps.push_back(10); - o.push_back(new SnapRealmInfo(1, 10, 10, 5)); - o.back()->my_snaps.push_back(10); - o.back()->prior_parent_snaps.push_back(3); - o.back()->prior_parent_snaps.push_back(5); + std::list o; + o.push_back(SnapRealmInfo{}); + o.push_back(SnapRealmInfo(1, 10, 10, 0)); + o.push_back(SnapRealmInfo(1, 10, 10, 0)); + o.back().my_snaps.push_back(10); + o.push_back(SnapRealmInfo(1, 10, 10, 5)); + o.back().my_snaps.push_back(10); + o.back().prior_parent_snaps.push_back(3); + o.back().prior_parent_snaps.push_back(5); + return o; } // -- "new" SnapRealmInfo -- @@ -83,16 +85,18 @@ void SnapRealmInfoNew::dump(ceph::Formatter *f) const f->dump_unsigned("change_attr", change_attr); } -void SnapRealmInfoNew::generate_test_instances(std::list& o) +std::list SnapRealmInfoNew::generate_test_instances() { - o.push_back(new SnapRealmInfoNew); - o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0)); - o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1)); - o.back()->info.my_snaps.push_back(10); - o.push_back(new SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2)); - o.back()->info.my_snaps.push_back(10); - o.back()->info.prior_parent_snaps.push_back(3); - o.back()->info.prior_parent_snaps.push_back(5); + std::list o; + o.push_back(SnapRealmInfoNew{}); + o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 0)); + o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 0), utime_t(), 1)); + o.back().info.my_snaps.push_back(10); + o.push_back(SnapRealmInfoNew(SnapRealmInfo(1, 10, 10, 5), utime_t(), 2)); + o.back().info.my_snaps.push_back(10); + o.back().info.prior_parent_snaps.push_back(3); + o.back().info.prior_parent_snaps.push_back(5); + return o; } // ----- @@ -138,15 +142,17 @@ void SnapContext::dump(ceph::Formatter *f) const f->close_section(); } -void SnapContext::generate_test_instances(std::list& o) +std::list SnapContext::generate_test_instances() { - o.push_back(new SnapContext); + std::list o; + o.push_back(SnapContext{}); std::vector v; - o.push_back(new SnapContext(10, v)); + o.push_back(SnapContext(10, v)); v.push_back(18); v.push_back(3); v.push_back(1); - o.push_back(new SnapContext(20, v)); + o.push_back(SnapContext(20, v)); + return o; } std::ostream& operator<<(std::ostream& out, const SnapContext& snapc) { diff --git a/src/common/snap_types.h b/src/common/snap_types.h index 8e432ec94b0a..211958a92293 100644 --- a/src/common/snap_types.h +++ b/src/common/snap_types.h @@ -41,7 +41,7 @@ struct SnapRealmInfo { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(SnapRealmInfo) @@ -71,7 +71,7 @@ struct SnapRealmInfoNew { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(SnapRealmInfoNew) @@ -93,7 +93,7 @@ struct SnapContext { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(SnapContext) diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index 8dfbc45b966e..4e3517956722 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -3966,10 +3966,12 @@ void CrushWrapper::dump_tree( } } -void CrushWrapper::generate_test_instances(list& o) +list CrushWrapper::generate_test_instances() { - o.push_back(new CrushWrapper); + list o; + o.emplace_back(); // fixme + return o; } /** diff --git a/src/crush/CrushWrapper.h b/src/crush/CrushWrapper.h index 2d94fdcba536..3b57d05e9bea 100644 --- a/src/crush/CrushWrapper.h +++ b/src/crush/CrushWrapper.h @@ -1659,7 +1659,7 @@ public: } void dump_tree(ceph::Formatter *f, const CrushTreeDumper::name_map_t& ws) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); int get_osd_pool_default_crush_replicated_rule(CephContext *cct); diff --git a/src/include/CompatSet.h b/src/include/CompatSet.h index 9441b11d4c06..719bcfc0c27a 100644 --- a/src/include/CompatSet.h +++ b/src/include/CompatSet.h @@ -201,7 +201,7 @@ struct CompatSet { void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(CompatSet) diff --git a/src/include/cephfs/metrics/Types.h b/src/include/cephfs/metrics/Types.h index 5bc725c02cc8..55f67d8924b8 100644 --- a/src/include/cephfs/metrics/Types.h +++ b/src/include/cephfs/metrics/Types.h @@ -688,8 +688,10 @@ public: std::visit(DumpPayloadVisitor(f), payload); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new ClientMetricMessage(CapInfoPayload(1, 2, 3))); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(ClientMetricMessage(CapInfoPayload(1, 2, 3))); + return ls; } void print(std::ostream *out) const { diff --git a/src/include/cephfs/types.h b/src/include/cephfs/types.h index 1d8e045b0fb9..913129625d9e 100644 --- a/src/include/cephfs/types.h +++ b/src/include/cephfs/types.h @@ -117,7 +117,7 @@ struct frag_info_t : public scatter_info_t { void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); // this frag utime_t mtime; @@ -177,7 +177,7 @@ struct nest_info_t : public scatter_info_t { void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); // this frag + children utime_t rctime; @@ -212,9 +212,11 @@ struct vinodeno_t { decode(snapid, p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls) { - ls.push_back(new vinodeno_t); - ls.push_back(new vinodeno_t(1, 2)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(vinodeno_t{}); + ls.push_back(vinodeno_t(1, 2)); + return ls; } inodeno_t ino; snapid_t snapid; @@ -338,7 +340,7 @@ struct quota_info_t } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool is_valid() const { return max_bytes >=0 && max_files >=0; @@ -377,7 +379,7 @@ struct client_writeable_range_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); byte_range_t range; snapid_t follows = 0; // aka "data+metadata flushed thru" @@ -442,7 +444,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); version_t version = 1; private: @@ -825,7 +827,7 @@ struct inode_t { static void client_ranges_cb(client_range_map& c, JSONObj *obj); static void old_pools_cb(compact_set, Allocator >& c, JSONObj *obj); void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); /** * Compare this inode_t with another that represent *the same inode* * at different points in time. @@ -1129,12 +1131,14 @@ void inode_t::decode(ceph::buffer::list::const_iterator &p) } template class Allocator> -void inode_t::generate_test_instances(std::list& ls) +auto inode_t::generate_test_instances() -> std::list { - ls.push_back(new inode_t); - ls.push_back(new inode_t); - ls.back()->ino = 1; + std::list ls; + ls.push_back(inode_t{}); + ls.push_back(inode_t{}); + ls.back().ino = 1; // i am lazy. + return ls; } template class Allocator> diff --git a/src/include/filepath.cc b/src/include/filepath.cc index 25d52eb0cc34..243bf127d0bb 100644 --- a/src/include/filepath.cc +++ b/src/include/filepath.cc @@ -116,12 +116,14 @@ void filepath::dump(ceph::Formatter *f) const { f->dump_string("relative_path", path); } -void filepath::generate_test_instances(std::list& o) { - o.push_back(new filepath); - o.push_back(new filepath("/usr/bin", 0)); - o.push_back(new filepath("/usr/sbin", 1)); - o.push_back(new filepath("var/log", 1)); - o.push_back(new filepath("foo/bar", 101)); +std::list filepath::generate_test_instances() { + std::list o; + o.push_back(filepath{}); + o.push_back(filepath("/usr/bin", 0)); + o.push_back(filepath("/usr/sbin", 1)); + o.push_back(filepath("var/log", 1)); + o.push_back(filepath("foo/bar", 101)); + return o; } bool filepath::is_last_dot_or_dotdot() const { diff --git a/src/include/filepath.h b/src/include/filepath.h index b36f616dd8f7..67be4a08759a 100644 --- a/src/include/filepath.h +++ b/src/include/filepath.h @@ -151,7 +151,7 @@ class filepath { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& blp); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool is_last_dot_or_dotdot() const; diff --git a/src/include/frag.h b/src/include/frag.h index 0ee481a9869d..9e6a14909224 100644 --- a/src/include/frag.h +++ b/src/include/frag.h @@ -149,7 +149,7 @@ public: void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances() ; bool operator<(const frag_t& b) const { @@ -399,7 +399,7 @@ public: void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(fragtree_t) diff --git a/src/include/fs_types.h b/src/include/fs_types.h index 86d44d2eaef1..075490cc73c9 100644 --- a/src/include/fs_types.h +++ b/src/include/fs_types.h @@ -46,9 +46,11 @@ struct inodeno_t { decode(val, p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls) { - ls.push_back(new inodeno_t(1)); - ls.push_back(new inodeno_t(123456789)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(inodeno_t(1)); + ls.push_back(inodeno_t(123456789)); + return ls; } } __attribute__ ((__may_alias__)); WRITE_CLASS_ENCODER(inodeno_t) @@ -136,7 +138,7 @@ struct file_layout_t { void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(file_layout_t) diff --git a/src/include/object.cc b/src/include/object.cc index 2be187c3e62e..ec7e879c484a 100644 --- a/src/include/object.cc +++ b/src/include/object.cc @@ -31,9 +31,11 @@ void object_t::dump(ceph::Formatter *f) const { f->dump_string("name", name); } -void object_t::generate_test_instances(std::list& o) { - o.push_back(new object_t); - o.push_back(new object_t("myobject")); +std::list object_t::generate_test_instances() { + std::list o; + o.push_back(object_t{}); + o.push_back(object_t{"myobject"}); + return o; } std::ostream& operator<<(std::ostream& out, const object_t& o) { @@ -60,9 +62,11 @@ void sobject_t::dump(ceph::Formatter *f) const { f->dump_stream("snap") << snap; } -void sobject_t::generate_test_instances(std::list& o) { - o.push_back(new sobject_t); - o.push_back(new sobject_t(object_t("myobject"), 123)); +std::list sobject_t::generate_test_instances() { + std::list o; + o.push_back(sobject_t{}); + o.push_back(sobject_t{object_t("myobject"), 123}); + return o; } std::ostream& operator<<(std::ostream& out, const sobject_t &o) { diff --git a/src/include/object.h b/src/include/object.h index 81e8ab2d9d09..98b09ae217f6 100644 --- a/src/include/object.h +++ b/src/include/object.h @@ -58,7 +58,7 @@ struct object_t { void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(object_t) @@ -178,7 +178,7 @@ struct sobject_t { decode(snap, bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(sobject_t) diff --git a/src/include/types.cc b/src/include/types.cc index bbafa04259ad..79a305292c30 100644 --- a/src/include/types.cc +++ b/src/include/types.cc @@ -52,10 +52,12 @@ void client_t::dump(ceph::Formatter *f) const { f->dump_int("id", v); } -void client_t::generate_test_instances(std::list& ls) { - ls.push_back(new client_t); - ls.push_back(new client_t(1)); - ls.push_back(new client_t(123)); +std::list client_t::generate_test_instances() { + std::list ls; + ls.push_back(client_t{}); + ls.push_back(client_t(1)); + ls.push_back(client_t(123)); + return ls; } std::ostream& operator<<(std::ostream& out, const client_t& c) { @@ -114,16 +116,20 @@ void shard_id_t::dump(ceph::Formatter *f) const { f->dump_int("id", id); } -void shard_id_t::generate_test_instances(std::list& ls) { - ls.push_back(new shard_id_t(1)); - ls.push_back(new shard_id_t(2)); +std::list shard_id_t::generate_test_instances() { + std::list ls; + ls.push_back(shard_id_t(1)); + ls.push_back(shard_id_t(2)); + return ls; } void errorcode32_t::dump(ceph::Formatter *f) const { f->dump_int("code", code); } -void errorcode32_t::generate_test_instances(std::list& ls) { - ls.push_back(new errorcode32_t(1)); - ls.push_back(new errorcode32_t(2)); +std::list errorcode32_t::generate_test_instances() { + std::list ls; + ls.push_back(errorcode32_t(1)); + ls.push_back(errorcode32_t(2)); + return ls; } diff --git a/src/include/types.h b/src/include/types.h index f3404495ed53..7ab2195100a3 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -412,7 +412,7 @@ struct client_t { decode(v, bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(client_t) @@ -490,7 +490,7 @@ struct shard_id_t { decode(id, bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); shard_id_t& operator++() { ++id; return *this; } friend constexpr std::strong_ordering operator<=>(const shard_id_t &lhs, const shard_id_t &rhs) { @@ -563,7 +563,7 @@ struct errorcode32_t { set_wire_to_host(newcode); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(errorcode32_t) @@ -608,12 +608,14 @@ struct sha_digest_t { void dump(ceph::Formatter *f) const { f->dump_string("sha1", to_str()); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new sha_digest_t); - ls.push_back(new sha_digest_t); - ls.back()->v[0] = 1; - ls.push_back(new sha_digest_t); - ls.back()->v[0] = 2; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(sha_digest_t{}); + ls.push_back(sha_digest_t{}); + ls.back().v[0] = 1; + ls.push_back(sha_digest_t{}); + ls.back().v[0] = 2; + return ls; } }; diff --git a/src/include/util.h b/src/include/util.h index e94da83ec0ad..e250ac5a34a4 100644 --- a/src/include/util.h +++ b/src/include/util.h @@ -63,13 +63,15 @@ struct ceph_data_stats DECODE_FINISH(p); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new ceph_data_stats); - ls.push_back(new ceph_data_stats); - ls.back()->byte_total = 1024*1024; - ls.back()->byte_used = 512*1024; - ls.back()->byte_avail = 512*1024; - ls.back()->avail_percent = 50; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(ceph_data_stats{}); + ls.push_back(ceph_data_stats{}); + ls.back().byte_total = 1024*1024; + ls.back().byte_used = 512*1024; + ls.back().byte_avail = 512*1024; + ls.back().avail_percent = 50; + return ls; } }; typedef struct ceph_data_stats ceph_data_stats_t; diff --git a/src/include/utime.cc b/src/include/utime.cc index 507854870fbc..c79eee64a287 100644 --- a/src/include/utime.cc +++ b/src/include/utime.cc @@ -27,13 +27,15 @@ void utime_t::dump(ceph::Formatter *f) const f->dump_int("nanoseconds", tv.tv_nsec); } -void utime_t::generate_test_instances(std::list& o) +std::list utime_t::generate_test_instances() { - o.push_back(new utime_t()); - o.push_back(new utime_t()); - o.back()->tv.tv_sec = static_cast<__u32>((1L << 32) - 1); - o.push_back(new utime_t()); - o.back()->tv.tv_nsec = static_cast<__u32>((1L << 32) - 1); + std::list o; + o.push_back(utime_t()); + o.push_back(utime_t()); + o.back().tv.tv_sec = static_cast<__u32>((1L << 32) - 1); + o.push_back(utime_t()); + o.back().tv.tv_nsec = static_cast<__u32>((1L << 32) - 1); + return o; } std::ostream& utime_t::gmtime(std::ostream& out, bool legacy_form) const { diff --git a/src/include/utime.h b/src/include/utime.h index 56e8d0e69efd..99b791f8368a 100644 --- a/src/include/utime.h +++ b/src/include/utime.h @@ -183,7 +183,7 @@ public: } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode_timeval(struct ceph_timespec *t) const { t->tv_sec = tv.tv_sec; diff --git a/src/include/uuid.cc b/src/include/uuid.cc index 86fd49e277d8..cd86d5fdee6f 100644 --- a/src/include/uuid.cc +++ b/src/include/uuid.cc @@ -51,17 +51,19 @@ void uuid_d::dump(ceph::Formatter *f) const f->dump_stream("uuid") << to_string(); } -void uuid_d::generate_test_instances(std::list& o) +std::list uuid_d::generate_test_instances() { + std::list o; // these are sourced from examples at // https://www.boost.org/doc/libs/1_62_0/libs/uuid/uuid.html#Synopsis_generators boost::uuids::string_generator gen; - o.push_back(new uuid_d()); - o.back()->uuid = gen("{01234567-89ab-cdef-0123-456789abcdef}"); - o.push_back(new uuid_d()); - o.back()->uuid = gen(L"01234567-89ab-cdef-0123-456789abcdef"); - o.push_back(new uuid_d()); - o.back()->uuid = gen(std::string("0123456789abcdef0123456789abcdef")); - o.push_back(new uuid_d()); - o.back()->uuid = gen(std::wstring(L"01234567-89ab-cdef-0123-456789abcdef")); + o.push_back(uuid_d()); + o.back().uuid = gen("{01234567-89ab-cdef-0123-456789abcdef}"); + o.push_back(uuid_d()); + o.back().uuid = gen(L"01234567-89ab-cdef-0123-456789abcdef"); + o.push_back(uuid_d()); + o.back().uuid = gen(std::string("0123456789abcdef0123456789abcdef")); + o.push_back(uuid_d()); + o.back().uuid = gen(std::wstring(L"01234567-89ab-cdef-0123-456789abcdef")); + return o; } diff --git a/src/include/uuid.h b/src/include/uuid.h index 37da5a06241c..7e5735fb171a 100644 --- a/src/include/uuid.h +++ b/src/include/uuid.h @@ -64,7 +64,7 @@ struct uuid_d { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC_BOUNDED(uuid_d) diff --git a/src/journal/Entry.cc b/src/journal/Entry.cc index b2a575c57272..dee455128705 100644 --- a/src/journal/Entry.cc +++ b/src/journal/Entry.cc @@ -136,12 +136,16 @@ bool Entry::is_readable(bufferlist::const_iterator iter, uint32_t *bytes_needed) return true; } -void Entry::generate_test_instances(std::list &o) { - o.push_back(new Entry(1, 123, bufferlist())); +std::list Entry::generate_test_instances() { + std::list o; + + o.push_back(Entry(1, 123, bufferlist())); bufferlist bl; bl.append("data"); - o.push_back(new Entry(2, 123, bl)); + o.push_back(Entry(2, 123, bl)); + + return o; } bool Entry::operator==(const Entry& rhs) const { diff --git a/src/journal/Entry.h b/src/journal/Entry.h index 69f6a740bb3a..34068ca00d25 100644 --- a/src/journal/Entry.h +++ b/src/journal/Entry.h @@ -45,7 +45,7 @@ public: bool operator==(const Entry& rhs) const; static bool is_readable(bufferlist::const_iterator iter, uint32_t *bytes_needed); - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); private: static const uint64_t preamble = 0x3141592653589793; diff --git a/src/librbd/WatchNotifyTypes.cc b/src/librbd/WatchNotifyTypes.cc index 19e286ce0f86..ee629b17db33 100644 --- a/src/librbd/WatchNotifyTypes.cc +++ b/src/librbd/WatchNotifyTypes.cc @@ -424,34 +424,36 @@ NotifyOp NotifyMessage::get_notify_op() const { return payload->get_notify_op(); } -void NotifyMessage::generate_test_instances(std::list &o) { - o.push_back(new NotifyMessage(new AcquiredLockPayload(ClientId(1, 2)))); - o.push_back(new NotifyMessage(new ReleasedLockPayload(ClientId(1, 2)))); - o.push_back(new NotifyMessage(new RequestLockPayload(ClientId(1, 2), true))); - o.push_back(new NotifyMessage(new HeaderUpdatePayload())); - o.push_back(new NotifyMessage(new AsyncProgressPayload(AsyncRequestId(ClientId(0, 1), 2), 3, 4))); - o.push_back(new NotifyMessage(new AsyncCompletePayload(AsyncRequestId(ClientId(0, 1), 2), 3))); - o.push_back(new NotifyMessage(new FlattenPayload(AsyncRequestId(ClientId(0, 1), 2)))); - o.push_back(new NotifyMessage(new ResizePayload(AsyncRequestId(ClientId(0, 1), 2), 123, true))); - o.push_back(new NotifyMessage(new SnapCreatePayload(AsyncRequestId(ClientId(0, 1), 2), - cls::rbd::UserSnapshotNamespace(), - "foo", 1))); - o.push_back(new NotifyMessage(new SnapRemovePayload(AsyncRequestId(ClientId(0, 1), 2), - cls::rbd::UserSnapshotNamespace(), "foo"))); - o.push_back(new NotifyMessage(new SnapProtectPayload(AsyncRequestId(ClientId(0, 1), 2), - cls::rbd::UserSnapshotNamespace(), "foo"))); - o.push_back(new NotifyMessage(new SnapUnprotectPayload(AsyncRequestId(ClientId(0, 1), 2), - cls::rbd::UserSnapshotNamespace(), "foo"))); - o.push_back(new NotifyMessage(new RebuildObjectMapPayload(AsyncRequestId(ClientId(0, 1), 2)))); - o.push_back(new NotifyMessage(new RenamePayload(AsyncRequestId(ClientId(0, 1), 2), "foo"))); - o.push_back(new NotifyMessage(new UpdateFeaturesPayload(AsyncRequestId(ClientId(0, 1), 2), - 1, true))); - o.push_back(new NotifyMessage(new MigratePayload(AsyncRequestId(ClientId(0, 1), 2)))); - o.push_back(new NotifyMessage(new SparsifyPayload(AsyncRequestId(ClientId(0, 1), 2), 1))); - o.push_back(new NotifyMessage(new QuiescePayload(AsyncRequestId(ClientId(0, 1), 2)))); - o.push_back(new NotifyMessage(new UnquiescePayload(AsyncRequestId(ClientId(0, 1), 2)))); - o.push_back(new NotifyMessage(new MetadataUpdatePayload(AsyncRequestId(ClientId(0, 1), 2), - "foo", std::optional{"xyz"}))); +std::list NotifyMessage::generate_test_instances() { + std::list o; + o.push_back(NotifyMessage(new AcquiredLockPayload(ClientId(1, 2)))); + o.push_back(NotifyMessage(new ReleasedLockPayload(ClientId(1, 2)))); + o.push_back(NotifyMessage(new RequestLockPayload(ClientId(1, 2), true))); + o.push_back(NotifyMessage(new HeaderUpdatePayload())); + o.push_back(NotifyMessage(new AsyncProgressPayload(AsyncRequestId(ClientId(0, 1), 2), 3, 4))); + o.push_back(NotifyMessage(new AsyncCompletePayload(AsyncRequestId(ClientId(0, 1), 2), 3))); + o.push_back(NotifyMessage(new FlattenPayload(AsyncRequestId(ClientId(0, 1), 2)))); + o.push_back(NotifyMessage(new ResizePayload(AsyncRequestId(ClientId(0, 1), 2), 123, true))); + o.push_back(NotifyMessage(new SnapCreatePayload(AsyncRequestId(ClientId(0, 1), 2), + cls::rbd::UserSnapshotNamespace(), + "foo", 1))); + o.push_back(NotifyMessage(new SnapRemovePayload(AsyncRequestId(ClientId(0, 1), 2), + cls::rbd::UserSnapshotNamespace(), "foo"))); + o.push_back(NotifyMessage(new SnapProtectPayload(AsyncRequestId(ClientId(0, 1), 2), + cls::rbd::UserSnapshotNamespace(), "foo"))); + o.push_back(NotifyMessage(new SnapUnprotectPayload(AsyncRequestId(ClientId(0, 1), 2), + cls::rbd::UserSnapshotNamespace(), "foo"))); + o.push_back(NotifyMessage(new RebuildObjectMapPayload(AsyncRequestId(ClientId(0, 1), 2)))); + o.push_back(NotifyMessage(new RenamePayload(AsyncRequestId(ClientId(0, 1), 2), "foo"))); + o.push_back(NotifyMessage(new UpdateFeaturesPayload(AsyncRequestId(ClientId(0, 1), 2), + 1, true))); + o.push_back(NotifyMessage(new MigratePayload(AsyncRequestId(ClientId(0, 1), 2)))); + o.push_back(NotifyMessage(new SparsifyPayload(AsyncRequestId(ClientId(0, 1), 2), 1))); + o.push_back(NotifyMessage(new QuiescePayload(AsyncRequestId(ClientId(0, 1), 2)))); + o.push_back(NotifyMessage(new UnquiescePayload(AsyncRequestId(ClientId(0, 1), 2)))); + o.push_back(NotifyMessage(new MetadataUpdatePayload(AsyncRequestId(ClientId(0, 1), 2), + "foo", std::optional{"xyz"}))); + return o; } void ResponseMessage::encode(bufferlist& bl) const { @@ -470,8 +472,10 @@ void ResponseMessage::dump(Formatter *f) const { f->dump_int("result", result); } -void ResponseMessage::generate_test_instances(std::list &o) { - o.push_back(new ResponseMessage(1)); +std::list ResponseMessage::generate_test_instances() { + std::list o; + o.push_back(ResponseMessage(1)); + return o; } std::ostream &operator<<(std::ostream &out, diff --git a/src/librbd/WatchNotifyTypes.h b/src/librbd/WatchNotifyTypes.h index c2815b22cb92..eff1c3a6731e 100644 --- a/src/librbd/WatchNotifyTypes.h +++ b/src/librbd/WatchNotifyTypes.h @@ -499,7 +499,7 @@ struct NotifyMessage { void dump(Formatter *f) const; NotifyOp get_notify_op() const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; struct ResponseMessage { @@ -512,7 +512,7 @@ struct ResponseMessage { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; std::ostream &operator<<(std::ostream &out, diff --git a/src/librbd/cache/pwl/Types.cc b/src/librbd/cache/pwl/Types.cc index a44056397b9c..29a076dc4f4d 100644 --- a/src/librbd/cache/pwl/Types.cc +++ b/src/librbd/cache/pwl/Types.cc @@ -71,22 +71,24 @@ void WriteLogCacheEntry::dump(Formatter *f) const { f->dump_unsigned("entry_index", entry_index); } -void WriteLogCacheEntry::generate_test_instances(std::list& ls) { - ls.push_back(new WriteLogCacheEntry()); - ls.push_back(new WriteLogCacheEntry); - ls.back()->sync_gen_number = 1; - ls.back()->write_sequence_number = 1; - ls.back()->image_offset_bytes = 1; - ls.back()->write_bytes = 1; - ls.back()->write_data_pos = 1; - ls.back()->set_entry_valid(true); - ls.back()->set_sync_point(true); - ls.back()->set_sequenced(true); - ls.back()->set_has_data(true); - ls.back()->set_discard(true); - ls.back()->set_writesame(true); - ls.back()->ws_datalen = 1; - ls.back()->entry_index = 1; +std::list WriteLogCacheEntry::generate_test_instances() { + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().sync_gen_number = 1; + ls.back().write_sequence_number = 1; + ls.back().image_offset_bytes = 1; + ls.back().write_bytes = 1; + ls.back().write_data_pos = 1; + ls.back().set_entry_valid(true); + ls.back().set_sync_point(true); + ls.back().set_sequenced(true); + ls.back().set_has_data(true); + ls.back().set_discard(true); + ls.back().set_writesame(true); + ls.back().ws_datalen = 1; + ls.back().entry_index = 1; + return ls; } void WriteLogPoolRoot::dump(Formatter *f) const { @@ -100,17 +102,19 @@ void WriteLogPoolRoot::dump(Formatter *f) const { f->dump_unsigned("first_valid_entry", first_valid_entry); } -void WriteLogPoolRoot::generate_test_instances(std::list& ls) { - ls.push_back(new WriteLogPoolRoot()); - ls.push_back(new WriteLogPoolRoot); - ls.back()->layout_version = 2; - ls.back()->cur_sync_gen = 1; - ls.back()->pool_size = 1024; - ls.back()->flushed_sync_gen = 1; - ls.back()->block_size = 4096; - ls.back()->num_log_entries = 10000000; - ls.back()->first_free_entry = 1; - ls.back()->first_valid_entry = 0; +std::list WriteLogPoolRoot::generate_test_instances() { + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().layout_version = 2; + ls.back().cur_sync_gen = 1; + ls.back().pool_size = 1024; + ls.back().flushed_sync_gen = 1; + ls.back().block_size = 4096; + ls.back().num_log_entries = 10000000; + ls.back().first_free_entry = 1; + ls.back().first_valid_entry = 0; + return ls; } #endif diff --git a/src/librbd/cache/pwl/Types.h b/src/librbd/cache/pwl/Types.h index e8fbd03563d1..496e3014648e 100644 --- a/src/librbd/cache/pwl/Types.h +++ b/src/librbd/cache/pwl/Types.h @@ -325,7 +325,7 @@ struct WriteLogCacheEntry { } #endif void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; struct WriteLogPoolRoot { @@ -367,7 +367,7 @@ struct WriteLogPoolRoot { #endif void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; struct WriteBufferAllocation { diff --git a/src/librbd/cache/pwl/ssd/Types.h b/src/librbd/cache/pwl/ssd/Types.h index 52f67ae201ba..4484fa2c1856 100644 --- a/src/librbd/cache/pwl/ssd/Types.h +++ b/src/librbd/cache/pwl/ssd/Types.h @@ -27,17 +27,19 @@ struct SuperBlock{ f->dump_object("super", root); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new SuperBlock()); - ls.push_back(new SuperBlock); - ls.back()->root.layout_version = 3; - ls.back()->root.cur_sync_gen = 1; - ls.back()->root.pool_size = 10737418240; - ls.back()->root.flushed_sync_gen = 1; - ls.back()->root.block_size = 4096; - ls.back()->root.num_log_entries = 0; - ls.back()->root.first_free_entry = 30601; - ls.back()->root.first_valid_entry = 2; + static std::list generate_test_instances() { + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().root.layout_version = 3; + ls.back().root.cur_sync_gen = 1; + ls.back().root.pool_size = 10737418240; + ls.back().root.flushed_sync_gen = 1; + ls.back().root.block_size = 4096; + ls.back().root.num_log_entries = 0; + ls.back().root.first_free_entry = 30601; + ls.back().root.first_valid_entry = 2; + return ls; } }; diff --git a/src/librbd/journal/Types.cc b/src/librbd/journal/Types.cc index 87df11ad70e3..57b8e7349966 100644 --- a/src/librbd/journal/Types.cc +++ b/src/librbd/journal/Types.cc @@ -518,56 +518,60 @@ void EventEntry::decode_metadata(bufferlist::const_iterator& it) { DECODE_FINISH(it); } -void EventEntry::generate_test_instances(std::list &o) { - o.push_back(new EventEntry(AioDiscardEvent())); - o.push_back(new EventEntry(AioDiscardEvent(123, 345, 4096), utime_t(1, 1))); +std::list EventEntry::generate_test_instances() { + std::list o; + + o.push_back(EventEntry(AioDiscardEvent())); + o.push_back(EventEntry(AioDiscardEvent(123, 345, 4096), utime_t(1, 1))); bufferlist bl; bl.append(std::string(32, '1')); - o.push_back(new EventEntry(AioWriteEvent())); - o.push_back(new EventEntry(AioWriteEvent(123, 456, bl), utime_t(1, 1))); + o.push_back(EventEntry(AioWriteEvent())); + o.push_back(EventEntry(AioWriteEvent(123, 456, bl), utime_t(1, 1))); - o.push_back(new EventEntry(AioFlushEvent())); + o.push_back(EventEntry(AioFlushEvent())); - o.push_back(new EventEntry(OpFinishEvent(123, -1), utime_t(1, 1))); + o.push_back(EventEntry(OpFinishEvent(123, -1), utime_t(1, 1))); - o.push_back(new EventEntry(SnapCreateEvent(), utime_t(1, 1))); - o.push_back(new EventEntry(SnapCreateEvent(234, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); + o.push_back(EventEntry(SnapCreateEvent(), utime_t(1, 1))); + o.push_back(EventEntry(SnapCreateEvent(234, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); - o.push_back(new EventEntry(SnapRemoveEvent())); - o.push_back(new EventEntry(SnapRemoveEvent(345, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); + o.push_back(EventEntry(SnapRemoveEvent())); + o.push_back(EventEntry(SnapRemoveEvent(345, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); - o.push_back(new EventEntry(SnapRenameEvent())); - o.push_back(new EventEntry(SnapRenameEvent(456, 1, "src snap", "dest snap"), + o.push_back(EventEntry(SnapRenameEvent())); + o.push_back(EventEntry(SnapRenameEvent(456, 1, "src snap", "dest snap"), utime_t(1, 1))); - o.push_back(new EventEntry(SnapProtectEvent())); - o.push_back(new EventEntry(SnapProtectEvent(567, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); + o.push_back(EventEntry(SnapProtectEvent())); + o.push_back(EventEntry(SnapProtectEvent(567, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); + + o.push_back(EventEntry(SnapUnprotectEvent())); + o.push_back(EventEntry(SnapUnprotectEvent(678, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); - o.push_back(new EventEntry(SnapUnprotectEvent())); - o.push_back(new EventEntry(SnapUnprotectEvent(678, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); + o.push_back(EventEntry(SnapRollbackEvent())); + o.push_back(EventEntry(SnapRollbackEvent(789, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); - o.push_back(new EventEntry(SnapRollbackEvent())); - o.push_back(new EventEntry(SnapRollbackEvent(789, cls::rbd::UserSnapshotNamespace(), "snap"), utime_t(1, 1))); + o.push_back(EventEntry(RenameEvent())); + o.push_back(EventEntry(RenameEvent(890, "image name"), utime_t(1, 1))); - o.push_back(new EventEntry(RenameEvent())); - o.push_back(new EventEntry(RenameEvent(890, "image name"), utime_t(1, 1))); + o.push_back(EventEntry(ResizeEvent())); + o.push_back(EventEntry(ResizeEvent(901, 1234), utime_t(1, 1))); - o.push_back(new EventEntry(ResizeEvent())); - o.push_back(new EventEntry(ResizeEvent(901, 1234), utime_t(1, 1))); + o.push_back(EventEntry(FlattenEvent(123), utime_t(1, 1))); - o.push_back(new EventEntry(FlattenEvent(123), utime_t(1, 1))); + o.push_back(EventEntry(DemotePromoteEvent())); - o.push_back(new EventEntry(DemotePromoteEvent())); + o.push_back(EventEntry(UpdateFeaturesEvent())); + o.push_back(EventEntry(UpdateFeaturesEvent(123, 127, true), utime_t(1, 1))); - o.push_back(new EventEntry(UpdateFeaturesEvent())); - o.push_back(new EventEntry(UpdateFeaturesEvent(123, 127, true), utime_t(1, 1))); + o.push_back(EventEntry(MetadataSetEvent())); + o.push_back(EventEntry(MetadataSetEvent(123, "key", "value"), utime_t(1, 1))); - o.push_back(new EventEntry(MetadataSetEvent())); - o.push_back(new EventEntry(MetadataSetEvent(123, "key", "value"), utime_t(1, 1))); + o.push_back(EventEntry(MetadataRemoveEvent())); + o.push_back(EventEntry(MetadataRemoveEvent(123, "key"), utime_t(1, 1))); - o.push_back(new EventEntry(MetadataRemoveEvent())); - o.push_back(new EventEntry(MetadataRemoveEvent(123, "key"), utime_t(1, 1))); + return o; } // Journal Client @@ -728,14 +732,16 @@ void ClientData::dump(Formatter *f) const { std::visit(DumpVisitor(f, "client_meta_type"), client_meta); } -void ClientData::generate_test_instances(std::list &o) { - o.push_back(new ClientData(ImageClientMeta())); - o.push_back(new ClientData(ImageClientMeta(123))); - o.push_back(new ClientData(MirrorPeerClientMeta())); - o.push_back(new ClientData(MirrorPeerClientMeta("image_id", - {{{}, "snap 2", "snap 1", 123}}, - {{1, 2}, {3, 4}}))); - o.push_back(new ClientData(CliClientMeta())); +std::list ClientData::generate_test_instances() { + std::list o; + o.push_back(ClientData(ImageClientMeta())); + o.push_back(ClientData(ImageClientMeta(123))); + o.push_back(ClientData(MirrorPeerClientMeta())); + o.push_back(ClientData(MirrorPeerClientMeta("image_id", + {{{}, "snap 2", "snap 1", 123}}, + {{1, 2}, {3, 4}}))); + o.push_back(ClientData(CliClientMeta())); + return o; } // Journal Tag @@ -782,10 +788,12 @@ void TagData::dump(Formatter *f) const { f->close_section(); } -void TagData::generate_test_instances(std::list &o) { - o.push_back(new TagData()); - o.push_back(new TagData("mirror-uuid")); - o.push_back(new TagData("mirror-uuid", "remote-mirror-uuid", true, 123, 234)); +std::list TagData::generate_test_instances() { + std::list o; + o.push_back(TagData()); + o.push_back(TagData("mirror-uuid")); + o.push_back(TagData("mirror-uuid", "remote-mirror-uuid", true, 123, 234)); + return o; } std::ostream &operator<<(std::ostream &out, const EventType &type) { diff --git a/src/librbd/journal/Types.h b/src/librbd/journal/Types.h index aacf98b492a0..6efaeb77e1d5 100644 --- a/src/librbd/journal/Types.h +++ b/src/librbd/journal/Types.h @@ -452,7 +452,7 @@ struct EventEntry { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); private: static const uint32_t EVENT_FIXED_SIZE = 14; /// version encoding, type @@ -593,7 +593,7 @@ struct ClientData { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; // Journal Tag data structures @@ -648,7 +648,7 @@ struct TagData { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; std::ostream &operator<<(std::ostream &out, const EventType &type); diff --git a/src/librbd/mirroring_watcher/Types.cc b/src/librbd/mirroring_watcher/Types.cc index 916c62b2c835..efbc21b7539b 100644 --- a/src/librbd/mirroring_watcher/Types.cc +++ b/src/librbd/mirroring_watcher/Types.cc @@ -111,10 +111,12 @@ void NotifyMessage::dump(Formatter *f) const { std::visit(DumpPayloadVisitor(f), payload); } -void NotifyMessage::generate_test_instances(std::list &o) { - o.push_back(new NotifyMessage(ModeUpdatedPayload(cls::rbd::MIRROR_MODE_DISABLED))); - o.push_back(new NotifyMessage(ImageUpdatedPayload(cls::rbd::MIRROR_IMAGE_STATE_DISABLING, - "image id", "global image id"))); +std::list NotifyMessage::generate_test_instances() { + std::list o; + o.push_back(NotifyMessage(ModeUpdatedPayload(cls::rbd::MIRROR_MODE_DISABLED))); + o.push_back(NotifyMessage(ImageUpdatedPayload(cls::rbd::MIRROR_IMAGE_STATE_DISABLING, + "image id", "global image id"))); + return o; } std::ostream &operator<<(std::ostream &out, const NotifyOp &op) { diff --git a/src/librbd/mirroring_watcher/Types.h b/src/librbd/mirroring_watcher/Types.h index 784151a6808d..0af6bc31c2dd 100644 --- a/src/librbd/mirroring_watcher/Types.h +++ b/src/librbd/mirroring_watcher/Types.h @@ -86,7 +86,7 @@ struct NotifyMessage { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(NotifyMessage); diff --git a/src/librbd/trash_watcher/Types.cc b/src/librbd/trash_watcher/Types.cc index 409d518972ea..c28d1536da19 100644 --- a/src/librbd/trash_watcher/Types.cc +++ b/src/librbd/trash_watcher/Types.cc @@ -105,10 +105,12 @@ void NotifyMessage::dump(Formatter *f) const { std::visit(DumpPayloadVisitor(f), payload); } -void NotifyMessage::generate_test_instances(std::list &o) { - o.push_back(new NotifyMessage{ImageAddedPayload{ +std::list NotifyMessage::generate_test_instances() { + std::list o; + o.push_back(NotifyMessage{ImageAddedPayload{ "id", {cls::rbd::TRASH_IMAGE_SOURCE_USER, "name", {}, {}}}}); - o.push_back(new NotifyMessage{ImageRemovedPayload{"id"}}); + o.push_back(NotifyMessage{ImageRemovedPayload{"id"}}); + return o; } std::ostream &operator<<(std::ostream &out, const NotifyOp &op) { diff --git a/src/librbd/trash_watcher/Types.h b/src/librbd/trash_watcher/Types.h index ea5dad9b3be5..a55bc9d1c62d 100644 --- a/src/librbd/trash_watcher/Types.h +++ b/src/librbd/trash_watcher/Types.h @@ -81,7 +81,7 @@ struct NotifyMessage { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(NotifyMessage); diff --git a/src/mds/Anchor.cc b/src/mds/Anchor.cc index c9033f7331ab..b0deda5623bb 100644 --- a/src/mds/Anchor.cc +++ b/src/mds/Anchor.cc @@ -50,14 +50,16 @@ void Anchor::dump(Formatter *f) const f->dump_unsigned("d_type", d_type); } -void Anchor::generate_test_instances(std::list& ls) +std::list Anchor::generate_test_instances() { - ls.push_back(new Anchor); - ls.push_back(new Anchor); - ls.back()->ino = 1; - ls.back()->dirino = 2; - ls.back()->d_name = "hello"; - ls.back()->d_type = DT_DIR; + std::list ls; + ls.push_back(Anchor{}); + ls.push_back(Anchor{}); + ls.back().ino = 1; + ls.back().dirino = 2; + ls.back().d_name = "hello"; + ls.back().d_type = DT_DIR; + return ls; } std::ostream& operator<<(std::ostream& out, const Anchor &a) diff --git a/src/mds/Anchor.h b/src/mds/Anchor.h index f2e9469d30d2..f18c1aa4478e 100644 --- a/src/mds/Anchor.h +++ b/src/mds/Anchor.h @@ -35,7 +35,7 @@ public: void encode(bufferlist &bl) const; void decode(bufferlist::const_iterator &bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool operator==(const Anchor &r) const { return ino == r.ino && dirino == r.dirino && d_name == r.d_name && d_type == r.d_type && diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index b2a0510e6719..244f348b2534 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -4795,22 +4795,26 @@ void InodeStoreBase::old_indoes_cb(InodeStoreBase::mempool_old_inode_map& c, JSO c[s] = i; } -void InodeStore::generate_test_instances(std::list &ls) -{ - InodeStore *populated = new InodeStore; - populated->get_inode()->ino = 0xdeadbeef; - populated->get_inode()->mode = S_IFLNK | 0777; - populated->symlink = "rhubarb"; - ls.push_back(populated); -} - -void InodeStoreBare::generate_test_instances(std::list &ls) -{ - InodeStoreBare *populated = new InodeStoreBare; - populated->get_inode()->ino = 0xdeadbeef; - populated->get_inode()->mode = S_IFLNK | 0777; - populated->symlink = "rhubarb"; - ls.push_back(populated); +std::list InodeStore::generate_test_instances() +{ + std::list ls; + InodeStore populated; + populated.get_inode()->ino = 0xdeadbeef; + populated.get_inode()->mode = S_IFLNK | 0777; + populated.symlink = "rhubarb"; + ls.push_back(std::move(populated)); + return ls; +} + +std::list InodeStoreBare::generate_test_instances() +{ + std::list ls; + InodeStoreBare populated; + populated.get_inode()->ino = 0xdeadbeef; + populated.get_inode()->mode = S_IFLNK | 0777; + populated.symlink = "rhubarb"; + ls.push_back(std::move(populated)); + return ls; } void CInode::validate_disk_state(CInode::validated_data *results, diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 09332832e249..a8eedecbe13f 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -221,7 +221,7 @@ public: InodeStoreBase::decode_bare(bl, snap_blob); } - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); using InodeStoreBase::inode; using InodeStoreBase::xattrs; @@ -242,7 +242,7 @@ public: void decode(ceph::buffer::list::const_iterator &bl) { InodeStore::decode_bare(bl); } - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(InodeStoreBare) diff --git a/src/mds/Capability.cc b/src/mds/Capability.cc index f7496410a6c8..8e435f96ab92 100644 --- a/src/mds/Capability.cc +++ b/src/mds/Capability.cc @@ -73,10 +73,12 @@ void Capability::Export::dump(ceph::Formatter *f) const f->dump_stream("last_issue_stamp") << last_issue_stamp; } -void Capability::Export::generate_test_instances(std::list& ls) +std::list Capability::Export::generate_test_instances() { - ls.push_back(new Export()); - ls.push_back(new Export(1, 2, 3, 4, 5, 6, 7, utime_t(8, 9), 10)); + std::list ls; + ls.push_back(Export()); + ls.push_back(Export(1, 2, 3, 4, 5, 6, 7, utime_t(8, 9), 10)); + return ls; } void Capability::Import::encode(ceph::buffer::list &bl) const @@ -104,10 +106,12 @@ void Capability::Import::dump(ceph::Formatter *f) const f->dump_unsigned("migrate_seq", mseq); } -void Capability::Import::generate_test_instances(std::list& ls) +std::list Capability::Import::generate_test_instances() { - ls.push_back(new Import()); - ls.push_back(new Import(1, 2, 3)); + std::list ls; + ls.push_back(Import()); + ls.push_back(Import(1, 2, 3)); + return ls; } /* * Capability::revoke_info @@ -138,13 +142,15 @@ void Capability::revoke_info::dump(ceph::Formatter *f) const f->dump_unsigned("last_issue", last_issue); } -void Capability::revoke_info::generate_test_instances(std::list& ls) +std::list Capability::revoke_info::generate_test_instances() { - ls.push_back(new revoke_info); - ls.push_back(new revoke_info); - ls.back()->before = 1; - ls.back()->seq = 2; - ls.back()->last_issue = 3; + std::list ls; + ls.push_back(revoke_info{}); + ls.push_back(revoke_info{}); + ls.back().before = 1; + ls.back().seq = 2; + ls.back().last_issue = 3; + return ls; } @@ -315,26 +321,28 @@ void Capability::dump(ceph::Formatter *f) const f->close_section(); } -void Capability::generate_test_instances(std::list& ls) +std::list Capability::generate_test_instances() { - ls.push_back(new Capability); - ls.push_back(new Capability); - ls.back()->last_sent = 11; - ls.back()->last_issue_stamp = utime_t(12, 13); - ls.back()->set_wanted(14); - ls.back()->_pending = 15; + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().last_sent = 11; + ls.back().last_issue_stamp = utime_t(12, 13); + ls.back().set_wanted(14); + ls.back()._pending = 15; { - auto &r = ls.back()->_revokes.emplace_back(); + auto &r = ls.back()._revokes.emplace_back(); r.before = 16; r.seq = 17; r.last_issue = 18; } { - auto &r = ls.back()->_revokes.emplace_back(); + auto &r = ls.back()._revokes.emplace_back(); r.before = 19; r.seq = 20; r.last_issue = 21; } + return ls; } MEMPOOL_DEFINE_OBJECT_FACTORY(Capability, co_cap, mds_co); diff --git a/src/mds/Capability.h b/src/mds/Capability.h index e29942fb5384..089438607b2f 100644 --- a/src/mds/Capability.h +++ b/src/mds/Capability.h @@ -80,7 +80,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); int64_t cap_id = 0; int32_t wanted = 0; @@ -98,7 +98,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); int64_t cap_id = 0; ceph_seq_t issue_seq = 0; @@ -110,7 +110,7 @@ public: void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); __u32 before = 0; ceph_seq_t seq = 0; @@ -324,7 +324,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); snapid_t client_follows = 0; version_t client_xattr_version = 0; diff --git a/src/mds/FSMap.cc b/src/mds/FSMap.cc index a133545c3ac1..e66fef8bd8cb 100644 --- a/src/mds/FSMap.cc +++ b/src/mds/FSMap.cc @@ -116,12 +116,14 @@ void MirrorInfo::dump(ceph::Formatter *f) const { f->close_section(); // peers } -void MirrorInfo::generate_test_instances(std::list& ls) { - ls.push_back(new MirrorInfo()); - ls.push_back(new MirrorInfo()); - ls.back()->mirrored = true; - ls.back()->peers.insert(Peer()); - ls.back()->peers.insert(Peer()); +std::list MirrorInfo::generate_test_instances() { + std::list ls; + ls.push_back(MirrorInfo()); + ls.push_back(MirrorInfo()); + ls.back().mirrored = true; + ls.back().peers.insert(Peer()); + ls.back().peers.insert(Peer()); + return ls; } void MirrorInfo::print(std::ostream& out) const { @@ -195,23 +197,23 @@ FSMap &FSMap::operator=(const FSMap &rhs) return *this; } -void FSMap::generate_test_instances(std::list& ls) +std::list FSMap::generate_test_instances() { - FSMap* fsmap = new FSMap(); + std::list ls; - std::list mds_map_instances; - MDSMap::generate_test_instances(mds_map_instances); + FSMap fsmap; int k = 20; - for (auto& mdsmap : mds_map_instances) { + for (auto& mdsmap : MDSMap::generate_test_instances()) { auto fs = Filesystem(); fs.fscid = k++; - fs.mds_map = *mdsmap; - fsmap->filesystems[fs.fscid] = fs; - delete mdsmap; + fs.mds_map = mdsmap; + fsmap.filesystems[fs.fscid] = fs; } - ls.push_back(fsmap); + ls.push_back(std::move(fsmap)); + + return ls; } void FSMap::print(ostream& out) const diff --git a/src/mds/FSMap.h b/src/mds/FSMap.h index 49f1b48d6962..f6351982ab28 100644 --- a/src/mds/FSMap.h +++ b/src/mds/FSMap.h @@ -169,7 +169,7 @@ struct MirrorInfo { Peers peers; void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const; void encode(ceph::buffer::list &bl) const; @@ -676,7 +676,7 @@ public: void print_fs_summary(std::ostream& out) const; void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); protected: iterator begin() { diff --git a/src/mds/FSMapUser.cc b/src/mds/FSMapUser.cc index 1b58fdbb2f8f..c23e2b65ee83 100644 --- a/src/mds/FSMapUser.cc +++ b/src/mds/FSMapUser.cc @@ -41,16 +41,18 @@ void FSMapUser::fs_info_t::decode(ceph::buffer::list::const_iterator& p) DECODE_FINISH(p); } -void FSMapUser::generate_test_instances(std::list& ls) +std::list FSMapUser::generate_test_instances() { - FSMapUser *m = new FSMapUser(); - m->epoch = 2; - m->legacy_client_fscid = 1; - m->filesystems[1].cid = 1; - m->filesystems[2].name = "cephfs2"; - m->filesystems[2].cid = 2; - m->filesystems[1].name = "cephfs1"; - ls.push_back(m); + std::list ls; + FSMapUser m; + m.epoch = 2; + m.legacy_client_fscid = 1; + m.filesystems[1].cid = 1; + m.filesystems[2].name = "cephfs2"; + m.filesystems[2].cid = 2; + m.filesystems[1].name = "cephfs1"; + ls.push_back(std::move(m)); + return ls; } diff --git a/src/mds/FSMapUser.h b/src/mds/FSMapUser.h index 96ac26d6da94..d435a311a0cb 100644 --- a/src/mds/FSMapUser.h +++ b/src/mds/FSMapUser.h @@ -48,7 +48,7 @@ public: void print(std::ostream& out) const; void print_summary(ceph::Formatter *f, std::ostream *out) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::map filesystems; fs_cluster_id_t legacy_client_fscid = FS_CLUSTER_ID_NONE; diff --git a/src/mds/InoTable.cc b/src/mds/InoTable.cc index e3182899c9c0..009f2118e08f 100644 --- a/src/mds/InoTable.cc +++ b/src/mds/InoTable.cc @@ -186,9 +186,11 @@ void InoTable::dump(Formatter *f) const } -void InoTable::generate_test_instances(std::list& ls) +std::list InoTable::generate_test_instances() { - ls.push_back(new InoTable()); + std::list ls; + ls.push_back(InoTable()); + return ls; } diff --git a/src/mds/InoTable.h b/src/mds/InoTable.h index d5e0f4d94567..42f9d5f0bedc 100644 --- a/src/mds/InoTable.h +++ b/src/mds/InoTable.h @@ -66,7 +66,7 @@ class InoTable : public MDSTable { decode_state(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void skip_inos(inodeno_t i); diff --git a/src/mds/JournalPointer.h b/src/mds/JournalPointer.h index ad706587f966..d5f3ba87fca6 100644 --- a/src/mds/JournalPointer.h +++ b/src/mds/JournalPointer.h @@ -60,12 +60,14 @@ class JournalPointer { f->close_section(); // journal_header } - static void generate_test_instances(std::list &ls) + static std::list generate_test_instances() { - ls.push_back(new JournalPointer()); - ls.push_back(new JournalPointer()); - ls.back()->front = 0xdeadbeef; - ls.back()->back = 0xfeedbead; + std::list ls; + ls.push_back(JournalPointer()); + ls.push_back(JournalPointer()); + ls.back().front = 0xdeadbeef; + ls.back().back = 0xfeedbead; + return ls; } // The currently active journal diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index 59f9c5a4da03..5e0af74797c5 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -177,15 +177,17 @@ void MDSMap::mds_info_t::dump(std::ostream& o) const o << "]"; } -void MDSMap::mds_info_t::generate_test_instances(std::list& ls) +auto MDSMap::mds_info_t::generate_test_instances() -> std::list { - mds_info_t *sample = new mds_info_t(); - ls.push_back(sample); - sample = new mds_info_t(); - sample->global_id = 1; - sample->name = "test_instance"; - sample->rank = 0; - ls.push_back(sample); + std::list ls; + mds_info_t sample; + ls.push_back(std::move(sample)); + sample = mds_info_t(); + sample.global_id = 1; + sample.name = "test_instance"; + sample.rank = 0; + ls.push_back(std::move(sample)); + return ls; } void MDSMap::dump(Formatter *f) const @@ -276,20 +278,23 @@ void MDSMap::dump_flags_state(Formatter *f) const f->close_section(); } -void MDSMap::generate_test_instances(std::list& ls) +std::list MDSMap::generate_test_instances() { - MDSMap *m = new MDSMap(); - m->max_mds = 1; - m->data_pools.push_back(0); - m->metadata_pool = 1; - m->cas_pool = 2; - m->compat = get_compat_set_all(); + std::list ls; + MDSMap m; + m.max_mds = 1; + m.data_pools.push_back(0); + m.metadata_pool = 1; + m.cas_pool = 2; + m.compat = get_compat_set_all(); // these aren't the defaults, just in case anybody gets confused - m->session_timeout = 61; - m->session_autoclose = 301; - m->max_file_size = 1<<24; - ls.push_back(m); + m.session_timeout = 61; + m.session_autoclose = 301; + m.max_file_size = 1<<24; + ls.push_back(std::move(m)); + + return ls; } void MDSMap::print(ostream& out) const diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index 21e76c61fe6d..f53169971910 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -150,7 +150,7 @@ public: // The long form name for use in cluster log messages` std::string human_name() const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); mds_gid_t global_id = MDS_GID_NONE; std::string name; @@ -584,7 +584,7 @@ public: void dump(ceph::Formatter *f) const; void dump_flags_state(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); static bool state_transition_valid(DaemonState prev, DaemonState next); diff --git a/src/mds/PurgeQueue.cc b/src/mds/PurgeQueue.cc index 386853b220c7..10abbc6c2419 100644 --- a/src/mds/PurgeQueue.cc +++ b/src/mds/PurgeQueue.cc @@ -119,16 +119,18 @@ void PurgeItem::dump(Formatter *f) const f->close_section(); } -void PurgeItem::generate_test_instances(std::list& ls) { - ls.push_back(new PurgeItem()); - ls.push_back(new PurgeItem()); - ls.back()->action = PurgeItem::PURGE_FILE; - ls.back()->ino = 1; - ls.back()->size = 2; - ls.back()->layout = file_layout_t(); - ls.back()->old_pools = {1, 2}; - ls.back()->snapc = SnapContext(); - ls.back()->stamp = utime_t(3, 4); +std::list PurgeItem::generate_test_instances() { + std::list ls; + ls.push_back(PurgeItem()); + ls.push_back(PurgeItem()); + ls.back().action = PurgeItem::PURGE_FILE; + ls.back().ino = 1; + ls.back().size = 2; + ls.back().layout = file_layout_t(); + ls.back().old_pools = {1, 2}; + ls.back().snapc = SnapContext(); + ls.back().stamp = utime_t(3, 4); + return ls; } // if Objecter has any slow requests, take that as a hint and diff --git a/src/mds/PurgeQueue.h b/src/mds/PurgeQueue.h index 8796ea5d0948..1ae6bff5134c 100644 --- a/src/mds/PurgeQueue.h +++ b/src/mds/PurgeQueue.h @@ -58,7 +58,7 @@ public: } void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::string_view get_type_str() const; diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index 3884f4ba96f7..794c71f6d5d0 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -700,10 +700,12 @@ Session* SessionMapStore::get_or_add_session(const entity_inst_t& i) { return s; } -void SessionMapStore::generate_test_instances(std::list& ls) +std::list SessionMapStore::generate_test_instances() { + std::list ls; // pretty boring for now - ls.push_back(new SessionMapStore()); + ls.push_back(SessionMapStore()); + return ls; } void SessionMap::wipe() diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index eb61fe7b0b57..6723c3fffc6f 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -559,7 +559,7 @@ public: Session* get_or_add_session(const entity_inst_t& i); - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void reset_state() { session_map.clear(); diff --git a/src/mds/SimpleLock.cc b/src/mds/SimpleLock.cc index 671e0c1c3d52..f1d9af12db8a 100644 --- a/src/mds/SimpleLock.cc +++ b/src/mds/SimpleLock.cc @@ -93,10 +93,12 @@ void SimpleLock::dump(ceph::Formatter *f) const { f->close_section(); } -void SimpleLock::generate_test_instances(std::list& ls) { - ls.push_back(new SimpleLock); - ls.push_back(new SimpleLock); - ls.back()->set_state(LOCK_SYNC); +std::list SimpleLock::generate_test_instances() { + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().set_state(LOCK_SYNC); + return ls; } diff --git a/src/mds/SimpleLock.h b/src/mds/SimpleLock.h index a46f0d6d3287..cc13a7daeac7 100644 --- a/src/mds/SimpleLock.h +++ b/src/mds/SimpleLock.h @@ -579,7 +579,7 @@ public: * to formatter, or nothing if is_sync_and_unlocked. */ void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); virtual void print(std::ostream& out) const { out << "("; diff --git a/src/mds/SnapServer.cc b/src/mds/SnapServer.cc index 063991996d9b..e11709d16e79 100644 --- a/src/mds/SnapServer.cc +++ b/src/mds/SnapServer.cc @@ -454,28 +454,28 @@ void SnapServer::dump(Formatter *f) const f->close_section(); } -void SnapServer::generate_test_instances(std::list& ls) +std::list SnapServer::generate_test_instances() { - list snapinfo_instances; - SnapInfo::generate_test_instances(snapinfo_instances); - SnapInfo populated_snapinfo = *(snapinfo_instances.back()); - for (auto& info : snapinfo_instances) { - delete info; - info = nullptr; - } + std::list ls; + list snapinfo_instances = SnapInfo::generate_test_instances(); + + SnapInfo populated_snapinfo = snapinfo_instances.back(); + + SnapServer blank; + ls.push_back(std::move(blank)); + + SnapServer populated; + populated.last_snap = 123; + populated.snaps[456] = populated_snapinfo; + populated.need_to_purge[2].insert(012); + populated.pending_update[234] = populated_snapinfo; + populated.pending_destroy[345].first = 567; + populated.pending_destroy[345].second = 768; + populated.pending_noop.insert(890); + + ls.push_back(std::move(populated)); - SnapServer *blank = new SnapServer(); - ls.push_back(blank); - SnapServer *populated = new SnapServer(); - populated->last_snap = 123; - populated->snaps[456] = populated_snapinfo; - populated->need_to_purge[2].insert(012); - populated->pending_update[234] = populated_snapinfo; - populated->pending_destroy[345].first = 567; - populated->pending_destroy[345].second = 768; - populated->pending_noop.insert(890); - - ls.push_back(populated); + return ls; } bool SnapServer::force_update(snapid_t last, snapid_t v2_since, diff --git a/src/mds/SnapServer.h b/src/mds/SnapServer.h index 41f45806105f..d81d2e42f898 100644 --- a/src/mds/SnapServer.h +++ b/src/mds/SnapServer.h @@ -64,7 +64,7 @@ public: } void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool force_update(snapid_t last, snapid_t v2_since, std::map& _snaps); diff --git a/src/mds/events/ECommitted.h b/src/mds/events/ECommitted.h index 6273bf00c821..03a45ab5d363 100644 --- a/src/mds/events/ECommitted.h +++ b/src/mds/events/ECommitted.h @@ -33,7 +33,7 @@ public: void encode(bufferlist &bl, uint64_t features) const override; void decode(bufferlist::const_iterator &bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void update_segment() override {} void replay(MDSRank *mds) override; diff --git a/src/mds/events/EExport.h b/src/mds/events/EExport.h index 297b9e99d33a..2881fe2c87b0 100644 --- a/src/mds/events/EExport.h +++ b/src/mds/events/EExport.h @@ -49,7 +49,7 @@ public: void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator &bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void replay(MDSRank *mds) override; }; diff --git a/src/mds/events/EFragment.h b/src/mds/events/EFragment.h index bb10bf0a51da..6448db16722f 100644 --- a/src/mds/events/EFragment.h +++ b/src/mds/events/EFragment.h @@ -73,7 +73,7 @@ public: void encode(bufferlist &bl, uint64_t features) const override; void decode(bufferlist::const_iterator &bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void replay(MDSRank *mds) override; }; WRITE_CLASS_ENCODER_FEATURES(EFragment) diff --git a/src/mds/events/EImportFinish.h b/src/mds/events/EImportFinish.h index 3848b6c2aaf1..e4002aa6f117 100644 --- a/src/mds/events/EImportFinish.h +++ b/src/mds/events/EImportFinish.h @@ -43,7 +43,7 @@ class EImportFinish : public LogEvent { void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator &bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void replay(MDSRank *mds) override; diff --git a/src/mds/events/EImportStart.h b/src/mds/events/EImportStart.h index 1d94a161b0a6..cf4a881bf156 100644 --- a/src/mds/events/EImportStart.h +++ b/src/mds/events/EImportStart.h @@ -50,7 +50,7 @@ public: void encode(bufferlist &bl, uint64_t features) const override; void decode(bufferlist::const_iterator &bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void update_segment() override; void replay(MDSRank *mds) override; diff --git a/src/mds/events/ELid.h b/src/mds/events/ELid.h index 1ac4efb85666..bc053b70d5e1 100644 --- a/src/mds/events/ELid.h +++ b/src/mds/events/ELid.h @@ -37,7 +37,7 @@ public: void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; void replay(MDSRank *mds) override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(ELid) diff --git a/src/mds/events/EMetaBlob.h b/src/mds/events/EMetaBlob.h index 9bb3fe4beb7b..65ab635d0a3f 100644 --- a/src/mds/events/EMetaBlob.h +++ b/src/mds/events/EMetaBlob.h @@ -104,7 +104,7 @@ public: void encode(bufferlist& bl, uint64_t features) const; void decode(bufferlist::const_iterator &bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void update_inode(MDSRank *mds, CInode *in); bool is_dirty() const { return (state & STATE_DIRTY); } @@ -174,7 +174,7 @@ public: out << std::endl; } void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(remotebit) @@ -195,7 +195,7 @@ public: void encode(bufferlist& bl) const; void decode(bufferlist::const_iterator &bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const { out << " nullbit dn " << dn << " [" << dnfirst << "," << dnlast << "] dnv " << dnv << " dirty=" << dirty << std::endl; @@ -313,7 +313,7 @@ public: void encode(bufferlist& bl, uint64_t features) const; void decode(bufferlist::const_iterator &bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(dirlump) @@ -363,7 +363,7 @@ private: entity_name_t get_client_name() const {return client_name;} void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); // for replay, in certain cases //LogSegment *_segment; diff --git a/src/mds/events/EOpen.h b/src/mds/events/EOpen.h index 35aeee3f9c59..71e08773da5e 100644 --- a/src/mds/events/EOpen.h +++ b/src/mds/events/EOpen.h @@ -51,7 +51,7 @@ public: void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void update_segment() override; void replay(MDSRank *mds) override; diff --git a/src/mds/events/EPeerUpdate.h b/src/mds/events/EPeerUpdate.h index 772bd81dc300..8ae674a9f0a3 100644 --- a/src/mds/events/EPeerUpdate.h +++ b/src/mds/events/EPeerUpdate.h @@ -40,7 +40,7 @@ struct link_rollback { void encode(bufferlist& bl) const; void decode(bufferlist::const_iterator& bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(link_rollback) @@ -61,7 +61,7 @@ struct rmdir_rollback { void encode(bufferlist& bl) const; void decode(bufferlist::const_iterator& bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rmdir_rollback) @@ -81,7 +81,7 @@ struct rename_rollback { void encode(bufferlist& bl) const; void decode(bufferlist::const_iterator& bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_MEMBER_ENCODER(drec) @@ -95,7 +95,7 @@ struct rename_rollback { void encode(bufferlist& bl) const; void decode(bufferlist::const_iterator& bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rename_rollback::drec) WRITE_CLASS_ENCODER(rename_rollback) @@ -150,7 +150,7 @@ public: void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void replay(MDSRank *mds) override; }; diff --git a/src/mds/events/EResetJournal.h b/src/mds/events/EResetJournal.h index bb50044ec16d..f9a57e7ff296 100644 --- a/src/mds/events/EResetJournal.h +++ b/src/mds/events/EResetJournal.h @@ -32,7 +32,7 @@ class EResetJournal : public LogEvent, public SegmentBoundary { void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const override { out << "EResetJournal"; } diff --git a/src/mds/events/ESegment.h b/src/mds/events/ESegment.h index c3f49103e542..220c31c97e85 100644 --- a/src/mds/events/ESegment.h +++ b/src/mds/events/ESegment.h @@ -33,7 +33,7 @@ public: void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; void replay(MDSRank *mds) override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(ESegment) diff --git a/src/mds/events/ESession.h b/src/mds/events/ESession.h index 3e755db9071b..417c895bc576 100644 --- a/src/mds/events/ESession.h +++ b/src/mds/events/ESession.h @@ -50,7 +50,7 @@ class ESession : public LogEvent { void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const override { if (open) diff --git a/src/mds/events/ESessions.h b/src/mds/events/ESessions.h index e334675f2a79..0407c920f721 100644 --- a/src/mds/events/ESessions.h +++ b/src/mds/events/ESessions.h @@ -47,7 +47,7 @@ public: else decode_new(bl); } void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const override { out << "ESessions " << client_map.size() << " opens cmapv " << cmapv; diff --git a/src/mds/events/ESubtreeMap.h b/src/mds/events/ESubtreeMap.h index 4415e0adb33a..8b79e9846771 100644 --- a/src/mds/events/ESubtreeMap.h +++ b/src/mds/events/ESubtreeMap.h @@ -39,7 +39,7 @@ public: void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void replay(MDSRank *mds) override; bool is_major_segment_boundary() const override { diff --git a/src/mds/events/ETableClient.h b/src/mds/events/ETableClient.h index 18f08923ffed..4a43fe2d799f 100644 --- a/src/mds/events/ETableClient.h +++ b/src/mds/events/ETableClient.h @@ -34,7 +34,7 @@ struct ETableClient : public LogEvent { void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const override { out << "ETableClient " << get_mdstable_name(table) << " " << get_mdstableserver_opname(op); diff --git a/src/mds/events/ETableServer.h b/src/mds/events/ETableServer.h index b5762d5e727f..a990d4641051 100644 --- a/src/mds/events/ETableServer.h +++ b/src/mds/events/ETableServer.h @@ -39,7 +39,7 @@ struct ETableServer : public LogEvent { void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const override { out << "ETableServer " << get_mdstable_name(table) diff --git a/src/mds/events/EUpdate.h b/src/mds/events/EUpdate.h index bebd278bf741..1d4d70d24141 100644 --- a/src/mds/events/EUpdate.h +++ b/src/mds/events/EUpdate.h @@ -45,7 +45,7 @@ public: void encode(bufferlist& bl, uint64_t features) const override; void decode(bufferlist::const_iterator& bl) override; void dump(Formatter *f) const override; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void update_segment() override; void replay(MDSRank *mds) override; diff --git a/src/mds/flock.cc b/src/mds/flock.cc index eaa953c3ef89..26f1d31c2979 100644 --- a/src/mds/flock.cc +++ b/src/mds/flock.cc @@ -84,13 +84,15 @@ void ceph_lock_state_t::dump(ceph::Formatter *f) const { } -void ceph_lock_state_t::generate_test_instances(std::list& ls) { - ls.push_back(new ceph_lock_state_t(NULL, 0)); - ls.push_back(new ceph_lock_state_t(NULL, 1)); - ls.back()->held_locks.insert(std::make_pair(1, ceph_filelock())); - ls.back()->waiting_locks.insert(std::make_pair(1, ceph_filelock())); - ls.back()->client_held_lock_counts.insert(std::make_pair(1, 1)); - ls.back()->client_waiting_lock_counts.insert(std::make_pair(1, 1)); +std::list ceph_lock_state_t::generate_test_instances() { + std::list ls; + ls.push_back(ceph_lock_state_t(NULL, 0)); + ls.push_back(ceph_lock_state_t(NULL, 1)); + ls.back().held_locks.insert(std::make_pair(1, ceph_filelock())); + ls.back().waiting_locks.insert(std::make_pair(1, ceph_filelock())); + ls.back().client_held_lock_counts.insert(std::make_pair(1, 1)); + ls.back().client_waiting_lock_counts.insert(std::make_pair(1, 1)); + return ls; } bool ceph_lock_state_t::is_waiting(const ceph_filelock &fl) const diff --git a/src/mds/flock.h b/src/mds/flock.h index 9e6f67976f0c..fe93de02a38b 100644 --- a/src/mds/flock.h +++ b/src/mds/flock.h @@ -123,7 +123,7 @@ public: void encode(ceph::bufferlist& bl) const; void decode(ceph::bufferlist::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool empty() const { return held_locks.empty() && waiting_locks.empty() && client_held_lock_counts.empty() && diff --git a/src/mds/inode_backtrace.cc b/src/mds/inode_backtrace.cc index ba4c5feffcfe..59ea974900d6 100644 --- a/src/mds/inode_backtrace.cc +++ b/src/mds/inode_backtrace.cc @@ -40,13 +40,15 @@ void inode_backpointer_t::dump(ceph::Formatter *f) const f->dump_unsigned("version", version); } -void inode_backpointer_t::generate_test_instances(std::list& ls) +std::list inode_backpointer_t::generate_test_instances() { - ls.push_back(new inode_backpointer_t); - ls.push_back(new inode_backpointer_t); - ls.back()->dirino = 1; - ls.back()->dname = "foo"; - ls.back()->version = 123; + std::list ls; + ls.push_back(inode_backpointer_t{}); + ls.push_back(inode_backpointer_t{}); + ls.back().dirino = 1; + ls.back().dname = "foo"; + ls.back().version = 123; + return ls; } @@ -105,18 +107,20 @@ void inode_backtrace_t::dump(ceph::Formatter *f) const f->close_section(); } -void inode_backtrace_t::generate_test_instances(std::list& ls) +std::list inode_backtrace_t::generate_test_instances() { - ls.push_back(new inode_backtrace_t); - ls.push_back(new inode_backtrace_t); - ls.back()->ino = 1; - ls.back()->ancestors.push_back(inode_backpointer_t()); - ls.back()->ancestors.back().dirino = 123; - ls.back()->ancestors.back().dname = "bar"; - ls.back()->ancestors.back().version = 456; - ls.back()->pool = 0; - ls.back()->old_pools.push_back(10); - ls.back()->old_pools.push_back(7); + std::list ls; + ls.push_back(inode_backtrace_t{}); + ls.push_back(inode_backtrace_t{}); + ls.back().ino = 1; + ls.back().ancestors.push_back(inode_backpointer_t()); + ls.back().ancestors.back().dirino = 123; + ls.back().ancestors.back().dname = "bar"; + ls.back().ancestors.back().version = 456; + ls.back().pool = 0; + ls.back().old_pools.push_back(10); + ls.back().old_pools.push_back(7); + return ls; } int inode_backtrace_t::compare(const inode_backtrace_t& other, diff --git a/src/mds/inode_backtrace.h b/src/mds/inode_backtrace.h index fbad458e7c55..093555b40465 100644 --- a/src/mds/inode_backtrace.h +++ b/src/mds/inode_backtrace.h @@ -35,7 +35,7 @@ struct inode_backpointer_t { void decode(ceph::buffer::list::const_iterator &bl); void decode_old(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); inodeno_t dirino; // containing directory ino std::string dname; // linking dentry name @@ -60,7 +60,7 @@ struct inode_backtrace_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); /** * Compare two backtraces *for the same inode*. diff --git a/src/mds/journal.cc b/src/mds/journal.cc index e031e358b848..20578cd27bd7 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -615,16 +615,17 @@ void EMetaBlob::fullbit::dump(Formatter *f) const f->dump_string("alternate_name", alternate_name); } -void EMetaBlob::fullbit::generate_test_instances(std::list& ls) +std::list EMetaBlob::fullbit::generate_test_instances() { + std::list ls; auto _inode = CInode::allocate_inode(); fragtree_t fragtree; auto _xattrs = CInode::allocate_xattr_map(); bufferlist empty_snapbl; - fullbit *sample = new fullbit("/testdn", "", 0, 0, 0, - _inode, fragtree, _xattrs, "", 0, empty_snapbl, - false, NULL); - ls.push_back(sample); + ls.emplace_back("/testdn", "", 0, 0, 0, + _inode, fragtree, _xattrs, "", 0, empty_snapbl, + false, nullptr); + return ls; } void EMetaBlob::fullbit::update_inode(MDSRank *mds, CInode *in) @@ -794,14 +795,15 @@ void EMetaBlob::remotebit::dump(Formatter *f) const f->dump_int("referentino", referent_ino); } -void EMetaBlob::remotebit:: -generate_test_instances(std::list& ls) +std::list EMetaBlob::remotebit::generate_test_instances() { + std::list ls; auto _inode = CInode::allocate_inode(); - remotebit *remote = new remotebit("/test/dn", "", 0, 10, 15, 1, IFTODT(S_IFREG), 2, _inode, false); - ls.push_back(remote); - remote = new remotebit("/test/dn2", "foo", 0, 10, 15, 1, IFTODT(S_IFREG), 2, _inode, false); + auto remote = remotebit("/test/dn", "", 0, 10, 15, 1, IFTODT(S_IFREG), 2, _inode, false); + ls.push_back(std::move(remote)); + remote = remotebit("/test/dn2", "foo", 0, 10, 15, 1, IFTODT(S_IFREG), 2, _inode, false); ls.push_back(remote); + return ls; } // EMetaBlob::nullbit @@ -839,12 +841,14 @@ void EMetaBlob::nullbit::dump(Formatter *f) const f->dump_string("dirty", dirty ? "true" : "false"); } -void EMetaBlob::nullbit::generate_test_instances(std::list& ls) +auto EMetaBlob::nullbit::generate_test_instances() -> std::list { - nullbit *sample = new nullbit("/test/dentry", 0, 10, 15, false); - nullbit *sample2 = new nullbit("/test/dirty", 10, 20, 25, true); - ls.push_back(sample); - ls.push_back(sample2); + std::list ls; + nullbit sample("/test/dentry", 0, 10, 15, false); + nullbit sample2("/test/dirty", 10, 20, 25, true); + ls.push_back(std::move(sample)); + ls.push_back(std::move(sample2)); + return ls; } // EMetaBlob::dirlump @@ -918,11 +922,13 @@ void EMetaBlob::dirlump::dump(Formatter *f) const f->close_section(); // null bits } -void EMetaBlob::dirlump::generate_test_instances(std::list& ls) +auto EMetaBlob::dirlump::generate_test_instances() -> std::list { - auto dl = new dirlump(); - dl->fnode = CDir::allocate_fnode(); - ls.push_back(dl); + std::list ls; + ls.emplace_back(); + dirlump& dl = ls.back(); + dl.fnode = CDir::allocate_fnode(); + return ls; } /** @@ -1257,9 +1263,11 @@ void EMetaBlob::dump(Formatter *f) const f->close_section(); // client requests } -void EMetaBlob::generate_test_instances(std::list& ls) +std::list EMetaBlob::generate_test_instances() { - ls.push_back(new EMetaBlob()); + std::list ls; + ls.emplace_back(); + return ls; } void EMetaBlob::replay(MDSRank *mds, LogSegmentRef const& logseg, int type, MDPeerUpdate *peerup) @@ -2096,9 +2104,11 @@ void ESession::dump(Formatter *f) const f->close_section(); // client_metadata } -void ESession::generate_test_instances(std::list& ls) +std::list ESession::generate_test_instances() { - ls.push_back(new ESession); + std::list ls; + ls.emplace_back(); + return ls; } // ----------------------- @@ -2149,9 +2159,11 @@ void ESessions::dump(Formatter *f) const f->close_section(); // client map } -void ESessions::generate_test_instances(std::list& ls) +std::list ESessions::generate_test_instances() { - ls.push_back(new ESessions()); + std::list ls; + ls.emplace_back(); + return ls; } void ESessions::update_segment() @@ -2215,9 +2227,11 @@ void ETableServer::dump(Formatter *f) const f->dump_int("version", version); } -void ETableServer::generate_test_instances(std::list& ls) +std::list ETableServer::generate_test_instances() { - ls.push_back(new ETableServer()); + std::list ls; + ls.emplace_back(); + return ls; } @@ -2307,9 +2321,11 @@ void ETableClient::dump(Formatter *f) const f->dump_int("tid", tid); } -void ETableClient::generate_test_instances(std::list& ls) +std::list ETableClient::generate_test_instances() { - ls.push_back(new ETableClient()); + std::list ls; + ls.emplace_back(); + return ls; } void ETableClient::replay(MDSRank *mds) @@ -2405,9 +2421,11 @@ void EUpdate::dump(Formatter *f) const f->dump_string("had peers", had_peers ? "true" : "false"); } -void EUpdate::generate_test_instances(std::list& ls) +std::list EUpdate::generate_test_instances() { - ls.push_back(new EUpdate()); + std::list ls; + ls.emplace_back(); + return ls; } @@ -2494,11 +2512,13 @@ void EOpen::dump(Formatter *f) const f->close_section(); // inos } -void EOpen::generate_test_instances(std::list& ls) +std::list EOpen::generate_test_instances() { - ls.push_back(new EOpen()); - ls.push_back(new EOpen()); - ls.back()->add_ino(0); + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().add_ino(0); + return ls; } void EOpen::update_segment() @@ -2568,12 +2588,14 @@ void ECommitted::dump(Formatter *f) const { f->dump_stream("reqid") << reqid; } -void ECommitted::generate_test_instances(std::list& ls) +std::list ECommitted::generate_test_instances() { - ls.push_back(new ECommitted); - ls.push_back(new ECommitted); - ls.back()->stamp = utime_t(1, 2); - ls.back()->reqid = metareqid_t(entity_name_t::CLIENT(123), 456); + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().stamp = utime_t(1, 2); + ls.back().reqid = metareqid_t(entity_name_t::CLIENT(123), 456); + return ls; } // ----------------------- @@ -2620,9 +2642,11 @@ void link_rollback::dump(Formatter *f) const f->dump_stream("referent_ino") << referent_ino; } -void link_rollback::generate_test_instances(std::list& ls) +std::list link_rollback::generate_test_instances() { - ls.push_back(new link_rollback()); + std::list ls; + ls.push_back(link_rollback()); + return ls; } void rmdir_rollback::encode(bufferlist& bl) const @@ -2659,9 +2683,11 @@ void rmdir_rollback::dump(Formatter *f) const f->dump_string("destination dname", dest_dname); } -void rmdir_rollback::generate_test_instances(std::list& ls) +std::list rmdir_rollback::generate_test_instances() { - ls.push_back(new rmdir_rollback()); + std::list ls; + ls.push_back(rmdir_rollback()); + return ls; } void rename_rollback::drec::encode(bufferlist &bl) const @@ -2720,10 +2746,12 @@ void rename_rollback::drec::dump(Formatter *f) const f->dump_stream("old ctime") << old_ctime; } -void rename_rollback::drec::generate_test_instances(std::list& ls) +auto rename_rollback::drec::generate_test_instances() -> std::list { - ls.push_back(new drec()); - ls.back()->remote_d_type = IFTODT(S_IFREG); + std::list ls; + ls.push_back(drec()); + ls.back().remote_d_type = IFTODT(S_IFREG); + return ls; } void rename_rollback::encode(bufferlist &bl) const @@ -2769,12 +2797,14 @@ void rename_rollback::dump(Formatter *f) const f->dump_stream("ctime") << ctime; } -void rename_rollback::generate_test_instances(std::list& ls) +std::list rename_rollback::generate_test_instances() { - ls.push_back(new rename_rollback()); - ls.back()->orig_src.remote_d_type = IFTODT(S_IFREG); - ls.back()->orig_dest.remote_d_type = IFTODT(S_IFREG); - ls.back()->stray.remote_d_type = IFTODT(S_IFREG); + std::list ls; + ls.push_back(rename_rollback()); + ls.back().orig_src.remote_d_type = IFTODT(S_IFREG); + ls.back().orig_dest.remote_d_type = IFTODT(S_IFREG); + ls.back().stray.remote_d_type = IFTODT(S_IFREG); + return ls; } void EPeerUpdate::encode(bufferlist &bl, uint64_t features) const @@ -2820,9 +2850,11 @@ void EPeerUpdate::dump(Formatter *f) const f->dump_int("original op", origop); } -void EPeerUpdate::generate_test_instances(std::list& ls) +std::list EPeerUpdate::generate_test_instances() { - ls.push_back(new EPeerUpdate()); + std::list ls; + ls.emplace_back(); + return ls; } void EPeerUpdate::replay(MDSRank *mds) @@ -2918,9 +2950,11 @@ void ESubtreeMap::dump(Formatter *f) const f->dump_int("expire position", expire_pos); } -void ESubtreeMap::generate_test_instances(std::list& ls) +std::list ESubtreeMap::generate_test_instances() { - ls.push_back(new ESubtreeMap()); + std::list ls; + ls.emplace_back(); + return ls; } void ESubtreeMap::replay(MDSRank *mds) @@ -3146,13 +3180,15 @@ void EFragment::dump(Formatter *f) const f->dump_int("bits", bits); } -void EFragment::generate_test_instances(std::list& ls) +std::list EFragment::generate_test_instances() { - ls.push_back(new EFragment); - ls.push_back(new EFragment); - ls.back()->op = OP_PREPARE; - ls.back()->ino = 1; - ls.back()->bits = 5; + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().op = OP_PREPARE; + ls.back().ino = 1; + ls.back().bits = 5; + return ls; } void dirfrag_rollback::encode(bufferlist &bl) const @@ -3243,10 +3279,11 @@ void EExport::dump(Formatter *f) const f->close_section(); // bounds dirfrags } -void EExport::generate_test_instances(std::list& ls) +std::list EExport::generate_test_instances() { - EExport *sample = new EExport(); - ls.push_back(sample); + std::list ls; + ls.emplace_back(); + return ls; } @@ -3342,9 +3379,11 @@ void EImportStart::dump(Formatter *f) const f->close_section(); } -void EImportStart::generate_test_instances(std::list& ls) +std::list EImportStart::generate_test_instances() { - ls.push_back(new EImportStart); + std::list ls; + ls.emplace_back(); + return ls; } // ----------------------- @@ -3400,11 +3439,13 @@ void EImportFinish::dump(Formatter *f) const f->dump_stream("base dirfrag") << base; f->dump_string("success", success ? "true" : "false"); } -void EImportFinish::generate_test_instances(std::list& ls) +std::list EImportFinish::generate_test_instances() { - ls.push_back(new EImportFinish); - ls.push_back(new EImportFinish); - ls.back()->success = true; + std::list ls; + ls.emplace_back(); + ls.emplace_back(); + ls.back().success = true; + return ls; } @@ -3430,9 +3471,11 @@ void EResetJournal::dump(Formatter *f) const f->dump_stream("timestamp") << stamp; } -void EResetJournal::generate_test_instances(std::list& ls) +std::list EResetJournal::generate_test_instances() { - ls.push_back(new EResetJournal()); + std::list ls; + ls.emplace_back(); + return ls; } void EResetJournal::replay(MDSRank *mds) @@ -3479,9 +3522,11 @@ void ESegment::dump(Formatter *f) const f->dump_int("seq", seq); } -void ESegment::generate_test_instances(std::list& ls) +std::list ESegment::generate_test_instances() { - ls.push_back(new ESegment); + std::list ls; + ls.emplace_back(); + return ls; } void ELid::encode(bufferlist &bl, uint64_t features) const @@ -3508,9 +3553,11 @@ void ELid::dump(Formatter *f) const f->dump_int("seq", seq); } -void ELid::generate_test_instances(std::list& ls) +std::list ELid::generate_test_instances() { - ls.push_back(new ELid); + std::list ls; + ls.emplace_back(); + return ls; } void ENoOp::encode(bufferlist &bl, uint64_t features) const diff --git a/src/mds/mdstypes.cc b/src/mds/mdstypes.cc index 5be3506bc3d5..21095afcc3d5 100644 --- a/src/mds/mdstypes.cc +++ b/src/mds/mdstypes.cc @@ -84,14 +84,16 @@ void frag_info_t::decode_json(JSONObj *obj){ JSONDecoder::decode_json("change_attr", change_attr, obj, true); } -void frag_info_t::generate_test_instances(std::list& ls) +std::list frag_info_t::generate_test_instances() { - ls.push_back(new frag_info_t); - ls.push_back(new frag_info_t); - ls.back()->version = 1; - ls.back()->mtime = utime_t(2, 3); - ls.back()->nfiles = 4; - ls.back()->nsubdirs = 5; + std::list ls; + ls.push_back(frag_info_t{}); + ls.push_back(frag_info_t{}); + ls.back().version = 1; + ls.back().mtime = utime_t(2, 3); + ls.back().nfiles = 4; + ls.back().nsubdirs = 5; + return ls; } ostream& operator<<(ostream &out, const frag_info_t &f) @@ -165,16 +167,18 @@ void nest_info_t::decode_json(JSONObj *obj){ JSONDecoder::decode_json("rctime", rctime, obj, true); } -void nest_info_t::generate_test_instances(std::list& ls) +std::list nest_info_t::generate_test_instances() { - ls.push_back(new nest_info_t); - ls.push_back(new nest_info_t); - ls.back()->version = 1; - ls.back()->rbytes = 2; - ls.back()->rfiles = 3; - ls.back()->rsubdirs = 4; - ls.back()->rsnaps = 6; - ls.back()->rctime = utime_t(7, 8); + std::list ls; + ls.push_back(nest_info_t{}); + ls.push_back(nest_info_t{}); + ls.back().version = 1; + ls.back().rbytes = 2; + ls.back().rfiles = 3; + ls.back().rsubdirs = 4; + ls.back().rsnaps = 6; + ls.back().rctime = utime_t(7, 8); + return ls; } ostream& operator<<(ostream &out, const nest_info_t &n) @@ -209,12 +213,14 @@ void quota_info_t::decode_json(JSONObj *obj){ JSONDecoder::decode_json("max_files", max_files, obj, true); } -void quota_info_t::generate_test_instances(std::list& ls) +std::list quota_info_t::generate_test_instances() { - ls.push_back(new quota_info_t); - ls.push_back(new quota_info_t); - ls.back()->max_bytes = 16; - ls.back()->max_files = 16; + std::list ls; + ls.push_back(quota_info_t{}); + ls.push_back(quota_info_t{}); + ls.back().max_bytes = 16; + ls.back().max_files = 16; + return ls; } ostream& operator<<(ostream &out, const quota_info_t &n) @@ -263,13 +269,15 @@ void client_writeable_range_t::byte_range_t::decode_json(JSONObj *obj){ JSONDecoder::decode_json("last", last, obj, true); } -void client_writeable_range_t::generate_test_instances(std::list& ls) +std::list client_writeable_range_t::generate_test_instances() { - ls.push_back(new client_writeable_range_t); - ls.push_back(new client_writeable_range_t); - ls.back()->range.first = 123; - ls.back()->range.last = 456; - ls.back()->follows = 12; + std::list ls; + ls.push_back(client_writeable_range_t{}); + ls.push_back(client_writeable_range_t{}); + ls.back().range.first = 123; + ls.back().range.last = 456; + ls.back().follows = 12; + return ls; } ostream& operator<<(ostream& out, const client_writeable_range_t& r) @@ -309,13 +317,15 @@ void inline_data_t::dump(Formatter *f) const f->dump_unsigned("length", length()); } -void inline_data_t::generate_test_instances(std::list& ls) +std::list inline_data_t::generate_test_instances() { - ls.push_back(new inline_data_t); - ls.push_back(new inline_data_t); + std::list ls; + ls.push_back(inline_data_t{}); + ls.push_back(inline_data_t{}); bufferlist bl; bl.append("inline data"); - ls.back()->set_data(bl); + ls.back().set_data(bl); + return ls; } @@ -391,20 +401,20 @@ void fnode_t::decode_json(JSONObj *obj){ JSONDecoder::decode_json("rstat", rstat, obj, true); JSONDecoder::decode_json("accounted_rstat", accounted_rstat, obj, true); } -void fnode_t::generate_test_instances(std::list& ls) +std::list fnode_t::generate_test_instances() { - ls.push_back(new fnode_t); - ls.push_back(new fnode_t); - ls.back()->version = 1; - ls.back()->snap_purged_thru = 2; - list fls; - frag_info_t::generate_test_instances(fls); - ls.back()->fragstat = *fls.back(); - ls.back()->accounted_fragstat = *fls.front(); - list nls; - nest_info_t::generate_test_instances(nls); - ls.back()->rstat = *nls.front(); - ls.back()->accounted_rstat = *nls.back(); + std::list ls; + ls.push_back(fnode_t{}); + ls.push_back(fnode_t{}); + ls.back().version = 1; + ls.back().snap_purged_thru = 2; + list fls = frag_info_t::generate_test_instances(); + ls.back().fragstat = fls.back(); + ls.back().accounted_fragstat = fls.front(); + list nls = nest_info_t::generate_test_instances(); + ls.back().rstat = nls.front(); + ls.back().accounted_rstat = nls.back(); + return ls; } @@ -440,15 +450,16 @@ void old_rstat_t::dump(Formatter *f) const f->close_section(); } -void old_rstat_t::generate_test_instances(std::list& ls) +std::list old_rstat_t::generate_test_instances() { - ls.push_back(new old_rstat_t()); - ls.push_back(new old_rstat_t()); - ls.back()->first = 12; - list nls; - nest_info_t::generate_test_instances(nls); - ls.back()->rstat = *nls.back(); - ls.back()->accounted_rstat = *nls.front(); + std::list ls; + ls.push_back(old_rstat_t()); + ls.push_back(old_rstat_t()); + ls.back().first = 12; + list nls = nest_info_t::generate_test_instances(); + ls.back().rstat = nls.back(); + ls.back().accounted_rstat = nls.front(); + return ls; } void old_rstat_t::print(std::ostream& out) const { @@ -547,13 +558,15 @@ void feature_bitset_t::dump(Formatter *f) const { f->dump_string("feature_bits", css->strv()); } -void feature_bitset_t::generate_test_instances(std::list& ls) +std::list feature_bitset_t::generate_test_instances() { - ls.push_back(new feature_bitset_t()); - ls.push_back(new feature_bitset_t()); - ls.back()->_vec.push_back(1); - ls.back()->_vec.push_back(2); - ls.back()->_vec.push_back(3); + std::list ls; + ls.push_back(feature_bitset_t()); + ls.push_back(feature_bitset_t()); + ls.back()._vec.push_back(1); + ls.back()._vec.push_back(2); + ls.back()._vec.push_back(3); + return ls; } void feature_bitset_t::print(ostream& out) const @@ -592,11 +605,13 @@ void metric_spec_t::dump(Formatter *f) const { f->dump_object("metric_flags", metric_flags); } -void metric_spec_t::generate_test_instances(std::list& ls) +std::list metric_spec_t::generate_test_instances() { - ls.push_back(new metric_spec_t()); - ls.push_back(new metric_spec_t()); - ls.back()->metric_flags = 1; + std::list ls; + ls.push_back(metric_spec_t()); + ls.push_back(metric_spec_t()); + ls.back().metric_flags = 1; + return ls; } void metric_spec_t::print(ostream& out) const @@ -636,14 +651,16 @@ void client_metadata_t::dump(Formatter *f) const f->dump_string(name.c_str(), val); } -void client_metadata_t::generate_test_instances(std::list& ls) +std::list client_metadata_t::generate_test_instances() { - ls.push_back(new client_metadata_t()); - ls.push_back(new client_metadata_t()); - ls.back()->kv_map["key1"] = "val1"; - ls.back()->kv_map["key2"] = "val2"; - ls.back()->features = 0x12345678; - ls.back()->metric_spec.metric_flags = 0x12345678; + std::list ls; + ls.push_back(client_metadata_t()); + ls.push_back(client_metadata_t()); + ls.back().kv_map["key1"] = "val1"; + ls.back().kv_map["key2"] = "val2"; + ls.back().features = 0x12345678; + ls.back().metric_spec.metric_flags = 0x12345678; + return ls; } /* @@ -722,16 +739,18 @@ void session_info_t::dump(Formatter *f) const f->dump_object("client_metadata", client_metadata); } -void session_info_t::generate_test_instances(std::list& ls) +std::list session_info_t::generate_test_instances() { - ls.push_back(new session_info_t); - ls.push_back(new session_info_t); - ls.back()->inst = entity_inst_t(entity_name_t::MDS(12), entity_addr_t()); - ls.back()->completed_requests.insert(make_pair(234, inodeno_t(111222))); - ls.back()->completed_requests.insert(make_pair(237, inodeno_t(222333))); - ls.back()->prealloc_inos.insert(333, 12); - ls.back()->prealloc_inos.insert(377, 112); + std::listls; + ls.push_back(session_info_t{}); + ls.push_back(session_info_t{}); + ls.back().inst = entity_inst_t(entity_name_t::MDS(12), entity_addr_t()); + ls.back().completed_requests.insert(make_pair(234, inodeno_t(111222))); + ls.back().completed_requests.insert(make_pair(237, inodeno_t(222333))); + ls.back().prealloc_inos.insert(333, 12); + ls.back().prealloc_inos.insert(377, 112); // we can't add used inos; they're cleared on decode + return ls; } /* @@ -783,15 +802,17 @@ void string_snap_t::dump(Formatter *f) const f->dump_unsigned("snapid", snapid); } -void string_snap_t::generate_test_instances(std::list& ls) +std::list string_snap_t::generate_test_instances() { - ls.push_back(new string_snap_t); - ls.push_back(new string_snap_t); - ls.back()->name = "foo"; - ls.back()->snapid = 123; - ls.push_back(new string_snap_t); - ls.back()->name = "bar"; - ls.back()->snapid = 456; + std::list ls; + ls.push_back(string_snap_t{}); + ls.push_back(string_snap_t{}); + ls.back().name = "foo"; + ls.back().snapid = 123; + ls.push_back(string_snap_t{}); + ls.back().name = "bar"; + ls.back().snapid = 456; + return ls; } @@ -837,19 +858,21 @@ void MDSCacheObjectInfo::print(std::ostream& out) const { } } -void MDSCacheObjectInfo::generate_test_instances(std::list& ls) +std::list MDSCacheObjectInfo::generate_test_instances() { - ls.push_back(new MDSCacheObjectInfo); - ls.push_back(new MDSCacheObjectInfo); - ls.back()->ino = 1; - ls.back()->dirfrag = dirfrag_t(2, 3); - ls.back()->dname = "fooname"; - ls.back()->snapid = CEPH_NOSNAP; - ls.push_back(new MDSCacheObjectInfo); - ls.back()->ino = 121; - ls.back()->dirfrag = dirfrag_t(222, 0); - ls.back()->dname = "bar foo"; - ls.back()->snapid = 21322; + std::list ls; + ls.push_back(MDSCacheObjectInfo{}); + ls.push_back(MDSCacheObjectInfo{}); + ls.back().ino = 1; + ls.back().dirfrag = dirfrag_t(2, 3); + ls.back().dname = "fooname"; + ls.back().snapid = CEPH_NOSNAP; + ls.push_back(MDSCacheObjectInfo{}); + ls.back().ino = 121; + ls.back().dirfrag = dirfrag_t(222, 0); + ls.back().dname = "bar foo"; + ls.back().snapid = 21322; + return ls; } /* @@ -880,13 +903,15 @@ void mds_table_pending_t::dump(Formatter *f) const f->dump_unsigned("tid", tid); } -void mds_table_pending_t::generate_test_instances(std::list& ls) +std::list mds_table_pending_t::generate_test_instances() { - ls.push_back(new mds_table_pending_t); - ls.push_back(new mds_table_pending_t); - ls.back()->reqid = 234; - ls.back()->mds = 2; - ls.back()->tid = 35434; + std::list ls; + ls.push_back(mds_table_pending_t{}); + ls.push_back(mds_table_pending_t{}); + ls.back().reqid = 234; + ls.back().mds = 2; + ls.back().tid = 35434; + return ls; } void metareqid_t::dump(ceph::Formatter* f) const { @@ -898,9 +923,11 @@ void metareqid_t::print(std::ostream& out) const { out << name << ":" << tid; } -void metareqid_t::generate_test_instances(std::list& ls) { - ls.push_back(new metareqid_t); - ls.push_back(new metareqid_t(entity_name_t::CLIENT(123), 456)); +std::list metareqid_t::generate_test_instances() { + std::list ls; + ls.push_back(metareqid_t{}); + ls.push_back(metareqid_t(entity_name_t::CLIENT(123), 456)); + return ls; } /* @@ -918,10 +945,12 @@ void dirfrag_t::dump(ceph::Formatter *f) const { f->dump_unsigned("frag", frag); } -void dirfrag_t::generate_test_instances(std::list& ls) { - ls.push_back(new dirfrag_t); - ls.push_back(new dirfrag_t(1, frag_t())); - ls.push_back(new dirfrag_t(2, frag_t(3))); +std::list dirfrag_t::generate_test_instances() { + std::list ls; + ls.push_back(dirfrag_t{}); + ls.push_back(dirfrag_t(1, frag_t())); + ls.push_back(dirfrag_t(2, frag_t(3))); + return ls; } /* @@ -956,9 +985,11 @@ void inode_load_vec_t::dump(Formatter *f) const f->close_section(); } -void inode_load_vec_t::generate_test_instances(std::list& ls) +std::list inode_load_vec_t::generate_test_instances() { - ls.push_back(new inode_load_vec_t(DecayRate())); + std::list ls; + ls.push_back(inode_load_vec_t(DecayRate())); + return ls; } @@ -999,9 +1030,11 @@ void dirfrag_load_vec_t::print(std::ostream& out) const { out << css->strv(); } -void dirfrag_load_vec_t::generate_test_instances(std::list& ls) +std::list dirfrag_load_vec_t::generate_test_instances() { - ls.push_back(new dirfrag_load_vec_t(DecayRate())); + std::list ls; + ls.push_back(dirfrag_load_vec_t(DecayRate())); + return ls; } /* @@ -1052,9 +1085,11 @@ void mds_load_t::dump(Formatter *f) const f->close_section(); } -void mds_load_t::generate_test_instances(std::list& ls) +std::list mds_load_t::generate_test_instances() { - ls.push_back(new mds_load_t(DecayRate())); + std::list ls; + ls.push_back(mds_load_t(DecayRate())); + return ls; } /* @@ -1101,11 +1136,13 @@ void cap_reconnect_t::dump(Formatter *f) const f->dump_string("has file locks", capinfo.flock_len ? "true" : "false"); } -void cap_reconnect_t::generate_test_instances(std::list& ls) +std::list cap_reconnect_t::generate_test_instances() { - ls.push_back(new cap_reconnect_t); - ls.back()->path = "/test/path"; - ls.back()->capinfo.cap_id = 1; + std::list ls; + ls.push_back(cap_reconnect_t{}); + ls.back().path = "/test/path"; + ls.back().capinfo.cap_id = 1; + return ls; } /* @@ -1140,12 +1177,14 @@ void snaprealm_reconnect_t::dump(Formatter *f) const f->dump_int("parent", realm.parent); } -void snaprealm_reconnect_t::generate_test_instances(std::list& ls) +std::list snaprealm_reconnect_t::generate_test_instances() { - ls.push_back(new snaprealm_reconnect_t); - ls.back()->realm.ino = 0x10000000001ULL; - ls.back()->realm.seq = 2; - ls.back()->realm.parent = 1; + std::list ls; + ls.push_back(snaprealm_reconnect_t{}); + ls.back().realm.ino = 0x10000000001ULL; + ls.back().realm.seq = 2; + ls.back().realm.parent = 1; + return ls; } void EstimatedReplayTime::print(std::ostream& out) { @@ -1180,13 +1219,15 @@ void BlockDiff::dump(Formatter *f) const { f->dump_stream("blocks") << blocks; } -void BlockDiff::generate_test_instances(std::list& ls) +std::list BlockDiff::generate_test_instances() { - ls.push_back(new BlockDiff()); - ls.push_back(new BlockDiff()); - ls.back()->rval = 0; - ls.back()->scan_idx = 1; - ls.back()->blocks.union_insert(0, 200); + std::list ls; + ls.push_back(BlockDiff()); + ls.push_back(BlockDiff()); + ls.back().rval = 0; + ls.back().scan_idx = 1; + ls.back().blocks.union_insert(0, 200); + return ls; } void BlockDiff::print(ostream& out) const diff --git a/src/mds/mdstypes.h b/src/mds/mdstypes.h index 5cd4e37bba91..37d7150ef0b1 100644 --- a/src/mds/mdstypes.h +++ b/src/mds/mdstypes.h @@ -165,7 +165,7 @@ struct old_inode_t { void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; // These methods may be moved back to mdstypes.cc when we have pmr @@ -203,16 +203,17 @@ void old_inode_t::dump(ceph::Formatter *f) const } template class Allocator> -void old_inode_t::generate_test_instances(std::list*>& ls) +auto old_inode_t::generate_test_instances() -> std::list> { - ls.push_back(new old_inode_t); - ls.push_back(new old_inode_t); - ls.back()->first = 2; - std::list*> ils; - inode_t::generate_test_instances(ils); - ls.back()->inode = *ils.back(); - ls.back()->xattrs["user.foo"] = ceph::buffer::copy("asdf", 4); - ls.back()->xattrs["user.unprintable"] = ceph::buffer::copy("\000\001\002", 3); + std::list> ls; + ls.push_back(old_inode_t{}); + ls.push_back(old_inode_t{}); + ls.back().first = 2; + std::list> ils = inode_t::generate_test_instances(); + ls.back().inode = ils.back(); + ls.back().xattrs["user.foo"] = ceph::buffer::copy("asdf", 4); + ls.back().xattrs["user.unprintable"] = ceph::buffer::copy("\000\001\002", 3); + return ls; } template class Allocator> @@ -236,7 +237,7 @@ struct fnode_t { void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); version_t version = 0; snapid_t snap_purged_thru; // the max_last_destroy snapid we've been purged thru @@ -258,7 +259,7 @@ struct old_rstat_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const; @@ -328,7 +329,7 @@ public: void decode(ceph::buffer::list::const_iterator &p); void dump(ceph::Formatter *f) const; void print(std::ostream& out) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); private: void init_array(const std::vector& v); @@ -367,7 +368,7 @@ struct metric_spec_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const; // set of metrics that a client is capable of forwarding @@ -414,7 +415,7 @@ struct client_metadata_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); kv_map_t kv_map; feature_bitset_t features; @@ -440,7 +441,7 @@ struct session_info_t { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); entity_inst_t inst; std::map completed_requests; @@ -533,7 +534,7 @@ struct string_snap_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::string name; snapid_t snapid; @@ -559,7 +560,7 @@ struct mds_table_pending_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); uint64_t reqid = 0; __s32 mds = 0; @@ -599,7 +600,7 @@ struct metareqid_t { } void dump(ceph::Formatter *f) const; void print(std::ostream& out) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); entity_name_t name; uint64_t tid = 0; }; @@ -652,7 +653,7 @@ struct cap_reconnect_t { void decode_old(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::string path; mutable ceph_mds_cap_reconnect capinfo = {}; @@ -674,7 +675,7 @@ struct snaprealm_reconnect_t { void decode_old(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); mutable ceph_mds_snaprealm_reconnect realm = {}; }; @@ -747,7 +748,7 @@ struct dirfrag_t { decode(frag, bl); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); inodeno_t ino = 0; frag_t frag; @@ -801,7 +802,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); private: std::array vec; @@ -848,7 +849,7 @@ public: void dump(ceph::Formatter *f) const; void dump(ceph::Formatter *f, const DecayRate& rate) const; void print(std::ostream& out) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); const DecayCounter &get(int t) const { return vec[t]; @@ -921,7 +922,7 @@ struct mds_load_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; inline void encode(const mds_load_t &c, ceph::buffer::list &bl) { c.encode(bl); @@ -948,7 +949,7 @@ public: void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; void print(std::ostream& out) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); inodeno_t ino = 0; dirfrag_t dirfrag; @@ -980,7 +981,7 @@ struct BlockDiff { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); void print(std::ostream& out) const; }; WRITE_CLASS_ENCODER(BlockDiff); diff --git a/src/mds/snap.cc b/src/mds/snap.cc index 60baf7f93f43..559a6ea29c04 100644 --- a/src/mds/snap.cc +++ b/src/mds/snap.cc @@ -64,15 +64,17 @@ void SnapInfo::dump(Formatter *f) const f->close_section(); } -void SnapInfo::generate_test_instances(std::list& ls) +std::list SnapInfo::generate_test_instances() { - ls.push_back(new SnapInfo); - ls.push_back(new SnapInfo); - ls.back()->snapid = 1; - ls.back()->ino = 2; - ls.back()->stamp = utime_t(3, 4); - ls.back()->name = "foo"; - ls.back()->metadata = {{"foo", "bar"}}; + std::list ls; + ls.push_back(SnapInfo{}); + ls.push_back(SnapInfo{}); + ls.back().snapid = 1; + ls.back().ino = 2; + ls.back().stamp = utime_t(3, 4); + ls.back().name = "foo"; + ls.back().metadata = {{"foo", "bar"}}; + return ls; } ostream& operator<<(ostream& out, const SnapInfo &sn) @@ -121,12 +123,14 @@ void snaplink_t::dump(Formatter *f) const f->dump_unsigned("first", first); } -void snaplink_t::generate_test_instances(std::list& ls) +std::list snaplink_t::generate_test_instances() { - ls.push_back(new snaplink_t); - ls.push_back(new snaplink_t); - ls.back()->ino = 2; - ls.back()->first = 123; + std::list ls; + ls.push_back(snaplink_t{}); + ls.push_back(snaplink_t{}); + ls.back().ino = 2; + ls.back().first = 123; + return ls; } ostream& operator<<(ostream& out, const snaplink_t &l) @@ -219,25 +223,27 @@ void sr_t::dump(Formatter *f) const f->close_section(); } -void sr_t::generate_test_instances(std::list& ls) +std::list sr_t::generate_test_instances() { - ls.push_back(new sr_t); - ls.push_back(new sr_t); - ls.back()->seq = 1; - ls.back()->created = 2; - ls.back()->last_created = 3; - ls.back()->last_destroyed = 4; - ls.back()->current_parent_since = 5; - ls.back()->snaps[123].snapid = 7; - ls.back()->snaps[123].ino = 8; - ls.back()->snaps[123].stamp = utime_t(9, 10); - ls.back()->snaps[123].name = "name1"; - ls.back()->past_parents[12].ino = 12; - ls.back()->past_parents[12].first = 3; - - ls.back()->past_parent_snaps.insert(5); - ls.back()->past_parent_snaps.insert(6); - ls.back()->last_modified = utime_t(9, 10); - ls.back()->change_attr++; + std::list ls; + ls.push_back(sr_t{}); + ls.push_back(sr_t{}); + ls.back().seq = 1; + ls.back().created = 2; + ls.back().last_created = 3; + ls.back().last_destroyed = 4; + ls.back().current_parent_since = 5; + ls.back().snaps[123].snapid = 7; + ls.back().snaps[123].ino = 8; + ls.back().snaps[123].stamp = utime_t(9, 10); + ls.back().snaps[123].name = "name1"; + ls.back().past_parents[12].ino = 12; + ls.back().past_parents[12].first = 3; + + ls.back().past_parent_snaps.insert(5); + ls.back().past_parent_snaps.insert(6); + ls.back().last_modified = utime_t(9, 10); + ls.back().change_attr++; + return ls; } diff --git a/src/mds/snap.h b/src/mds/snap.h index b78fd8c3fdc8..621922e3d14a 100644 --- a/src/mds/snap.h +++ b/src/mds/snap.h @@ -34,7 +34,7 @@ struct SnapInfo { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::string_view get_long_name() const; @@ -66,7 +66,7 @@ struct snaplink_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); inodeno_t ino; snapid_t first; @@ -88,7 +88,7 @@ struct sr_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); snapid_t seq = 0; // basically, a version/seq # for changes to _this_ realm. snapid_t created = 0; // when this realm was created. diff --git a/src/messages/MClientReply.h b/src/messages/MClientReply.h index 0b8a7731c00c..19af4377bbdc 100644 --- a/src/messages/MClientReply.h +++ b/src/messages/MClientReply.h @@ -324,11 +324,13 @@ public: f->dump_unsigned("created_ino", created_ino); f->dump_stream("delegated_inos") << delegated_inos; } - static void generate_test_instances(std::list& ls) { - ls.push_back(new openc_response_t); - ls.push_back(new openc_response_t); - ls.back()->created_ino = 1; - ls.back()->delegated_inos.insert(1, 10); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(openc_response_t{}); + ls.push_back(openc_response_t{}); + ls.back().created_ino = 1; + ls.back().delegated_inos.insert(1, 10); + return ls; } } __attribute__ ((__may_alias__)); WRITE_CLASS_ENCODER(openc_response_t) diff --git a/src/messages/MClientRequest.h b/src/messages/MClientRequest.h index cb9a888b0bed..a1e4bd48cacc 100644 --- a/src/messages/MClientRequest.h +++ b/src/messages/MClientRequest.h @@ -65,11 +65,13 @@ struct SnapPayload { f->dump_string(i.first.c_str(), i.second); } } - static void generate_test_instances(std::list &o) { - o.push_back(new SnapPayload); - o.push_back(new SnapPayload); - o.back()->metadata["key1"] = "val1"; - o.back()->metadata["key2"] = "val2"; + static std::list generate_test_instances() { + std::list o; + o.push_back(SnapPayload{}); + o.push_back(SnapPayload{}); + o.back().metadata["key1"] = "val1"; + o.back().metadata["key2"] = "val2"; + return o; } }; @@ -120,11 +122,13 @@ public: f->dump_unsigned("dname_len", item.dname_len); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new Release); - ls.push_back(new Release); - ls.back()->item.dname_len = 4; - ls.back()->dname = "test"; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(Release{}); + ls.push_back(Release{}); + ls.back().item.dname_len = 4; + ls.back().dname = "test"; + return ls; } }; mutable std::vector releases; /* XXX HACK! */ diff --git a/src/messages/MMDSBeacon.h b/src/messages/MMDSBeacon.h index 526285aae8c9..b3b982575d3e 100644 --- a/src/messages/MMDSBeacon.h +++ b/src/messages/MMDSBeacon.h @@ -170,12 +170,14 @@ struct MDSHealthMetric f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MDSHealthMetric()); - ls.back()->type = MDS_HEALTH_CACHE_OVERSIZED; - ls.push_back(new MDSHealthMetric(MDS_HEALTH_TRIM, HEALTH_WARN, "MDS is behind on trimming")); - ls.back()->metadata["mds"] = "a"; - ls.back()->metadata["num"] = "1"; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MDSHealthMetric()); + ls.back().type = MDS_HEALTH_CACHE_OVERSIZED; + ls.push_back(MDSHealthMetric(MDS_HEALTH_TRIM, HEALTH_WARN, "MDS is behind on trimming")); + ls.back().metadata["mds"] = "a"; + ls.back().metadata["num"] = "1"; + return ls; } bool operator==(MDSHealthMetric const &other) const @@ -220,11 +222,13 @@ struct MDSHealth f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MDSHealth); - ls.push_back(new MDSHealth); - ls.back()->metrics.push_back(MDSHealthMetric(MDS_HEALTH_TRIM, HEALTH_WARN, + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MDSHealth{}); + ls.push_back(MDSHealth{}); + ls.back().metrics.push_back(MDSHealthMetric(MDS_HEALTH_TRIM, HEALTH_WARN, "MDS is behind on trimming")); + return ls; } bool operator==(MDSHealth const &other) const diff --git a/src/messages/MMDSCacheRejoin.h b/src/messages/MMDSCacheRejoin.h index f9ce46303b96..022df4e5d0cc 100644 --- a/src/messages/MMDSCacheRejoin.h +++ b/src/messages/MMDSCacheRejoin.h @@ -70,9 +70,11 @@ public: f->dump_int("nestlock", nestlock); f->dump_int("dftlock", dftlock); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new inode_strong); - ls.push_back(new inode_strong(1, 2, 3, 4, 5)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(inode_strong{}); + ls.push_back(inode_strong(1, 2, 3, 4, 5)); + return ls; } }; WRITE_CLASS_ENCODER(inode_strong) @@ -92,9 +94,11 @@ public: decode(nonce, bl); decode(dir_rep, bl); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new dirfrag_strong); - ls.push_back(new dirfrag_strong(1, 2)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(dirfrag_strong{}); + ls.push_back(dirfrag_strong(1, 2)); + return ls; } void dump(ceph::Formatter *f) const { f->dump_unsigned("nonce", nonce); @@ -137,9 +141,11 @@ public: decode(lock, bl); decode(alternate_name, bl); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new dn_strong); - ls.push_back(new dn_strong(1, "alternate_name", 2, 3, 4, 5, 6)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(dn_strong{}); + ls.push_back(dn_strong(1, "alternate_name", 2, 3, 4, 5, 6)); + return ls; } void dump(ceph::Formatter *f) const { f->dump_unsigned("first", first); @@ -193,9 +199,11 @@ public: decode(referent_ino, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new dn_strong_new); - ls.push_back(new dn_strong_new(1, "alternate_name", 2, 3, 4, 5, 6, 7)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(dn_strong_new{}); + ls.push_back(dn_strong_new(1, "alternate_name", 2, 3, 4, 5, 6, 7)); + return ls; } void dump(ceph::Formatter *f) const { f->dump_unsigned("first", first); diff --git a/src/messages/MMgrReport.h b/src/messages/MMgrReport.h index e81282dc1a06..9fc8c177ac54 100644 --- a/src/messages/MMgrReport.h +++ b/src/messages/MMgrReport.h @@ -84,16 +84,18 @@ public: f->dump_int("priority", priority); f->dump_int("unit", unit); } - static void generate_test_instances(std::list& ls) + static std::list generate_test_instances() { - ls.push_back(new PerfCounterType); - ls.push_back(new PerfCounterType); - ls.back()->path = "mycounter"; - ls.back()->description = "mycounter description"; - ls.back()->nick = "mycounter nick"; - ls.back()->type = PERFCOUNTER_COUNTER; - ls.back()->priority = PerfCountersBuilder::PRIO_CRITICAL; - ls.back()->unit = UNIT_BYTES; + std::list ls; + ls.push_back(PerfCounterType{}); + ls.push_back(PerfCounterType{}); + ls.back().path = "mycounter"; + ls.back().description = "mycounter description"; + ls.back().nick = "mycounter nick"; + ls.back().type = PERFCOUNTER_COUNTER; + ls.back().priority = PerfCountersBuilder::PRIO_CRITICAL; + ls.back().unit = UNIT_BYTES; + return ls; } }; WRITE_CLASS_ENCODER(PerfCounterType) diff --git a/src/mgr/DaemonHealthMetric.h b/src/mgr/DaemonHealthMetric.h index 2bc382dde409..b4b8c9d3196b 100644 --- a/src/mgr/DaemonHealthMetric.h +++ b/src/mgr/DaemonHealthMetric.h @@ -74,9 +74,11 @@ public: f->dump_int("n1", get_n1()); f->dump_int("n2", get_n2()); } - static void generate_test_instances(std::list& o) { - o.push_back(new DaemonHealthMetric(daemon_metric::SLOW_OPS, 1)); - o.push_back(new DaemonHealthMetric(daemon_metric::PENDING_CREATING_PGS, 1, 2)); + static std::list generate_test_instances() { + std::list o; + o.push_back(DaemonHealthMetric(daemon_metric::SLOW_OPS, 1)); + o.push_back(DaemonHealthMetric(daemon_metric::PENDING_CREATING_PGS, 1, 2)); + return o; } std::string get_type_name() const { return daemon_metric_name(get_type()); diff --git a/src/mgr/MDSPerfMetricTypes.h b/src/mgr/MDSPerfMetricTypes.h index 99f9cdcaed5c..e11b9f4480b2 100644 --- a/src/mgr/MDSPerfMetricTypes.h +++ b/src/mgr/MDSPerfMetricTypes.h @@ -397,11 +397,13 @@ struct MDSPerfMetricReport { } f->close_section(); } - static void generate_test_instances(std::list &o) { - o.push_back(new MDSPerfMetricReport); - o.push_back(new MDSPerfMetricReport); - o.back()->reports.emplace(MDSPerfMetricQuery(), MDSPerfMetrics()); - o.back()->rank_metrics_delayed.insert(1); + static std::list generate_test_instances() { + std::list o; + o.push_back(MDSPerfMetricReport{}); + o.push_back(MDSPerfMetricReport{}); + o.back().reports.emplace(MDSPerfMetricQuery(), MDSPerfMetrics()); + o.back().rank_metrics_delayed.insert(1); + return o; } }; diff --git a/src/mgr/MetricTypes.h b/src/mgr/MetricTypes.h index cd6a2de9c21d..ec317db7759a 100644 --- a/src/mgr/MetricTypes.h +++ b/src/mgr/MetricTypes.h @@ -43,8 +43,10 @@ struct OSDMetricPayload { } f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new OSDMetricPayload()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(OSDMetricPayload()); + return ls; } }; @@ -66,8 +68,10 @@ struct MDSMetricPayload { void dump(ceph::Formatter *f) const { metric_report.dump(f); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MDSMetricPayload()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MDSMetricPayload()); + return ls; } }; @@ -176,9 +180,11 @@ struct MetricReportMessage { } f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MetricReportMessage(OSDMetricPayload())); - ls.push_back(new MetricReportMessage(MDSMetricPayload())); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MetricReportMessage(OSDMetricPayload())); + ls.push_back(MetricReportMessage(MDSMetricPayload())); + return ls; } }; @@ -236,8 +242,10 @@ struct MDSConfigPayload { } f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MDSConfigPayload); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MDSConfigPayload{}); + return ls; } }; diff --git a/src/mgr/MgrCap.cc b/src/mgr/MgrCap.cc index 1563516a9be5..1d10b13ab5c8 100644 --- a/src/mgr/MgrCap.cc +++ b/src/mgr/MgrCap.cc @@ -385,26 +385,28 @@ void MgrCap::dump(ceph::Formatter *f) const { f->dump_string("text", text); } -void MgrCap::generate_test_instances(std::list& ls) { - ls.push_back(new MgrCap); - ls.push_back(new MgrCap); - ls.back()->parse("allow *"); - ls.push_back(new MgrCap); - ls.back()->parse("allow rwx"); - ls.push_back(new MgrCap); - ls.back()->parse("allow service foo x"); - ls.push_back(new MgrCap); - ls.back()->parse("allow command bar x"); - ls.push_back(new MgrCap); - ls.back()->parse("allow service foo r, allow command bar x"); - ls.push_back(new MgrCap); - ls.back()->parse("allow command bar with k1=v1 x"); - ls.push_back(new MgrCap); - ls.back()->parse("allow command bar with k1=v1 k2=v2 x"); - ls.push_back(new MgrCap); - ls.back()->parse("allow module bar with k1=v1 k2=v2 x"); - ls.push_back(new MgrCap); - ls.back()->parse("profile rbd pool=rbd"); +std::list MgrCap::generate_test_instances() { + std::list ls; + ls.push_back(MgrCap{}); + ls.push_back(MgrCap{}); + ls.back().parse("allow *"); + ls.push_back(MgrCap{}); + ls.back().parse("allow rwx"); + ls.push_back(MgrCap{}); + ls.back().parse("allow service foo x"); + ls.push_back(MgrCap{}); + ls.back().parse("allow command bar x"); + ls.push_back(MgrCap{}); + ls.back().parse("allow service foo r, allow command bar x"); + ls.push_back(MgrCap{}); + ls.back().parse("allow command bar with k1=v1 x"); + ls.push_back(MgrCap{}); + ls.back().parse("allow command bar with k1=v1 k2=v2 x"); + ls.push_back(MgrCap{}); + ls.back().parse("allow module bar with k1=v1 k2=v2 x"); + ls.push_back(MgrCap{}); + ls.back().parse("profile rbd pool=rbd"); + return ls; } // grammar diff --git a/src/mgr/MgrCap.h b/src/mgr/MgrCap.h index 699c6589e297..199700d16ef7 100644 --- a/src/mgr/MgrCap.h +++ b/src/mgr/MgrCap.h @@ -195,7 +195,7 @@ struct MgrCap { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(MgrCap) diff --git a/src/mgr/OSDPerfMetricTypes.h b/src/mgr/OSDPerfMetricTypes.h index aba27f284a42..6345c8891779 100644 --- a/src/mgr/OSDPerfMetricTypes.h +++ b/src/mgr/OSDPerfMetricTypes.h @@ -77,16 +77,18 @@ struct OSDPerfMetricSubKeyDescriptor { f->dump_string("regex", regex_str); } - static void generate_test_instances(std::list& o) { - o.push_back(new OSDPerfMetricSubKeyDescriptor()); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::CLIENT_ID, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::CLIENT_ADDRESS, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::POOL_ID, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::NAMESPACE, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::OSD_ID, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::PG_ID, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::OBJECT_NAME, ".*")); - o.push_back(new OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::SNAP_ID, ".*")); + static std::list generate_test_instances() { + std::list o; + o.push_back(OSDPerfMetricSubKeyDescriptor()); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::CLIENT_ID, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::CLIENT_ADDRESS, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::POOL_ID, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::NAMESPACE, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::OSD_ID, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::PG_ID, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::OBJECT_NAME, ".*")); + o.push_back(OSDPerfMetricSubKeyDescriptor(OSDPerfMetricSubKeyType::SNAP_ID, ".*")); + return o; } }; WRITE_CLASS_DENC(OSDPerfMetricSubKeyDescriptor) @@ -206,17 +208,19 @@ struct PerformanceCounterDescriptor { f->dump_unsigned("type", static_cast(type)); } - static void generate_test_instances(std::list& o) { - o.push_back(new PerformanceCounterDescriptor()); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::OPS)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::WRITE_OPS)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::READ_OPS)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::BYTES)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::WRITE_BYTES)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::READ_BYTES)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::LATENCY)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::WRITE_LATENCY)); - o.push_back(new PerformanceCounterDescriptor(PerformanceCounterType::READ_LATENCY)); + static std::list generate_test_instances() { + std::list o; + o.push_back(PerformanceCounterDescriptor()); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::OPS)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::WRITE_OPS)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::READ_OPS)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::BYTES)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::WRITE_BYTES)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::READ_BYTES)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::LATENCY)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::WRITE_LATENCY)); + o.push_back(PerformanceCounterDescriptor(PerformanceCounterType::READ_LATENCY)); + return o; } void pack_counter(const PerformanceCounter &c, ceph::buffer::list *bl) const; @@ -347,20 +351,22 @@ struct OSDPerfMetricQuery { performance_counter_descriptors, f); } - static void generate_test_instances(std::list &o) { - o.push_back(new OSDPerfMetricQuery()); - o.push_back(new OSDPerfMetricQuery(OSDPerfMetricKeyDescriptor(), - PerformanceCounterDescriptors())); - o.push_back(new OSDPerfMetricQuery(OSDPerfMetricKeyDescriptor(), - PerformanceCounterDescriptors{ - PerformanceCounterType::WRITE_OPS, - PerformanceCounterType::READ_OPS, - PerformanceCounterType::BYTES, - PerformanceCounterType::WRITE_BYTES, - PerformanceCounterType::READ_BYTES, - PerformanceCounterType::LATENCY, - PerformanceCounterType::WRITE_LATENCY, - PerformanceCounterType::READ_LATENCY})); + static std::list generate_test_instances() { + std::list o; + o.push_back(OSDPerfMetricQuery()); + o.push_back(OSDPerfMetricQuery(OSDPerfMetricKeyDescriptor(), + PerformanceCounterDescriptors())); + o.push_back(OSDPerfMetricQuery(OSDPerfMetricKeyDescriptor(), + PerformanceCounterDescriptors{ + PerformanceCounterType::WRITE_OPS, + PerformanceCounterType::READ_OPS, + PerformanceCounterType::BYTES, + PerformanceCounterType::WRITE_BYTES, + PerformanceCounterType::READ_BYTES, + PerformanceCounterType::LATENCY, + PerformanceCounterType::WRITE_LATENCY, + PerformanceCounterType::READ_LATENCY})); + return o; } void get_performance_counter_descriptors( @@ -418,15 +424,17 @@ struct OSDPerfMetricReport { group_packed_performance_counters, f); } - static void generate_test_instances(std::list &o) { - o.push_back(new OSDPerfMetricReport); - o.push_back(new OSDPerfMetricReport); - o.back()->performance_counter_descriptors.push_back( + static std::list generate_test_instances() { + std::list o; + o.push_back(OSDPerfMetricReport{}); + o.push_back(OSDPerfMetricReport{}); + o.back().performance_counter_descriptors.push_back( PerformanceCounterDescriptor(PerformanceCounterType::OPS)); - o.back()->performance_counter_descriptors.push_back( + o.back().performance_counter_descriptors.push_back( PerformanceCounterDescriptor(PerformanceCounterType::WRITE_OPS)); - o.back()->performance_counter_descriptors.push_back( + o.back().performance_counter_descriptors.push_back( PerformanceCounterDescriptor(PerformanceCounterType::READ_OPS)); + return o; } }; WRITE_CLASS_DENC(OSDPerfMetricReport) diff --git a/src/mgr/ServiceMap.cc b/src/mgr/ServiceMap.cc index 1faee971db31..10d2cd9fc98e 100644 --- a/src/mgr/ServiceMap.cc +++ b/src/mgr/ServiceMap.cc @@ -58,13 +58,15 @@ void ServiceMap::Daemon::dump(Formatter *f) const f->close_section(); } -void ServiceMap::Daemon::generate_test_instances(std::list& ls) +auto ServiceMap::Daemon::generate_test_instances() -> std::list { - ls.push_back(new Daemon); - ls.push_back(new Daemon); - ls.back()->gid = 222; - ls.back()->metadata["this"] = "that"; - ls.back()->task_status["task1"] = "running"; + std::list ls; + ls.push_back(Daemon{}); + ls.push_back(Daemon{}); + ls.back().gid = 222; + ls.back().metadata["this"] = "that"; + ls.back().task_status["task1"] = "running"; + return ls; } // Service @@ -194,12 +196,14 @@ void ServiceMap::Service::dump(Formatter *f) const f->close_section(); } -void ServiceMap::Service::generate_test_instances(std::list& ls) +auto ServiceMap::Service::generate_test_instances() -> std::list { - ls.push_back(new Service); - ls.push_back(new Service); - ls.back()->daemons["one"].gid = 1; - ls.back()->daemons["two"].gid = 2; + std::list ls; + ls.push_back(Service{}); + ls.push_back(Service{}); + ls.back().daemons["one"].gid = 1; + ls.back().daemons["two"].gid = 2; + return ls; } // ServiceMap @@ -233,12 +237,14 @@ void ServiceMap::dump(Formatter *f) const f->close_section(); } -void ServiceMap::generate_test_instances(std::list& ls) +std::list ServiceMap::generate_test_instances() { - ls.push_back(new ServiceMap); - ls.push_back(new ServiceMap); - ls.back()->epoch = 123; - ls.back()->services["rgw"].daemons["one"].gid = 123; - ls.back()->services["rgw"].daemons["two"].gid = 344; - ls.back()->services["iscsi"].daemons["foo"].gid = 3222; + std::list ls; + ls.push_back(ServiceMap{}); + ls.push_back(ServiceMap{}); + ls.back().epoch = 123; + ls.back().services["rgw"].daemons["one"].gid = 123; + ls.back().services["rgw"].daemons["two"].gid = 344; + ls.back().services["iscsi"].daemons["foo"].gid = 3222; + return ls; } diff --git a/src/mgr/ServiceMap.h b/src/mgr/ServiceMap.h index 70fdf0f0082f..10f02620dd10 100644 --- a/src/mgr/ServiceMap.h +++ b/src/mgr/ServiceMap.h @@ -28,7 +28,7 @@ struct ServiceMap { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; struct Service { @@ -38,7 +38,7 @@ struct ServiceMap { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::string get_summary() const; bool has_running_tasks() const; @@ -54,7 +54,7 @@ struct ServiceMap { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::pair get_daemon(const std::string& service, const std::string& daemon) { diff --git a/src/mon/AuthMonitor.h b/src/mon/AuthMonitor.h index 0495e20c479c..c8860cf299b9 100644 --- a/src/mon/AuthMonitor.h +++ b/src/mon/AuthMonitor.h @@ -82,15 +82,17 @@ public: f->dump_int("auth_type", auth_type); f->dump_int("auth_data_len", auth_data.length()); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new Incremental); - ls.push_back(new Incremental); - ls.back()->inc_type = GLOBAL_ID; - ls.back()->max_global_id = 1234; - ls.push_back(new Incremental); - ls.back()->inc_type = AUTH_DATA; - ls.back()->auth_type = 12; - ls.back()->auth_data.append("foo"); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(Incremental{}); + ls.push_back(Incremental{}); + ls.back().inc_type = GLOBAL_ID; + ls.back().max_global_id = 1234; + ls.push_back(Incremental{}); + ls.back().inc_type = AUTH_DATA; + ls.back().auth_type = 12; + ls.back().auth_data.append("foo"); + return ls; } }; diff --git a/src/mon/ConnectionTracker.cc b/src/mon/ConnectionTracker.cc index d1a9edcab687..a80f91f2ff51 100644 --- a/src/mon/ConnectionTracker.cc +++ b/src/mon/ConnectionTracker.cc @@ -501,15 +501,17 @@ void ConnectionReport::dump(ceph::Formatter *f) const f->close_section(); // peer scores } -void ConnectionReport::generate_test_instances(std::list& o) +std::list ConnectionReport::generate_test_instances() { - o.push_back(new ConnectionReport); - o.push_back(new ConnectionReport); - o.back()->rank = 1; - o.back()->epoch = 2; - o.back()->epoch_version = 3; - o.back()->current[0] = true; - o.back()->history[0] = .4; + std::list o; + o.push_back(ConnectionReport{}); + o.push_back(ConnectionReport{}); + o.back().rank = 1; + o.back().epoch = 2; + o.back().epoch_version = 3; + o.back().current[0] = true; + o.back().history[0] = .4; + return o; } void ConnectionTracker::dump(ceph::Formatter *f) const @@ -528,15 +530,17 @@ void ConnectionTracker::dump(ceph::Formatter *f) const f->close_section(); // reports } -void ConnectionTracker::generate_test_instances(std::list& o) +std::list ConnectionTracker::generate_test_instances() { - o.push_back(new ConnectionTracker); - o.push_back(new ConnectionTracker); - ConnectionTracker *e = o.back(); - e->rank = 2; - e->epoch = 3; - e->version = 4; - e->peer_reports[0]; - e->peer_reports[1]; - e->my_reports = e->peer_reports[2]; + std::list o; + o.push_back(ConnectionTracker{}); + o.push_back(ConnectionTracker{}); + ConnectionTracker& e = o.back(); + e.rank = 2; + e.epoch = 3; + e.version = 4; + e.peer_reports[0]; + e.peer_reports[1]; + e.my_reports = e.peer_reports[2]; + return o; } diff --git a/src/mon/ConnectionTracker.h b/src/mon/ConnectionTracker.h index 31084d09e241..8f811c2a6289 100644 --- a/src/mon/ConnectionTracker.h +++ b/src/mon/ConnectionTracker.h @@ -47,7 +47,7 @@ struct ConnectionReport { friend std::ostream& operator<<(std::ostream&o, const ConnectionReport& c); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ConnectionReport); @@ -220,7 +220,7 @@ class ConnectionTracker { friend ConnectionReport *get_connection_reports(ConnectionTracker& ct); friend std::map *get_peer_reports(ConnectionTracker& ct); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ConnectionTracker); diff --git a/src/mon/CreatingPGs.h b/src/mon/CreatingPGs.h index 808a22b1567a..d21b6264bb98 100644 --- a/src/mon/CreatingPGs.h +++ b/src/mon/CreatingPGs.h @@ -83,16 +83,18 @@ struct creating_pgs_t { f->dump_object("pg_history", history); f->dump_object("past_intervals", past_intervals); } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_create_info); - o.back()->create_epoch = 10; - o.push_back(new pg_create_info); - o.back()->create_epoch = 1; - o.back()->create_stamp = utime_t(2, 3); - o.back()->up = {1, 2, 3}; - o.back()->up_primary = 1; - o.back()->acting = {1, 2, 3}; - o.back()->acting_primary = 1; + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_create_info{}); + o.back().create_epoch = 10; + o.push_back(pg_create_info{}); + o.back().create_epoch = 1; + o.back().create_stamp = utime_t(2, 3); + o.back().up = {1, 2, 3}; + o.back().up_primary = 1; + o.back().acting = {1, 2, 3}; + o.back().acting_primary = 1; + return o; } pg_create_info() @@ -227,18 +229,20 @@ struct creating_pgs_t { } f->close_section(); } - static void generate_test_instances(std::list& o) { - auto c = new creating_pgs_t; - c->last_scan_epoch = 17; - c->pgs.emplace(pg_t{42, 2}, pg_create_info(31, utime_t{891, 113})); - c->pgs.emplace(pg_t{44, 2}, pg_create_info(31, utime_t{891, 113})); - c->created_pools = {0, 1}; + static std::list generate_test_instances() { + std::list o; + auto c = creating_pgs_t{}; + c.last_scan_epoch = 17; + c.pgs.emplace(pg_t{42, 2}, pg_create_info(31, utime_t{891, 113})); + c.pgs.emplace(pg_t{44, 2}, pg_create_info(31, utime_t{891, 113})); + c.created_pools = {0, 1}; o.push_back(c); - c = new creating_pgs_t; - c->last_scan_epoch = 18; - c->pgs.emplace(pg_t{42, 3}, pg_create_info(31, utime_t{891, 113})); - c->created_pools = {}; + c = creating_pgs_t{}; + c.last_scan_epoch = 18; + c.pgs.emplace(pg_t{42, 3}, pg_create_info(31, utime_t{891, 113})); + c.created_pools = {}; o.push_back(c); + return o; } }; WRITE_CLASS_ENCODER_FEATURES(creating_pgs_t::pg_create_info) diff --git a/src/mon/MgrMap.h b/src/mon/MgrMap.h index a4ba431e2273..de6dde22a780 100644 --- a/src/mon/MgrMap.h +++ b/src/mon/MgrMap.h @@ -107,22 +107,24 @@ public: } f->close_section(); } - static void generate_test_instances(std::list& ls) + static std::list generate_test_instances() { - ls.push_back(new ModuleOption); - ls.push_back(new ModuleOption); - ls.back()->name = "name"; - ls.back()->type = Option::TYPE_STR; - ls.back()->level = Option::LEVEL_ADVANCED; - ls.back()->flags = Option::FLAG_RUNTIME; - ls.back()->default_value = "default_value"; - ls.back()->min = "min"; - ls.back()->max = "max"; - ls.back()->enum_allowed.insert("enum_allowed"); - ls.back()->desc = "desc"; - ls.back()->long_desc = "long_desc"; - ls.back()->tags.insert("tag"); - ls.back()->see_also.insert("see_also"); + std::list ls; + ls.push_back(ModuleOption{}); + ls.push_back(ModuleOption{}); + ls.back().name = "name"; + ls.back().type = Option::TYPE_STR; + ls.back().level = Option::LEVEL_ADVANCED; + ls.back().flags = Option::FLAG_RUNTIME; + ls.back().default_value = "default_value"; + ls.back().min = "min"; + ls.back().max = "max"; + ls.back().enum_allowed.insert("enum_allowed"); + ls.back().desc = "desc"; + ls.back().long_desc = "long_desc"; + ls.back().tags.insert("tag"); + ls.back().see_also.insert("see_also"); + return ls; } }; @@ -175,14 +177,16 @@ public: f->close_section(); } - static void generate_test_instances(std::list& ls) + static std::list generate_test_instances() { - ls.push_back(new ModuleInfo); - ls.push_back(new ModuleInfo); - ls.back()->name = "name"; - ls.back()->can_run = true; - ls.back()->error_string = "error_string"; - ls.back()->module_options["module_option"] = ModuleOption(); + std::list ls; + ls.push_back(ModuleInfo{}); + ls.push_back(ModuleInfo{}); + ls.back().name = "name"; + ls.back().can_run = true; + ls.back().error_string = "error_string"; + ls.back().module_options["module_option"] = ModuleOption(); + return ls; } }; @@ -249,11 +253,13 @@ public: encode_json("available_modules", available_modules, f); f->dump_unsigned("mgr_features", mgr_features); } - static void generate_test_instances(std::list& ls) + static std::list generate_test_instances() { - ls.push_back(new StandbyInfo(1, "a", {}, 0)); - ls.push_back(new StandbyInfo(2, "b", {}, 0)); - ls.push_back(new StandbyInfo(3, "c", {}, 0)); + std::list ls; + ls.push_back(StandbyInfo(1, "a", {}, 0)); + ls.push_back(StandbyInfo(2, "b", {}, 0)); + ls.push_back(StandbyInfo(3, "c", {}, 0)); + return ls; } bool have_module(const std::string &module_name) const @@ -633,9 +639,11 @@ public: f->close_section(); // active_clients } - static void generate_test_instances(std::list &l) + static std::list generate_test_instances() { - l.push_back(new MgrMap); + std::list l; + l.push_back(MgrMap{}); + return l; } void print_summary(ceph::Formatter *f, std::ostream *ss) const diff --git a/src/mon/MonCap.cc b/src/mon/MonCap.cc index 0d941f2c2820..ecec105fdeda 100644 --- a/src/mon/MonCap.cc +++ b/src/mon/MonCap.cc @@ -529,23 +529,25 @@ void MonCap::dump(Formatter *f) const f->dump_string("text", text); } -void MonCap::generate_test_instances(list& ls) +list MonCap::generate_test_instances() { - ls.push_back(new MonCap); - ls.push_back(new MonCap); - ls.back()->parse("allow *"); - ls.push_back(new MonCap); - ls.back()->parse("allow rwx"); - ls.push_back(new MonCap); - ls.back()->parse("allow service foo x"); - ls.push_back(new MonCap); - ls.back()->parse("allow command bar x"); - ls.push_back(new MonCap); - ls.back()->parse("allow service foo r, allow command bar x"); - ls.push_back(new MonCap); - ls.back()->parse("allow command bar with k1=v1 x"); - ls.push_back(new MonCap); - ls.back()->parse("allow command bar with k1=v1 k2=v2 x"); + list ls; + ls.push_back(MonCap{}); + ls.push_back(MonCap{}); + ls.back().parse("allow *"); + ls.push_back(MonCap{}); + ls.back().parse("allow rwx"); + ls.push_back(MonCap{}); + ls.back().parse("allow service foo x"); + ls.push_back(MonCap{}); + ls.back().parse("allow command bar x"); + ls.push_back(MonCap{}); + ls.back().parse("allow service foo r, allow command bar x"); + ls.push_back(MonCap{}); + ls.back().parse("allow command bar with k1=v1 x"); + ls.push_back(MonCap{}); + ls.back().parse("allow command bar with k1=v1 k2=v2 x"); + return ls; } // grammar diff --git a/src/mon/MonCap.h b/src/mon/MonCap.h index 45063dbed9e6..a7a3692790a0 100644 --- a/src/mon/MonCap.h +++ b/src/mon/MonCap.h @@ -185,7 +185,7 @@ struct MonCap { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); std::vector allowed_fs_names() const { std::vector ret; diff --git a/src/mon/MonCommand.h b/src/mon/MonCommand.h index 2421229c84d6..994ef178ea0f 100644 --- a/src/mon/MonCommand.h +++ b/src/mon/MonCommand.h @@ -62,14 +62,16 @@ struct MonCommand { f->dump_unsigned("flags", flags); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MonCommand); - ls.push_back(new MonCommand); - ls.back()->cmdstring = "foo"; - ls.back()->helpstring = "bar"; - ls.back()->module = "baz"; - ls.back()->req_perms = "quux"; - ls.back()->flags = FLAG_NOFORWARD; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MonCommand{}); + ls.push_back(MonCommand{}); + ls.back().cmdstring = "foo"; + ls.back().helpstring = "bar"; + ls.back().module = "baz"; + ls.back().req_perms = "quux"; + ls.back().flags = FLAG_NOFORWARD; + return ls; } /** diff --git a/src/mon/MonMap.cc b/src/mon/MonMap.cc index 128c28a3a279..533c3fd8d124 100644 --- a/src/mon/MonMap.cc +++ b/src/mon/MonMap.cc @@ -120,16 +120,18 @@ void mon_info_t::dump(ceph::Formatter *f) const encode_json("crush_location", crush_loc, f); } -void mon_info_t::generate_test_instances(list& ls) +list mon_info_t::generate_test_instances() { - ls.push_back(new mon_info_t); - ls.push_back(new mon_info_t); - ls.back()->name = "noname"; - ls.back()->public_addrs.parse("v1:1.2.3.4:567/890"); - ls.back()->priority = 1; - ls.back()->weight = 1.0; - ls.back()->crush_loc.emplace("root", "default"); - ls.back()->crush_loc.emplace("host", "foo"); + list ls; + ls.push_back(mon_info_t{}); + ls.push_back(mon_info_t{}); + ls.back().name = "noname"; + ls.back().public_addrs.parse("v1:1.2.3.4:567/890"); + ls.back().priority = 1; + ls.back().weight = 1.0; + ls.back().crush_loc.emplace("root", "default"); + ls.back().crush_loc.emplace("host", "foo"); + return ls; } namespace { struct rank_cmp { @@ -323,26 +325,27 @@ void MonMap::decode(ceph::buffer::list::const_iterator& p) DECODE_FINISH(p); } -void MonMap::generate_test_instances(list& o) +list MonMap::generate_test_instances() { - o.push_back(new MonMap); - o.push_back(new MonMap); - o.back()->epoch = 1; - o.back()->last_changed = utime_t(123, 456); - o.back()->created = utime_t(789, 101112); - o.back()->add("one", entity_addrvec_t()); - - MonMap *m = new MonMap; + list o; + o.push_back(MonMap{}); + o.push_back(MonMap{}); + o.back().epoch = 1; + o.back().last_changed = utime_t(123, 456); + o.back().created = utime_t(789, 101112); + o.back().add("one", entity_addrvec_t()); + + MonMap m; { - m->epoch = 1; - m->last_changed = utime_t(123, 456); + m.epoch = 1; + m.last_changed = utime_t(123, 456); entity_addrvec_t empty_addr_one = entity_addrvec_t(entity_addr_t()); empty_addr_one.v[0].set_nonce(1); - m->add("empty_addr_one", empty_addr_one); + m.add("empty_addr_one", empty_addr_one); entity_addrvec_t empty_addr_two = entity_addrvec_t(entity_addr_t()); empty_addr_two.v[0].set_nonce(2); - m->add("empty_addr_two", empty_addr_two); + m.add("empty_addr_two", empty_addr_two); const char *local_pub_addr_s = "127.0.1.2"; @@ -350,11 +353,12 @@ void MonMap::generate_test_instances(list& o) entity_addrvec_t local_pub_addr; local_pub_addr.parse(local_pub_addr_s, &end_p); - m->add(mon_info_t("filled_pub_addr", entity_addrvec_t(local_pub_addr), 1, 1)); + m.add(mon_info_t("filled_pub_addr", entity_addrvec_t(local_pub_addr), 1, 1)); - m->add("empty_addr_zero", entity_addrvec_t()); + m.add("empty_addr_zero", entity_addrvec_t()); } - o.push_back(m); + o.push_back(std::move(m)); + return o; } // read from/write to a file diff --git a/src/mon/MonMap.h b/src/mon/MonMap.h index 46f6e9b3c409..158792c9e2b0 100644 --- a/src/mon/MonMap.h +++ b/src/mon/MonMap.h @@ -89,7 +89,7 @@ struct mon_info_t { void decode(ceph::buffer::list::const_iterator& p); void print(std::ostream& out) const; void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(mon_info_t) @@ -485,7 +485,7 @@ public: void check_health(health_check_map_t *checks) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); protected: /** * build a monmap from a list of entity_addrvec_t's diff --git a/src/mon/MonitorDBStore.h b/src/mon/MonitorDBStore.h index a0718f439b64..32df36ea3fcf 100644 --- a/src/mon/MonitorDBStore.h +++ b/src/mon/MonitorDBStore.h @@ -119,9 +119,11 @@ class MonitorDBStore 4 + bl.length(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new Op); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(Op{}); // we get coverage here from the Transaction instances + return ls; } }; @@ -205,16 +207,18 @@ class MonitorDBStore DECODE_FINISH(bl); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new Transaction); - ls.push_back(new Transaction); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(Transaction{}); + ls.push_back(Transaction{}); ceph::buffer::list bl; bl.append("value"); - ls.back()->put("prefix", "key", bl); - ls.back()->erase("prefix2", "key2"); - ls.back()->erase_range("prefix3", "key3", "key4"); - ls.back()->compact_prefix("prefix3"); - ls.back()->compact_range("prefix4", "from", "to"); + ls.back().put("prefix", "key", bl); + ls.back().erase("prefix2", "key2"); + ls.back().erase_range("prefix3", "key3", "key4"); + ls.back().compact_prefix("prefix3"); + ls.back().compact_range("prefix4", "from", "to"); + return ls; } void append(TransactionRef other) { diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 486e38de7f6c..3a6a7b6c1b07 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -194,9 +194,11 @@ void PGMapDigest::dump(ceph::Formatter *f) const f->close_section(); } -void PGMapDigest::generate_test_instances(list& ls) +list PGMapDigest::generate_test_instances() { - ls.push_back(new PGMapDigest); + list ls; + ls.push_back(PGMapDigest{}); + return ls; } inline std::string percentify(const float& a) { @@ -1113,25 +1115,27 @@ void PGMap::Incremental::dump(ceph::Formatter *f) const f->close_section(); } -void PGMap::Incremental::generate_test_instances(list& o) +list PGMap::Incremental::generate_test_instances() { - o.push_back(new Incremental); - o.push_back(new Incremental); - o.back()->version = 1; - o.back()->stamp = utime_t(123,345); - o.push_back(new Incremental); - o.back()->version = 2; - o.back()->pg_stat_updates[pg_t(1,2)] = pg_stat_t(); - o.back()->osd_stat_updates[5] = osd_stat_t(); - o.push_back(new Incremental); - o.back()->version = 3; - o.back()->osdmap_epoch = 1; - o.back()->pg_scan = 2; - o.back()->pg_stat_updates[pg_t(4,5)] = pg_stat_t(); - o.back()->osd_stat_updates[6] = osd_stat_t(); - o.back()->pg_remove.insert(pg_t(1,2)); - o.back()->osd_stat_rm.insert(5); - o.back()->pool_statfs_updates[std::make_pair(1234,4)] = store_statfs_t(); + list o; + o.push_back(Incremental{}); + o.push_back(Incremental{}); + o.back().version = 1; + o.back().stamp = utime_t(123,345); + o.push_back(Incremental{}); + o.back().version = 2; + o.back().pg_stat_updates[pg_t(1,2)] = pg_stat_t(); + o.back().osd_stat_updates[5] = osd_stat_t(); + o.push_back(Incremental{}); + o.back().version = 3; + o.back().osdmap_epoch = 1; + o.back().pg_scan = 2; + o.back().pg_stat_updates[pg_t(4,5)] = pg_stat_t(); + o.back().osd_stat_updates[6] = osd_stat_t(); + o.back().pg_remove.insert(pg_t(1,2)); + o.back().osd_stat_rm.insert(5); + o.back().pool_statfs_updates[std::make_pair(1234,4)] = store_statfs_t(); + return o; } // -- @@ -2257,21 +2261,19 @@ void PGMap::clear_delta() stamp_delta = utime_t(); } -void PGMap::generate_test_instances(list& o) +list PGMap::generate_test_instances() { - o.push_back(new PGMap); - list inc; - Incremental::generate_test_instances(inc); - delete inc.front(); + list o; + o.push_back(PGMap{}); + list inc = Incremental::generate_test_instances(); inc.pop_front(); while (!inc.empty()) { - PGMap *pmp = new PGMap(); - *pmp = *o.back(); + PGMap pmp = o.back(); o.push_back(pmp); - o.back()->apply_incremental(NULL, *inc.front()); - delete inc.front(); + o.back().apply_incremental(nullptr, inc.front()); inc.pop_front(); } + return o; } void PGMap::get_filtered_pg_stats(uint64_t state, int64_t poolid, int64_t osdid, diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 7ed6c63c12b8..2ce76be85534 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -82,12 +82,14 @@ public: f->dump_int("up_not_acting", up_not_acting); f->dump_int("primary", primary); } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_count); - o.push_back(new pg_count); - o.back()->acting = 1; - o.back()->up_not_acting = 2; - o.back()->primary = 3; + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_count{}); + o.push_back(pg_count{}); + o.back().acting = 1; + o.back().up_not_acting = 2; + o.back().primary = 3; + return o; } }; mempool::pgmap::unordered_map num_pg_by_osd; @@ -248,7 +250,7 @@ public: void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(PGMapDigest::pg_count); WRITE_CLASS_ENCODER_FEATURES(PGMapDigest); @@ -318,7 +320,7 @@ public: osd_stat_updates.erase(osd); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); Incremental() : version(0), osdmap_epoch(0), pg_scan(0) {} }; @@ -524,7 +526,7 @@ public: health_check_map_t *checks) const; void print_summary(ceph::Formatter *f, std::ostream *out) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(PGMap) diff --git a/src/mon/health_check.h b/src/mon/health_check.h index e6d1d7595510..28ada82dbc2b 100644 --- a/src/mon/health_check.h +++ b/src/mon/health_check.h @@ -58,14 +58,16 @@ struct health_check_t { } } - static void generate_test_instances(std::list& ls) { - ls.push_back(new health_check_t); - ls.back()->severity = HEALTH_WARN; - ls.push_back(new health_check_t); - ls.back()->severity = HEALTH_ERR; - ls.back()->summary = "summarization"; - ls.back()->detail = {"one", "two", "three"}; - ls.back()->count = 42; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(health_check_t{}); + ls.back().severity = HEALTH_WARN; + ls.push_back(health_check_t{}); + ls.back().severity = HEALTH_ERR; + ls.back().summary = "summarization"; + ls.back().detail = {"one", "two", "three"}; + ls.back().count = 42; + return ls; } }; WRITE_CLASS_DENC(health_check_t) @@ -98,14 +100,16 @@ struct health_mute_t { f->dump_int("count", count); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new health_mute_t); - ls.push_back(new health_mute_t); - ls.back()->code = "OSD_DOWN"; - ls.back()->ttl = utime_t(1, 2); - ls.back()->sticky = true; - ls.back()->summary = "foo bar"; - ls.back()->count = 2; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(health_mute_t{}); + ls.push_back(health_mute_t{}); + ls.back().code = "OSD_DOWN"; + ls.back().ttl = utime_t(1, 2); + ls.back().sticky = true; + ls.back().summary = "foo bar"; + ls.back().count = 2; + return ls; } }; WRITE_CLASS_DENC(health_mute_t) @@ -125,20 +129,23 @@ struct health_check_map_t { } } - static void generate_test_instances(std::list& ls) { - ls.push_back(new health_check_map_t); - ls.push_back(new health_check_map_t); + static std::list generate_test_instances() { + std::list ls; + + ls.push_back(health_check_map_t{}); + ls.push_back(health_check_map_t{}); { - auto& d = ls.back()->add("FOO", HEALTH_WARN, "foo", 2); + auto& d = ls.back().add("FOO", HEALTH_WARN, "foo", 2); d.detail.push_back("a"); d.detail.push_back("b"); } { - auto& d = ls.back()->add("BAR", HEALTH_ERR, "bar!", 3); + auto& d = ls.back().add("BAR", HEALTH_ERR, "bar!", 3); d.detail.push_back("c"); d.detail.push_back("d"); d.detail.push_back("e"); } + return ls; } void clear() { diff --git a/src/mon/mon_types.h b/src/mon/mon_types.h index 87ad69be92cd..bff2e1e298d3 100644 --- a/src/mon/mon_types.h +++ b/src/mon/mon_types.h @@ -118,13 +118,15 @@ struct FeatureMap { } } - static void generate_test_instances(std::list& ls) { - ls.push_back(new FeatureMap); - ls.push_back(new FeatureMap); - ls.back()->add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_UID); - ls.back()->add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_NOSRCADDR); - ls.back()->add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_PGID64); - ls.back()->add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_INCSUBOSDMAP); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(FeatureMap{}); + ls.push_back(FeatureMap{}); + ls.back().add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_UID); + ls.back().add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_NOSRCADDR); + ls.back().add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_PGID64); + ls.back().add(CEPH_ENTITY_TYPE_OSD, CEPH_FEATURE_INCSUBOSDMAP); + return ls; } }; WRITE_CLASS_ENCODER(FeatureMap) @@ -175,14 +177,16 @@ struct MonitorDBStoreStats { DECODE_FINISH(p); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new MonitorDBStoreStats); - ls.push_back(new MonitorDBStoreStats); - ls.back()->bytes_total = 1024*1024; - ls.back()->bytes_sst = 512*1024; - ls.back()->bytes_log = 256*1024; - ls.back()->bytes_misc = 256*1024; - ls.back()->last_update = utime_t(); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(MonitorDBStoreStats{}); + ls.push_back(MonitorDBStoreStats{}); + ls.back().bytes_total = 1024*1024; + ls.back().bytes_sst = 512*1024; + ls.back().bytes_log = 256*1024; + ls.back().bytes_misc = 256*1024; + ls.back().last_update = utime_t(); + return ls; } }; WRITE_CLASS_ENCODER(MonitorDBStoreStats) @@ -206,19 +210,21 @@ struct DataStats { store_stats.dump(f); f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new DataStats); - ls.push_back(new DataStats); - ls.back()->fs_stats.byte_total = 1024*1024; - ls.back()->fs_stats.byte_used = 512*1024; - ls.back()->fs_stats.byte_avail = 256*1024; - ls.back()->fs_stats.avail_percent = 50; - ls.back()->last_update = utime_t(); - ls.back()->store_stats.bytes_total = 1024*1024; - ls.back()->store_stats.bytes_sst = 512*1024; - ls.back()->store_stats.bytes_log = 256*1024; - ls.back()->store_stats.bytes_misc = 256*1024; - ls.back()->store_stats.last_update = utime_t(); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(DataStats{}); + ls.push_back(DataStats{}); + ls.back().fs_stats.byte_total = 1024*1024; + ls.back().fs_stats.byte_used = 512*1024; + ls.back().fs_stats.byte_avail = 256*1024; + ls.back().fs_stats.avail_percent = 50; + ls.back().last_update = utime_t(); + ls.back().store_stats.bytes_total = 1024*1024; + ls.back().store_stats.bytes_sst = 512*1024; + ls.back().store_stats.bytes_log = 256*1024; + ls.back().store_stats.bytes_misc = 256*1024; + ls.back().store_stats.last_update = utime_t(); + return ls; } void encode(ceph::buffer::list &bl) const { @@ -287,11 +293,13 @@ struct ScrubResult { f->dump_unsigned(p->first.c_str(), p->second); f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new ScrubResult); - ls.push_back(new ScrubResult); - ls.back()->prefix_crc["foo"] = 123; - ls.back()->prefix_keys["bar"] = 456; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(ScrubResult{}); + ls.push_back(ScrubResult{}); + ls.back().prefix_crc["foo"] = 123; + ls.back().prefix_keys["bar"] = 456; + return ls; } }; WRITE_CLASS_ENCODER(ScrubResult) @@ -498,12 +506,14 @@ public: DECODE_FINISH(p); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new mon_feature_t); - ls.push_back(new mon_feature_t); - ls.back()->features = 1; - ls.push_back(new mon_feature_t); - ls.back()->features = 2; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(mon_feature_t{}); + ls.push_back(mon_feature_t{}); + ls.back().features = 1; + ls.push_back(mon_feature_t{}); + ls.back().features = 2; + return ls; } }; WRITE_CLASS_ENCODER(mon_feature_t) @@ -727,12 +737,14 @@ struct ProgressEvent { f->dump_float("progress", progress); f->dump_bool("add_to_ceph_s", add_to_ceph_s); } - static void generate_test_instances(std::list& o) { - o.push_back(new ProgressEvent); - o.push_back(new ProgressEvent); - o.back()->message = "test message"; - o.back()->progress = 0.5; - o.back()->add_to_ceph_s = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(ProgressEvent{}); + o.push_back(ProgressEvent{}); + o.back().message = "test message"; + o.back().progress = 0.5; + o.back().add_to_ceph_s = true; + return o; } }; WRITE_CLASS_ENCODER(ProgressEvent) @@ -787,20 +799,22 @@ struct PoolAvailability { DECODE_FINISH(p); } - static void generate_test_instances(std::list& o) { - o.push_back(new PoolAvailability); - o.back()->started_at = utime_t(123, 456); - o.back()->last_uptime = utime_t(123, 456); - o.back()->last_downtime = utime_t(123, 456); - o.push_back(new PoolAvailability); - o.back()->pool_name = "foo"; - o.back()->started_at = utime_t(123, 456); - o.back()->uptime = 100; - o.back()->last_uptime = utime_t(123, 456); - o.back()->downtime = 15; - o.back()->last_downtime = utime_t(123, 456); - o.back()->num_failures = 2; - o.back()->is_avail = true; + static std::list generate_test_instances() { + std::list o; + o.push_back(PoolAvailability{}); + o.back().started_at = utime_t(123, 456); + o.back().last_uptime = utime_t(123, 456); + o.back().last_downtime = utime_t(123, 456); + o.push_back(PoolAvailability{}); + o.back().pool_name = "foo"; + o.back().started_at = utime_t(123, 456); + o.back().uptime = 100; + o.back().last_uptime = utime_t(123, 456); + o.back().downtime = 15; + o.back().last_downtime = utime_t(123, 456); + o.back().num_failures = 2; + o.back().is_avail = true; + return o; } }; WRITE_CLASS_ENCODER(PoolAvailability) diff --git a/src/msg/msg_types.cc b/src/msg/msg_types.cc index 8d94c955527c..1f93655ed895 100644 --- a/src/msg/msg_types.cc +++ b/src/msg/msg_types.cc @@ -63,39 +63,45 @@ void entity_inst_t::dump(ceph::Formatter *f) const f->dump_object("addr", addr); } -void entity_name_t::generate_test_instances(std::list& o) +std::list entity_name_t::generate_test_instances() { - o.push_back(new entity_name_t(entity_name_t::MON())); - o.push_back(new entity_name_t(entity_name_t::MON(1))); - o.push_back(new entity_name_t(entity_name_t::OSD(1))); - o.push_back(new entity_name_t(entity_name_t::CLIENT(1))); + std::list o; + o.push_back(entity_name_t(entity_name_t::MON())); + o.push_back(entity_name_t(entity_name_t::MON(1))); + o.push_back(entity_name_t(entity_name_t::OSD(1))); + o.push_back(entity_name_t(entity_name_t::CLIENT(1))); + return o; } -void entity_addr_t::generate_test_instances(std::list& o) +std::list entity_addr_t::generate_test_instances() { - o.push_back(new entity_addr_t()); - entity_addr_t *a = new entity_addr_t(); - a->set_nonce(1); + std::list o; + o.push_back(entity_addr_t()); + entity_addr_t a; + a.set_nonce(1); o.push_back(a); - entity_addr_t *b = new entity_addr_t(); - b->set_type(entity_addr_t::TYPE_LEGACY); - b->set_nonce(5); - b->set_family(AF_INET); - b->set_in4_quad(0, 127); - b->set_in4_quad(1, 0); - b->set_in4_quad(2, 1); - b->set_in4_quad(3, 2); - b->set_port(2); + entity_addr_t b; + b.set_type(entity_addr_t::TYPE_LEGACY); + b.set_nonce(5); + b.set_family(AF_INET); + b.set_in4_quad(0, 127); + b.set_in4_quad(1, 0); + b.set_in4_quad(2, 1); + b.set_in4_quad(3, 2); + b.set_port(2); o.push_back(b); + return o; } -void entity_inst_t::generate_test_instances(std::list& o) +std::list entity_inst_t::generate_test_instances() { - o.push_back(new entity_inst_t()); + std::list o; + o.push_back(entity_inst_t()); entity_name_t name; entity_addr_t addr; - entity_inst_t *a = new entity_inst_t(name, addr); - o.push_back(a); + entity_inst_t a(name, addr); + o.push_back(std::move(a)); + return o; } bool entity_addr_t::parse(const std::string_view s, int default_type) @@ -399,14 +405,16 @@ void entity_addrvec_t::dump(ceph::Formatter *f) const f->close_section(); } -void entity_addrvec_t::generate_test_instances(std::list& ls) +std::list entity_addrvec_t::generate_test_instances() { - ls.push_back(new entity_addrvec_t()); - ls.push_back(new entity_addrvec_t()); - ls.back()->v.push_back(entity_addr_t()); - ls.push_back(new entity_addrvec_t()); - ls.back()->v.push_back(entity_addr_t()); - ls.back()->v.push_back(entity_addr_t()); + std::list ls; + ls.push_back(entity_addrvec_t()); + ls.push_back(entity_addrvec_t()); + ls.back().v.push_back(entity_addr_t()); + ls.push_back(entity_addrvec_t()); + ls.back().v.push_back(entity_addr_t()); + ls.back().v.push_back(entity_addr_t()); + return ls; } std::string entity_addr_t::ip_only_to_str() const diff --git a/src/msg/msg_types.h b/src/msg/msg_types.h index d2d4e0564774..79c849b56f9c 100644 --- a/src/msg/msg_types.h +++ b/src/msg/msg_types.h @@ -110,7 +110,7 @@ public: } } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(entity_name_t) @@ -559,7 +559,7 @@ struct entity_addr_t { void dump(ceph::Formatter *f) const; std::string fmt_print() const; ///< used by the default fmt formatter - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(entity_addr_t) @@ -684,7 +684,7 @@ struct entity_addrvec_t { void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool legacy_equals(const entity_addrvec_t& o) const { if (v == o.v) { @@ -797,7 +797,7 @@ struct entity_inst_t { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(entity_inst_t) diff --git a/src/os/SequencerPosition.h b/src/os/SequencerPosition.h index 5ba4699a2ff5..112de8aa1fb6 100644 --- a/src/os/SequencerPosition.h +++ b/src/os/SequencerPosition.h @@ -41,10 +41,12 @@ struct SequencerPosition { f->dump_unsigned("trans", trans); f->dump_unsigned("op", op); } - static void generate_test_instances(std::list& o) { - o.push_back(new SequencerPosition); - o.push_back(new SequencerPosition(1, 2, 3)); - o.push_back(new SequencerPosition(4, 5, 6)); + static std::list generate_test_instances() { + std::list o; + o.push_back(SequencerPosition{}); + o.push_back(SequencerPosition(1, 2, 3)); + o.push_back(SequencerPosition(4, 5, 6)); + return o; } }; WRITE_CLASS_ENCODER(SequencerPosition) diff --git a/src/os/Transaction.cc b/src/os/Transaction.cc index f99b25220508..3569d001ff23 100644 --- a/src/os/Transaction.cc +++ b/src/os/Transaction.cc @@ -530,46 +530,50 @@ void Transaction::dump(ceph::Formatter *f) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -void Transaction::generate_test_instances(list& o) +list Transaction::generate_test_instances() { - o.push_back(new Transaction); + list o; - Transaction *t = new Transaction; - t->nop(); - o.push_back(t); + o.push_back(Transaction{}); + + Transaction t; + t.nop(); + o.push_back(std::move(t)); - t = new Transaction; + t = Transaction{}; coll_t c(spg_t(pg_t(1,2), shard_id_t::NO_SHARD)); coll_t c2(spg_t(pg_t(4,5), shard_id_t::NO_SHARD)); ghobject_t o1(hobject_t("obj", "", 123, 456, -1, "")); ghobject_t o2(hobject_t("obj2", "", 123, 456, -1, "")); ghobject_t o3(hobject_t("obj3", "", 123, 456, -1, "")); - t->touch(c, o1); + t.touch(c, o1); bufferlist bl; bl.append("some data"); - t->write(c, o1, 1, bl.length(), bl); - t->zero(c, o1, 22, 33); - t->truncate(c, o1, 99); - t->remove(c, o1); - o.push_back(t); - - t = new Transaction; - t->setattr(c, o1, "key", bl); + t.write(c, o1, 1, bl.length(), bl); + t.zero(c, o1, 22, 33); + t.truncate(c, o1, 99); + t.remove(c, o1); + o.push_back(std::move(t)); + + t = Transaction{}; + t.setattr(c, o1, "key", bl); map> m; m["a"] = buffer::copy("this", 4); m["b"] = buffer::copy("that", 4); - t->setattrs(c, o1, m); - t->rmattr(c, o1, "b"); - t->rmattrs(c, o1); - - t->clone(c, o1, o2); - t->clone(c, o1, o3); - t->clone_range(c, o1, o2, 1, 12, 99); - - t->create_collection(c, 12); - t->collection_move_rename(c, o2, c2, o3); - t->remove_collection(c); - o.push_back(t); + t.setattrs(c, o1, m); + t.rmattr(c, o1, "b"); + t.rmattrs(c, o1); + + t.clone(c, o1, o2); + t.clone(c, o1, o3); + t.clone_range(c, o1, o2, 1, 12, 99); + + t.create_collection(c, 12); + t.collection_move_rename(c, o2, c2, o3); + t.remove_collection(c); + o.push_back(std::move(t)); + + return o; } ostream& operator<<(ostream& out, const Transaction& tx) { diff --git a/src/os/Transaction.h b/src/os/Transaction.h index dc0c03949e35..d8faf3ea3a3b 100644 --- a/src/os/Transaction.h +++ b/src/os/Transaction.h @@ -1386,7 +1386,7 @@ public: } void dump(ceph::Formatter *f); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ceph::os::Transaction) WRITE_CLASS_ENCODER(ceph::os::Transaction::TransactionData) diff --git a/src/os/bluestore/bluefs_types.cc b/src/os/bluestore/bluefs_types.cc index 1e5ad04ad845..b894f1871efd 100644 --- a/src/os/bluestore/bluefs_types.cc +++ b/src/os/bluestore/bluefs_types.cc @@ -25,13 +25,15 @@ void bluefs_extent_t::dump(Formatter *f) const f->dump_unsigned("bdev", bdev); } -void bluefs_extent_t::generate_test_instances(list& ls) +list bluefs_extent_t::generate_test_instances() { - ls.push_back(new bluefs_extent_t); - ls.push_back(new bluefs_extent_t); - ls.back()->offset = 1; - ls.back()->length = 2; - ls.back()->bdev = 1; + list ls; + ls.push_back(bluefs_extent_t{}); + ls.push_back(bluefs_extent_t{}); + ls.back().offset = 1; + ls.back().length = 2; + ls.back().bdev = 1; + return ls; } ostream& operator<<(ostream& out, const bluefs_extent_t& e) @@ -163,13 +165,15 @@ void bluefs_layout_t::dump(Formatter *f) const f->dump_stream("dedicated_wal") << dedicated_wal; } -void bluefs_layout_t::generate_test_instances(list& ls) +list bluefs_layout_t::generate_test_instances() { - ls.push_back(new bluefs_layout_t); - ls.push_back(new bluefs_layout_t); - ls.back()->shared_bdev = 1; - ls.back()->dedicated_db = true; - ls.back()->dedicated_wal = true; + list ls; + ls.push_back(bluefs_layout_t{}); + ls.push_back(bluefs_layout_t{}); + ls.back().shared_bdev = 1; + ls.back().dedicated_db = true; + ls.back().dedicated_wal = true; + return ls; } // bluefs_super_t @@ -217,12 +221,14 @@ void bluefs_super_t::dump(Formatter *f) const f->dump_object("log_fnode", log_fnode); } -void bluefs_super_t::generate_test_instances(list& ls) +list bluefs_super_t::generate_test_instances() { - ls.push_back(new bluefs_super_t); - ls.push_back(new bluefs_super_t); - ls.back()->seq = 1; - ls.back()->block_size = 4096; + list ls; + ls.push_back(bluefs_super_t{}); + ls.push_back(bluefs_super_t{}); + ls.back().seq = 1; + ls.back().block_size = 4096; + return ls; } ostream& operator<<(ostream& out, const bluefs_super_t& s) @@ -304,16 +310,18 @@ void bluefs_fnode_t::dump(Formatter *f) const f->close_section(); } -void bluefs_fnode_t::generate_test_instances(list& ls) +list bluefs_fnode_t::generate_test_instances() { - ls.push_back(new bluefs_fnode_t); - ls.push_back(new bluefs_fnode_t); - ls.back()->ino = 123; - ls.back()->size = 1048576; - ls.back()->mtime = utime_t(123,45); - ls.back()->extents.push_back(bluefs_extent_t(0, 1048576, 4096)); - ls.back()->__unused__ = 1; - ls.back()->encoding = 0; + list ls; + ls.push_back(bluefs_fnode_t{}); + ls.push_back(bluefs_fnode_t{}); + ls.back().ino = 123; + ls.back().size = 1048576; + ls.back().mtime = utime_t(123,45); + ls.back().extents.push_back(bluefs_extent_t(0, 1048576, 4096)); + ls.back().__unused__ = 1; + ls.back().encoding = 0; + return ls; } ostream& operator<<(ostream& out, const bluefs_fnode_t& file) @@ -408,21 +416,22 @@ void bluefs_transaction_t::dump(Formatter *f) const f->dump_unsigned("crc", op_bl.crc32c(-1)); } -void bluefs_transaction_t::generate_test_instances( - list& ls) +list bluefs_transaction_t::generate_test_instances() { - ls.push_back(new bluefs_transaction_t); - ls.push_back(new bluefs_transaction_t); - ls.back()->op_init(); - ls.back()->op_dir_create("dir"); - ls.back()->op_dir_create("dir2"); + list ls; + ls.push_back(bluefs_transaction_t{}); + ls.push_back(bluefs_transaction_t{}); + ls.back().op_init(); + ls.back().op_dir_create("dir"); + ls.back().op_dir_create("dir2"); bluefs_fnode_t fnode; fnode.ino = 2; - ls.back()->op_file_update(fnode); - ls.back()->op_dir_link("dir", "file1", 2); - ls.back()->op_dir_unlink("dir", "file1"); - ls.back()->op_file_remove(2); - ls.back()->op_dir_remove("dir2"); + ls.back().op_file_update(fnode); + ls.back().op_dir_link("dir", "file1", 2); + ls.back().op_dir_unlink("dir", "file1"); + ls.back().op_file_remove(2); + ls.back().op_dir_remove("dir2"); + return ls; } ostream& operator<<(ostream& out, const bluefs_transaction_t& t) diff --git a/src/os/bluestore/bluefs_types.h b/src/os/bluestore/bluefs_types.h index 1dbf5c4e5070..f9c254f01b27 100644 --- a/src/os/bluestore/bluefs_types.h +++ b/src/os/bluestore/bluefs_types.h @@ -30,7 +30,7 @@ public: } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list&); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluefs_extent_t) @@ -284,8 +284,7 @@ struct bluefs_fnode_t { bluefs_fnode_delta_t* make_delta(bluefs_fnode_delta_t* delta); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); - + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluefs_fnode_t) @@ -309,7 +308,7 @@ struct bluefs_layout_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(bluefs_layout_t) @@ -337,7 +336,7 @@ struct bluefs_super_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(bluefs_super_t) @@ -440,7 +439,7 @@ struct bluefs_transaction_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(bluefs_transaction_t) diff --git a/src/os/bluestore/bluestore_types.cc b/src/os/bluestore/bluestore_types.cc index 4d7fe9322a96..940e976cff34 100644 --- a/src/os/bluestore/bluestore_types.cc +++ b/src/os/bluestore/bluestore_types.cc @@ -69,15 +69,16 @@ void bluestore_bdev_label_t::dump(Formatter *f) const } } -void bluestore_bdev_label_t::generate_test_instances( - list& o) +list bluestore_bdev_label_t::generate_test_instances() { - o.push_back(new bluestore_bdev_label_t); - o.push_back(new bluestore_bdev_label_t); - o.back()->size = 123; - o.back()->btime = utime_t(4, 5); - o.back()->description = "fakey"; - o.back()->meta["foo"] = "bar"; + list o; + o.push_back(bluestore_bdev_label_t{}); + o.push_back(bluestore_bdev_label_t{}); + o.back().size = 123; + o.back().btime = utime_t(4, 5); + o.back().description = "fakey"; + o.back().meta["foo"] = "bar"; + return o; } ostream& operator<<(ostream& out, const bluestore_bdev_label_t& l) @@ -97,11 +98,13 @@ void bluestore_cnode_t::dump(Formatter *f) const f->dump_unsigned("bits", bits); } -void bluestore_cnode_t::generate_test_instances(list& o) +std::list bluestore_cnode_t::generate_test_instances() { - o.push_back(new bluestore_cnode_t()); - o.push_back(new bluestore_cnode_t(0)); - o.push_back(new bluestore_cnode_t(123)); + std::list o; + o.push_back(bluestore_cnode_t()); + o.push_back(bluestore_cnode_t(0)); + o.push_back(bluestore_cnode_t(123)); + return o; } ostream& operator<<(ostream& out, const bluestore_cnode_t& l) @@ -373,16 +376,17 @@ void bluestore_extent_ref_map_t::dump(Formatter *f) const f->close_section(); } -void bluestore_extent_ref_map_t::generate_test_instances( - list& o) +list bluestore_extent_ref_map_t::generate_test_instances() { - o.push_back(new bluestore_extent_ref_map_t); - o.push_back(new bluestore_extent_ref_map_t); - o.back()->get(10, 10); - o.back()->get(18, 22); - o.back()->get(20, 20); - o.back()->get(10, 25); - o.back()->get(15, 20); + list o; + o.push_back(bluestore_extent_ref_map_t{}); + o.push_back(bluestore_extent_ref_map_t{}); + o.back().get(10, 10); + o.back().get(18, 22); + o.back().get(20, 20); + o.back().get(10, 25); + o.back().get(15, 20); + return o; } ostream& operator<<(ostream& out, const bluestore_extent_ref_map_t& m) @@ -690,18 +694,19 @@ void bluestore_blob_use_tracker_t::dump(Formatter *f) const } } -void bluestore_blob_use_tracker_t::generate_test_instances( - list& o) +list bluestore_blob_use_tracker_t::generate_test_instances() { - o.push_back(new bluestore_blob_use_tracker_t()); - o.back()->init(16, 16); - o.back()->get(10, 10); - o.back()->get(10, 5); - o.push_back(new bluestore_blob_use_tracker_t()); - o.back()->init(60, 16); - o.back()->get(18, 22); - o.back()->get(20, 20); - o.back()->get(15, 20); + list o; + o.push_back(bluestore_blob_use_tracker_t()); + o.back().init(16, 16); + o.back().get(10, 10); + o.back().get(10, 5); + o.push_back(bluestore_blob_use_tracker_t()); + o.back().init(60, 16); + o.back().get(18, 22); + o.back().get(20, 20); + o.back().get(15, 20); + return o; } ostream& operator<<(ostream& out, const bluestore_blob_use_tracker_t& m) @@ -741,10 +746,12 @@ ostream& operator<<(ostream& out, const bluestore_pextent_t& o) { return out << "!~" << std::hex << o.length << std::dec; } -void bluestore_pextent_t::generate_test_instances(list& ls) +list bluestore_pextent_t::generate_test_instances() { - ls.push_back(new bluestore_pextent_t); - ls.push_back(new bluestore_pextent_t(1, 2)); + list ls; + ls.push_back(bluestore_pextent_t{}); + ls.push_back(bluestore_pextent_t(1, 2)); + return ls; } // bluestore_blob_t @@ -824,21 +831,23 @@ void bluestore_blob_t::dump(Formatter *f) const f->dump_unsigned("unused", unused); } -void bluestore_blob_t::generate_test_instances(list& ls) -{ - ls.push_back(new bluestore_blob_t); - ls.push_back(new bluestore_blob_t(0)); - ls.push_back(new bluestore_blob_t); - ls.back()->allocated_test(bluestore_pextent_t(111, 222)); - ls.push_back(new bluestore_blob_t); - ls.back()->init_csum(Checksummer::CSUM_XXHASH32, 16, 65536); - ls.back()->csum_data = ceph::buffer::claim_malloc(4, strdup("abcd")); - ls.back()->add_unused(0, 3); - ls.back()->add_unused(8, 8); - ls.back()->allocated_test(bluestore_pextent_t(0x40100000, 0x10000)); - ls.back()->allocated_test( +list bluestore_blob_t::generate_test_instances() +{ + list ls; + ls.push_back(bluestore_blob_t{}); + ls.push_back(bluestore_blob_t(0)); + ls.push_back(bluestore_blob_t{}); + ls.back().allocated_test(bluestore_pextent_t(111, 222)); + ls.push_back(bluestore_blob_t{}); + ls.back().init_csum(Checksummer::CSUM_XXHASH32, 16, 65536); + ls.back().csum_data = ceph::buffer::claim_malloc(4, strdup("abcd")); + ls.back().add_unused(0, 3); + ls.back().add_unused(8, 8); + ls.back().allocated_test(bluestore_pextent_t(0x40100000, 0x10000)); + ls.back().allocated_test( bluestore_pextent_t(bluestore_pextent_t::INVALID_OFFSET, 0x1000)); - ls.back()->allocated_test(bluestore_pextent_t(0x40120000, 0x10000)); + ls.back().allocated_test(bluestore_pextent_t(0x40120000, 0x10000)); + return ls; } ostream& operator<<(ostream& out, const bluestore_blob_t& o) @@ -1358,19 +1367,16 @@ void bluestore_shared_blob_t::dump(Formatter *f) const f->dump_object("ref_map", ref_map); } -void bluestore_shared_blob_t::generate_test_instances( - list& ls) +list bluestore_shared_blob_t::generate_test_instances() { - std::list extent_ref_maps; - bluestore_extent_ref_map_t::generate_test_instances(extent_ref_maps); + list ls; + auto extent_ref_maps = bluestore_extent_ref_map_t::generate_test_instances(); // use 0 for sbid, as this field is not persited, and is always set during // instance construction, so including a non-default value in dumps would // cause ceph-dencoder verification failures when comparing original and // re-encoded value. - ls.push_back(new bluestore_shared_blob_t{0, std::move(*extent_ref_maps.front())}); - for (auto* m : extent_ref_maps) { - delete m; - } + ls.push_back(bluestore_shared_blob_t{0, std::move(extent_ref_maps.front())}); + return ls; } ostream& operator<<(ostream& out, const bluestore_shared_blob_t& sb) @@ -1388,13 +1394,14 @@ void bluestore_onode_t::shard_info::dump(Formatter *f) const f->dump_unsigned("bytes", bytes); } -void bluestore_onode_t::shard_info::generate_test_instances( - list& o) +auto bluestore_onode_t::shard_info::generate_test_instances() -> list { - o.push_back(new shard_info); - o.push_back(new shard_info); - o.back()->offset = 123; - o.back()->bytes = 456; + list o; + o.push_back(shard_info{}); + o.push_back(shard_info{}); + o.back().offset = 123; + o.back().bytes = 456; + return o; } ostream& operator<<(ostream& out, const bluestore_onode_t::shard_info& si) @@ -1426,54 +1433,56 @@ void bluestore_onode_t::dump(Formatter *f) const f->dump_unsigned("alloc_hint_flags", alloc_hint_flags); } -void bluestore_onode_t::generate_test_instances(list& o) +list bluestore_onode_t::generate_test_instances() { + list o; - auto* onode1 = new bluestore_onode_t(); - onode1->nid = 0xDEADBEEF; - onode1->size = 99999; - onode1->expected_object_size = 123456; - onode1->expected_write_size = 7890; - onode1->set_flag(FLAG_OMAP | FLAG_PERPOOL_OMAP | FLAG_PERPG_OMAP); + auto onode1 = bluestore_onode_t(); + onode1.nid = 0xDEADBEEF; + onode1.size = 99999; + onode1.expected_object_size = 123456; + onode1.expected_write_size = 7890; + onode1.set_flag(FLAG_OMAP | FLAG_PERPOOL_OMAP | FLAG_PERPG_OMAP); ceph::buffer::ptr buf1 = ceph::buffer::create(50); memset(buf1.c_str(), 0x42, 50); - onode1->attrs["chaos_attr1"] = buf1; + onode1.attrs["chaos_attr1"] = buf1; - onode1->extent_map_shards.push_back({.offset = 555, .bytes = 777}); + onode1.extent_map_shards.push_back({.offset = 555, .bytes = 777}); - o.push_back(onode1); + o.push_back(std::move(onode1)); - auto* onode2 = new bluestore_onode_t(); - onode2->nid = 0xBAADF00D; - onode2->size = 54321; - onode2->expected_object_size = 654321; - onode2->expected_write_size = 4321; - onode2->set_flag(FLAG_OMAP | FLAG_PGMETA_OMAP); + auto onode2 = bluestore_onode_t(); + onode2.nid = 0xBAADF00D; + onode2.size = 54321; + onode2.expected_object_size = 654321; + onode2.expected_write_size = 4321; + onode2.set_flag(FLAG_OMAP | FLAG_PGMETA_OMAP); ceph::buffer::ptr buf2 = ceph::buffer::create(30); memset(buf2.c_str(), 0xAB, 30); - onode2->attrs["glitch_attr"] = buf2; + onode2.attrs["glitch_attr"] = buf2; - onode2->extent_map_shards.push_back({.offset = 333, .bytes = 444}); + onode2.extent_map_shards.push_back({.offset = 333, .bytes = 444}); - o.push_back(onode2); + o.push_back(std::move(onode2)); - auto* onode3 = new bluestore_onode_t(); - onode3->nid = 0xFEEDFACE; - onode3->size = 0; - onode3->expected_object_size = 1; - onode3->expected_write_size = 1; - onode3->set_flag(FLAG_OMAP | FLAG_PERPOOL_OMAP); + auto onode3 = bluestore_onode_t(); + onode3.nid = 0xFEEDFACE; + onode3.size = 0; + onode3.expected_object_size = 1; + onode3.expected_write_size = 1; + onode3.set_flag(FLAG_OMAP | FLAG_PERPOOL_OMAP); ceph::buffer::ptr buf3 = ceph::buffer::create(100); memset(buf3.c_str(), 0xFF, 100); - onode3->attrs["maxed_out"] = buf3; + onode3.attrs["maxed_out"] = buf3; - onode3->extent_map_shards.push_back({.offset = 999, .bytes = 2048}); + onode3.extent_map_shards.push_back({.offset = 999, .bytes = 2048}); - o.push_back(onode3); + o.push_back(std::move(onode3)); + return o; } // bluestore_deferred_op_t @@ -1489,14 +1498,16 @@ void bluestore_deferred_op_t::dump(Formatter *f) const f->close_section(); } -void bluestore_deferred_op_t::generate_test_instances(list& o) +list bluestore_deferred_op_t::generate_test_instances() { - o.push_back(new bluestore_deferred_op_t); - o.push_back(new bluestore_deferred_op_t); - o.back()->op = OP_WRITE; - o.back()->extents.push_back(bluestore_pextent_t(1, 2)); - o.back()->extents.push_back(bluestore_pextent_t(100, 5)); - o.back()->data.append("my data"); + list o; + o.push_back(bluestore_deferred_op_t{}); + o.push_back(bluestore_deferred_op_t{}); + o.back().op = OP_WRITE; + o.back().extents.push_back(bluestore_pextent_t(1, 2)); + o.back().extents.push_back(bluestore_pextent_t(100, 5)); + o.back().data.append("my data"); + return o; } void bluestore_deferred_transaction_t::dump(Formatter *f) const @@ -1518,16 +1529,18 @@ void bluestore_deferred_transaction_t::dump(Formatter *f) const f->close_section(); } -void bluestore_deferred_transaction_t::generate_test_instances(list& o) +list bluestore_deferred_transaction_t::generate_test_instances() { - o.push_back(new bluestore_deferred_transaction_t()); - o.push_back(new bluestore_deferred_transaction_t()); - o.back()->seq = 123; - o.back()->ops.push_back(bluestore_deferred_op_t()); - o.back()->ops.push_back(bluestore_deferred_op_t()); - o.back()->ops.back().op = bluestore_deferred_op_t::OP_WRITE; - o.back()->ops.back().extents.push_back(bluestore_pextent_t(1,7)); - o.back()->ops.back().data.append("foodata"); + list o; + o.push_back(bluestore_deferred_transaction_t()); + o.push_back(bluestore_deferred_transaction_t()); + o.back().seq = 123; + o.back().ops.push_back(bluestore_deferred_op_t()); + o.back().ops.push_back(bluestore_deferred_op_t()); + o.back().ops.back().op = bluestore_deferred_op_t::OP_WRITE; + o.back().ops.back().extents.push_back(bluestore_pextent_t(1,7)); + o.back().ops.back().data.append("foodata"); + return o; } void bluestore_compression_header_t::dump(Formatter *f) const @@ -1539,12 +1552,13 @@ void bluestore_compression_header_t::dump(Formatter *f) const } } -void bluestore_compression_header_t::generate_test_instances( - list& o) +list bluestore_compression_header_t::generate_test_instances() { - o.push_back(new bluestore_compression_header_t); - o.push_back(new bluestore_compression_header_t(1)); - o.back()->length = 1234; + list o; + o.push_back(bluestore_compression_header_t{}); + o.push_back(bluestore_compression_header_t(1)); + o.back().length = 1234; + return o; } // adds more salt to build a hash func input diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index 3fcb99d55ab2..1e489c7074cf 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -46,7 +46,7 @@ struct bluestore_bdev_label_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(bluestore_bdev_label_t) @@ -64,7 +64,7 @@ struct bluestore_cnode_t { DENC_FINISH(p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_cnode_t) @@ -108,7 +108,7 @@ struct bluestore_pextent_t : public bluestore_interval_t } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_pextent_t) @@ -163,9 +163,11 @@ struct bluestore_extent_ref_map_t { f->dump_unsigned("length", length); f->dump_unsigned("refs", refs); } - static void generate_test_instances(std::list& o) { - o.push_back(new record_t); - o.push_back(new record_t(123, 456)); + static std::list generate_test_instances() { + std::list o; + o.push_back(record_t{}); + o.push_back(record_t(123, 456)); + return o; } }; @@ -235,7 +237,7 @@ struct bluestore_extent_ref_map_t { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_extent_ref_map_t) WRITE_CLASS_DENC(bluestore_extent_ref_map_t::record_t) @@ -477,7 +479,7 @@ struct bluestore_blob_use_tracker_t { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); private: void allocate(uint32_t _num_au); void release(uint32_t _num_au, uint32_t* ptr); @@ -594,7 +596,7 @@ public: } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool has_flag(unsigned f) const { return flags & f; @@ -1106,7 +1108,7 @@ struct bluestore_shared_blob_t { void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); bool empty() const { return ref_map.empty(); @@ -1131,7 +1133,7 @@ struct bluestore_onode_t { denc_varint(v.bytes, p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; std::vector extent_map_shards; ///< extent std::map shards (if any) @@ -1289,7 +1291,7 @@ struct bluestore_onode_t { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_onode_t::shard_info) WRITE_CLASS_DENC_FEATURED(bluestore_onode_t) @@ -1314,7 +1316,7 @@ struct bluestore_deferred_op_t { DENC_FINISH(p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_deferred_op_t) @@ -1335,7 +1337,7 @@ struct bluestore_deferred_transaction_t { DENC_FINISH(p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_deferred_transaction_t) @@ -1358,7 +1360,7 @@ struct bluestore_compression_header_t { DENC_FINISH(p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(bluestore_compression_header_t) diff --git a/src/os/kstore/kstore_types.cc b/src/os/kstore/kstore_types.cc index 885c52b6037a..a0d000a28a70 100644 --- a/src/os/kstore/kstore_types.cc +++ b/src/os/kstore/kstore_types.cc @@ -42,11 +42,13 @@ void kstore_cnode_t::dump(Formatter *f) const f->dump_unsigned("bits", bits); } -void kstore_cnode_t::generate_test_instances(list& o) +list kstore_cnode_t::generate_test_instances() { - o.push_back(new kstore_cnode_t()); - o.push_back(new kstore_cnode_t(0)); - o.push_back(new kstore_cnode_t(123)); + list o; + o.push_back(kstore_cnode_t()); + o.push_back(kstore_cnode_t(0)); + o.push_back(kstore_cnode_t(123)); + return o; } @@ -99,8 +101,10 @@ void kstore_onode_t::dump(Formatter *f) const f->dump_unsigned("alloc_hint_flags", alloc_hint_flags); } -void kstore_onode_t::generate_test_instances(list& o) +list kstore_onode_t::generate_test_instances() { - o.push_back(new kstore_onode_t()); + list o; + o.push_back(kstore_onode_t()); // FIXME + return o; } diff --git a/src/os/kstore/kstore_types.h b/src/os/kstore/kstore_types.h index f264642e274a..9a4acdc112ad 100644 --- a/src/os/kstore/kstore_types.h +++ b/src/os/kstore/kstore_types.h @@ -33,7 +33,7 @@ struct kstore_cnode_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(kstore_cnode_t) @@ -61,7 +61,7 @@ struct kstore_onode_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(kstore_onode_t) diff --git a/src/osd/ECMsgTypes.cc b/src/osd/ECMsgTypes.cc index 1ccdc188d0ee..69d1e902a06b 100644 --- a/src/osd/ECMsgTypes.cc +++ b/src/osd/ECMsgTypes.cc @@ -122,23 +122,25 @@ void ECSubWrite::dump(Formatter *f) const f->dump_bool("backfill_or_async_recovery", backfill_or_async_recovery); } -void ECSubWrite::generate_test_instances(list &o) +list ECSubWrite::generate_test_instances() { - o.push_back(new ECSubWrite()); - o.back()->tid = 1; - o.back()->at_version = eversion_t(2, 100); - o.back()->trim_to = eversion_t(1, 40); - o.push_back(new ECSubWrite()); - o.back()->tid = 4; - o.back()->reqid = osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678); - o.back()->at_version = eversion_t(10, 300); - o.back()->trim_to = eversion_t(5, 42); - o.push_back(new ECSubWrite()); - o.back()->tid = 9; - o.back()->reqid = osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678); - o.back()->at_version = eversion_t(10, 300); - o.back()->trim_to = eversion_t(5, 42); - o.back()->pg_committed_to = eversion_t(8, 250); + list o; + o.emplace_back(); + o.back().tid = 1; + o.back().at_version = eversion_t(2, 100); + o.back().trim_to = eversion_t(1, 40); + o.emplace_back(); + o.back().tid = 4; + o.back().reqid = osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678); + o.back().at_version = eversion_t(10, 300); + o.back().trim_to = eversion_t(5, 42); + o.emplace_back(); + o.back().tid = 9; + o.back().reqid = osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678); + o.back().at_version = eversion_t(10, 300); + o.back().trim_to = eversion_t(5, 42); + o.back().pg_committed_to = eversion_t(8, 250); + return o; } void ECSubWriteReply::encode(bufferlist &bl) const @@ -181,16 +183,18 @@ void ECSubWriteReply::dump(Formatter *f) const f->dump_bool("applied", applied); } -void ECSubWriteReply::generate_test_instances(list& o) +list ECSubWriteReply::generate_test_instances() { - o.push_back(new ECSubWriteReply()); - o.back()->tid = 20; - o.back()->last_complete = eversion_t(100, 2000); - o.back()->committed = true; - o.push_back(new ECSubWriteReply()); - o.back()->tid = 80; - o.back()->last_complete = eversion_t(50, 200); - o.back()->applied = true; + list o; + o.push_back(ECSubWriteReply()); + o.back().tid = 20; + o.back().last_complete = eversion_t(100, 2000); + o.back().committed = true; + o.push_back(ECSubWriteReply()); + o.back().tid = 80; + o.back().last_complete = eversion_t(50, 200); + o.back().applied = true; + return o; } void ECSubRead::encode(bufferlist &bl, uint64_t features) const @@ -288,24 +292,26 @@ void ECSubRead::dump(Formatter *f) const [](Formatter& f, const hobject_t& oid) { f.dump_stream("oid") << oid; }); } -void ECSubRead::generate_test_instances(list& o) +list ECSubRead::generate_test_instances() { + list o; hobject_t hoid1(sobject_t("asdf", 1)); hobject_t hoid2(sobject_t("asdf2", CEPH_NOSNAP)); - o.push_back(new ECSubRead()); - o.back()->from = pg_shard_t(2, shard_id_t(-1)); - o.back()->tid = 1; - o.back()->to_read[hoid1].push_back(boost::make_tuple(100, 200, 0)); - o.back()->to_read[hoid1].push_back(boost::make_tuple(400, 600, 0)); - o.back()->to_read[hoid2].push_back(boost::make_tuple(400, 600, 0)); - o.back()->attrs_to_read.insert(hoid1); - o.push_back(new ECSubRead()); - o.back()->from = pg_shard_t(2, shard_id_t(-1)); - o.back()->tid = 300; - o.back()->to_read[hoid1].push_back(boost::make_tuple(300, 200, 0)); - o.back()->to_read[hoid2].push_back(boost::make_tuple(400, 600, 0)); - o.back()->to_read[hoid2].push_back(boost::make_tuple(2000, 600, 0)); - o.back()->attrs_to_read.insert(hoid2); + o.push_back(ECSubRead()); + o.back().from = pg_shard_t(2, shard_id_t(-1)); + o.back().tid = 1; + o.back().to_read[hoid1].push_back(boost::make_tuple(100, 200, 0)); + o.back().to_read[hoid1].push_back(boost::make_tuple(400, 600, 0)); + o.back().to_read[hoid2].push_back(boost::make_tuple(400, 600, 0)); + o.back().attrs_to_read.insert(hoid1); + o.push_back(ECSubRead()); + o.back().from = pg_shard_t(2, shard_id_t(-1)); + o.back().tid = 300; + o.back().to_read[hoid1].push_back(boost::make_tuple(300, 200, 0)); + o.back().to_read[hoid2].push_back(boost::make_tuple(400, 600, 0)); + o.back().to_read[hoid2].push_back(boost::make_tuple(2000, 600, 0)); + o.back().attrs_to_read.insert(hoid2); + return o; } void ECSubReadReply::encode(bufferlist &bl) const @@ -444,27 +450,29 @@ void ECSubReadReply::dump(Formatter* f) const }); } -void ECSubReadReply::generate_test_instances(list& o) +list ECSubReadReply::generate_test_instances() { + list o; hobject_t hoid1(sobject_t("asdf", 1)); hobject_t hoid2(sobject_t("asdf2", CEPH_NOSNAP)); bufferlist bl; bl.append_zero(100); bufferlist bl2; bl2.append_zero(200); - o.push_back(new ECSubReadReply()); - o.back()->from = pg_shard_t(2, shard_id_t(-1)); - o.back()->tid = 1; - o.back()->buffers_read[hoid1].push_back(make_pair(20, bl)); - o.back()->buffers_read[hoid1].push_back(make_pair(2000, bl2)); - o.back()->buffers_read[hoid2].push_back(make_pair(0, bl)); - o.back()->attrs_read[hoid1]["foo"] = bl; - o.back()->attrs_read[hoid1]["_"] = bl2; - o.push_back(new ECSubReadReply()); - o.back()->from = pg_shard_t(2, shard_id_t(-1)); - o.back()->tid = 300; - o.back()->buffers_read[hoid2].push_back(make_pair(0, bl2)); - o.back()->attrs_read[hoid2]["foo"] = bl; - o.back()->attrs_read[hoid2]["_"] = bl2; - o.back()->errors[hoid1] = -2; + o.push_back(ECSubReadReply()); + o.back().from = pg_shard_t(2, shard_id_t(-1)); + o.back().tid = 1; + o.back().buffers_read[hoid1].push_back(make_pair(20, bl)); + o.back().buffers_read[hoid1].push_back(make_pair(2000, bl2)); + o.back().buffers_read[hoid2].push_back(make_pair(0, bl)); + o.back().attrs_read[hoid1]["foo"] = bl; + o.back().attrs_read[hoid1]["_"] = bl2; + o.push_back(ECSubReadReply()); + o.back().from = pg_shard_t(2, shard_id_t(-1)); + o.back().tid = 300; + o.back().buffers_read[hoid2].push_back(make_pair(0, bl2)); + o.back().attrs_read[hoid2]["foo"] = bl; + o.back().attrs_read[hoid2]["_"] = bl2; + o.back().errors[hoid1] = -2; + return o; } diff --git a/src/osd/ECMsgTypes.h b/src/osd/ECMsgTypes.h index 147b56c0f0a7..613a46efc6a2 100644 --- a/src/osd/ECMsgTypes.h +++ b/src/osd/ECMsgTypes.h @@ -87,7 +87,7 @@ struct ECSubWrite { void decode(ceph::buffer::list::const_iterator &p_bl, ceph::buffer::list::const_iterator &d_bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); private: // no outside copying -- slow ECSubWrite(ECSubWrite& other); @@ -106,7 +106,7 @@ struct ECSubWriteReply { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ECSubWriteReply) @@ -119,7 +119,7 @@ struct ECSubRead { void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(ECSubRead) @@ -137,7 +137,7 @@ struct ECSubReadReply { void decode(ceph::buffer::list::const_iterator &p_bl, ceph::buffer::list::const_iterator &d_pl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ECSubReadReply) diff --git a/src/osd/ECTypes.h b/src/osd/ECTypes.h index a5eede865d43..7b8bbbb663a1 100644 --- a/src/osd/ECTypes.h +++ b/src/osd/ECTypes.h @@ -47,9 +47,11 @@ struct raw_shard_id_t { void dump(ceph::Formatter *f) const { f->dump_int("id", id); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new raw_shard_id_t(1)); - ls.push_back(new raw_shard_id_t(2)); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(raw_shard_id_t(1)); + ls.push_back(raw_shard_id_t(2)); + return ls; } raw_shard_id_t& operator++() { ++id; return *this; } friend constexpr std::strong_ordering operator<=>(const raw_shard_id_t &lhs, const raw_shard_id_t &rhs) { return lhs.id <=> rhs.id; } diff --git a/src/osd/ECUtilL.cc b/src/osd/ECUtilL.cc index 7c13a36f4960..70befd383470 100644 --- a/src/osd/ECUtilL.cc +++ b/src/osd/ECUtilL.cc @@ -240,9 +240,10 @@ END_IGNORE_DEPRECATED } } - void ECUtilL::HashInfo::generate_test_instances(list& o) + auto ECUtilL::HashInfo::generate_test_instances() -> list { - o.push_back(new HashInfo(3)); + list o; + o.push_back(HashInfo(3)); { bufferlist bl; bl.append_zero(20); @@ -250,10 +251,11 @@ END_IGNORE_DEPRECATED buffers[0] = bl; buffers[1] = bl; buffers[2] = bl; - o.back()->append(0, buffers); - o.back()->append(20, buffers); + o.back().append(0, buffers); + o.back().append(20, buffers); } - o.push_back(new HashInfo(4)); + o.push_back(HashInfo(4)); + return o; } const string HINFO_KEY = "hinfo_key"; @@ -267,4 +269,4 @@ END_IGNORE_DEPRECATED { return HINFO_KEY; } -} \ No newline at end of file +} diff --git a/src/osd/ECUtilL.h b/src/osd/ECUtilL.h index e2433ff3513e..d3f6a7283aa4 100644 --- a/src/osd/ECUtilL.h +++ b/src/osd/ECUtilL.h @@ -229,7 +229,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); uint32_t get_chunk_hash(int shard) const { ceph_assert((unsigned)shard < cumulative_shard_hashes.size()); return cumulative_shard_hashes[shard]; @@ -277,4 +277,4 @@ const std::string &get_hinfo_key(); WRITE_CLASS_ENCODER(ECUtilL::HashInfo) } -} \ No newline at end of file +} diff --git a/src/osd/HitSet.cc b/src/osd/HitSet.cc index 1152faeec030..937d4362713d 100644 --- a/src/osd/HitSet.cc +++ b/src/osd/HitSet.cc @@ -94,21 +94,23 @@ void HitSet::dump(Formatter *f) const impl->dump(f); } -void HitSet::generate_test_instances(list& o) +list HitSet::generate_test_instances() { - o.push_back(new HitSet); - o.push_back(new HitSet(new BloomHitSet(10, .1, 1))); - o.back()->insert(hobject_t()); - o.back()->insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); - o.back()->insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); - o.push_back(new HitSet(new ExplicitHashHitSet)); - o.back()->insert(hobject_t()); - o.back()->insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); - o.back()->insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); - o.push_back(new HitSet(new ExplicitObjectHitSet)); - o.back()->insert(hobject_t()); - o.back()->insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); - o.back()->insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + list o; + o.push_back(HitSet{}); + o.push_back(HitSet(new BloomHitSet(10, .1, 1))); + o.back().insert(hobject_t()); + o.back().insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); + o.back().insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + o.push_back(HitSet(new ExplicitHashHitSet)); + o.back().insert(hobject_t()); + o.back().insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); + o.back().insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + o.push_back(HitSet(new ExplicitObjectHitSet)); + o.back().insert(hobject_t()); + o.back().insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); + o.back().insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + return o; } HitSet::Params::Params(const Params& o) noexcept @@ -190,23 +192,22 @@ void HitSet::Params::dump(Formatter *f) const impl->dump(f); } -void HitSet::Params::generate_test_instances(list& o) +list HitSet::Params::generate_test_instances() { + list o; #define loop_hitset_params(kind) \ { \ - list params; \ - kind::Params::generate_test_instances(params); \ - for (list::iterator i = params.begin(); \ - i != params.end(); ++i) \ - o.push_back(new Params(*i)); \ -} - o.push_back(new Params); - o.push_back(new Params(new BloomHitSet::Params)); + for (auto& i : kind::Params::generate_test_instances()) \ + o.push_back(Params(&i)); \ +} + o.push_back(Params{}); + o.push_back(Params(new BloomHitSet::Params)); loop_hitset_params(BloomHitSet); - o.push_back(new Params(new ExplicitHashHitSet::Params)); + o.push_back(Params(new ExplicitHashHitSet::Params)); loop_hitset_params(ExplicitHashHitSet); - o.push_back(new Params(new ExplicitObjectHitSet::Params)); + o.push_back(Params(new ExplicitObjectHitSet::Params)); loop_hitset_params(ExplicitObjectHitSet); + return o; } ostream& operator<<(ostream& out, const HitSet::Params& p) { diff --git a/src/osd/HitSet.h b/src/osd/HitSet.h index 0972075df4dd..fc4881e7e332 100644 --- a/src/osd/HitSet.h +++ b/src/osd/HitSet.h @@ -110,7 +110,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend std::ostream& operator<<(std::ostream& out, const HitSet::Params& p); }; @@ -163,7 +163,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); private: void reset_to_type(impl_type_t type); @@ -190,8 +190,10 @@ public: HitSet::Impl *get_new_impl() const override { return new ExplicitHashHitSet; } - static void generate_test_instances(std::list& o) { - o.push_back(new Params); + static std::list generate_test_instances() { + std::list o; + o.push_back(Params{}); + return o; } }; @@ -236,12 +238,14 @@ public: DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const override; - static void generate_test_instances(std::list& o) { - o.push_back(new ExplicitHashHitSet); - o.push_back(new ExplicitHashHitSet); - o.back()->insert(hobject_t()); - o.back()->insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); - o.back()->insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + static std::list generate_test_instances() { + std::list o; + o.push_back(ExplicitHashHitSet{}); + o.push_back(ExplicitHashHitSet{}); + o.back().insert(hobject_t()); + o.back().insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); + o.back().insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + return o; } }; WRITE_CLASS_ENCODER(ExplicitHashHitSet) @@ -261,8 +265,10 @@ public: HitSet::Impl *get_new_impl() const override { return new ExplicitObjectHitSet; } - static void generate_test_instances(std::list& o) { - o.push_back(new Params); + static std::list generate_test_instances() { + std::list o; + o.push_back(Params{}); + return o; } }; @@ -307,12 +313,14 @@ public: DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const override; - static void generate_test_instances(std::list& o) { - o.push_back(new ExplicitObjectHitSet); - o.push_back(new ExplicitObjectHitSet); - o.back()->insert(hobject_t()); - o.back()->insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); - o.back()->insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + static std::list generate_test_instances() { + std::list o; + o.push_back(ExplicitObjectHitSet{}); + o.push_back(ExplicitObjectHitSet{}); + o.back().insert(hobject_t()); + o.back().insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); + o.back().insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + return o; } }; WRITE_CLASS_ENCODER(ExplicitObjectHitSet) @@ -378,12 +386,14 @@ public: << get_fpp() << ", target_size: " << target_size << ", seed: " << seed; } - static void generate_test_instances(std::list& o) { - o.push_back(new Params); - o.push_back(new Params); - (*o.rbegin())->fpp_micro = 123456; - (*o.rbegin())->target_size = 300; - (*o.rbegin())->seed = 99; + static std::list generate_test_instances() { + std::list o; + o.push_back(Params{}); + o.push_back(Params{}); + o.back().fpp_micro = 123456; + o.back().target_size = 300; + o.back().seed = 99; + return o; } }; @@ -442,12 +452,14 @@ public: DECODE_FINISH(bl); } void dump(ceph::Formatter *f) const override; - static void generate_test_instances(std::list& o) { - o.push_back(new BloomHitSet); - o.push_back(new BloomHitSet(10, .1, 1)); - o.back()->insert(hobject_t()); - o.back()->insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); - o.back()->insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + static std::list generate_test_instances() { + std::list o; + o.push_back(BloomHitSet{}); + o.push_back(BloomHitSet(10, .1, 1)); + o.back().insert(hobject_t()); + o.back().insert(hobject_t("asdf", "", CEPH_NOSNAP, 123, 1, "")); + o.back().insert(hobject_t("qwer", "", CEPH_NOSNAP, 456, 1, "")); + return o; } }; WRITE_CLASS_ENCODER(BloomHitSet) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index f2ab9023100b..fb379de40ade 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -106,16 +106,18 @@ void osd_info_t::decode(ceph::buffer::list::const_iterator& bl) decode(lost_at, bl); } -void osd_info_t::generate_test_instances(list& o) +list osd_info_t::generate_test_instances() { - o.push_back(new osd_info_t); - o.push_back(new osd_info_t); - o.back()->last_clean_begin = 1; - o.back()->last_clean_end = 2; - o.back()->up_from = 30; - o.back()->up_thru = 40; - o.back()->down_at = 5; - o.back()->lost_at = 6; + list o; + o.push_back(osd_info_t{}); + o.push_back(osd_info_t{}); + o.back().last_clean_begin = 1; + o.back().last_clean_end = 2; + o.back().up_from = 30; + o.back().up_thru = 40; + o.back().down_at = 5; + o.back().lost_at = 6; + return o; } ostream& operator<<(ostream& out, const osd_info_t& info) @@ -188,14 +190,16 @@ void osd_xinfo_t::decode(ceph::buffer::list::const_iterator& bl) DECODE_FINISH(bl); } -void osd_xinfo_t::generate_test_instances(list& o) +list osd_xinfo_t::generate_test_instances() { - o.push_back(new osd_xinfo_t); - o.push_back(new osd_xinfo_t); - o.back()->down_stamp = utime_t(2, 3); - o.back()->laggy_probability = .123; - o.back()->laggy_interval = 123456; - o.back()->old_weight = 0x7fff; + list o; + o.push_back(osd_xinfo_t{}); + o.push_back(osd_xinfo_t{}); + o.back().down_stamp = utime_t(2, 3); + o.back().laggy_probability = .123; + o.back().laggy_interval = 123456; + o.back().old_weight = 0x7fff; + return o; } ostream& operator<<(ostream& out, const osd_xinfo_t& xi) @@ -1387,9 +1391,11 @@ void OSDMap::Incremental::dump(Formatter *f) const f->close_section(); } -void OSDMap::Incremental::generate_test_instances(list& o) +auto OSDMap::Incremental::generate_test_instances() -> list { - o.push_back(new Incremental); + list o; + o.push_back(Incremental{}); + return o; } // ---------------------------------- @@ -4259,17 +4265,19 @@ void OSDMap::dump(Formatter *f, CephContext *cct) const f->close_section(); } -void OSDMap::generate_test_instances(list& o) +list OSDMap::generate_test_instances() { - o.push_back(new OSDMap); + list o; + o.emplace_back(); CephContext *cct = new CephContext(CODE_ENVIRONMENT_UTILITY); - o.push_back(new OSDMap); + o.emplace_back(); uuid_d fsid; - o.back()->build_simple(cct, 1, fsid, 16); - o.back()->created = o.back()->modified = utime_t(1, 2); // fix timestamp - o.back()->blocklist[entity_addr_t()] = utime_t(5, 6); + o.back().build_simple(cct, 1, fsid, 16); + o.back().created = o.back().modified = utime_t(1, 2); // fix timestamp + o.back().blocklist[entity_addr_t()] = utime_t(5, 6); cct->put(); + return o; } string OSDMap::get_flag_string(unsigned f) diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index e432c892d275..306d430d274e 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -84,7 +84,7 @@ struct osd_info_t { void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(osd_info_t) @@ -105,7 +105,7 @@ struct osd_xinfo_t { void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(osd_xinfo_t) @@ -346,11 +346,13 @@ struct PGTempMap { f->close_section(); } } - static void generate_test_instances(std::list& o) { - o.push_back(new PGTempMap); - o.push_back(new PGTempMap); - o.back()->set(pg_t(1, 2), { 3, 4 }); - o.back()->set(pg_t(2, 3), { 4, 5 }); + static std::list generate_test_instances() { + std::list o; + o.push_back(PGTempMap{}); + o.push_back(PGTempMap{}); + o.back().set(pg_t(1, 2), { 3, 4 }); + o.back().set(pg_t(2, 3), { 4, 5 }); + return o; } }; WRITE_CLASS_ENCODER(PGTempMap) @@ -453,7 +455,7 @@ public: void decode_classic(ceph::buffer::list::const_iterator &p); void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); explicit Incremental(epoch_t e=0) : encode_features(0), @@ -1849,7 +1851,7 @@ public: void dump_osds(ceph::Formatter *f) const; void dump_pool(CephContext *cct, int64_t pid, const pg_pool_t &pdata, ceph::Formatter *f) const; void dump_read_balance_score(CephContext *cct, int64_t pid, const pg_pool_t &pdata, ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool check_new_blocklist_entries() const { return new_blocklist_entries; } void check_health(CephContext *cct, health_check_map_t *checks) const; diff --git a/src/osd/SnapMapper.cc b/src/osd/SnapMapper.cc index 67b86239490e..2f22ea9c9ee1 100644 --- a/src/osd/SnapMapper.cc +++ b/src/osd/SnapMapper.cc @@ -327,14 +327,15 @@ void SnapMapper::object_snaps::dump(ceph::Formatter *f) const f->dump_stream("snaps") << snaps; } -void SnapMapper::object_snaps::generate_test_instances( - std::list &o) +auto SnapMapper::object_snaps::generate_test_instances() -> std::list { - o.push_back(new object_snaps); - o.push_back(new object_snaps); - o.back()->oid = hobject_t(sobject_t("name", CEPH_NOSNAP)); - o.back()->snaps.insert(1); - o.back()->snaps.insert(2); + std::list o; + o.push_back(object_snaps{}); + o.push_back(object_snaps{}); + o.back().oid = hobject_t(sobject_t("name", CEPH_NOSNAP)); + o.back().snaps.insert(1); + o.back().snaps.insert(2); + return o; } bool SnapMapper::check(const hobject_t &hoid) const diff --git a/src/osd/SnapMapper.h b/src/osd/SnapMapper.h index 377b2185b9db..aa043ad3bd84 100644 --- a/src/osd/SnapMapper.h +++ b/src/osd/SnapMapper.h @@ -136,7 +136,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bp); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; struct Mapping { @@ -161,11 +161,13 @@ public: f->dump_unsigned("snap", snap); f->dump_stream("hoid") << hoid; } - static void generate_test_instances(std::list& o) { - o.push_back(new Mapping); - o.push_back(new Mapping); - o.back()->snap = 1; - o.back()->hoid = hobject_t(object_t("objname"), "key", 123, 456, 0, ""); + static std::list generate_test_instances() { + std::list o; + o.push_back(Mapping{}); + o.push_back(Mapping{}); + o.back().snap = 1; + o.back().hoid = hobject_t(object_t("objname"), "key", 123, 456, 0, ""); + return o; } }; diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 7ad3d815429b..eebfcd545952 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -239,10 +239,12 @@ void osd_reqid_t::dump(Formatter *f) const f->dump_unsigned("tid", tid); } -void osd_reqid_t::generate_test_instances(list& o) +list osd_reqid_t::generate_test_instances() { - o.push_back(new osd_reqid_t); - o.push_back(new osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678)); + list o; + o.push_back(osd_reqid_t{}); + o.push_back(osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678)); + return o; } // -- object_locator_t -- @@ -298,14 +300,16 @@ void object_locator_t::dump(Formatter *f) const f->dump_int("hash", hash); } -void object_locator_t::generate_test_instances(list& o) +list object_locator_t::generate_test_instances() { - o.push_back(new object_locator_t); - o.push_back(new object_locator_t(123)); - o.push_back(new object_locator_t(123, 876)); - o.push_back(new object_locator_t(1, "n2")); - o.push_back(new object_locator_t(1234, "", "key")); - o.push_back(new object_locator_t(12, "n1", "key2")); + list o; + o.push_back(object_locator_t{}); + o.push_back(object_locator_t(123)); + o.push_back(object_locator_t(123, 876)); + o.push_back(object_locator_t(1, "n2")); + o.push_back(object_locator_t(1234, "", "key")); + o.push_back(object_locator_t(12, "n1", "key2")); + return o; } // -- request_redirect_t -- @@ -340,13 +344,15 @@ void request_redirect_t::dump(Formatter *f) const f->close_section(); // locator } -void request_redirect_t::generate_test_instances(list& o) +list request_redirect_t::generate_test_instances() { + list o; object_locator_t loc(1, "redir_obj"); - o.push_back(new request_redirect_t()); - o.push_back(new request_redirect_t(loc, 0)); - o.push_back(new request_redirect_t(loc, "redir_obj")); - o.push_back(new request_redirect_t(loc)); + o.push_back(request_redirect_t()); + o.push_back(request_redirect_t(loc, 0)); + o.push_back(request_redirect_t(loc, "redir_obj")); + o.push_back(request_redirect_t(loc)); + return o; } void objectstore_perf_stat_t::dump(Formatter *f) const @@ -396,12 +402,14 @@ void objectstore_perf_stat_t::decode(ceph::buffer::list::const_iterator &bl) DECODE_FINISH(bl); } -void objectstore_perf_stat_t::generate_test_instances(std::list& o) +std::list objectstore_perf_stat_t::generate_test_instances() { - o.push_back(new objectstore_perf_stat_t()); - o.push_back(new objectstore_perf_stat_t()); - o.back()->os_commit_latency_ns = 20000000; - o.back()->os_apply_latency_ns = 30000000; + std::list o; + o.push_back(objectstore_perf_stat_t()); + o.push_back(objectstore_perf_stat_t()); + o.back().os_commit_latency_ns = 20000000; + o.back().os_apply_latency_ns = 30000000; + return o; } // -- osd_stat_t -- @@ -684,29 +692,32 @@ void osd_stat_t::decode(ceph::buffer::list::const_iterator &bl) DECODE_FINISH(bl); } -void osd_stat_t::generate_test_instances(std::list& o) +std::list osd_stat_t::generate_test_instances() { - o.push_back(new osd_stat_t); + std::list o; - o.push_back(new osd_stat_t); - list ll; - store_statfs_t::generate_test_instances(ll); - o.back()->statfs = *ll.back(); - o.back()->hb_peers.push_back(7); - o.back()->snap_trim_queue_len = 8; - o.back()->num_snap_trimming = 99; - o.back()->num_shards_repaired = 101; - o.back()->os_alerts[0].emplace( + o.push_back(osd_stat_t{}); + + o.push_back(osd_stat_t{}); + list ll = store_statfs_t::generate_test_instances(); + o.back().statfs = ll.back(); + o.back().hb_peers.push_back(7); + o.back().snap_trim_queue_len = 8; + o.back().num_snap_trimming = 99; + o.back().num_shards_repaired = 101; + o.back().os_alerts[0].emplace( "some alert", "some alert details"); - o.back()->os_alerts[1].emplace( + o.back().os_alerts[1].emplace( "some alert2", "some alert2 details"); struct Interfaces gen_interfaces = { 123456789, { 1000, 900, 800 }, { 990, 890, 790 }, { 1010, 910, 810 }, 1001, { 1100, 1000, 900 }, { 1090, 990, 890 }, { 1110, 1010, 910 }, 1101 }; - o.back()->hb_pingtime[20] = gen_interfaces; + o.back().hb_pingtime[20] = gen_interfaces; gen_interfaces = { 987654321, { 100, 200, 300 }, { 90, 190, 290 }, { 110, 210, 310 }, 101 }; - o.back()->hb_pingtime[30] = gen_interfaces; + o.back().hb_pingtime[30] = gen_interfaces; + + return o; } // -- pg_t -- @@ -906,12 +917,14 @@ void pg_t::dump(Formatter *f) const f->dump_unsigned("seed", m_seed); } -void pg_t::generate_test_instances(list& o) +list pg_t::generate_test_instances() { - o.push_back(new pg_t); - o.push_back(new pg_t(1, 2)); - o.push_back(new pg_t(13123, 3)); - o.push_back(new pg_t(131223, 4)); + list o; + o.push_back(pg_t{}); + o.push_back(pg_t(1, 2)); + o.push_back(pg_t(13123, 3)); + o.push_back(pg_t(131223, 4)); + return o; } char *pg_t::calc_name(char *buf, const char *suffix_backwords) const @@ -1098,14 +1111,16 @@ void coll_t::dump(Formatter *f) const f->dump_string("name", to_str()); } -void coll_t::generate_test_instances(list& o) +list coll_t::generate_test_instances() { - o.push_back(new coll_t()); - o.push_back(new coll_t(spg_t(pg_t(1, 0), shard_id_t::NO_SHARD))); - o.push_back(new coll_t(o.back()->get_temp())); - o.push_back(new coll_t(spg_t(pg_t(3, 2), shard_id_t(12)))); - o.push_back(new coll_t(o.back()->get_temp())); - o.push_back(new coll_t()); + list o; + o.push_back(coll_t()); + o.push_back(coll_t(spg_t(pg_t(1, 0), shard_id_t::NO_SHARD))); + o.push_back(coll_t(o.back().get_temp())); + o.push_back(coll_t(spg_t(pg_t(3, 2), shard_id_t(12)))); + o.push_back(coll_t(o.back().get_temp())); + o.push_back(coll_t()); + return o; } // --- @@ -1323,13 +1338,15 @@ void pool_snap_info_t::decode(ceph::buffer::list::const_iterator& bl) DECODE_FINISH(bl); } -void pool_snap_info_t::generate_test_instances(list& o) +list pool_snap_info_t::generate_test_instances() { - o.push_back(new pool_snap_info_t); - o.push_back(new pool_snap_info_t); - o.back()->snapid = 1; - o.back()->stamp = utime_t(1, 2); - o.back()->name = "foo"; + list o; + o.push_back(pool_snap_info_t{}); + o.push_back(pool_snap_info_t{}); + o.back().snapid = 1; + o.back().stamp = utime_t(1, 2); + o.back().name = "foo"; + return o; } // -- pool_opts_t -- @@ -1542,9 +1559,11 @@ void pool_opts_t::decode(ceph::buffer::list::const_iterator& bl) DECODE_FINISH(bl); } -void pool_opts_t::generate_test_instances(std::list& o) +std::list pool_opts_t::generate_test_instances() { - o.push_back(new pool_opts_t); + std::list o; + o.push_back(pool_opts_t{}); + return o; } ostream& operator<<(ostream& out, const pool_opts_t& opts) @@ -2324,10 +2343,12 @@ bool pg_pool_t::stretch_set_can_peer(const set& want, const OSDMap& osdmap, return true; } -void pg_pool_t::generate_test_instances(list& o) +list pg_pool_t::generate_test_instances() { + list o; + pg_pool_t a; - o.push_back(new pg_pool_t(a)); + o.push_back(pg_pool_t(a)); a.create_time = utime_t(4,5); a.type = TYPE_REPLICATED; @@ -2350,7 +2371,7 @@ void pg_pool_t::generate_test_instances(list& o) a.auid = 12; a.quota_max_bytes = 473; a.quota_max_objects = 474; - o.push_back(new pg_pool_t(a)); + o.push_back(pg_pool_t(a)); a.snaps[3].name = "asdf"; a.snaps[3].snapid = 3; @@ -2358,7 +2379,7 @@ void pg_pool_t::generate_test_instances(list& o) a.snaps[6].name = "qwer"; a.snaps[6].snapid = 6; a.snaps[6].stamp = utime_t(23423, 4); - o.push_back(new pg_pool_t(a)); + o.push_back(pg_pool_t(a)); a.flags = FLAG_SELFMANAGED_SNAPS; a.snaps.clear(); @@ -2392,14 +2413,16 @@ void pg_pool_t::generate_test_instances(list& o) a.fast_read = false; a.nonprimary_shards.clear(); a.application_metadata = {{"rbd", {{"key", "value"}}}}; - o.push_back(new pg_pool_t(a)); + o.push_back(pg_pool_t(a)); // test stretch CRUSH buckets a.peering_crush_bucket_count = 10; a.peering_crush_bucket_barrier = 11; a.peering_crush_mandatory_member = 12; a.peering_crush_bucket_target = 13; - o.push_back(new pg_pool_t(a)); + o.push_back(pg_pool_t(a)); + + return o; } ostream& operator<<(ostream& out, const pg_pool_t& p) @@ -2649,8 +2672,10 @@ void object_stat_sum_t::decode(ceph::buffer::list::const_iterator& bl) DECODE_FINISH(bl); } -void object_stat_sum_t::generate_test_instances(list& o) +list object_stat_sum_t::generate_test_instances() { + list o; + object_stat_sum_t a; a.num_bytes = 1; @@ -2689,7 +2714,9 @@ void object_stat_sum_t::generate_test_instances(list& o) a.num_omap_bytes = 20000; a.num_omap_keys = 200; a.num_objects_repaired = 300; - o.push_back(new object_stat_sum_t(a)); + o.push_back(object_stat_sum_t(a)); + + return o; } void object_stat_sum_t::add(const object_stat_sum_t& o) @@ -2853,16 +2880,18 @@ void object_stat_collection_t::decode(ceph::buffer::list::const_iterator& bl) DECODE_FINISH(bl); } -void object_stat_collection_t::generate_test_instances(list& o) +list object_stat_collection_t::generate_test_instances() { + list o; + object_stat_collection_t a; - o.push_back(new object_stat_collection_t(a)); - list l; - object_stat_sum_t::generate_test_instances(l); - for (auto p = l.begin(); p != l.end(); ++p) { - a.add(**p); - o.push_back(new object_stat_collection_t(a)); + o.push_back(object_stat_collection_t(a)); + for (auto& p : object_stat_sum_t::generate_test_instances()) { + a.add(p); + o.push_back(object_stat_collection_t(a)); } + + return o; } @@ -3217,10 +3246,12 @@ void pg_stat_t::decode(ceph::buffer::list::const_iterator &bl) DECODE_FINISH(bl); } -void pg_stat_t::generate_test_instances(list& o) +list pg_stat_t::generate_test_instances() { + list o; + pg_stat_t a; - o.push_back(new pg_stat_t(a)); + o.push_back(pg_stat_t(a)); a.version = eversion_t(1, 3); a.reported_epoch = 1; @@ -3251,9 +3282,8 @@ void pg_stat_t::generate_test_instances(list& o) a.objects_scrubbed = 0; a.objects_trimmed = 0; a.snaptrim_duration = 0.123; - list l; - object_stat_collection_t::generate_test_instances(l); - a.stats = *l.back(); + list l = object_stat_collection_t::generate_test_instances(); + a.stats = l.back(); a.log_size = 99; a.ondisk_log_size = 88; a.up.push_back(123); @@ -3265,7 +3295,7 @@ void pg_stat_t::generate_test_instances(list& o) sset.insert(pg_shard_t(2)); a.object_location_counts.insert(make_pair(sset, 5)); a.acting_primary = 456; - o.push_back(new pg_stat_t(a)); + o.push_back(pg_stat_t(a)); a.up.push_back(124); a.up_primary = 124; @@ -3273,7 +3303,9 @@ void pg_stat_t::generate_test_instances(list& o) a.acting_primary = 124; a.blocked_by.push_back(155); a.blocked_by.push_back(156); - o.push_back(new pg_stat_t(a)); + o.push_back(pg_stat_t(a)); + + return o; } bool operator==(const pg_stat_t& l, const pg_stat_t& r) @@ -3381,10 +3413,11 @@ ostream& operator<<(ostream& out, const store_statfs_t &s) return out; } -void store_statfs_t::generate_test_instances(list& o) +list store_statfs_t::generate_test_instances() { + list o; store_statfs_t a; - o.push_back(new store_statfs_t(a)); + o.push_back(store_statfs_t(a)); a.total = 234; a.available = 123; a.internally_reserved = 33; @@ -3395,7 +3428,8 @@ void store_statfs_t::generate_test_instances(list& o) a.data_compressed_original = 13; a.omap_allocated = 14; a.internal_metadata = 15; - o.push_back(new store_statfs_t(a)); + o.push_back(store_statfs_t(a)); + return o; } // -- pool_stat_t -- @@ -3482,23 +3516,24 @@ void pool_stat_t::decode(ceph::buffer::list::const_iterator &bl) DECODE_FINISH(bl); } -void pool_stat_t::generate_test_instances(list& o) +list pool_stat_t::generate_test_instances() { + list o; + pool_stat_t a; - o.push_back(new pool_stat_t(a)); - - list l; - object_stat_collection_t::generate_test_instances(l); - list ll; - store_statfs_t::generate_test_instances(ll); - a.stats = *l.back(); - a.store_stats = *ll.back(); + o.push_back(pool_stat_t(a)); + + list l = object_stat_collection_t::generate_test_instances(); + list ll = store_statfs_t::generate_test_instances(); + a.stats = l.back(); + a.store_stats = ll.back(); a.log_size = 123; a.ondisk_log_size = 456; a.acting = 3; a.up = 4; a.num_store_stats = 1; - o.push_back(new pool_stat_t(a)); + o.push_back(pool_stat_t(a)); + return o; } @@ -3603,27 +3638,29 @@ void pg_history_t::dump(Formatter *f) const std::chrono::duration(prior_readable_until_ub).count()); } -void pg_history_t::generate_test_instances(list& o) -{ - o.push_back(new pg_history_t); - o.push_back(new pg_history_t); - o.back()->epoch_created = 1; - o.back()->epoch_pool_created = 1; - o.back()->last_epoch_started = 2; - o.back()->last_interval_started = 2; - o.back()->last_epoch_clean = 3; - o.back()->last_interval_clean = 2; - o.back()->last_epoch_split = 4; - o.back()->prior_readable_until_ub = make_timespan(3.1415); - o.back()->same_up_since = 5; - o.back()->same_interval_since = 6; - o.back()->same_primary_since = 7; - o.back()->last_scrub = eversion_t(8, 9); - o.back()->last_scrub_stamp = utime_t(10, 11); - o.back()->last_deep_scrub = eversion_t(12, 13); - o.back()->last_deep_scrub_stamp = utime_t(14, 15); - o.back()->last_clean_scrub_stamp = utime_t(16, 17); - o.back()->last_epoch_marked_full = 18; +list pg_history_t::generate_test_instances() +{ + list o; + o.push_back(pg_history_t{}); + o.push_back(pg_history_t{}); + o.back().epoch_created = 1; + o.back().epoch_pool_created = 1; + o.back().last_epoch_started = 2; + o.back().last_interval_started = 2; + o.back().last_epoch_clean = 3; + o.back().last_interval_clean = 2; + o.back().last_epoch_split = 4; + o.back().prior_readable_until_ub = make_timespan(3.1415); + o.back().same_up_since = 5; + o.back().same_interval_since = 6; + o.back().same_primary_since = 7; + o.back().last_scrub = eversion_t(8, 9); + o.back().last_scrub_stamp = utime_t(10, 11); + o.back().last_deep_scrub = eversion_t(12, 13); + o.back().last_deep_scrub_stamp = utime_t(14, 15); + o.back().last_clean_scrub_stamp = utime_t(16, 17); + o.back().last_epoch_marked_full = 18; + return o; } @@ -3736,29 +3773,28 @@ void pg_info_t::dump(Formatter *f) const f->close_section(); } -void pg_info_t::generate_test_instances(list& o) +list pg_info_t::generate_test_instances() { - o.push_back(new pg_info_t); - o.push_back(new pg_info_t); - list h; - pg_history_t::generate_test_instances(h); - o.back()->history = *h.back(); - o.back()->pgid = spg_t(pg_t(1, 2), shard_id_t::NO_SHARD); - o.back()->last_update = eversion_t(3, 4); - o.back()->last_complete = eversion_t(5, 6); - o.back()->last_user_version = 2; - o.back()->log_tail = eversion_t(7, 8); - o.back()->last_backfill = hobject_t(object_t("objname"), "key", 123, 456, -1, ""); + list o; + o.push_back(pg_info_t{}); + o.push_back(pg_info_t{}); + list h = pg_history_t::generate_test_instances(); + o.back().history = h.back(); + o.back().pgid = spg_t(pg_t(1, 2), shard_id_t::NO_SHARD); + o.back().last_update = eversion_t(3, 4); + o.back().last_complete = eversion_t(5, 6); + o.back().last_user_version = 2; + o.back().log_tail = eversion_t(7, 8); + o.back().last_backfill = hobject_t(object_t("objname"), "key", 123, 456, -1, ""); { - list s; - pg_stat_t::generate_test_instances(s); - o.back()->stats = *s.back(); + list s = pg_stat_t::generate_test_instances(); + o.back().stats = s.back(); } { - list s; - pg_hit_set_history_t::generate_test_instances(s); - o.back()->hit_set = *s.back(); + list s = pg_hit_set_history_t::generate_test_instances(); + o.back().hit_set = s.back(); } + return o; } // -- pg_notify_t -- @@ -3806,15 +3842,19 @@ void pg_notify_t::dump(Formatter *f) const f->dump_object("past_intervals", past_intervals); } -void pg_notify_t::generate_test_instances(list& o) +list pg_notify_t::generate_test_instances() { - o.push_back(new pg_notify_t); - o.push_back(new pg_notify_t(shard_id_t(3), shard_id_t::NO_SHARD, 1, 1, + list o; + + o.push_back(pg_notify_t{}); + o.push_back(pg_notify_t(shard_id_t(3), shard_id_t::NO_SHARD, 1, 1, pg_info_t(spg_t(pg_t(0,10), shard_id_t(-1))), PastIntervals(), PG_FEATURE_CLASSIC_ALL)); - o.push_back(new pg_notify_t(shard_id_t(0), shard_id_t(2), 3, 10, + o.push_back(pg_notify_t(shard_id_t(0), shard_id_t(2), 3, 10, pg_info_t(spg_t(pg_t(10,10), shard_id_t(2))), PastIntervals(), PG_FEATURE_CLASSIC_ALL)); + + return o; } ostream &operator<<(ostream &lhs, const pg_notify_t ¬ify) @@ -3897,16 +3937,18 @@ std::string PastIntervals::pg_interval_t::fmt_print() const acting, primary, maybe_went_rw ? " maybe_went_rw" : ""); } -void PastIntervals::pg_interval_t::generate_test_instances(list& o) +auto PastIntervals::pg_interval_t::generate_test_instances() -> list { - o.push_back(new pg_interval_t); - o.push_back(new pg_interval_t); - o.back()->up.push_back(1); - o.back()->acting.push_back(2); - o.back()->acting.push_back(3); - o.back()->first = 4; - o.back()->last = 5; - o.back()->maybe_went_rw = true; + list o; + o.push_back(pg_interval_t{}); + o.push_back(pg_interval_t{}); + o.back().up.push_back(1); + o.back().acting.push_back(2); + o.back().acting.push_back(3); + o.back().first = 4; + o.back().last = 5; + o.back().maybe_went_rw = true; + return o; } /** @@ -3961,8 +4003,9 @@ struct compact_interval_t { std::string fmt_print() const { return fmt::format("([{},{}] acting={})", first, last, acting); } - static void generate_test_instances(list & o) { + static list generate_test_instances() { /* Not going to be used, we'll generate pi_compact_rep directly */ + return {}; } }; ostream &operator<<(ostream &o, const compact_interval_t &rhs) @@ -4081,11 +4124,12 @@ public: f->close_section(); f->close_section(); } - static void generate_test_instances(list &o) { + static list generate_test_instances() { + list o; using ival = PastIntervals::pg_interval_t; using ivallst = std::list; o.push_back( - new pi_compact_rep( + pi_compact_rep( true, ivallst { ival{{0, 1, 2}, {0, 1, 2}, 10, 20, true, 0, 0} , ival{{ 1, 2}, { 1, 2}, 21, 30, true, 1, 1} @@ -4093,7 +4137,7 @@ public: , ival{{0, 2}, {0, 2}, 36, 50, true, 0, 0} })); o.push_back( - new pi_compact_rep( + pi_compact_rep( false, ivallst { ival{{0, 1, 2}, {0, 1, 2}, 10, 20, true, 0, 0} , ival{{ 1, 2}, { 1, 2}, 21, 30, true, 1, 1} @@ -4101,13 +4145,14 @@ public: , ival{{0, 2}, {0, 2}, 36, 50, true, 0, 0} })); o.push_back( - new pi_compact_rep( + pi_compact_rep( true, ivallst { ival{{2, 1, 0}, {2, 1, 0}, 10, 20, true, 1, 1} , ival{{ 0, 2}, { 0, 2}, 21, 30, true, 0, 0} , ival{{ 0, 2}, {2, 0}, 31, 35, true, 2, 2} , ival{{ 0, 2}, { 0, 2}, 36, 50, true, 0, 0} })); + return o; } void iterate_mayberw_back_to( epoch_t les, @@ -4185,17 +4230,16 @@ void PastIntervals::decode(ceph::buffer::list::const_iterator &bl) DECODE_FINISH(bl); } -void PastIntervals::generate_test_instances(list &o) +list PastIntervals::generate_test_instances() { + list o; { - list compact; - pi_compact_rep::generate_test_instances(compact); - for (auto &&i: compact) { + for (auto &&i: pi_compact_rep::generate_test_instances()) { // takes ownership of contents - o.push_back(new PastIntervals(i)); + o.push_back(PastIntervals(i.clone().release())); } } - return; + return o; } bool PastIntervals::is_new_interval( @@ -4548,18 +4592,19 @@ void pg_query_t::dump(Formatter *f) const history.dump(f); f->close_section(); } -void pg_query_t::generate_test_instances(list& o) +list pg_query_t::generate_test_instances() { - o.push_back(new pg_query_t()); - list h; - pg_history_t::generate_test_instances(h); - o.push_back(new pg_query_t(pg_query_t::INFO, shard_id_t(1), shard_id_t(2), *h.back(), 4)); - o.push_back(new pg_query_t(pg_query_t::MISSING, shard_id_t(2), shard_id_t(3), *h.back(), 4)); - o.push_back(new pg_query_t(pg_query_t::LOG, shard_id_t(0), shard_id_t(0), - eversion_t(4, 5), *h.back(), 4)); - o.push_back(new pg_query_t(pg_query_t::FULLLOG, - shard_id_t::NO_SHARD, shard_id_t::NO_SHARD, - *h.back(), 5)); + list o; + o.push_back(pg_query_t()); + list h = pg_history_t::generate_test_instances(); + o.push_back(pg_query_t(pg_query_t::INFO, shard_id_t(1), shard_id_t(2), h.back(), 4)); + o.push_back(pg_query_t(pg_query_t::MISSING, shard_id_t(2), shard_id_t(3), h.back(), 4)); + o.push_back(pg_query_t(pg_query_t::LOG, shard_id_t(0), shard_id_t(0), + eversion_t(4, 5), h.back(), 4)); + o.push_back(pg_query_t(pg_query_t::FULLLOG, + shard_id_t::NO_SHARD, shard_id_t::NO_SHARD, + h.back(), 5)); + return o; } // -- pg_lease_t -- @@ -4589,13 +4634,15 @@ void pg_lease_t::dump(Formatter *f) const f->dump_stream("interval") << interval; } -void pg_lease_t::generate_test_instances(std::list& o) +std::list pg_lease_t::generate_test_instances() { - o.push_back(new pg_lease_t()); - o.push_back(new pg_lease_t()); - o.back()->readable_until = make_timespan(1.5); - o.back()->readable_until_ub = make_timespan(3.4); - o.back()->interval = make_timespan(1.0); + std::list o; + o.push_back(pg_lease_t()); + o.push_back(pg_lease_t()); + o.back().readable_until = make_timespan(1.5); + o.back().readable_until_ub = make_timespan(3.4); + o.back().interval = make_timespan(1.0); + return o; } // -- pg_lease_ack_t -- @@ -4619,11 +4666,13 @@ void pg_lease_ack_t::dump(Formatter *f) const f->dump_stream("readable_until_ub") << readable_until_ub; } -void pg_lease_ack_t::generate_test_instances(std::list& o) +std::list pg_lease_ack_t::generate_test_instances() { - o.push_back(new pg_lease_ack_t()); - o.push_back(new pg_lease_ack_t()); - o.back()->readable_until_ub = make_timespan(3.4); + std::list o; + o.push_back(pg_lease_ack_t()); + o.push_back(pg_lease_ack_t()); + o.back().readable_until_ub = make_timespan(3.4); + return o; } @@ -4775,25 +4824,27 @@ void ObjectModDesc::dump(Formatter *f) const f->close_section(); } -void ObjectModDesc::generate_test_instances(list& o) +list ObjectModDesc::generate_test_instances() { + list o; map > attrs; attrs[OI_ATTR]; attrs[SS_ATTR]; attrs["asdf"]; - o.push_back(new ObjectModDesc()); - o.back()->append(100); - o.back()->setattrs(attrs); - o.push_back(new ObjectModDesc()); - o.back()->rmobject(1001); - o.push_back(new ObjectModDesc()); - o.back()->create(); - o.back()->setattrs(attrs); - o.push_back(new ObjectModDesc()); - o.back()->create(); - o.back()->setattrs(attrs); - o.back()->mark_unrollbackable(); - o.back()->append(1000); + o.push_back(ObjectModDesc()); + o.back().append(100); + o.back().setattrs(attrs); + o.push_back(ObjectModDesc()); + o.back().rmobject(1001); + o.push_back(ObjectModDesc()); + o.back().create(); + o.back().setattrs(attrs); + o.push_back(ObjectModDesc()); + o.back().create(); + o.back().setattrs(attrs); + o.back().mark_unrollbackable(); + o.back().append(1000); + return o; } void ObjectModDesc::encode(ceph::buffer::list &_bl) const @@ -4925,13 +4976,15 @@ void ObjectCleanRegions::dump(Formatter *f) const f->close_section(); } -void ObjectCleanRegions::generate_test_instances(list& o) +list ObjectCleanRegions::generate_test_instances() { - o.push_back(new ObjectCleanRegions()); - o.push_back(new ObjectCleanRegions()); - o.back()->mark_data_region_dirty(4096, 40960); - o.back()->mark_omap_dirty(); - o.back()->mark_object_new(); + list o; + o.push_back(ObjectCleanRegions()); + o.push_back(ObjectCleanRegions()); + o.back().mark_data_region_dirty(4096, 40960); + o.back().mark_omap_dirty(); + o.back().mark_object_new(); + return o; } std::string ObjectCleanRegions::fmt_print() const @@ -5150,16 +5203,18 @@ void pg_log_entry_t::dump(Formatter *f) const } } -void pg_log_entry_t::generate_test_instances(list& o) +list pg_log_entry_t::generate_test_instances() { - o.push_back(new pg_log_entry_t()); + list o; + o.push_back(pg_log_entry_t()); hobject_t oid(object_t("objname"), "key", 123, 456, 0, ""); - o.push_back(new pg_log_entry_t(MODIFY, oid, eversion_t(1,2), eversion_t(3,4), - 1, osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), - utime_t(8,9), 0)); - o.push_back(new pg_log_entry_t(ERROR, oid, eversion_t(1,2), eversion_t(3,4), - 1, osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), - utime_t(8,9), -ENOENT)); + o.push_back(pg_log_entry_t(MODIFY, oid, eversion_t(1,2), eversion_t(3,4), + 1, osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), + utime_t(8,9), 0)); + o.push_back(pg_log_entry_t(ERROR, oid, eversion_t(1,2), eversion_t(3,4), + 1, osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), + utime_t(8,9), -ENOENT)); + return o; } ostream& operator<<(ostream& out, const pg_log_entry_t& e) @@ -5244,17 +5299,19 @@ void pg_log_dup_t::dump(Formatter *f) const } } -void pg_log_dup_t::generate_test_instances(list& o) +list pg_log_dup_t::generate_test_instances() { - o.push_back(new pg_log_dup_t()); - o.push_back(new pg_log_dup_t(eversion_t(1,2), - 1, - osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), - 0)); - o.push_back(new pg_log_dup_t(eversion_t(1,2), - 2, - osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), - -ENOENT)); + list o; + o.push_back(pg_log_dup_t()); + o.push_back(pg_log_dup_t(eversion_t(1,2), + 1, + osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), + 0)); + o.push_back(pg_log_dup_t(eversion_t(1,2), + 2, + osd_reqid_t(entity_name_t::CLIENT(777), 8, 999), + -ENOENT)); + return o; } @@ -5370,18 +5427,19 @@ void pg_log_t::dump(Formatter *f) const f->close_section(); } -void pg_log_t::generate_test_instances(list& o) +list pg_log_t::generate_test_instances() { - o.push_back(new pg_log_t); + list o; + o.push_back(pg_log_t{}); // this is nonsensical: - o.push_back(new pg_log_t); - o.back()->head = eversion_t(1,2); - o.back()->tail = eversion_t(3,4); - list e; - pg_log_entry_t::generate_test_instances(e); - for (auto p = e.begin(); p != e.end(); ++p) - o.back()->log.push_back(**p); + o.push_back(pg_log_t{}); + o.back().head = eversion_t(1,2); + o.back().tail = eversion_t(3,4); + for (auto& p : pg_log_entry_t::generate_test_instances()) { + o.back().log.push_back(p); + } + return o; } static void _handle_dups(CephContext* cct, pg_log_t &target, const pg_log_t &other, unsigned maxdups) @@ -5518,20 +5576,22 @@ void object_copy_cursor_t::dump(Formatter *f) const f->dump_unsigned("omap_complete", (int)omap_complete); } -void object_copy_cursor_t::generate_test_instances(list& o) +list object_copy_cursor_t::generate_test_instances() { - o.push_back(new object_copy_cursor_t); - o.push_back(new object_copy_cursor_t); - o.back()->attr_complete = true; - o.back()->data_offset = 123; - o.push_back(new object_copy_cursor_t); - o.back()->attr_complete = true; - o.back()->data_complete = true; - o.back()->omap_offset = "foo"; - o.push_back(new object_copy_cursor_t); - o.back()->attr_complete = true; - o.back()->data_complete = true; - o.back()->omap_complete = true; + list o; + o.push_back(object_copy_cursor_t{}); + o.push_back(object_copy_cursor_t{}); + o.back().attr_complete = true; + o.back().data_offset = 123; + o.push_back(object_copy_cursor_t{}); + o.back().attr_complete = true; + o.back().data_complete = true; + o.back().omap_offset = "foo"; + o.push_back(object_copy_cursor_t{}); + o.back().attr_complete = true; + o.back().data_complete = true; + o.back().omap_complete = true; + return o; } // -- object_copy_data_t -- @@ -5625,37 +5685,40 @@ void object_copy_data_t::decode(ceph::buffer::list::const_iterator& bl) DECODE_FINISH(bl); } -void object_copy_data_t::generate_test_instances(list& o) +list object_copy_data_t::generate_test_instances() { - o.push_back(new object_copy_data_t()); + list o; + + o.push_back(object_copy_data_t()); - list cursors; - object_copy_cursor_t::generate_test_instances(cursors); + list cursors = object_copy_cursor_t::generate_test_instances(); auto ci = cursors.begin(); - o.back()->cursor = **(ci++); + o.back().cursor = *(ci++); - o.push_back(new object_copy_data_t()); - o.back()->cursor = **(ci++); + o.push_back(object_copy_data_t()); + o.back().cursor = *(ci++); - o.push_back(new object_copy_data_t()); - o.back()->size = 1234; - o.back()->mtime.set_from_double(1234); + o.push_back(object_copy_data_t()); + o.back().size = 1234; + o.back().mtime.set_from_double(1234); ceph::buffer::ptr bp("there", 5); ceph::buffer::list bl; bl.push_back(bp); - o.back()->attrs["hello"] = bl; + o.back().attrs["hello"] = bl; ceph::buffer::ptr bp2("not", 3); ceph::buffer::list bl2; bl2.push_back(bp2); map omap; omap["why"] = bl2; using ceph::encode; - encode(omap, o.back()->omap_data); + encode(omap, o.back().omap_data); ceph::buffer::ptr databp("iamsomedatatocontain", 20); - o.back()->data.push_back(databp); - o.back()->omap_header.append("this is an omap header"); - o.back()->snaps.push_back(123); - o.back()->reqids.push_back(make_pair(osd_reqid_t(), version_t())); + o.back().data.push_back(databp); + o.back().omap_header.append("this is an omap header"); + o.back().snaps.push_back(123); + o.back().reqids.push_back(make_pair(osd_reqid_t(), version_t())); + + return o; } void object_copy_data_t::dump(Formatter *f) const @@ -5722,10 +5785,12 @@ void pg_create_t::dump(Formatter *f) const f->dump_int("split_bits", split_bits); } -void pg_create_t::generate_test_instances(list& o) +list pg_create_t::generate_test_instances() { - o.push_back(new pg_create_t); - o.push_back(new pg_create_t(1, pg_t(3, 4), 2)); + list o; + o.push_back(pg_create_t{}); + o.push_back(pg_create_t(1, pg_t(3, 4), 2)); + return o; } @@ -5763,12 +5828,14 @@ void pg_hit_set_info_t::dump(Formatter *f) const f->dump_stream("using_gmt") << using_gmt; } -void pg_hit_set_info_t::generate_test_instances(list& ls) +list pg_hit_set_info_t::generate_test_instances() { - ls.push_back(new pg_hit_set_info_t); - ls.push_back(new pg_hit_set_info_t); - ls.back()->begin = utime_t(1, 2); - ls.back()->end = utime_t(3, 4); + list ls; + ls.push_back(pg_hit_set_info_t{}); + ls.push_back(pg_hit_set_info_t{}); + ls.back().begin = utime_t(1, 2); + ls.back().end = utime_t(3, 4); + return ls; } @@ -5818,12 +5885,14 @@ void pg_hit_set_history_t::dump(Formatter *f) const f->close_section(); } -void pg_hit_set_history_t::generate_test_instances(list& ls) +list pg_hit_set_history_t::generate_test_instances() { - ls.push_back(new pg_hit_set_history_t); - ls.push_back(new pg_hit_set_history_t); - ls.back()->current_last_update = eversion_t(1, 2); - ls.back()->history.push_back(pg_hit_set_info_t()); + list ls; + ls.push_back(pg_hit_set_history_t{}); + ls.push_back(pg_hit_set_history_t{}); + ls.back().current_last_update = eversion_t(1, 2); + ls.back().history.push_back(pg_hit_set_info_t()); + return ls; } // -- GuardedMap -- @@ -5932,10 +6001,11 @@ void OSDSuperblock::dump(Formatter *f) const f->dump_stream("maps") << get_maps(); } -void OSDSuperblock::generate_test_instances(list& o) +list OSDSuperblock::generate_test_instances() { + list o; OSDSuperblock z; - o.push_back(new OSDSuperblock(z)); + o.push_back(OSDSuperblock(z)); z.cluster_fsid.parse("01010101-0101-0101-0101-010101010101"); z.osd_fsid.parse("02020202-0202-0202-0202-020202020202"); z.whoami = 3; @@ -5943,8 +6013,9 @@ void OSDSuperblock::generate_test_instances(list& o) z.insert_osdmap_epochs(5, 9); z.mounted = 8; z.clean_thru = 7; - o.push_back(new OSDSuperblock(z)); - o.push_back(new OSDSuperblock(z)); + o.push_back(OSDSuperblock(z)); + o.push_back(OSDSuperblock(z)); + return o; } // -- SnapSet -- @@ -6011,17 +6082,19 @@ void SnapSet::dump(Formatter *f) const f->close_section(); } -void SnapSet::generate_test_instances(list& o) +list SnapSet::generate_test_instances() { - o.push_back(new SnapSet); - o.push_back(new SnapSet); - o.back()->seq = 123; - o.push_back(new SnapSet); - o.back()->seq = 123; - o.back()->clones.push_back(12); - o.back()->clone_size[12] = 12345; - o.back()->clone_overlap[12]; - o.back()->clone_snaps[12] = {12, 10, 8}; + list o; + o.push_back(SnapSet{}); + o.push_back(SnapSet{}); + o.back().seq = 123; + o.push_back(SnapSet{}); + o.back().seq = 123; + o.back().clones.push_back(12); + o.back().clone_size[12] = 12345; + o.back().clone_overlap[12]; + o.back().clone_snaps[12] = {12, 10, 8}; + return o; } ostream& operator<<(ostream& out, const SnapSet& cs) @@ -6118,12 +6191,13 @@ std::string watch_info_t::fmt_print() const } -void watch_info_t::generate_test_instances(list& o) +list watch_info_t::generate_test_instances() { - o.push_back(new watch_info_t); - o.push_back(new watch_info_t); - o.back()->cookie = 123; - o.back()->timeout_seconds = 99; + list o; + o.push_back(watch_info_t{}); + o.push_back(watch_info_t{}); + o.back().cookie = 123; + o.back().timeout_seconds = 99; entity_addr_t ea; ea.set_type(entity_addr_t::TYPE_LEGACY); ea.set_nonce(1); @@ -6133,7 +6207,8 @@ void watch_info_t::generate_test_instances(list& o) ea.set_in4_quad(2, 1); ea.set_in4_quad(3, 2); ea.set_port(2); - o.back()->addr = ea; + o.back().addr = ea; + return o; } // -- chunk_info_t -- @@ -6170,13 +6245,15 @@ void chunk_info_t::dump(Formatter *f) const f->dump_unsigned("flags", flags); } -void chunk_info_t::generate_test_instances(std::list& o) +std::list chunk_info_t::generate_test_instances() { - o.push_back(new chunk_info_t); - o.push_back(new chunk_info_t); - o.back()->length = 123; - o.back()->oid = hobject_t(object_t("foo"), "", 123, 456, -1, ""); - o.back()->flags = cflag_t::FLAG_DIRTY; + std::list o; + o.push_back(chunk_info_t{}); + o.push_back(chunk_info_t{}); + o.back().length = 123; + o.back().oid = hobject_t(object_t("foo"), "", 123, 456, -1, ""); + o.back().flags = cflag_t::FLAG_DIRTY; + return o; } bool chunk_info_t::operator==(const chunk_info_t& cit) const @@ -6433,10 +6510,12 @@ void object_manifest_t::dump(Formatter *f) const } } -void object_manifest_t::generate_test_instances(list& o) +list object_manifest_t::generate_test_instances() { - o.push_back(new object_manifest_t()); - o.back()->type = TYPE_REDIRECT; + list o; + o.push_back(object_manifest_t()); + o.back().type = TYPE_REDIRECT; + return o; } ostream& operator<<(ostream& out, const object_manifest_t& om) @@ -6654,11 +6733,13 @@ void object_info_t::dump(Formatter *f) const f->close_section(); } -void object_info_t::generate_test_instances(list& o) +list object_info_t::generate_test_instances() { - o.push_back(new object_info_t()); + list o; + o.push_back(object_info_t()); // fixme + return o; } @@ -6713,20 +6794,22 @@ ostream &operator<<(ostream &out, const ObjectRecoveryProgress &prog) return out << prog.fmt_print(); } -void ObjectRecoveryProgress::generate_test_instances( - list& o) +list ObjectRecoveryProgress::generate_test_instances() { - o.push_back(new ObjectRecoveryProgress); - o.back()->first = false; - o.back()->data_complete = true; - o.back()->omap_complete = true; - o.back()->data_recovered_to = 100; + list o; + o.push_back(ObjectRecoveryProgress{}); + o.back().first = false; + o.back().data_complete = true; + o.back().omap_complete = true; + o.back().data_recovered_to = 100; - o.push_back(new ObjectRecoveryProgress); - o.back()->first = true; - o.back()->data_complete = false; - o.back()->omap_complete = false; - o.back()->data_recovered_to = 0; + o.push_back(ObjectRecoveryProgress{}); + o.back().first = true; + o.back().data_complete = false; + o.back().omap_complete = false; + o.back().data_recovered_to = 0; + + return o; } ostream &ObjectRecoveryProgress::print(ostream &out) const @@ -6796,14 +6879,15 @@ void ObjectRecoveryInfo::decode(ceph::buffer::list::const_iterator &bl, } } -void ObjectRecoveryInfo::generate_test_instances( - list& o) +list ObjectRecoveryInfo::generate_test_instances() { - o.push_back(new ObjectRecoveryInfo); - o.back()->soid = hobject_t(sobject_t("key", CEPH_NOSNAP)); - o.back()->version = eversion_t(0,0); - o.back()->size = 100; - o.back()->object_exist = false; + list o; + o.push_back(ObjectRecoveryInfo{}); + o.back().soid = hobject_t(sobject_t("key", CEPH_NOSNAP)); + o.back().version = eversion_t(0,0); + o.back().size = 100; + o.back().object_exist = false; + return o; } @@ -6841,13 +6925,15 @@ std::string ObjectRecoveryInfo::fmt_print() const } // -- PushReplyOp -- -void PushReplyOp::generate_test_instances(list &o) +list PushReplyOp::generate_test_instances() { - o.push_back(new PushReplyOp); - o.push_back(new PushReplyOp); - o.back()->soid = hobject_t(sobject_t("asdf", 2)); - o.push_back(new PushReplyOp); - o.back()->soid = hobject_t(sobject_t("asdf", CEPH_NOSNAP)); + list o; + o.push_back(PushReplyOp{}); + o.push_back(PushReplyOp{}); + o.back().soid = hobject_t(sobject_t("asdf", 2)); + o.push_back(PushReplyOp{}); + o.back().soid = hobject_t(sobject_t("asdf", CEPH_NOSNAP)); + return o; } void PushReplyOp::encode(ceph::buffer::list &bl) const @@ -6914,15 +7000,17 @@ uint64_t PushReplyOp::cost(CephContext *cct) const } // -- PullOp -- -void PullOp::generate_test_instances(list &o) +list PullOp::generate_test_instances() { - o.push_back(new PullOp); - o.push_back(new PullOp); - o.back()->soid = hobject_t(sobject_t("asdf", 2)); - o.back()->recovery_info.version = eversion_t(3, 10); - o.push_back(new PullOp); - o.back()->soid = hobject_t(sobject_t("asdf", CEPH_NOSNAP)); - o.back()->recovery_info.version = eversion_t(0, 0); + list o; + o.push_back(PullOp{}); + o.push_back(PullOp{}); + o.back().soid = hobject_t(sobject_t("asdf", 2)); + o.back().recovery_info.version = eversion_t(3, 10); + o.push_back(PullOp{}); + o.back().soid = hobject_t(sobject_t("asdf", CEPH_NOSNAP)); + o.back().recovery_info.version = eversion_t(0, 0); + return o; } void PullOp::encode(ceph::buffer::list &bl, uint64_t features) const @@ -6991,15 +7079,17 @@ uint64_t PullOp::cost(CephContext *cct) const } // -- PushOp -- -void PushOp::generate_test_instances(list &o) +list PushOp::generate_test_instances() { - o.push_back(new PushOp); - o.push_back(new PushOp); - o.back()->soid = hobject_t(sobject_t("asdf", 2)); - o.back()->version = eversion_t(3, 10); - o.push_back(new PushOp); - o.back()->soid = hobject_t(sobject_t("asdf", CEPH_NOSNAP)); - o.back()->version = eversion_t(0, 0); + list o; + o.push_back(PushOp{}); + o.push_back(PushOp{}); + o.back().soid = hobject_t(sobject_t("asdf", 2)); + o.back().version = eversion_t(3, 10); + o.push_back(PushOp{}); + o.back().soid = hobject_t(sobject_t("asdf", CEPH_NOSNAP)); + o.back().version = eversion_t(0, 0); + return o; } void PushOp::encode(ceph::buffer::list &bl, uint64_t features) const @@ -7166,17 +7256,18 @@ void ScrubMap::dump(Formatter *f) const f->close_section(); } -void ScrubMap::generate_test_instances(list& o) +list ScrubMap::generate_test_instances() { - o.push_back(new ScrubMap); - o.push_back(new ScrubMap); - o.back()->valid_through = eversion_t(1, 2); - o.back()->incr_since = eversion_t(3, 4); - list obj; - object::generate_test_instances(obj); - o.back()->objects[hobject_t(object_t("foo"), "fookey", 123, 456, 0, "")] = *obj.back(); + list o; + o.push_back(ScrubMap{}); + o.push_back(ScrubMap{}); + o.back().valid_through = eversion_t(1, 2); + o.back().incr_since = eversion_t(3, 4); + list obj = object::generate_test_instances(); + o.back().objects[hobject_t(object_t("foo"), "fookey", 123, 456, 0, "")] = obj.back(); obj.pop_back(); - o.back()->objects[hobject_t(object_t("bar"), string(), 123, 456, 0, "")] = *obj.back(); + o.back().objects[hobject_t(object_t("bar"), string(), 123, 456, 0, "")] = obj.back(); + return o; } // -- ScrubMap::object -- @@ -7268,23 +7359,26 @@ void ScrubMap::object::dump(Formatter *f) const f->close_section(); } -void ScrubMap::object::generate_test_instances(list& o) +auto ScrubMap::object::generate_test_instances() -> list { - o.push_back(new object); - o.push_back(new object); - o.back()->negative = true; - o.push_back(new object); - o.back()->size = 123; + list o; + + o.push_back(object{}); + o.push_back(object{}); + o.back().negative = true; + o.push_back(object{}); + o.back().size = 123; { bufferlist foobl; foobl.push_back(ceph::buffer::copy("foo", 3)); - o.back()->attrs["foo"] = std::move(foobl); + o.back().attrs["foo"] = std::move(foobl); } { bufferlist barbl; barbl.push_back(ceph::buffer::copy("barval", 6)); - o.back()->attrs["bar"] = std::move(barbl); + o.back().attrs["bar"] = std::move(barbl); } + return o; } // -- OSDOp -- diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 0e116e06fabe..09950f809f22 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -177,7 +177,7 @@ struct osd_reqid_t { DENC_FINISH(p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(osd_reqid_t) @@ -202,10 +202,12 @@ struct pg_shard_t { f->dump_unsigned("shard", static_cast(shard)); } } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_shard_t); - o.push_back(new pg_shard_t(1)); - o.push_back(new pg_shard_t(1, shard_id_t(2))); + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_shard_t{}); + o.push_back(pg_shard_t(1)); + o.push_back(pg_shard_t(1, shard_id_t(2))); + return o; } auto operator<=>(const pg_shard_t&) const = default; }; @@ -307,7 +309,7 @@ struct object_locator_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(object_locator_t) @@ -357,7 +359,7 @@ public: void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(request_redirect_t) @@ -505,7 +507,7 @@ struct pg_t { *this = opg; } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_t) @@ -615,9 +617,11 @@ struct spg_t { f->dump_stream("pgid") << pgid; f->dump_unsigned("shard", static_cast(shard)); } - static void generate_test_instances(std::list& o) { - o.push_back(new spg_t); - o.push_back(new spg_t(pg_t(1, 2), shard_id_t(3))); + static std::list generate_test_instances() { + std::list o; + o.push_back(spg_t{}); + o.push_back(spg_t(pg_t(1, 2), shard_id_t(3))); + return o; } ghobject_t make_temp_ghobject(const std::string& name) const { return ghobject_t( @@ -802,7 +806,7 @@ public: } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(coll_t) @@ -950,9 +954,11 @@ public: f->dump_unsigned("version", version); f->dump_unsigned("epoch", epoch); } - static void generate_test_instances(std::list& o) { - o.push_back(new eversion_t); - o.push_back(new eversion_t(1, 2)); + static std::list generate_test_instances() { + std::list o; + o.push_back(eversion_t{}); + o.push_back(eversion_t(1, 2)); + return o; } }; WRITE_CLASS_ENCODER(eversion_t) @@ -1008,7 +1014,7 @@ struct objectstore_perf_stat_t { void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(objectstore_perf_stat_t) @@ -1068,7 +1074,7 @@ struct pool_snap_info_t { void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(pool_snap_info_t) @@ -1190,7 +1196,7 @@ public: void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); private: typedef std::map opts_t; @@ -1244,15 +1250,17 @@ struct pg_merge_meta_t { f->dump_stream("source_version") << source_version; f->dump_stream("target_version") << target_version; } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_merge_meta_t); - o.push_back(new pg_merge_meta_t); - o.back()->source_pgid = pg_t(1,2); - o.back()->ready_epoch = 1; - o.back()->last_epoch_started = 2; - o.back()->last_epoch_clean = 3; - o.back()->source_version = eversion_t(4,5); - o.back()->target_version = eversion_t(6,7); + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_merge_meta_t{}); + o.push_back(pg_merge_meta_t{}); + o.back().source_pgid = pg_t(1,2); + o.back().ready_epoch = 1; + o.back().last_epoch_started = 2; + o.back().last_epoch_clean = 3; + o.back().source_version = eversion_t(4,5); + o.back().target_version = eversion_t(6,7); + return o; } }; WRITE_CLASS_ENCODER(pg_merge_meta_t) @@ -1948,7 +1956,7 @@ public: void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(pg_pool_t) @@ -2186,7 +2194,7 @@ struct object_stat_sum_t { } void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(object_stat_sum_t) @@ -2210,7 +2218,7 @@ struct object_stat_collection_t { void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool is_zero() const { return sum.is_zero(); @@ -2437,7 +2445,7 @@ struct pg_stat_t { std::string dump_scrub_schedule() const; void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_stat_t) @@ -2567,7 +2575,7 @@ struct store_statfs_t denc(v.internal_metadata, p); DENC_FINISH(p); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_DENC(store_statfs_t) @@ -2655,7 +2663,7 @@ struct osd_stat_t { void dump_ping_time(ceph::Formatter *f) const; void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(osd_stat_t) @@ -2798,7 +2806,7 @@ struct pool_stat_t { void dump(ceph::Formatter *f) const; void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(pool_stat_t) @@ -2831,7 +2839,7 @@ struct pg_hit_set_info_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_hit_set_info_t) @@ -2855,7 +2863,7 @@ struct pg_hit_set_history_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_hit_set_history_t) @@ -3005,7 +3013,7 @@ struct pg_history_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); ceph::signedspan refresh_prior_readable_until_ub( ceph::signedspan now, ///< now, relative to osd startup_time @@ -3119,7 +3127,7 @@ struct pg_info_t { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_info_t) @@ -3331,19 +3339,21 @@ struct pg_fast_info_t { f->dump_unsigned("num_objects_dirty", stats.stats.sum.num_objects_dirty); f->close_section(); } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_fast_info_t); - o.push_back(new pg_fast_info_t); - o.back()->last_update = eversion_t(1, 2); - o.back()->last_complete = eversion_t(3, 4); - o.back()->last_user_version = version_t(5); - o.back()->stats.version = eversion_t(7, 8); - o.back()->stats.reported_seq = 9; - o.back()->stats.last_fresh = utime_t(10, 0); - o.back()->stats.last_active = utime_t(11, 0); - o.back()->stats.last_peered = utime_t(12, 0); - o.back()->stats.last_clean = utime_t(13, 0); - o.back()->stats.last_unstale = utime_t(14, 0); + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_fast_info_t{}); + o.push_back(pg_fast_info_t{}); + o.back().last_update = eversion_t(1, 2); + o.back().last_complete = eversion_t(3, 4); + o.back().last_user_version = version_t(5); + o.back().stats.version = eversion_t(7, 8); + o.back().stats.reported_seq = 9; + o.back().stats.last_fresh = utime_t(10, 0); + o.back().stats.last_active = utime_t(11, 0); + o.back().stats.last_peered = utime_t(12, 0); + o.back().stats.last_clean = utime_t(13, 0); + o.back().stats.last_unstale = utime_t(14, 0); + return o; } }; WRITE_CLASS_ENCODER(pg_fast_info_t) @@ -3390,7 +3400,7 @@ public: void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; std::string fmt_print() const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; PastIntervals(); @@ -3463,7 +3473,7 @@ public: std::string fmt_print() const; - static void generate_test_instances(std::list & o); + static std::list generate_test_instances(); /** * Determines whether there is an interval change @@ -3895,7 +3905,7 @@ struct pg_notify_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &p); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_notify_t) std::ostream &operator<<(std::ostream &lhs, const pg_notify_t ¬ify); @@ -3960,7 +3970,7 @@ struct pg_query_t { void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(pg_query_t) @@ -3999,7 +4009,7 @@ struct pg_lease_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend std::ostream& operator<<(std::ostream& out, const pg_lease_t& l) { return out << "pg_lease(ru " << l.readable_until @@ -4026,7 +4036,7 @@ struct pg_lease_ack_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend std::ostream& operator<<(std::ostream& out, const pg_lease_ack_t& l) { return out << "pg_lease_ack(ruub " << l.readable_until_ub << ")"; @@ -4232,7 +4242,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ObjectModDesc) @@ -4278,7 +4288,7 @@ public: void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; std::string fmt_print() const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ObjectCleanRegions) std::ostream& operator<<(std::ostream& out, const ObjectCleanRegions& ocr); @@ -4405,12 +4415,14 @@ struct pg_log_op_return_item_t { f->dump_int("rval", rval); f->dump_unsigned("bl_length", bl.length()); } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_log_op_return_item_t); - o.back()->rval = 0; - o.push_back(new pg_log_op_return_item_t); - o.back()->rval = 1; - o.back()->bl.append("asdf"); + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_log_op_return_item_t{}); + o.back().rval = 0; + o.push_back(pg_log_op_return_item_t{}); + o.back().rval = 1; + o.back().bl.append("asdf"); + return o; } friend bool operator==(const pg_log_op_return_item_t& lhs, const pg_log_op_return_item_t& rhs) { @@ -4591,7 +4603,7 @@ struct pg_log_entry_t { void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; std::string fmt_print() const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_log_entry_t) @@ -4625,7 +4637,7 @@ struct pg_log_dup_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool operator==(const pg_log_dup_t &rhs) const { return reqid == rhs.reqid && @@ -4854,7 +4866,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl, int64_t pool = -1); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_log_t) @@ -4955,17 +4967,19 @@ struct pg_missing_item { f->dump_stream("flags") << flag_str(); f->dump_stream("clean_regions") << clean_regions; } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_missing_item); - o.push_back(new pg_missing_item); - o.back()->need = eversion_t(1, 2); - o.back()->have = eversion_t(1, 1); - o.push_back(new pg_missing_item); - o.back()->need = eversion_t(3, 5); - o.back()->have = eversion_t(3, 4); - o.back()->clean_regions.mark_data_region_dirty(4096, 8192); - o.back()->clean_regions.mark_omap_dirty(); - o.back()->flags = FLAG_DELETE; + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_missing_item{}); + o.push_back(pg_missing_item{}); + o.back().need = eversion_t(1, 2); + o.back().have = eversion_t(1, 1); + o.push_back(pg_missing_item{}); + o.back().need = eversion_t(3, 5); + o.back().have = eversion_t(3, 4); + o.back().clean_regions.mark_data_region_dirty(4096, 8192); + o.back().clean_regions.mark_omap_dirty(); + o.back().flags = FLAG_DELETE; + return o; } bool operator==(const pg_missing_item &rhs) const { return need == rhs.need && have == rhs.have && flags == rhs.flags; @@ -5319,19 +5333,21 @@ public: } } } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_missing_set); - o.back()->may_include_deletes = true; - o.push_back(new pg_missing_set); - o.back()->add( + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_missing_set{}); + o.back().may_include_deletes = true; + o.push_back(pg_missing_set{}); + o.back().add( hobject_t(object_t("foo"), "foo", 123, 456, 0, ""), eversion_t(5, 6), eversion_t(5, 1), false); - o.back()->may_include_deletes = true; - o.push_back(new pg_missing_set); - o.back()->add( + o.back().may_include_deletes = true; + o.push_back(pg_missing_set{}); + o.back().add( hobject_t(object_t("foo"), "foo", 123, 456, 0, ""), eversion_t(5, 6), eversion_t(5, 1), true); - o.back()->may_include_deletes = true; + o.back().may_include_deletes = true; + return o; } template void get_changed(F &&f) const { @@ -5462,26 +5478,28 @@ struct pg_nls_response_template { } f->close_section(); } - static void generate_test_instances(std::list*>& o) { - o.push_back(new pg_nls_response_template); - o.push_back(new pg_nls_response_template); - o.back()->handle = hobject_t(object_t("hi"), "key", 1, 2, -1, ""); - o.back()->entries.push_back(librados::ListObjectImpl("", "one", "")); - o.back()->entries.push_back(librados::ListObjectImpl("", "two", "twokey")); - o.back()->entries.push_back(librados::ListObjectImpl("", "three", "")); - o.push_back(new pg_nls_response_template); - o.back()->handle = hobject_t(object_t("hi"), "key", 3, 4, -1, ""); - o.back()->entries.push_back(librados::ListObjectImpl("n1", "n1one", "")); - o.back()->entries.push_back(librados::ListObjectImpl("n1", "n1two", "n1twokey")); - o.back()->entries.push_back(librados::ListObjectImpl("n1", "n1three", "")); - o.push_back(new pg_nls_response_template); - o.back()->handle = hobject_t(object_t("hi"), "key", 5, 6, -1, ""); - o.back()->entries.push_back(librados::ListObjectImpl("", "one", "")); - o.back()->entries.push_back(librados::ListObjectImpl("", "two", "twokey")); - o.back()->entries.push_back(librados::ListObjectImpl("", "three", "")); - o.back()->entries.push_back(librados::ListObjectImpl("n1", "n1one", "")); - o.back()->entries.push_back(librados::ListObjectImpl("n1", "n1two", "n1twokey")); - o.back()->entries.push_back(librados::ListObjectImpl("n1", "n1three", "")); + static std::list generate_test_instances() { + std::list> o; + o.push_back(pg_nls_response_template{}); + o.push_back(pg_nls_response_template{}); + o.back().handle = hobject_t(object_t("hi"), "key", 1, 2, -1, ""); + o.back().entries.push_back(librados::ListObjectImpl("", "one", "")); + o.back().entries.push_back(librados::ListObjectImpl("", "two", "twokey")); + o.back().entries.push_back(librados::ListObjectImpl("", "three", "")); + o.push_back(pg_nls_response_template{}); + o.back().handle = hobject_t(object_t("hi"), "key", 3, 4, -1, ""); + o.back().entries.push_back(librados::ListObjectImpl("n1", "n1one", "")); + o.back().entries.push_back(librados::ListObjectImpl("n1", "n1two", "n1twokey")); + o.back().entries.push_back(librados::ListObjectImpl("n1", "n1three", "")); + o.push_back(pg_nls_response_template{}); + o.back().handle = hobject_t(object_t("hi"), "key", 5, 6, -1, ""); + o.back().entries.push_back(librados::ListObjectImpl("", "one", "")); + o.back().entries.push_back(librados::ListObjectImpl("", "two", "twokey")); + o.back().entries.push_back(librados::ListObjectImpl("", "three", "")); + o.back().entries.push_back(librados::ListObjectImpl("n1", "n1one", "")); + o.back().entries.push_back(librados::ListObjectImpl("n1", "n1two", "n1twokey")); + o.back().entries.push_back(librados::ListObjectImpl("n1", "n1three", "")); + return o; } }; @@ -5520,12 +5538,14 @@ struct pg_ls_response_t { } f->close_section(); } - static void generate_test_instances(std::list& o) { - o.push_back(new pg_ls_response_t); - o.push_back(new pg_ls_response_t); - o.back()->handle = hobject_t(object_t("hi"), "key", 1, 2, -1, ""); - o.back()->entries.push_back(std::make_pair(object_t("one"), std::string())); - o.back()->entries.push_back(std::make_pair(object_t("two"), std::string("twokey"))); + static std::list generate_test_instances() { + std::list o; + o.push_back(pg_ls_response_t{}); + o.push_back(pg_ls_response_t{}); + o.back().handle = hobject_t(object_t("hi"), "key", 1, 2, -1, ""); + o.back().entries.push_back(std::make_pair(object_t("one"), std::string())); + o.back().entries.push_back(std::make_pair(object_t("two"), std::string("twokey"))); + return o; } }; @@ -5555,7 +5575,7 @@ struct object_copy_cursor_t { return attr_complete && data_complete && omap_complete; } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; @@ -5612,7 +5632,7 @@ public: truncate_seq(0), truncate_size(0) {} - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list& bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; @@ -5635,7 +5655,7 @@ struct pg_create_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(pg_create_t) @@ -5835,7 +5855,7 @@ public: void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); // Allow default operators to avoid crimson related errors OSDSuperblock(OSDSuperblock&&) noexcept = default; @@ -5892,7 +5912,7 @@ struct SnapSet { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); SnapContext get_ssc_as_of(snapid_t as_of) const { SnapContext out; @@ -5936,7 +5956,7 @@ struct watch_info_t { void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; std::string fmt_print() const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER_FEATURES(watch_info_t) @@ -6074,7 +6094,7 @@ struct chunk_info_t { void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); friend std::ostream& operator<<(std::ostream& out, const chunk_info_t& ci); bool operator==(const chunk_info_t& cit) const; bool operator!=(const chunk_info_t& cit) const { @@ -6173,7 +6193,7 @@ struct object_manifest_t { object_ref_delta_t &delta ///< [out] set of refs to drop ) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); void dump(ceph::Formatter *f) const; @@ -6359,7 +6379,7 @@ struct object_info_t { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); explicit object_info_t() : user_version(0), size(0), flags((flag_t)0), @@ -6406,7 +6426,7 @@ struct ObjectRecoveryInfo { ObjectRecoveryInfo() : size(0), object_exist(true) { } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl, int64_t pool = -1); std::string fmt_print() const; @@ -6437,7 +6457,7 @@ struct ObjectRecoveryProgress { return info.size - data_recovered_to; } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); std::ostream &print(std::ostream &out) const; @@ -6450,7 +6470,7 @@ std::ostream& operator<<(std::ostream& out, const ObjectRecoveryProgress &prog); struct PushReplyOp { hobject_t soid; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list &bl) const; void decode(ceph::buffer::list::const_iterator &bl); std::ostream &print(std::ostream &out) const; @@ -6467,7 +6487,7 @@ struct PullOp { ObjectRecoveryInfo recovery_info; ObjectRecoveryProgress recovery_progress; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); std::ostream &print(std::ostream &out) const; @@ -6491,7 +6511,7 @@ struct PushOp { ObjectRecoveryProgress before_progress; ObjectRecoveryProgress after_progress; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void encode(ceph::buffer::list &bl, uint64_t features) const; void decode(ceph::buffer::list::const_iterator &bl); std::ostream &print(std::ostream &out) const; @@ -6536,7 +6556,7 @@ struct ScrubMap { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(object) @@ -6565,7 +6585,7 @@ struct ScrubMap { void encode(ceph::buffer::list& bl) const; void decode(ceph::buffer::list::const_iterator& bl, int64_t pool=-1); void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ScrubMap::object) WRITE_CLASS_ENCODER(ScrubMap) @@ -6666,7 +6686,8 @@ struct watch_item_t { addr.dump(f); f->close_section(); } - static void generate_test_instances(std::list& o) { + static std::list generate_test_instances() { + std::list o; entity_addr_t ea; ea.set_type(entity_addr_t::TYPE_LEGACY); ea.set_nonce(1000); @@ -6676,11 +6697,12 @@ struct watch_item_t { ea.set_in4_quad(2, 0); ea.set_in4_quad(3, 1); ea.set_port(1024); - o.push_back(new watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 1), 10, 30, ea)); + o.push_back(watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 1), 10, 30, ea)); ea.set_nonce(1001); ea.set_in4_quad(3, 2); ea.set_port(1025); - o.push_back(new watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 2), 20, 60, ea)); + o.push_back(watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 2), 20, 60, ea)); + return o; } }; WRITE_CLASS_ENCODER_FEATURES(watch_item_t) @@ -6716,16 +6738,16 @@ struct obj_list_watch_response_t { } f->close_section(); } - static void generate_test_instances(std::list& o) { + static std::list generate_test_instances() { + std::list o; entity_addr_t ea; - o.push_back(new obj_list_watch_response_t); - o.push_back(new obj_list_watch_response_t); - std::list test_watchers; - watch_item_t::generate_test_instances(test_watchers); + o.push_back(obj_list_watch_response_t{}); + o.push_back(obj_list_watch_response_t{}); + std::list test_watchers = watch_item_t::generate_test_instances(); for (auto &e : test_watchers) { - o.back()->entries.push_back(*e); - delete e; + o.back().entries.push_back(e); } + return o; } }; WRITE_CLASS_ENCODER_FEATURES(obj_list_watch_response_t) @@ -6777,17 +6799,19 @@ struct clone_info { f->close_section(); f->dump_unsigned("size", size); } - static void generate_test_instances(std::list& o) { - o.push_back(new clone_info); - o.push_back(new clone_info); - o.back()->cloneid = 1; - o.back()->snaps.push_back(1); - o.back()->overlap.push_back(std::pair(0,4096)); - o.back()->overlap.push_back(std::pair(8192,4096)); - o.back()->size = 16384; - o.push_back(new clone_info); - o.back()->cloneid = CEPH_NOSNAP; - o.back()->size = 32768; + static std::list generate_test_instances() { + std::list o; + o.push_back(clone_info{}); + o.push_back(clone_info{}); + o.back().cloneid = 1; + o.back().snaps.push_back(1); + o.back().overlap.push_back(std::pair(0,4096)); + o.back().overlap.push_back(std::pair(8192,4096)); + o.back().size = 16384; + o.push_back(clone_info{}); + o.back().cloneid = CEPH_NOSNAP; + o.back().size = 32768; + return o; } }; WRITE_CLASS_ENCODER(clone_info) @@ -6825,22 +6849,24 @@ struct obj_list_snap_response_t { f->dump_unsigned("seq", seq); f->close_section(); } - static void generate_test_instances(std::list& o) { - o.push_back(new obj_list_snap_response_t); - o.push_back(new obj_list_snap_response_t); + static std::list generate_test_instances() { + std::list o; + o.push_back(obj_list_snap_response_t{}); + o.push_back(obj_list_snap_response_t{}); clone_info cl; cl.cloneid = 1; cl.snaps.push_back(1); cl.overlap.push_back(std::pair(0,4096)); cl.overlap.push_back(std::pair(8192,4096)); cl.size = 16384; - o.back()->clones.push_back(cl); + o.back().clones.push_back(cl); cl.cloneid = CEPH_NOSNAP; cl.snaps.clear(); cl.overlap.clear(); cl.size = 32768; - o.back()->clones.push_back(cl); - o.back()->seq = 123; + o.back().clones.push_back(cl); + o.back().seq = 123; + return o; } }; @@ -6947,8 +6973,10 @@ struct pool_pg_num_history_t { } f->close_section(); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new pool_pg_num_history_t); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(pool_pg_num_history_t{}); + return ls; } friend std::ostream& operator<<(std::ostream& out, const pool_pg_num_history_t& h) { return out << "pg_num_history(e" << h.epoch diff --git a/src/osdc/Journaler.h b/src/osdc/Journaler.h index b64b36024c43..e1135dd2bc11 100644 --- a/src/osdc/Journaler.h +++ b/src/osdc/Journaler.h @@ -195,19 +195,23 @@ public: << std::dec; } - static void generate_test_instances(std::list &ls) + static std::list
generate_test_instances() { - ls.push_back(new Header()); + std::list
ls; - ls.push_back(new Header()); - ls.back()->trimmed_pos = 1; - ls.back()->expire_pos = 2; - ls.back()->unused_field = 3; - ls.back()->write_pos = 4; - ls.back()->magic = "magique"; + ls.push_back(Header()); - ls.push_back(new Header()); - ls.back()->stream_format = JOURNAL_FORMAT_RESILIENT; + ls.push_back(Header()); + ls.back().trimmed_pos = 1; + ls.back().expire_pos = 2; + ls.back().unused_field = 3; + ls.back().write_pos = 4; + ls.back().magic = "magique"; + + ls.push_back(Header()); + ls.back().stream_format = JOURNAL_FORMAT_RESILIENT; + + return ls; } }; WRITE_CLASS_ENCODER(Header) diff --git a/src/rbd_replay/ActionTypes.cc b/src/rbd_replay/ActionTypes.cc index 8a93672f3c7d..9194854414bd 100644 --- a/src/rbd_replay/ActionTypes.cc +++ b/src/rbd_replay/ActionTypes.cc @@ -105,9 +105,11 @@ void Dependency::dump(Formatter *f) const { f->dump_unsigned("time_delta", time_delta); } -void Dependency::generate_test_instances(std::list &o) { - o.push_back(new Dependency()); - o.push_back(new Dependency(1, 123456789)); +std::list Dependency::generate_test_instances() { + std::list o; + o.push_back(Dependency()); + o.push_back(Dependency(1, 123456789)); + return o; } void ActionBase::encode(bufferlist &bl) const { @@ -335,47 +337,51 @@ void ActionEntry::dump(Formatter *f) const { std::visit(DumpVisitor(f), action); } -void ActionEntry::generate_test_instances(std::list &o) { +std::list ActionEntry::generate_test_instances() { + std::list o; + Dependencies dependencies; dependencies.push_back(Dependency(3, 123456789)); dependencies.push_back(Dependency(4, 234567890)); - o.push_back(new ActionEntry(StartThreadAction())); - o.push_back(new ActionEntry(StartThreadAction(1, 123456789, dependencies))); - o.push_back(new ActionEntry(StopThreadAction())); - o.push_back(new ActionEntry(StopThreadAction(1, 123456789, dependencies))); - - o.push_back(new ActionEntry(ReadAction())); - o.push_back(new ActionEntry(ReadAction(1, 123456789, dependencies, 3, 4, 5))); - o.push_back(new ActionEntry(WriteAction())); - o.push_back(new ActionEntry(WriteAction(1, 123456789, dependencies, 3, 4, - 5))); - o.push_back(new ActionEntry(DiscardAction())); - o.push_back(new ActionEntry(DiscardAction(1, 123456789, dependencies, 3, 4, - 5))); - o.push_back(new ActionEntry(AioReadAction())); - o.push_back(new ActionEntry(AioReadAction(1, 123456789, dependencies, 3, 4, + o.push_back(ActionEntry(StartThreadAction())); + o.push_back(ActionEntry(StartThreadAction(1, 123456789, dependencies))); + o.push_back(ActionEntry(StopThreadAction())); + o.push_back(ActionEntry(StopThreadAction(1, 123456789, dependencies))); + + o.push_back(ActionEntry(ReadAction())); + o.push_back(ActionEntry(ReadAction(1, 123456789, dependencies, 3, 4, 5))); + o.push_back(ActionEntry(WriteAction())); + o.push_back(ActionEntry(WriteAction(1, 123456789, dependencies, 3, 4, + 5))); + o.push_back(ActionEntry(DiscardAction())); + o.push_back(ActionEntry(DiscardAction(1, 123456789, dependencies, 3, 4, 5))); - o.push_back(new ActionEntry(AioWriteAction())); - o.push_back(new ActionEntry(AioWriteAction(1, 123456789, dependencies, 3, 4, - 5))); - o.push_back(new ActionEntry(AioDiscardAction())); - o.push_back(new ActionEntry(AioDiscardAction(1, 123456789, dependencies, 3, 4, - 5))); - - o.push_back(new ActionEntry(OpenImageAction())); - o.push_back(new ActionEntry(OpenImageAction(1, 123456789, dependencies, 3, - "image_name", "snap_name", - true))); - o.push_back(new ActionEntry(CloseImageAction())); - o.push_back(new ActionEntry(CloseImageAction(1, 123456789, dependencies, 3))); - - o.push_back(new ActionEntry(AioOpenImageAction())); - o.push_back(new ActionEntry(AioOpenImageAction(1, 123456789, dependencies, 3, - "image_name", "snap_name", - true))); - o.push_back(new ActionEntry(AioCloseImageAction())); - o.push_back(new ActionEntry(AioCloseImageAction(1, 123456789, dependencies, 3))); + o.push_back(ActionEntry(AioReadAction())); + o.push_back(ActionEntry(AioReadAction(1, 123456789, dependencies, 3, 4, + 5))); + o.push_back(ActionEntry(AioWriteAction())); + o.push_back(ActionEntry(AioWriteAction(1, 123456789, dependencies, 3, 4, + 5))); + o.push_back(ActionEntry(AioDiscardAction())); + o.push_back(ActionEntry(AioDiscardAction(1, 123456789, dependencies, 3, 4, + 5))); + + o.push_back(ActionEntry(OpenImageAction())); + o.push_back(ActionEntry(OpenImageAction(1, 123456789, dependencies, 3, + "image_name", "snap_name", + true))); + o.push_back(ActionEntry(CloseImageAction())); + o.push_back(ActionEntry(CloseImageAction(1, 123456789, dependencies, 3))); + + o.push_back(ActionEntry(AioOpenImageAction())); + o.push_back(ActionEntry(AioOpenImageAction(1, 123456789, dependencies, 3, + "image_name", "snap_name", + true))); + o.push_back(ActionEntry(AioCloseImageAction())); + o.push_back(ActionEntry(AioCloseImageAction(1, 123456789, dependencies, 3))); + + return o; } std::ostream &operator<<(std::ostream &out, diff --git a/src/rbd_replay/ActionTypes.h b/src/rbd_replay/ActionTypes.h index 0d7511cc444a..025390311445 100644 --- a/src/rbd_replay/ActionTypes.h +++ b/src/rbd_replay/ActionTypes.h @@ -54,7 +54,7 @@ struct Dependency { void decode(__u8 version, bufferlist::const_iterator &it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(Dependency); @@ -322,7 +322,7 @@ public: void decode_unversioned(bufferlist::const_iterator &it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); private: void decode_versioned(__u8 version, bufferlist::const_iterator &it); diff --git a/src/rgw/driver/rados/groups.cc b/src/rgw/driver/rados/groups.cc index a1d2b2a6d363..1948605004c1 100644 --- a/src/rgw/driver/rados/groups.cc +++ b/src/rgw/driver/rados/groups.cc @@ -124,12 +124,14 @@ void resource_metadata::dump(ceph::Formatter* f) const encode_json("group_id", group_id, f); } -void resource_metadata::generate_test_instances(std::list& o) +std::list resource_metadata::generate_test_instances() { - o.push_back(new resource_metadata); - auto m = new resource_metadata; - m->group_id = "id"; - o.push_back(m); + std::list o; + o.push_back(resource_metadata{}); + resource_metadata m; + m.group_id = "id"; + o.push_back(std::move(m)); + return o; } } // namespace rgwrados::groups diff --git a/src/rgw/driver/rados/groups.h b/src/rgw/driver/rados/groups.h index 50ebcad2d62b..fc2a9466e998 100644 --- a/src/rgw/driver/rados/groups.h +++ b/src/rgw/driver/rados/groups.h @@ -72,7 +72,7 @@ struct resource_metadata { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(resource_metadata); diff --git a/src/rgw/driver/rados/rgw_bucket.cc b/src/rgw/driver/rados/rgw_bucket.cc index 7d4501f09700..b3a868529e3a 100644 --- a/src/rgw/driver/rados/rgw_bucket.cc +++ b/src/rgw/driver/rados/rgw_bucket.cc @@ -3658,15 +3658,18 @@ auto create_archive_bucket_instance_metadata_handler(rgw::sal::Driver* driver, svc_datalog); } -void RGWBucketEntryPoint::generate_test_instances(list& o) +list RGWBucketEntryPoint::generate_test_instances() { - RGWBucketEntryPoint *bp = new RGWBucketEntryPoint(); - init_bucket(&bp->bucket, "tenant", "bucket", "pool", ".index.pool", "marker", "10"); - bp->owner = "owner"; - bp->creation_time = ceph::real_clock::from_ceph_timespec({ceph_le32(2), ceph_le32(3)}); + list o; + RGWBucketEntryPoint bp; + init_bucket(&bp.bucket, "tenant", "bucket", "pool", ".index.pool", "marker", "10"); + bp.owner = "owner"; + bp.creation_time = ceph::real_clock::from_ceph_timespec({ceph_le32(2), ceph_le32(3)}); - o.push_back(bp); - o.push_back(new RGWBucketEntryPoint); + o.push_back(std::move(bp)); + o.push_back(RGWBucketEntryPoint{}); + + return o; } void RGWBucketEntryPoint::dump(Formatter *f) const diff --git a/src/rgw/driver/rados/rgw_d3n_datacache.h b/src/rgw/driver/rados/rgw_d3n_datacache.h index 58ac95d093d0..d6c88c137e5c 100644 --- a/src/rgw/driver/rados/rgw_d3n_datacache.h +++ b/src/rgw/driver/rados/rgw_d3n_datacache.h @@ -36,7 +36,6 @@ struct D3nChunkDataInfo : public LRUObject { } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); }; struct D3nCacheAioWriteRequest { diff --git a/src/rgw/driver/rados/rgw_data_sync.cc b/src/rgw/driver/rados/rgw_data_sync.cc index 8102f4b5e2ae..25ff624b825c 100644 --- a/src/rgw/driver/rados/rgw_data_sync.cc +++ b/src/rgw/driver/rados/rgw_data_sync.cc @@ -6669,28 +6669,34 @@ int rgw_read_bucket_inc_sync_status(const DoutPrefixProvider *dpp, status)); } -void rgw_data_sync_info::generate_test_instances(list& o) +list rgw_data_sync_info::generate_test_instances() { - auto info = new rgw_data_sync_info; - info->state = rgw_data_sync_info::StateBuildingFullSyncMaps; - info->num_shards = 8; - o.push_back(info); - o.push_back(new rgw_data_sync_info); + list o; + rgw_data_sync_info info; + info.state = rgw_data_sync_info::StateBuildingFullSyncMaps; + info.num_shards = 8; + o.push_back(std::move(info)); + o.push_back(rgw_data_sync_info{}); + return o; } -void rgw_data_sync_marker::generate_test_instances(list& o) +list rgw_data_sync_marker::generate_test_instances() { - auto marker = new rgw_data_sync_marker; - marker->state = rgw_data_sync_marker::IncrementalSync; - marker->marker = "01234"; - marker->pos = 5; - o.push_back(marker); - o.push_back(new rgw_data_sync_marker); + list o; + rgw_data_sync_marker marker; + marker.state = rgw_data_sync_marker::IncrementalSync; + marker.marker = "01234"; + marker.pos = 5; + o.push_back(std::move(marker)); + o.push_back(rgw_data_sync_marker{}); + return o; } -void rgw_data_sync_status::generate_test_instances(list& o) +list rgw_data_sync_status::generate_test_instances() { - o.push_back(new rgw_data_sync_status); + list o; + o.push_back(rgw_data_sync_status{}); + return o; } void rgw_bucket_shard_full_sync_marker::dump(Formatter *f) const diff --git a/src/rgw/driver/rados/rgw_data_sync.h b/src/rgw/driver/rados/rgw_data_sync.h index 9042da80f740..e699b4a6c7f2 100644 --- a/src/rgw/driver/rados/rgw_data_sync.h +++ b/src/rgw/driver/rados/rgw_data_sync.h @@ -125,7 +125,7 @@ struct rgw_data_sync_info { JSONDecoder::decode_json("num_shards", num_shards, obj); JSONDecoder::decode_json("instance_id", instance_id, obj); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); rgw_data_sync_info() : state((int)StateInit), num_shards(0) {} }; @@ -203,7 +203,7 @@ struct rgw_data_sync_marker { JSONDecoder::decode_json("timestamp", t, obj); timestamp = t.to_real_time(); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_data_sync_marker) @@ -235,7 +235,7 @@ struct rgw_data_sync_status { JSONDecoder::decode_json("info", sync_info, obj); JSONDecoder::decode_json("markers", sync_markers, obj); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_data_sync_status) diff --git a/src/rgw/driver/rados/rgw_datalog.cc b/src/rgw/driver/rados/rgw_datalog.cc index 1a30a9808ebf..3de1e5309790 100644 --- a/src/rgw/driver/rados/rgw_datalog.cc +++ b/src/rgw/driver/rados/rgw_datalog.cc @@ -91,13 +91,15 @@ void rgw_data_change::decode_json(JSONObj *obj) { JSONDecoder::decode_json("gen", gen, obj); } -void rgw_data_change::generate_test_instances(std::list& l) { - l.push_back(new rgw_data_change{}); - l.push_back(new rgw_data_change); - l.back()->entity_type = ENTITY_TYPE_BUCKET; - l.back()->key = "bucket_name"; - l.back()->timestamp = ceph::real_clock::zero(); - l.back()->gen = 0; +std::list rgw_data_change::generate_test_instances() { + std::list l; + l.push_back(rgw_data_change{}); + l.push_back(rgw_data_change{}); + l.back().entity_type = ENTITY_TYPE_BUCKET; + l.back().key = "bucket_name"; + l.back().timestamp = ceph::real_clock::zero(); + l.back().gen = 0; + return l; } void rgw_data_change_log_entry::dump(Formatter *f) const diff --git a/src/rgw/driver/rados/rgw_datalog.h b/src/rgw/driver/rados/rgw_datalog.h index ae013e2fdef4..f6c90e8179bd 100644 --- a/src/rgw/driver/rados/rgw_datalog.h +++ b/src/rgw/driver/rados/rgw_datalog.h @@ -102,7 +102,7 @@ struct rgw_data_change { void dump(ceph::Formatter* f) const; void decode_json(JSONObj* obj); - static void generate_test_instances(std::list& l); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_data_change) inline std::ostream& operator <<(std::ostream& m, diff --git a/src/rgw/driver/rados/rgw_obj_manifest.cc b/src/rgw/driver/rados/rgw_obj_manifest.cc index b38d66cff9f7..eb5860031018 100644 --- a/src/rgw/driver/rados/rgw_obj_manifest.cc +++ b/src/rgw/driver/rados/rgw_obj_manifest.cc @@ -271,23 +271,29 @@ int RGWObjManifest::generator::create_begin(CephContext *cct, RGWObjManifest *_m return 0; } -void RGWObjManifestPart::generate_test_instances(std::list& o) +std::list RGWObjManifestPart::generate_test_instances() { - o.push_back(new RGWObjManifestPart); + std::list o; - RGWObjManifestPart *p = new RGWObjManifestPart; + o.push_back(RGWObjManifestPart{}); + + RGWObjManifestPart p; rgw_bucket b; init_bucket(&b, "tenant", "bucket", ".pool", ".index_pool", "marker_", "12"); - p->loc = rgw_obj(b, "object"); - p->loc_ofs = 512 * 1024; - p->size = 128 * 1024; - o.push_back(p); + p.loc = rgw_obj(b, "object"); + p.loc_ofs = 512 * 1024; + p.size = 128 * 1024; + o.push_back(std::move(p)); + + return o; } -void RGWObjManifest::generate_test_instances(std::list& o) +std::list RGWObjManifest::generate_test_instances() { - RGWObjManifest *m = new RGWObjManifest; + std::list o; + + RGWObjManifest m; map objs; uint64_t total_size = 0; for (int i = 0; i<10; i++) { @@ -300,9 +306,10 @@ void RGWObjManifest::generate_test_instances(std::list& o) total_size += p.size; objs[total_size] = p; } - m->set_explicit(total_size, objs); - o.push_back(m); - o.push_back(new RGWObjManifest); + m.set_explicit(total_size, objs); + o.push_back(std::move(m)); + o.push_back(RGWObjManifest{}); + return o; } void RGWObjManifestPart::dump(Formatter *f) const @@ -367,16 +374,18 @@ void RGWObjManifestRule::dump(Formatter *f) const encode_json("override_prefix", override_prefix, f); } -void RGWObjManifestRule::generate_test_instances(std::list& o) +std::list RGWObjManifestRule::generate_test_instances() { - RGWObjManifestRule *r = new RGWObjManifestRule; - r->start_part_num = 0; - r->start_ofs = 0; - r->part_size = 512 * 1024; - r->stripe_max_size = 512 * 1024 * 1024; - r->override_prefix = "override_prefix"; - o.push_back(r); - o.push_back(new RGWObjManifestRule); + std::list o; + RGWObjManifestRule r; + r.start_part_num = 0; + r.start_ofs = 0; + r.part_size = 512 * 1024; + r.stripe_max_size = 512 * 1024 * 1024; + r.override_prefix = "override_prefix"; + o.push_back(std::move(r)); + o.push_back(RGWObjManifestRule{}); + return o; } void rgw_obj_select::dump(Formatter *f) const @@ -394,18 +403,18 @@ void RGWObjTier::dump(Formatter *f) const encode_json("is_multipart_upload", is_multipart_upload, f); } -void RGWObjTier::generate_test_instances(std::list& o) +std::list RGWObjTier::generate_test_instances() { - RGWObjTier *t = new RGWObjTier; - t->name = "name"; - std::list tiers; - RGWZoneGroupPlacementTier::generate_test_instances(tiers); - for (auto iter = tiers.begin(); iter != tiers.end(); ++iter) { - t->tier_placement = *(*iter); + std::list o; + RGWObjTier t; + t.name = "name"; + for (auto& tier : RGWZoneGroupPlacementTier::generate_test_instances()) { + t.tier_placement = tier; } - t->is_multipart_upload = true; - o.push_back(t); - o.push_back(new RGWObjTier); + t.is_multipart_upload = true; + o.push_back(std::move(t)); + o.push_back(RGWObjTier{}); + return o; } // returns true on success, false on failure diff --git a/src/rgw/driver/rados/rgw_obj_manifest.h b/src/rgw/driver/rados/rgw_obj_manifest.h index 62b6bc4ef5fd..cda4027d4887 100644 --- a/src/rgw/driver/rados/rgw_obj_manifest.h +++ b/src/rgw/driver/rados/rgw_obj_manifest.h @@ -111,7 +111,7 @@ struct RGWObjManifestPart { } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWObjManifestPart) @@ -163,7 +163,7 @@ struct RGWObjManifestRule { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWObjManifestRule) @@ -190,7 +190,7 @@ struct RGWObjTier { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWObjTier) @@ -374,7 +374,7 @@ public: } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); int append(const DoutPrefixProvider *dpp, RGWObjManifest& m, const RGWZoneGroup& zonegroup, const RGWZoneParams& zone_params); diff --git a/src/rgw/driver/rados/rgw_rados.cc b/src/rgw/driver/rados/rgw_rados.cc index 02dfb31947c7..fbcad2dead8f 100644 --- a/src/rgw/driver/rados/rgw_rados.cc +++ b/src/rgw/driver/rados/rgw_rados.cc @@ -11574,15 +11574,17 @@ int RGWRados::delete_obj_aio(const DoutPrefixProvider *dpp, const rgw_obj& obj, return ret; } // delete_obj_aio -void objexp_hint_entry::generate_test_instances(list& o) +list objexp_hint_entry::generate_test_instances() { - auto it = new objexp_hint_entry; - it->tenant = "tenant1"; - it->bucket_name = "bucket1"; - it->bucket_id = "1234"; - it->obj_key = rgw_obj_key("obj"); - o.push_back(it); - o.push_back(new objexp_hint_entry); + list o; + objexp_hint_entry it; + it.tenant = "tenant1"; + it.bucket_name = "bucket1"; + it.bucket_id = "1234"; + it.obj_key = rgw_obj_key("obj"); + o.push_back(std::move(it)); + o.push_back(objexp_hint_entry{}); + return o; } void objexp_hint_entry::dump(Formatter *f) const @@ -11597,12 +11599,14 @@ void objexp_hint_entry::dump(Formatter *f) const f->close_section(); } -void RGWOLHInfo::generate_test_instances(list &o) +list RGWOLHInfo::generate_test_instances() { - RGWOLHInfo *olh = new RGWOLHInfo; - olh->removed = false; + list o; + RGWOLHInfo olh; + olh.removed = false; o.push_back(olh); - o.push_back(new RGWOLHInfo); + o.push_back(RGWOLHInfo{}); + return o; } void RGWOLHInfo::dump(Formatter *f) const @@ -11617,9 +11621,11 @@ void RGWOLHPendingInfo::dump(Formatter *f) const encode_json("time", ut, f); } -void RGWOLHPendingInfo::generate_test_instances(list& o) +list RGWOLHPendingInfo::generate_test_instances() { - auto it = new RGWOLHPendingInfo; - it->time = ceph::real_clock::zero(); - o.push_back(it); + list o; + RGWOLHPendingInfo it; + it.time = ceph::real_clock::zero(); + o.push_back(std::move(it)); + return o; } diff --git a/src/rgw/driver/rados/rgw_rados.h b/src/rgw/driver/rados/rgw_rados.h index 04e70d8ed8e4..f1cf934d8559 100644 --- a/src/rgw/driver/rados/rgw_rados.h +++ b/src/rgw/driver/rados/rgw_rados.h @@ -112,7 +112,7 @@ struct RGWOLHInfo { decode(removed, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void dump(Formatter *f) const; }; WRITE_CLASS_ENCODER(RGWOLHInfo) @@ -135,7 +135,7 @@ struct RGWOLHPendingInfo { } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWOLHPendingInfo) @@ -298,7 +298,7 @@ struct objexp_hint_entry { } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(objexp_hint_entry) diff --git a/src/rgw/driver/rados/rgw_user.h b/src/rgw/driver/rados/rgw_user.h index 4ae7d13eff75..b22681444dfe 100644 --- a/src/rgw/driver/rados/rgw_user.h +++ b/src/rgw/driver/rados/rgw_user.h @@ -60,10 +60,12 @@ struct RGWUID void dump(Formatter *f) const { f->dump_string("user_id", id); } - static void generate_test_instances(std::list& o) { - o.push_back(new RGWUID); - o.push_back(new RGWUID); - o.back()->id = "test:tester"; + static std::list generate_test_instances() { + std::list o; + o.push_back(RGWUID{}); + o.push_back(RGWUID{}); + o.back().id = "test:tester"; + return o; } }; WRITE_CLASS_ENCODER(RGWUID) diff --git a/src/rgw/driver/rados/roles.cc b/src/rgw/driver/rados/roles.cc index da79d981f702..cd5d18146b14 100644 --- a/src/rgw/driver/rados/roles.cc +++ b/src/rgw/driver/rados/roles.cc @@ -163,12 +163,14 @@ void resource_metadata::dump(ceph::Formatter* f) const encode_json("role_id", role_id, f); } -void resource_metadata::generate_test_instances(std::list& o) +std::list resource_metadata::generate_test_instances() { - o.push_back(new resource_metadata); - auto m = new resource_metadata; - m->role_id = "id"; - o.push_back(m); + std::list o; + o.push_back(resource_metadata{}); + resource_metadata m; + m.role_id = "id"; + o.push_back(std::move(m)); + return o; } } // namespace rgwrados::roles diff --git a/src/rgw/driver/rados/roles.h b/src/rgw/driver/rados/roles.h index 0aeb9ecc75d5..f0bbacaaf169 100644 --- a/src/rgw/driver/rados/roles.h +++ b/src/rgw/driver/rados/roles.h @@ -80,7 +80,7 @@ struct resource_metadata { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(resource_metadata); diff --git a/src/rgw/driver/rados/users.cc b/src/rgw/driver/rados/users.cc index f2be861a3973..e08db4d3cd87 100644 --- a/src/rgw/driver/rados/users.cc +++ b/src/rgw/driver/rados/users.cc @@ -163,12 +163,14 @@ void resource_metadata::dump(ceph::Formatter* f) const encode_json("user_id", user_id, f); } -void resource_metadata::generate_test_instances(std::list& o) +std::list resource_metadata::generate_test_instances() { - o.push_back(new resource_metadata); - auto m = new resource_metadata; - m->user_id = "uid"; - o.push_back(m); + std::list o; + o.push_back(resource_metadata{}); + resource_metadata m;; + m.user_id = "uid"; + o.push_back(std::move(m)); + return o; } } // namespace rgwrados::users diff --git a/src/rgw/driver/rados/users.h b/src/rgw/driver/rados/users.h index 5a5094b6b54e..8e4119aa0ccf 100644 --- a/src/rgw/driver/rados/users.h +++ b/src/rgw/driver/rados/users.h @@ -80,7 +80,7 @@ struct resource_metadata { } void dump(ceph::Formatter* f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(resource_metadata); diff --git a/src/rgw/rgw_acl.cc b/src/rgw/rgw_acl.cc index f8a2eb8e5467..0a9a80787200 100644 --- a/src/rgw/rgw_acl.cc +++ b/src/rgw/rgw_acl.cc @@ -254,12 +254,14 @@ bool ACLOwner::empty() const ), id); } -void ACLPermission::generate_test_instances(list& o) +list ACLPermission::generate_test_instances() { - ACLPermission *p = new ACLPermission; - p->set_permissions(RGW_PERM_WRITE_ACP); - o.push_back(p); - o.push_back(new ACLPermission); + list o; + ACLPermission p; + p.set_permissions(RGW_PERM_WRITE_ACP); + o.push_back(std::move(p)); + o.push_back(ACLPermission{}); + return o; } void ACLPermission::dump(Formatter *f) const @@ -301,69 +303,70 @@ void ACLGrant::dump(Formatter *f) const encode_json("permission", permission, f); } -void ACLGrant::generate_test_instances(list& o) +list ACLGrant::generate_test_instances() { - ACLGrant *g1 = new ACLGrant; - g1->set_canon(rgw_user{"rgw"}, "Mr. RGW", RGW_PERM_READ); - o.push_back(g1); + list o; + ACLGrant g1; + g1.set_canon(rgw_user{"rgw"}, "Mr. RGW", RGW_PERM_READ); + o.push_back(std::move(g1)); - ACLGrant *g2 = new ACLGrant; - g1->set_group(ACL_GROUP_AUTHENTICATED_USERS, RGW_PERM_WRITE); - o.push_back(g2); + ACLGrant g2; + g1.set_group(ACL_GROUP_AUTHENTICATED_USERS, RGW_PERM_WRITE); + o.push_back(std::move(g2)); - o.push_back(new ACLGrant); + o.push_back(ACLGrant{}); + return o; } -void ACLGranteeType::generate_test_instances(list& o) +list ACLGranteeType::generate_test_instances() { - o.push_back(new ACLGranteeType(ACL_TYPE_CANON_USER)); - o.push_back(new ACLGranteeType); + list o; + o.push_back(ACLGranteeType(ACL_TYPE_CANON_USER)); + o.push_back(ACLGranteeType{}); + return o; } -void RGWAccessControlList::generate_test_instances(list& o) +list RGWAccessControlList::generate_test_instances() { - RGWAccessControlList *acl = new RGWAccessControlList; - - list grants; - ACLGrant::generate_test_instances(grants); - for (ACLGrant* grant : grants) { - acl->add_grant(*grant); - delete grant; + list o; + RGWAccessControlList acl; + list grants = ACLGrant::generate_test_instances(); + for (ACLGrant& grant : grants) { + acl.add_grant(grant); } - o.push_back(acl); - o.push_back(new RGWAccessControlList); + o.push_back(std::move(acl)); + o.push_back(RGWAccessControlList{}); + return o; } -void ACLOwner::generate_test_instances(list& o) +list ACLOwner::generate_test_instances() { - ACLOwner *owner = new ACLOwner; - owner->id = "rgw"; - owner->display_name = "Mr. RGW"; - o.push_back(owner); - o.push_back(new ACLOwner); + list o; + ACLOwner owner; + owner.id = "rgw"; + owner.display_name = "Mr. RGW"; + o.push_back(std::move(owner)); + o.push_back(ACLOwner{}); + return o; } -void RGWAccessControlPolicy::generate_test_instances(list& o) +list RGWAccessControlPolicy::generate_test_instances() { - list acl_list; - list::iterator iter; - for (iter = acl_list.begin(); iter != acl_list.end(); ++iter) { - RGWAccessControlList::generate_test_instances(acl_list); - iter = acl_list.begin(); - - RGWAccessControlPolicy *p = new RGWAccessControlPolicy; - RGWAccessControlList *l = *iter; - p->acl = *l; + list o; + list acl_list = RGWAccessControlList::generate_test_instances(); + for (auto& acl : acl_list) { + RGWAccessControlPolicy p; + p.acl = acl; - p->owner.id = rgw_user{"rgw"}; - p->owner.display_name = "radosgw"; + p.owner.id = rgw_user{"rgw"}; + p.owner.display_name = "radosgw"; - o.push_back(p); - - delete l; + o.push_back(std::move(p)); } - o.push_back(new RGWAccessControlPolicy); + o.push_back(RGWAccessControlPolicy{}); + + return o; } void RGWAccessControlList::dump(Formatter *f) const diff --git a/src/rgw/rgw_acl.h b/src/rgw/rgw_acl.h index fdc9961e8dc9..49022d34e5a5 100644 --- a/src/rgw/rgw_acl.h +++ b/src/rgw/rgw_acl.h @@ -176,7 +176,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); static ACLGroupTypeEnum uri_to_group(std::string_view uri); @@ -328,7 +328,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool empty() const { return grant_map.empty(); } @@ -374,7 +374,7 @@ struct ACLOwner { } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool empty() const; @@ -414,7 +414,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_owner(bufferlist::const_iterator& bl) { // sometimes we only need that, should be faster DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl); decode(owner, bl); diff --git a/src/rgw/rgw_acl_types.h b/src/rgw/rgw_acl_types.h index d844567c3443..4e22522ad304 100644 --- a/src/rgw/rgw_acl_types.h +++ b/src/rgw/rgw_acl_types.h @@ -78,7 +78,7 @@ struct RGWAccessKey { void dump(Formatter *f) const; void dump_plain(Formatter *f) const; void dump(Formatter *f, const std::string& user, bool swift) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); void decode_json(JSONObj *obj, bool swift); @@ -105,7 +105,7 @@ struct RGWSubUser { } void dump(Formatter *f) const; void dump(Formatter *f, const std::string& user) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); }; @@ -137,7 +137,7 @@ public: bool is_valid_cap_type(const std::string& tp); void dump(Formatter *f) const; void dump(Formatter *f, const char *name) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); }; WRITE_CLASS_ENCODER(RGWUserCaps) @@ -179,7 +179,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend bool operator==(const ACLPermission& lhs, const ACLPermission& rhs); friend bool operator!=(const ACLPermission& lhs, const ACLPermission& rhs); @@ -210,7 +210,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); friend bool operator==(const ACLGranteeType& lhs, const ACLGranteeType& rhs); friend bool operator!=(const ACLGranteeType& lhs, const ACLGranteeType& rhs); diff --git a/src/rgw/rgw_basic_types.cc b/src/rgw/rgw_basic_types.cc index e489a1391e62..4efe25f2ba6b 100644 --- a/src/rgw/rgw_basic_types.cc +++ b/src/rgw/rgw_basic_types.cc @@ -78,12 +78,14 @@ std::string rgw_bucket::get_key(char tenant_delim, char id_delim, size_t reserve return key; } -void rgw_bucket::generate_test_instances(list& o) +list rgw_bucket::generate_test_instances() { - rgw_bucket *b = new rgw_bucket; - init_bucket(b, "tenant", "name", "pool", ".index_pool", "marker", "123"); - o.push_back(b); - o.push_back(new rgw_bucket); + list o; + rgw_bucket b; + init_bucket(&b, "tenant", "name", "pool", ".index_pool", "marker", "123"); + o.push_back(std::move(b)); + o.push_back(rgw_bucket{}); + return o; } std::string rgw_bucket_shard::get_key(char tenant_delim, char id_delim, @@ -120,12 +122,14 @@ void decode_json_obj(rgw_zone_id& zid, JSONObj *obj) decode_json_obj(zid.id, obj); } -void rgw_user::generate_test_instances(list& o) +list rgw_user::generate_test_instances() { - rgw_user *u = new rgw_user("tenant", "user"); + list o; + rgw_user u("tenant", "user"); o.push_back(u); - o.push_back(new rgw_user); + o.push_back(rgw_user{}); + return o; } void rgw_data_placement_target::dump(Formatter *f) const diff --git a/src/rgw/rgw_basic_types.h b/src/rgw/rgw_basic_types.h index 93321e85c5c9..19575af384fb 100644 --- a/src/rgw/rgw_basic_types.h +++ b/src/rgw/rgw_basic_types.h @@ -81,9 +81,11 @@ struct rgw_zone_id { f->dump_string("id", id); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_zone_id); - o.push_back(new rgw_zone_id("id")); + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_zone_id{}); + o.push_back(rgw_zone_id("id")); + return o; } void clear() { @@ -318,6 +320,6 @@ struct RGWUploadPartInfo { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWUploadPartInfo) diff --git a/src/rgw/rgw_bucket_encryption.h b/src/rgw/rgw_bucket_encryption.h index ba567bc71999..7838eb80962c 100644 --- a/src/rgw/rgw_bucket_encryption.h +++ b/src/rgw/rgw_bucket_encryption.h @@ -137,6 +137,6 @@ public: void decode_xml(XMLObj *obj); void dump_xml(Formatter *f) const; void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWBucketEncryptionConfig) diff --git a/src/rgw/rgw_bucket_types.h b/src/rgw/rgw_bucket_types.h index c9e9da0d11e8..fceb04cb515b 100644 --- a/src/rgw/rgw_bucket_types.h +++ b/src/rgw/rgw_bucket_types.h @@ -161,7 +161,7 @@ struct rgw_bucket { void dump(ceph::Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); rgw_bucket& operator=(const rgw_bucket&) = default; diff --git a/src/rgw/rgw_cache.cc b/src/rgw/rgw_cache.cc index dd7a826cdd87..71d8bada94a7 100644 --- a/src/rgw/rgw_cache.cc +++ b/src/rgw/rgw_cache.cc @@ -357,12 +357,14 @@ ObjectCache::~ObjectCache() } } -void ObjectMetaInfo::generate_test_instances(list& o) +list ObjectMetaInfo::generate_test_instances() { - ObjectMetaInfo *m = new ObjectMetaInfo; - m->size = 1024 * 1024; - o.push_back(m); - o.push_back(new ObjectMetaInfo); + list o; + ObjectMetaInfo m; + m.size = 1024 * 1024; + o.push_back(std::move(m)); + o.push_back(ObjectMetaInfo{}); + return o; } void ObjectMetaInfo::dump(Formatter *f) const @@ -371,25 +373,27 @@ void ObjectMetaInfo::dump(Formatter *f) const encode_json("mtime", utime_t(mtime), f); } -void ObjectCacheInfo::generate_test_instances(list& o) +list ObjectCacheInfo::generate_test_instances() { using ceph::encode; - ObjectCacheInfo *i = new ObjectCacheInfo; - i->status = 0; - i->flags = CACHE_FLAG_MODIFY_XATTRS; + list o; + ObjectCacheInfo i; + i.status = 0; + i.flags = CACHE_FLAG_MODIFY_XATTRS; string s = "this is a string"; string s2 = "this is a another string"; bufferlist data, data2; encode(s, data); encode(s2, data2); - i->data = data; - i->xattrs["x1"] = data; - i->xattrs["x2"] = data2; - i->rm_xattrs["r2"] = data2; - i->rm_xattrs["r3"] = data; - i->meta.size = 512 * 1024; - o.push_back(i); - o.push_back(new ObjectCacheInfo); + i.data = data; + i.xattrs["x1"] = data; + i.xattrs["x2"] = data2; + i.rm_xattrs["r2"] = data2; + i.rm_xattrs["r3"] = data; + i.meta.size = 512 * 1024; + o.push_back(std::move(i)); + o.push_back(ObjectCacheInfo{}); + return o; } void ObjectCacheInfo::dump(Formatter *f) const @@ -403,9 +407,11 @@ void ObjectCacheInfo::dump(Formatter *f) const } -void RGWCacheNotifyInfo::generate_test_instances(list& o) +list RGWCacheNotifyInfo::generate_test_instances() { - o.push_back(new RGWCacheNotifyInfo); + list o; + o.push_back(RGWCacheNotifyInfo{}); + return o; } void RGWCacheNotifyInfo::dump(Formatter *f) const diff --git a/src/rgw/rgw_cache.h b/src/rgw/rgw_cache.h index 1ada720203d5..a5579e8e7dab 100644 --- a/src/rgw/rgw_cache.h +++ b/src/rgw/rgw_cache.h @@ -45,7 +45,7 @@ struct ObjectMetaInfo { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ObjectMetaInfo) @@ -90,7 +90,7 @@ struct ObjectCacheInfo { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ObjectCacheInfo) @@ -122,7 +122,7 @@ struct RGWCacheNotifyInfo { DECODE_FINISH(ibl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWCacheNotifyInfo) inline std::ostream& operator <<(std::ostream& m, const RGWCacheNotifyInfo& cni) { diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 6303e6e3e932..40895ca56b5b 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -2069,13 +2069,15 @@ void RGWUserCaps::dump(Formatter *f) const dump(f, "caps"); } -void RGWUserCaps::generate_test_instances(list& o) +list RGWUserCaps::generate_test_instances() { - o.push_back(new RGWUserCaps); - RGWUserCaps *caps = new RGWUserCaps; - caps->add_cap("read"); - caps->add_cap("write"); - o.push_back(caps); + list o; + o.push_back(RGWUserCaps{}); + RGWUserCaps caps; + caps.add_cap("read"); + caps.add_cap("write"); + o.push_back(std::move(caps)); + return o; } void RGWUserCaps::dump(Formatter *f, const char *name) const @@ -2207,14 +2209,16 @@ void rgw_raw_obj::decode_from_rgw_obj(bufferlist::const_iterator& bl) pool = old_obj.get_explicit_data_pool(); } -void rgw_raw_obj::generate_test_instances(std::list& o) +std::list rgw_raw_obj::generate_test_instances() { - rgw_raw_obj *r = new rgw_raw_obj; - r->oid = "foo"; - r->loc = "bar"; - r->pool.name = "baz"; - r->pool.ns = "ns"; - o.push_back(r); + std::list o; + rgw_raw_obj r; + r.oid = "foo"; + r.loc = "bar"; + r.pool.name = "baz"; + r.pool.ns = "ns"; + o.push_back(std::move(r)); + return o; } static struct rgw_name_to_flag op_type_mapping[] = { {"*", RGW_OP_TYPE_ALL}, @@ -2512,15 +2516,17 @@ void encode_json(const char *name, const RGWUserCaps& val, Formatter *f) val.dump(f, name); } -void RGWBucketEnt::generate_test_instances(list& o) +list RGWBucketEnt::generate_test_instances() { - RGWBucketEnt *e = new RGWBucketEnt; - init_bucket(&e->bucket, "tenant", "bucket", "pool", ".index_pool", "marker", "10"); - e->size = 1024; - e->size_rounded = 4096; - e->count = 1; - o.push_back(e); - o.push_back(new RGWBucketEnt); + list o; + RGWBucketEnt e; + init_bucket(&e.bucket, "tenant", "bucket", "pool", ".index_pool", "marker", "10"); + e.size = 1024; + e.size_rounded = 4096; + e.count = 1; + o.push_back(std::move(e)); + o.push_back(RGWBucketEnt{}); + return o; } void RGWBucketEnt::dump(Formatter *f) const @@ -2534,13 +2540,14 @@ void RGWBucketEnt::dump(Formatter *f) const encode_json("placement_rule", placement_rule.to_str(), f); } -void rgw_obj::generate_test_instances(list& o) +list rgw_obj::generate_test_instances() { + list o; rgw_bucket b; init_bucket(&b, "tenant", "bucket", "pool", ".index_pool", "marker", "10"); - rgw_obj *obj = new rgw_obj(b, "object"); - o.push_back(obj); - o.push_back(new rgw_obj); + o.push_back(rgw_obj(b, "object")); + o.push_back(rgw_obj{}); + return o; } void rgw_bucket_placement::dump(Formatter *f) const @@ -2549,8 +2556,9 @@ void rgw_bucket_placement::dump(Formatter *f) const encode_json("placement_rule", placement_rule, f); } -void RGWBucketInfo::generate_test_instances(list& o) +list RGWBucketInfo::generate_test_instances() { + list o; // Since things without a log will have one synthesized on decode, // ensure the things we attempt to encode will have one added so we // round-trip properly. @@ -2565,15 +2573,16 @@ void RGWBucketInfo::generate_test_instances(list& o) }; - RGWBucketInfo *i = new RGWBucketInfo; - init_bucket(&i->bucket, "tenant", "bucket", "pool", ".index_pool", "marker", "10"); - i->owner = "owner"; - i->flags = BUCKET_SUSPENDED; - gen_layout(i->layout); - o.push_back(i); - i = new RGWBucketInfo; - gen_layout(i->layout); - o.push_back(i); + RGWBucketInfo i; + init_bucket(&i.bucket, "tenant", "bucket", "pool", ".index_pool", "marker", "10"); + i.owner = "owner"; + i.flags = BUCKET_SUSPENDED; + gen_layout(i.layout); + o.push_back(std::move(i)); + i = RGWBucketInfo{}; + gen_layout(i.layout); + o.push_back(std::move(i)); + return o; } void RGWBucketInfo::dump(Formatter *f) const @@ -2648,17 +2657,18 @@ void RGWBucketInfo::decode_json(JSONObj *obj) { } } -void RGWUserInfo::generate_test_instances(list& o) +list RGWUserInfo::generate_test_instances() { - RGWUserInfo *i = new RGWUserInfo; - i->user_id = "user_id"; - i->display_name = "display_name"; - i->user_email = "user@email"; - i->account_id = "RGW12345678901234567"; - i->path = "/"; - i->create_date = ceph::real_time{std::chrono::hours(1)}; - i->tags.emplace("key", "value"); - i->group_ids.insert("group"); + list o; + RGWUserInfo i; + i.user_id = "user_id"; + i.display_name = "display_name"; + i.user_email = "user@email"; + i.account_id = "RGW12345678901234567"; + i.path = "/"; + i.create_date = ceph::real_time{std::chrono::hours(1)}; + i.tags.emplace("key", "value"); + i.group_ids.insert("group"); RGWAccessKey k1, k2; k1.id = "id1"; k1.key = "key1"; @@ -2667,12 +2677,13 @@ void RGWUserInfo::generate_test_instances(list& o) RGWSubUser u; u.name = "id2"; u.perm_mask = 0x1; - i->access_keys[k1.id] = k1; - i->swift_keys[k2.id] = k2; - i->subusers[u.name] = u; - o.push_back(i); + i.access_keys[k1.id] = k1; + i.swift_keys[k2.id] = k2; + i.subusers[u.name] = u; + o.push_back(std::move(i)); - o.push_back(new RGWUserInfo); + o.push_back(RGWUserInfo{}); + return o; } static void user_info_dump_subuser(const char *name, const RGWSubUser& subuser, Formatter *f, void *parent) @@ -2957,13 +2968,15 @@ void RGWUserInfo::decode_json(JSONObj *obj) } -void RGWSubUser::generate_test_instances(list& o) +list RGWSubUser::generate_test_instances() { - RGWSubUser *u = new RGWSubUser; - u->name = "name"; - u->perm_mask = 0xf; - o.push_back(u); - o.push_back(new RGWSubUser); + list o; + RGWSubUser u; + u.name = "name"; + u.perm_mask = 0xf; + o.push_back(std::move(u)); + o.push_back(RGWSubUser{}); + return o; } void RGWSubUser::dump(Formatter *f) const @@ -3010,14 +3023,16 @@ void RGWSubUser::decode_json(JSONObj *obj) perm_mask = str_to_perm(perm_str); } -void RGWAccessKey::generate_test_instances(list& o) +list RGWAccessKey::generate_test_instances() { - RGWAccessKey *k = new RGWAccessKey; - k->id = "id"; - k->key = "key"; - k->subuser = "subuser"; - o.push_back(k); - o.push_back(new RGWAccessKey); + list o; + RGWAccessKey k; + k.id = "id"; + k.key = "key"; + k.subuser = "subuser"; + o.push_back(std::move(k)); + o.push_back(RGWAccessKey{}); + return o; } void RGWAccessKey::dump(Formatter *f) const @@ -3117,20 +3132,22 @@ void RGWAccountInfo::decode_json(JSONObj* obj) JSONDecoder::decode_json("max_access_keys", max_access_keys, obj); } -void RGWAccountInfo::generate_test_instances(std::list& o) +std::list RGWAccountInfo::generate_test_instances() { - o.push_back(new RGWAccountInfo); - auto p = new RGWAccountInfo; - p->id = "account1"; - p->tenant = "tenant1"; - p->name = "name1"; - p->email = "email@example.com"; - p->max_users = 10; - p->max_roles = 10; - p->max_groups = 10; - p->max_buckets = 10; - p->max_access_keys = 10; - o.push_back(p); + std::list o; + o.push_back(RGWAccountInfo{}); + auto p = RGWAccountInfo{}; + p.id = "account1"; + p.tenant = "tenant1"; + p.name = "name1"; + p.email = "email@example.com"; + p.max_users = 10; + p.max_roles = 10; + p.max_groups = 10; + p.max_buckets = 10; + p.max_access_keys = 10; + o.push_back(std::move(p)); + return o; } void RGWGroupInfo::dump(Formatter * const f) const @@ -3151,16 +3168,18 @@ void RGWGroupInfo::decode_json(JSONObj* obj) JSONDecoder::decode_json("account_id", account_id, obj); } -void RGWGroupInfo::generate_test_instances(std::list& o) +std::list RGWGroupInfo::generate_test_instances() { - o.push_back(new RGWGroupInfo); - auto p = new RGWGroupInfo; - p->id = "id"; - p->tenant = "tenant"; - p->name = "name"; - p->path = "/path/"; - p->account_id = "account"; - o.push_back(p); + std::list o; + o.push_back(RGWGroupInfo{}); + auto p = RGWGroupInfo{}; + p.id = "id"; + p.tenant = "tenant"; + p.name = "name"; + p.path = "/path/"; + p.account_id = "account"; + o.push_back(std::move(p)); + return o; } void RGWStorageStats::dump(Formatter *f) const diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 05ea592be945..ec62e9c7a835 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -799,7 +799,7 @@ struct RGWUserInfo DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); }; @@ -865,7 +865,7 @@ struct RGWAccountInfo { void dump(Formatter* f) const; void decode_json(JSONObj* obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWAccountInfo) @@ -899,7 +899,7 @@ struct RGWGroupInfo { void dump(Formatter* f) const; void decode_json(JSONObj* obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWGroupInfo) @@ -1109,7 +1109,7 @@ struct RGWBucketInfo { void encode(bufferlist& bl) const; void decode(bufferlist::const_iterator& bl); void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); @@ -1206,7 +1206,7 @@ struct RGWBucketEntryPoint void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWBucketEntryPoint) @@ -1534,7 +1534,7 @@ struct RGWBucketEnt { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWBucketEnt) @@ -1600,11 +1600,13 @@ struct multipart_upload_info dest_placement.dump(f); } - static void generate_test_instances(std::list& o) { - o.push_back(new multipart_upload_info); - o.push_back(new multipart_upload_info); - o.back()->dest_placement.name = "dest_placement"; - o.back()->dest_placement.storage_class = "dest_storage_class"; + static std::list generate_test_instances() { + std::list o; + o.push_back(multipart_upload_info{}); + o.push_back(multipart_upload_info{}); + o.back().dest_placement.name = "dest_placement"; + o.back().dest_placement.storage_class = "dest_storage_class"; + return o; } }; WRITE_CLASS_ENCODER(multipart_upload_info) diff --git a/src/rgw/rgw_compression.cc b/src/rgw/rgw_compression.cc index 1c666e551c9b..70a96c8b3f46 100644 --- a/src/rgw/rgw_compression.cc +++ b/src/rgw/rgw_compression.cc @@ -234,14 +234,16 @@ void RGWCompressionInfo::dump(Formatter *f) const ::encode_json("blocks", blocks, f); } -void RGWCompressionInfo::generate_test_instances(list& o) +list RGWCompressionInfo::generate_test_instances() { - RGWCompressionInfo *i = new RGWCompressionInfo; - i->compression_type = "type"; - i->orig_size = 1024; - i->blocks.push_back(compression_block()); - i->blocks.back().old_ofs = 0; - i->blocks.back().new_ofs = 0; - i->blocks.back().len = 1024; - o.push_back(i); + list o; + RGWCompressionInfo i; + i.compression_type = "type"; + i.orig_size = 1024; + i.blocks.push_back(compression_block()); + i.blocks.back().old_ofs = 0; + i.blocks.back().new_ofs = 0; + i.blocks.back().len = 1024; + o.push_back(std::move(i)); + return o; } diff --git a/src/rgw/rgw_compression_types.h b/src/rgw/rgw_compression_types.h index e6a79b2f0ed3..6bee5ff858cb 100644 --- a/src/rgw/rgw_compression_types.h +++ b/src/rgw/rgw_compression_types.h @@ -71,7 +71,7 @@ struct RGWCompressionInfo { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWCompressionInfo) diff --git a/src/rgw/rgw_cors.cc b/src/rgw/rgw_cors.cc index bb80e2b58db2..08e8eacc6fd9 100644 --- a/src/rgw/rgw_cors.cc +++ b/src/rgw/rgw_cors.cc @@ -65,18 +65,20 @@ void RGWCORSRule::erase_origin_if_present(string& origin, bool *rule_empty) { } } -void RGWCORSRule::generate_test_instances(list& o) +list RGWCORSRule::generate_test_instances() { - o.push_back(new RGWCORSRule); - o.push_back(new RGWCORSRule); - o.back()->id = "test"; - o.back()->max_age = 100; - o.back()->allowed_methods = RGW_CORS_GET | RGW_CORS_PUT; - o.back()->allowed_origins.insert("http://origin1"); - o.back()->allowed_origins.insert("http://origin2"); - o.back()->allowed_hdrs.insert("accept-encoding"); - o.back()->allowed_hdrs.insert("accept-language"); - o.back()->exposable_hdrs.push_back("x-rgw-something"); + list o; + o.push_back(RGWCORSRule{}); + o.push_back(RGWCORSRule{}); + o.back().id = "test"; + o.back().max_age = 100; + o.back().allowed_methods = RGW_CORS_GET | RGW_CORS_PUT; + o.back().allowed_origins.insert("http://origin1"); + o.back().allowed_origins.insert("http://origin2"); + o.back().allowed_hdrs.insert("accept-encoding"); + o.back().allowed_hdrs.insert("accept-language"); + o.back().exposable_hdrs.push_back("x-rgw-something"); + return o; } /* diff --git a/src/rgw/rgw_cors.h b/src/rgw/rgw_cors.h index d14c32c0cb42..42f5f8d933ce 100644 --- a/src/rgw/rgw_cors.h +++ b/src/rgw/rgw_cors.h @@ -80,7 +80,7 @@ public: decode(exposable_hdrs, bl); DECODE_FINISH(bl); } - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool has_wildcard_origin(); bool is_origin_present(const char *o); void format_exp_headers(std::string& s); diff --git a/src/rgw/rgw_dencoder.cc b/src/rgw/rgw_dencoder.cc index 2475b45ed6e4..962ebecb812f 100644 --- a/src/rgw/rgw_dencoder.cc +++ b/src/rgw/rgw_dencoder.cc @@ -19,23 +19,29 @@ using namespace std; static string shadow_ns = RGW_OBJ_NS_SHADOW; -void obj_version::generate_test_instances(list& o) +list obj_version::generate_test_instances() { - obj_version *v = new obj_version; - v->ver = 5; - v->tag = "tag"; + list o; - o.push_back(v); - o.push_back(new obj_version); + obj_version v; + v.ver = 5; + v.tag = "tag"; + + o.push_back(std::move(v)); + o.push_back(obj_version{}); + return o; } -void RGWBucketEncryptionConfig::generate_test_instances(std::list& o) +std::list RGWBucketEncryptionConfig::generate_test_instances() { - auto *bc = new RGWBucketEncryptionConfig("aws:kms", "some:key", true); - o.push_back(bc); + std::list o; + + auto bc = RGWBucketEncryptionConfig("aws:kms", "some:key", true); + o.push_back(std::move(bc)); - bc = new RGWBucketEncryptionConfig("AES256"); - o.push_back(bc); + bc = RGWBucketEncryptionConfig("AES256"); + o.push_back(std::move(bc)); - o.push_back(new RGWBucketEncryptionConfig); + o.push_back(RGWBucketEncryptionConfig{}); + return o; } diff --git a/src/rgw/rgw_lc.cc b/src/rgw/rgw_lc.cc index 1bc6bfebc6e2..eaae450c966a 100644 --- a/src/rgw/rgw_lc.cc +++ b/src/rgw/rgw_lc.cc @@ -2673,10 +2673,11 @@ RGWLC::LCWorker::~LCWorker() delete workpool; } /* ~LCWorker */ -void RGWLifecycleConfiguration::generate_test_instances( - list& o) +list RGWLifecycleConfiguration::generate_test_instances() { - o.push_back(new RGWLifecycleConfiguration); + list o; + o.push_back(RGWLifecycleConfiguration{}); + return o; } template diff --git a/src/rgw/rgw_lc.h b/src/rgw/rgw_lc.h index 73305c6f19c2..5a4c05adf8d6 100644 --- a/src/rgw/rgw_lc.h +++ b/src/rgw/rgw_lc.h @@ -68,7 +68,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - // static void generate_test_instances(list& o); + // static list generate_test_instances(); void set_days(const std::string& _days) { days = _days; } std::string get_days_str() const { return days; @@ -542,7 +542,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void add_rule(const LCRule& rule); diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 6c2f54d291db..8cd0250b49e5 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -679,30 +679,32 @@ int rgw_log_op(RGWREST* const rest, req_state *s, const RGWOp* op, OpsLogSink *o return 0; } -void rgw_log_entry::generate_test_instances(list& o) +list rgw_log_entry::generate_test_instances() { - rgw_log_entry *e = new rgw_log_entry; - e->object_owner = parse_owner("object_owner"); - e->bucket_owner = parse_owner("bucket_owner"); - e->bucket = "bucket"; - e->remote_addr = "1.2.3.4"; - e->user = "user"; - e->obj = rgw_obj_key("obj"); - e->uri = "http://uri/bucket/obj"; - e->http_status = "200"; - e->error_code = "error_code"; - e->bytes_sent = 1024; - e->bytes_received = 512; - e->obj_size = 2048; - e->user_agent = "user_agent"; - e->referrer = "referrer"; - e->bucket_id = "10"; - e->trans_id = "trans_id"; - e->identity_type = TYPE_RGW; - e->account_id = "account_id"; - e->role_id = "role_id"; - o.push_back(e); - o.push_back(new rgw_log_entry); + list o; + rgw_log_entry e; + e.object_owner = parse_owner("object_owner"); + e.bucket_owner = parse_owner("bucket_owner"); + e.bucket = "bucket"; + e.remote_addr = "1.2.3.4"; + e.user = "user"; + e.obj = rgw_obj_key("obj"); + e.uri = "http://uri/bucket/obj"; + e.http_status = "200"; + e.error_code = "error_code"; + e.bytes_sent = 1024; + e.bytes_received = 512; + e.obj_size = 2048; + e.user_agent = "user_agent"; + e.referrer = "referrer"; + e.bucket_id = "10"; + e.trans_id = "trans_id"; + e.identity_type = TYPE_RGW; + e.account_id = "account_id"; + e.role_id = "role_id"; + o.push_back(std::move(e)); + o.push_back(rgw_log_entry{}); + return o; } void rgw_log_entry::dump(Formatter *f) const diff --git a/src/rgw/rgw_log.h b/src/rgw/rgw_log.h index 828124aa758d..1bd469fc2542 100644 --- a/src/rgw/rgw_log.h +++ b/src/rgw/rgw_log.h @@ -221,7 +221,7 @@ struct rgw_log_entry { DECODE_FINISH(p); } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_log_entry) diff --git a/src/rgw/rgw_mdlog.h b/src/rgw/rgw_mdlog.h index 7922988c811d..e1a6bf5cd55c 100644 --- a/src/rgw/rgw_mdlog.h +++ b/src/rgw/rgw_mdlog.h @@ -164,7 +164,7 @@ struct RGWMetadataLogData { void decode(bufferlist::const_iterator& bl); void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& l); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWMetadataLogData) diff --git a/src/rgw/rgw_meta_sync_status.h b/src/rgw/rgw_meta_sync_status.h index daa6e9ed46da..eed21dba6bdb 100644 --- a/src/rgw/rgw_meta_sync_status.h +++ b/src/rgw/rgw_meta_sync_status.h @@ -41,7 +41,7 @@ struct rgw_meta_sync_info { void decode_json(JSONObj *obj); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); rgw_meta_sync_info() : state((int)StateInit), num_shards(0) {} }; @@ -90,7 +90,7 @@ struct rgw_meta_sync_marker { void decode_json(JSONObj *obj); void dump(Formatter *f) const; - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_meta_sync_marker) @@ -116,6 +116,6 @@ struct rgw_meta_sync_status { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& ls); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_meta_sync_status) diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index d84ff16f7111..83b85ef15c32 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -97,14 +97,16 @@ void RGWMetadataLogData::decode_json(JSONObj *obj) { JSONDecoder::decode_json("status", status, obj); } -void RGWMetadataLogData::generate_test_instances(std::list& l) { - l.push_back(new RGWMetadataLogData{}); - l.push_back(new RGWMetadataLogData); - l.back()->read_version = obj_version(); - l.back()->read_version.tag = "read_tag"; - l.back()->write_version = obj_version(); - l.back()->write_version.tag = "write_tag"; - l.back()->status = MDLOG_STATUS_WRITE; +std::list RGWMetadataLogData::generate_test_instances() { + std::list l; + l.push_back(RGWMetadataLogData{}); + l.push_back(RGWMetadataLogData{}); + l.back().read_version = obj_version(); + l.back().read_version.tag = "read_tag"; + l.back().write_version = obj_version(); + l.back().write_version.tag = "write_tag"; + l.back().status = MDLOG_STATUS_WRITE; + return l; } class RGWMetadataTopHandler : public RGWMetadataHandler { diff --git a/src/rgw/rgw_multi.cc b/src/rgw/rgw_multi.cc index 6e090d6b545f..5f369d1cd0fc 100644 --- a/src/rgw/rgw_multi.cc +++ b/src/rgw/rgw_multi.cc @@ -81,14 +81,16 @@ bool is_v2_upload_id(const string& upload_id) (strncmp(uid, MULTIPART_UPLOAD_ID_PREFIX_LEGACY, sizeof(MULTIPART_UPLOAD_ID_PREFIX_LEGACY) - 1) == 0); } -void RGWUploadPartInfo::generate_test_instances(list& o) +list RGWUploadPartInfo::generate_test_instances() { - RGWUploadPartInfo *i = new RGWUploadPartInfo; - i->num = 1; - i->size = 10 * 1024 * 1024; - i->etag = "etag"; - o.push_back(i); - o.push_back(new RGWUploadPartInfo); + list o; + RGWUploadPartInfo i; + i.num = 1; + i.size = 10 * 1024 * 1024; + i.etag = "etag"; + o.push_back(std::move(i)); + o.push_back(RGWUploadPartInfo{}); + return o; } void RGWUploadPartInfo::dump(Formatter *f) const diff --git a/src/rgw/rgw_obj_types.h b/src/rgw/rgw_obj_types.h index 5dac66086e6b..227c96d931e5 100644 --- a/src/rgw/rgw_obj_types.h +++ b/src/rgw/rgw_obj_types.h @@ -88,11 +88,13 @@ struct rgw_obj_index_key { // cls_rgw_obj_key now aliases this type f->dump_string("instance", instance); } void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& ls) { - ls.push_back(new rgw_obj_index_key); - ls.push_back(new rgw_obj_index_key); - ls.back()->name = "name"; - ls.back()->instance = "instance"; + static std::list generate_test_instances() { + std::list ls; + ls.push_back(rgw_obj_index_key{}); + ls.push_back(rgw_obj_index_key{}); + ls.back().name = "name"; + ls.back().instance = "instance"; + return ls; } size_t estimate_encoded_size() const { @@ -475,7 +477,7 @@ struct rgw_raw_obj { } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); inline std::string to_str() const { @@ -596,7 +598,7 @@ struct rgw_obj { DECODE_FINISH(bl); } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool operator==(const rgw_obj& o) const { return (key == o.key) && diff --git a/src/rgw/rgw_object_lock.cc b/src/rgw/rgw_object_lock.cc index fdd6608af155..ecb5a5fe9881 100644 --- a/src/rgw/rgw_object_lock.cc +++ b/src/rgw/rgw_object_lock.cc @@ -49,9 +49,10 @@ void ObjectLockRule::dump(Formatter *f) const { f->close_section(); } -void ObjectLockRule::generate_test_instances(std::list& o) { - ObjectLockRule *obj = new ObjectLockRule; - o.push_back(obj); +std::list ObjectLockRule::generate_test_instances() { + std::list o; + o.push_back(ObjectLockRule{}); + return o; } void RGWObjectLock::decode_xml(XMLObj *obj) { @@ -94,15 +95,17 @@ ceph::real_time RGWObjectLock::get_lock_until_date(const ceph::real_time& mtime) return mtime + std::chrono::years(get_years()); } -void RGWObjectLock::generate_test_instances(list& o) { - RGWObjectLock *obj = new RGWObjectLock; - obj->enabled = true; - obj->rule_exist = true; - o.push_back(obj); - obj = new RGWObjectLock; - obj->enabled = false; - obj->rule_exist = false; - o.push_back(obj); +list RGWObjectLock::generate_test_instances() { + list o; + RGWObjectLock obj; + obj.enabled = true; + obj.rule_exist = true; + o.push_back(std::move(obj)); + obj = RGWObjectLock{}; + obj.enabled = false; + obj.rule_exist = false; + o.push_back(std::move(obj)); + return o; } void RGWObjectRetention::decode_xml(XMLObj *obj) { diff --git a/src/rgw/rgw_object_lock.h b/src/rgw/rgw_object_lock.h index 7c6b9cf612bc..e05d74bd724a 100644 --- a/src/rgw/rgw_object_lock.h +++ b/src/rgw/rgw_object_lock.h @@ -83,7 +83,7 @@ public: void decode_xml(XMLObj *obj); void dump_xml(Formatter *f) const; void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(ObjectLockRule) @@ -144,7 +144,7 @@ public: void dump_xml(Formatter *f) const; ceph::real_time get_lock_until_date(const ceph::real_time& mtime) const; void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWObjectLock) diff --git a/src/rgw/rgw_oidc_provider.cc b/src/rgw/rgw_oidc_provider.cc index 734c9a8788e9..b22cc9cc4d31 100644 --- a/src/rgw/rgw_oidc_provider.cc +++ b/src/rgw/rgw_oidc_provider.cc @@ -27,15 +27,17 @@ void RGWOIDCProviderInfo::decode_json(JSONObj *obj) JSONDecoder::decode_json("thumbprints", thumbprints, obj); } -void RGWOIDCProviderInfo::generate_test_instances(std::list& l) +std::list RGWOIDCProviderInfo::generate_test_instances() { - auto p = new RGWOIDCProviderInfo; - p->id = "id"; - p->provider_url = "server.example.com"; - p->arn = "arn:aws:iam::acct:oidc-provider/server.example.com"; - p->creation_date = "someday"; - p->client_ids = {"a", "b"}; - p->thumbprints = {"c", "d"}; - l.push_back(p); - l.push_back(new RGWOIDCProviderInfo); + std::list l; + RGWOIDCProviderInfo p; + p.id = "id"; + p.provider_url = "server.example.com"; + p.arn = "arn:aws:iam::acct:oidc-provider/server.example.com"; + p.creation_date = "someday"; + p.client_ids = {"a", "b"}; + p.thumbprints = {"c", "d"}; + l.push_back(std::move(p)); + l.push_back(RGWOIDCProviderInfo{}); + return l; } diff --git a/src/rgw/rgw_oidc_provider.h b/src/rgw/rgw_oidc_provider.h index f56ec15cb509..3697acf3bc8b 100644 --- a/src/rgw/rgw_oidc_provider.h +++ b/src/rgw/rgw_oidc_provider.h @@ -45,6 +45,6 @@ struct RGWOIDCProviderInfo void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& l); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWOIDCProviderInfo) diff --git a/src/rgw/rgw_period.cc b/src/rgw/rgw_period.cc index c3c5e2b48b52..556f84406fe1 100644 --- a/src/rgw/rgw_period.cc +++ b/src/rgw/rgw_period.cc @@ -98,11 +98,12 @@ int RGWPeriod::update_sync_status(const DoutPrefixProvider *dpp, return 0; } -void RGWPeriod::generate_test_instances(list &o) +std::list RGWPeriod::generate_test_instances() { - RGWPeriod *z = new RGWPeriod; - o.push_back(z); - o.push_back(new RGWPeriod); + std::list o; + o.emplace_back(); + o.emplace_back(); + return o; } const string& RGWPeriod::get_info_oid_prefix() const diff --git a/src/rgw/rgw_placement_types.h b/src/rgw/rgw_placement_types.h index 10f1515330f1..4c78df1b66af 100644 --- a/src/rgw/rgw_placement_types.h +++ b/src/rgw/rgw_placement_types.h @@ -94,9 +94,11 @@ struct rgw_placement_rule { f->dump_string("storage_class", get_storage_class()); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_placement_rule); - o.push_back(new rgw_placement_rule("name", "storage_class")); + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_placement_rule{}); + o.push_back(rgw_placement_rule("name", "storage_class")); + return o; } std::string to_str() const { diff --git a/src/rgw/rgw_pool_types.h b/src/rgw/rgw_pool_types.h index d2b2a845e373..0a84f57d4712 100644 --- a/src/rgw/rgw_pool_types.h +++ b/src/rgw/rgw_pool_types.h @@ -95,9 +95,11 @@ struct rgw_pool { f->dump_string("ns", ns); } - static void generate_test_instances(std::list& o) { - o.push_back(new rgw_pool); - o.push_back(new rgw_pool("pool", "ns")); + static std::list generate_test_instances() { + std::list o; + o.push_back(rgw_pool{}); + o.push_back(rgw_pool("pool", "ns")); + return o; } rgw_pool& operator=(const rgw_pool&) = default; diff --git a/src/rgw/rgw_quota.cc b/src/rgw/rgw_quota.cc index 60392d37eee7..4334241f1135 100644 --- a/src/rgw/rgw_quota.cc +++ b/src/rgw/rgw_quota.cc @@ -1039,14 +1039,16 @@ void RGWQuotaInfo::dump(Formatter *f) const f->dump_int("max_objects", max_objects); } -void RGWQuotaInfo::generate_test_instances(std::list& o) +std::list RGWQuotaInfo::generate_test_instances() { - o.push_back(new RGWQuotaInfo); - o.push_back(new RGWQuotaInfo); - o.back()->enabled = true; - o.back()->check_on_raw = true; - o.back()->max_size = 1024; - o.back()->max_objects = 1; + std::list o; + o.push_back(RGWQuotaInfo{}); + o.push_back(RGWQuotaInfo{}); + o.back().enabled = true; + o.back().check_on_raw = true; + o.back().max_size = 1024; + o.back().max_objects = 1; + return o; } void RGWQuotaInfo::decode_json(JSONObj *obj) diff --git a/src/rgw/rgw_quota_types.h b/src/rgw/rgw_quota_types.h index 48d46dc62b43..23476599d186 100644 --- a/src/rgw/rgw_quota_types.h +++ b/src/rgw/rgw_quota_types.h @@ -73,7 +73,7 @@ struct RGWQuotaInfo { } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); }; diff --git a/src/rgw/rgw_realm.cc b/src/rgw/rgw_realm.cc index d91301e7647a..4ee4b833b299 100644 --- a/src/rgw/rgw_realm.cc +++ b/src/rgw/rgw_realm.cc @@ -83,11 +83,12 @@ int RGWRealm::find_zone(const DoutPrefixProvider *dpp, return 0; } -void RGWRealm::generate_test_instances(list &o) +list RGWRealm::generate_test_instances() { - RGWRealm *z = new RGWRealm; - o.push_back(z); - o.push_back(new RGWRealm); + list o; + o.push_back(RGWRealm{}); + o.push_back(RGWRealm{}); + return o; } void RGWRealm::dump(Formatter *f) const diff --git a/src/rgw/rgw_sync_policy.cc b/src/rgw/rgw_sync_policy.cc index f40ba83d170e..8c1ce02ceff2 100644 --- a/src/rgw/rgw_sync_policy.cc +++ b/src/rgw/rgw_sync_policy.cc @@ -789,10 +789,11 @@ void rgw_sync_policy_info::dump(Formatter *f) const } } -void rgw_sync_policy_info::generate_test_instances(list& o) +list rgw_sync_policy_info::generate_test_instances() { - rgw_sync_policy_info *info = new rgw_sync_policy_info; - o.push_back(info); + list o; + o.push_back(rgw_sync_policy_info{}); + return o; } void rgw_sync_policy_info::decode_json(JSONObj *obj) diff --git a/src/rgw/rgw_sync_policy.h b/src/rgw/rgw_sync_policy.h index 76eed9f1896d..d08c637d3001 100644 --- a/src/rgw/rgw_sync_policy.h +++ b/src/rgw/rgw_sync_policy.h @@ -675,7 +675,7 @@ struct rgw_sync_policy_info { } void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void decode_json(JSONObj *obj); bool empty() const { diff --git a/src/rgw/rgw_tag.cc b/src/rgw/rgw_tag.cc index b4f72185f604..85cb3dcfd2d7 100644 --- a/src/rgw/rgw_tag.cc +++ b/src/rgw/rgw_tag.cc @@ -65,12 +65,14 @@ void RGWObjTags::dump(Formatter *f) const f->close_section(); } -void RGWObjTags::generate_test_instances(std::list& o) +std::list RGWObjTags::generate_test_instances() { - RGWObjTags *r = new RGWObjTags; - r->add_tag("key1","val1"); - r->add_tag("key2","val2"); - o.push_back(r); - o.push_back(new RGWObjTags); + std::list o; + RGWObjTags r; + r.add_tag("key1","val1"); + r.add_tag("key2","val2"); + o.push_back(std::move(r)); + o.push_back(RGWObjTags{}); + return o; } diff --git a/src/rgw/rgw_tag.h b/src/rgw/rgw_tag.h index a7f056d200ce..45c9356e2ee1 100644 --- a/src/rgw/rgw_tag.h +++ b/src/rgw/rgw_tag.h @@ -36,7 +36,7 @@ protected: } void dump(Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); void add_tag(const std::string& key, const std::string& val=""); void emplace_tag(std::string&& key, std::string&& val); int check_and_add_tag(const std::string& key, const std::string& val=""); diff --git a/src/rgw/rgw_user_types.h b/src/rgw/rgw_user_types.h index b731269e9cf2..a880de4d45ab 100644 --- a/src/rgw/rgw_user_types.h +++ b/src/rgw/rgw_user_types.h @@ -132,7 +132,7 @@ struct rgw_user { friend auto operator<=>(const rgw_user&, const rgw_user&) = default; void dump(ceph::Formatter *f) const; - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(rgw_user) diff --git a/src/rgw/rgw_zone.cc b/src/rgw/rgw_zone.cc index e2bac04ca66c..951ebb890440 100644 --- a/src/rgw/rgw_zone.cc +++ b/src/rgw/rgw_zone.cc @@ -68,11 +68,12 @@ static void decode_placement_targets(map& t targets[t.name] = t; } -void RGWZone::generate_test_instances(list &o) +list RGWZone::generate_test_instances() { - RGWZone *z = new RGWZone; - o.push_back(z); - o.push_back(new RGWZone); + list o; + o.push_back(RGWZone{}); + o.push_back(RGWZone{}); + return o; } void RGWZone::dump(Formatter *f) const @@ -507,15 +508,17 @@ void RGWZonePlacementInfo::dump(Formatter *f) const * rather not clutter the output */ } -void RGWZonePlacementInfo::generate_test_instances(list& o) +list RGWZonePlacementInfo::generate_test_instances() { - o.push_back(new RGWZonePlacementInfo); - o.push_back(new RGWZonePlacementInfo); - o.back()->index_pool = rgw_pool("rgw.buckets.index"); + list o; + o.push_back(RGWZonePlacementInfo{}); + o.push_back(RGWZonePlacementInfo{}); + o.back().index_pool = rgw_pool("rgw.buckets.index"); - o.back()->data_extra_pool = rgw_pool("rgw.buckets.non-ec"); - o.back()->index_type = rgw::BucketIndexType::Normal; - o.back()->inline_data = false; + o.back().data_extra_pool = rgw_pool("rgw.buckets.non-ec"); + o.back().index_type = rgw::BucketIndexType::Normal; + o.back().inline_data = false; + return o; } void RGWZonePlacementInfo::decode_json(JSONObj *obj) @@ -579,9 +582,11 @@ void RGWZoneStorageClasses::dump(Formatter *f) const } } -void RGWZoneStorageClasses::generate_test_instances(list& o) +list RGWZoneStorageClasses::generate_test_instances() { - o.push_back(new RGWZoneStorageClasses); + list o; + o.push_back(RGWZoneStorageClasses{}); + return o; } void RGWZoneStorageClasses::decode_json(JSONObj *obj) @@ -664,12 +669,14 @@ void RGWZoneStorageClass::dump(Formatter *f) const } } -void RGWZoneStorageClass::generate_test_instances(list& o) +list RGWZoneStorageClass::generate_test_instances() { - o.push_back(new RGWZoneStorageClass); - o.push_back(new RGWZoneStorageClass); - o.back()->data_pool = rgw_pool("pool1"); - o.back()->compression_type = "zlib"; + list o; + o.push_back(RGWZoneStorageClass{}); + o.push_back(RGWZoneStorageClass{}); + o.back().data_pool = rgw_pool("pool1"); + o.back().compression_type = "zlib"; + return o; } void RGWZoneStorageClass::decode_json(JSONObj *obj) @@ -2080,49 +2087,59 @@ int RGWZoneGroupTierS3Glacier::clear_params(const JSONFormattable& config) return 0; } -void rgw_meta_sync_info::generate_test_instances(list& o) +std::list rgw_meta_sync_info::generate_test_instances() { - auto info = new rgw_meta_sync_info; - info->state = rgw_meta_sync_info::StateBuildingFullSyncMaps; - info->period = "periodid"; - info->realm_epoch = 5; - o.push_back(info); - o.push_back(new rgw_meta_sync_info); + std::list o; + rgw_meta_sync_info info; + info.state = rgw_meta_sync_info::StateBuildingFullSyncMaps; + info.period = "periodid"; + info.realm_epoch = 5; + o.push_back(std::move(info)); + o.emplace_back(); + return o; } -void rgw_meta_sync_marker::generate_test_instances(list& o) +std::list rgw_meta_sync_marker::generate_test_instances() { - auto marker = new rgw_meta_sync_marker; - marker->state = rgw_meta_sync_marker::IncrementalSync; - marker->marker = "01234"; - marker->realm_epoch = 5; - o.push_back(marker); - o.push_back(new rgw_meta_sync_marker); + std::list o; + rgw_meta_sync_marker marker; + marker.state = rgw_meta_sync_marker::IncrementalSync; + marker.marker = "01234"; + marker.realm_epoch = 5; + o.push_back(std::move(marker)); + o.emplace_back(); + return o; } -void rgw_meta_sync_status::generate_test_instances(list& o) +std::list rgw_meta_sync_status::generate_test_instances() { - o.push_back(new rgw_meta_sync_status); + std::list o; + o.emplace_back(); + return o; } -void RGWZoneParams::generate_test_instances(list &o) +std::list RGWZoneParams::generate_test_instances() { - o.push_back(new RGWZoneParams); - o.push_back(new RGWZoneParams); + std::list o; + o.emplace_back(); + o.emplace_back(); + return o; } -void RGWPeriodLatestEpochInfo::generate_test_instances(list &o) +std::list RGWPeriodLatestEpochInfo::generate_test_instances() { - RGWPeriodLatestEpochInfo *z = new RGWPeriodLatestEpochInfo; - o.push_back(z); - o.push_back(new RGWPeriodLatestEpochInfo); + std::list o; + o.emplace_back(); + o.emplace_back(); + return o; } -void RGWZoneGroup::generate_test_instances(list& o) +std::list RGWZoneGroup::generate_test_instances() { - RGWZoneGroup *r = new RGWZoneGroup; - o.push_back(r); - o.push_back(new RGWZoneGroup); + std::list o; + o.emplace_back(); + o.emplace_back(); + return o; } void RGWPeriodLatestEpochInfo::dump(Formatter *f) const { @@ -2141,10 +2158,12 @@ void RGWNameToId::decode_json(JSONObj *obj) { JSONDecoder::decode_json("obj_id", obj_id, obj); } -void RGWNameToId::generate_test_instances(list& o) { - RGWNameToId *n = new RGWNameToId; - n->obj_id = "id"; - o.push_back(n); - o.push_back(new RGWNameToId); +std::list RGWNameToId::generate_test_instances() { + std::list o; + RGWNameToId n; + n.obj_id = "id"; + o.push_back(std::move(n)); + o.emplace_back(); + return o; } diff --git a/src/rgw/rgw_zone.h b/src/rgw/rgw_zone.h index 5d18a17f8c79..146192c4821e 100644 --- a/src/rgw/rgw_zone.h +++ b/src/rgw/rgw_zone.h @@ -203,7 +203,7 @@ struct RGWZoneParams { } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool get_placement(const std::string& placement_id, RGWZonePlacementInfo *placement) const { auto iter = placement_pools.find(placement_id); @@ -375,7 +375,7 @@ struct RGWZoneGroup { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool supports(std::string_view feature) const { return enabled_features.contains(feature); @@ -513,7 +513,7 @@ public: void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); const std::string& get_current_period() const { return current_period; @@ -553,7 +553,7 @@ struct RGWPeriodLatestEpochInfo { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWPeriodLatestEpochInfo) @@ -707,7 +707,7 @@ public: } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); static std::string get_staging_id(const std::string& realm_id) { return realm_id + ":staging"; diff --git a/src/rgw/rgw_zone_types.h b/src/rgw/rgw_zone_types.h index d3cd73c9aa05..44ece58143e4 100644 --- a/src/rgw/rgw_zone_types.h +++ b/src/rgw/rgw_zone_types.h @@ -79,7 +79,7 @@ struct RGWNameToId { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWNameToId) @@ -123,7 +123,7 @@ struct RGWZoneStorageClass { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWZoneStorageClass) @@ -211,7 +211,7 @@ public: void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWZoneStorageClasses) @@ -308,7 +308,7 @@ struct RGWZonePlacementInfo { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(RGWZonePlacementInfo) @@ -399,7 +399,7 @@ struct RGWZone { } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); + static std::list generate_test_instances(); bool is_read_only() const { return read_only; } @@ -570,10 +570,12 @@ struct RGWZoneGroupTierS3Glacier { } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o) { - o.push_back(new RGWZoneGroupTierS3Glacier); - o.back()->glacier_restore_days = 2; - o.back()->glacier_restore_tier_type = GlacierRestoreTierType::Expedited; + static std::list generate_test_instances() { + std::list o; + o.push_back(RGWZoneGroupTierS3Glacier{}); + o.back().glacier_restore_days = 2; + o.back().glacier_restore_tier_type = GlacierRestoreTierType::Expedited; + return o; } }; WRITE_CLASS_ENCODER(RGWZoneGroupTierS3Glacier) @@ -667,15 +669,17 @@ struct RGWZoneGroupPlacementTier { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o) { - o.push_back(new RGWZoneGroupPlacementTier); - o.push_back(new RGWZoneGroupPlacementTier); - o.back()->tier_type = RGWTierType::CLOUD_S3; - o.back()->storage_class = RGW_STORAGE_CLASS_STANDARD; - o.back()->allow_read_through = false; - o.back()->restore_storage_class = RGW_STORAGE_CLASS_STANDARD; - o.back()->s3_glacier.glacier_restore_days = 2; - o.back()->s3_glacier.glacier_restore_tier_type = GlacierRestoreTierType::Expedited; + static std::list generate_test_instances() { + std::list o; + o.push_back(RGWZoneGroupPlacementTier{}); + o.push_back(RGWZoneGroupPlacementTier{}); + o.back().tier_type = RGWTierType::CLOUD_S3; + o.back().storage_class = RGW_STORAGE_CLASS_STANDARD; + o.back().allow_read_through = false; + o.back().restore_storage_class = RGW_STORAGE_CLASS_STANDARD; + o.back().s3_glacier.glacier_restore_days = 2; + o.back().s3_glacier.glacier_restore_tier_type = GlacierRestoreTierType::Expedited; + return o; } }; WRITE_CLASS_ENCODER(RGWZoneGroupPlacementTier) @@ -724,16 +728,18 @@ struct RGWZoneGroupPlacementTarget { } void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o) { - o.push_back(new RGWZoneGroupPlacementTarget); - o.back()->storage_classes.insert(RGW_STORAGE_CLASS_STANDARD); - o.push_back(new RGWZoneGroupPlacementTarget); - o.back()->name = "target"; - o.back()->tags.insert("tag1"); - o.back()->tags.insert("tag2"); - o.back()->storage_classes.insert("STANDARD_IA"); - o.back()->tier_targets[RGWTierType::CLOUD_S3].tier_type = RGWTierType::CLOUD_S3; - o.back()->tier_targets[RGWTierType::CLOUD_S3].storage_class = RGW_STORAGE_CLASS_STANDARD; + static std::list generate_test_instances() { + std::list o; + o.push_back(RGWZoneGroupPlacementTarget{}); + o.back().storage_classes.insert(RGW_STORAGE_CLASS_STANDARD); + o.push_back(RGWZoneGroupPlacementTarget{}); + o.back().name = "target"; + o.back().tags.insert("tag1"); + o.back().tags.insert("tag2"); + o.back().storage_classes.insert("STANDARD_IA"); + o.back().tier_targets[RGWTierType::CLOUD_S3].tier_type = RGWTierType::CLOUD_S3; + o.back().tier_targets[RGWTierType::CLOUD_S3].storage_class = RGW_STORAGE_CLASS_STANDARD; + return o; } }; WRITE_CLASS_ENCODER(RGWZoneGroupPlacementTarget) diff --git a/src/test/osd/types.cc b/src/test/osd/types.cc index a0da3cae2c25..e7864b7e1cac 100644 --- a/src/test/osd/types.cc +++ b/src/test/osd/types.cc @@ -102,34 +102,29 @@ TEST(pg_pool_t, encodeDecode) CEPH_FEATUREMASK_SERVER_MIMIC | CEPH_FEATUREMASK_SERVER_NAUTILUS; { - pg_pool_t p; - std::list pools; - - p.generate_test_instances(pools); + std::list pools = pg_pool_t::generate_test_instances(); for(auto p1 : pools){ bufferlist bl; - p1->encode(bl, features); + p1.encode(bl, features); bl.hexdump(std::cout); auto pbl = bl.cbegin(); pg_pool_t p2; p2.decode(pbl); - compare_pg_pool_t(*p1, p2); + compare_pg_pool_t(p1, p2); } } { // test reef - pg_pool_t p; - std::list pools; - p.generate_test_instances(pools); + std::list pools = pg_pool_t::generate_test_instances(); for(auto p1 : pools){ bufferlist bl; - p1->encode(bl, features|CEPH_FEATUREMASK_SERVER_REEF); + p1.encode(bl, features|CEPH_FEATUREMASK_SERVER_REEF); bl.hexdump(std::cout); auto pbl = bl.cbegin(); pg_pool_t p2; p2.decode(pbl); - compare_pg_pool_t(*p1, p2); + compare_pg_pool_t(p1, p2); } } } diff --git a/src/test/rgw/test_rgw_common.h b/src/test/rgw/test_rgw_common.h index ece16e844037..5aabf1c72b29 100644 --- a/src/test/rgw/test_rgw_common.h +++ b/src/test/rgw/test_rgw_common.h @@ -101,7 +101,6 @@ struct old_rgw_bucket { void dump(Formatter *f) const; void decode_json(JSONObj *obj); - static void generate_test_instances(std::list& o); bool operator<(const old_rgw_bucket& b) const { return name.compare(b.name) < 0; diff --git a/src/test/rgw/test_rgw_manifest.cc b/src/test/rgw/test_rgw_manifest.cc index acde46d44cc4..7c254c4efcc8 100644 --- a/src/test/rgw/test_rgw_manifest.cc +++ b/src/test/rgw/test_rgw_manifest.cc @@ -48,7 +48,6 @@ struct OldObjManifestPart { } void dump(Formatter *f) const; - static void generate_test_instances(list& o); }; WRITE_CLASS_ENCODER(OldObjManifestPart) diff --git a/src/tools/ceph-dencoder/ceph_time.h b/src/tools/ceph-dencoder/ceph_time.h index c27cb5746b98..ba9221f3e382 100644 --- a/src/tools/ceph-dencoder/ceph_time.h +++ b/src/tools/ceph-dencoder/ceph_time.h @@ -28,9 +28,11 @@ class time_point_wrapper { auto epoch_time = Clock::to_time_t(t); f->dump_string("time", std::ctime(&epoch_time)); } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { + std::list ls; constexpr time_t t{455500800}; // Ghostbusters release date - ls.push_back(new time_point_wrapper(Clock::from_time_t(t))); + ls.push_back(time_point_wrapper(Clock::from_time_t(t))); + return ls; } }; @@ -58,9 +60,11 @@ class timespan_wrapper { void dump(Formatter* f) { f->dump_int("timespan", d.count()); } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { + std::list ls; constexpr std::chrono::seconds d{7377}; // marathon world record (2:02:57) - ls.push_back(new timespan_wrapper(d)); + ls.push_back(timespan_wrapper(d)); + return ls; } }; WRITE_CLASS_ENCODER(timespan_wrapper) diff --git a/src/tools/ceph-dencoder/denc_registry.h b/src/tools/ceph-dencoder/denc_registry.h index 4a24162ff1ef..38b2f6610e4d 100644 --- a/src/tools/ceph-dencoder/denc_registry.h +++ b/src/tools/ceph-dencoder/denc_registry.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include #include @@ -41,25 +42,33 @@ struct Dencoder { template class DencoderBase : public Dencoder { + using deleter_type = std::function; + using ptr_type = std::unique_ptr; protected: - T* m_object; - std::list m_list; + enum class do_delete { + no, + yes, + }; + static ptr_type make_ptr(T* ptr, do_delete del) { + auto deleter = (del == do_delete::yes ? + deleter_type{std::default_delete{}} : + deleter_type{[](T*) {}}); + return ptr_type{ptr, deleter}; + } + ptr_type m_object = make_ptr(nullptr, do_delete::yes); + std::list m_list; bool stray_okay; bool nondeterministic; - public: - template - DencoderBase(bool stray_okay, bool nondeterministic, Args&&... args) - : m_object(new T(std::forward(args)...)), - stray_okay(stray_okay), + DencoderBase(bool stray_okay, bool nondeterministic) + : stray_okay(stray_okay), nondeterministic(nondeterministic) {} - ~DencoderBase() override { - delete m_object; - } + ~DencoderBase() override {} std::string decode(bufferlist bl, uint64_t seek) override { auto p = bl.cbegin(); p.seek(seek); + m_object = make_ptr(new T, do_delete::yes); try { using ceph::decode; decode(*m_object, p); @@ -78,10 +87,11 @@ public: void encode(bufferlist& out, uint64_t features) override = 0; void dump(ceph::Formatter *f) override { + assert(m_object); m_object->dump(f); } void generate() override { - T::generate_test_instances(m_list); + m_list = T::generate_test_instances(); } int num_generated() override { return m_list.size(); @@ -92,7 +102,7 @@ public: i = m_list.size(); if ((i == 0) || (i > m_list.size())) return "invalid id for generated object"; - m_object = *(std::next(m_list.begin(), i-1)); + m_object = make_ptr(std::addressof(*std::next(m_list.begin(), i-1)), do_delete::no); return {}; } @@ -112,6 +122,7 @@ public: : DencoderBase(stray_ok, nondeterministic) {} void encode(bufferlist& out, uint64_t features) override { out.clear(); + assert(this->m_object); using ceph::encode; encode(*this->m_object, out); } @@ -119,19 +130,21 @@ public: template class DencoderImplNoFeature : public DencoderImplNoFeatureNoCopy { + using do_delete = typename DencoderBase::do_delete; + public: DencoderImplNoFeature(bool stray_ok, bool nondeterministic) : DencoderImplNoFeatureNoCopy(stray_ok, nondeterministic) {} void copy() override { + assert(this->m_object); T *n = new T; *n = *this->m_object; - delete this->m_object; - this->m_object = n; + this->m_object = this->make_ptr(n, do_delete::yes); } void copy_ctor() override { + assert(this->m_object); T *n = new T(*this->m_object); - delete this->m_object; - this->m_object = n; + this->m_object = this->make_ptr(n, do_delete::yes); } }; @@ -141,6 +154,7 @@ public: DencoderImplFeaturefulNoCopy(bool stray_ok, bool nondeterministic) : DencoderBase(stray_ok, nondeterministic) {} void encode(bufferlist& out, uint64_t features) override { + assert(this->m_object); out.clear(); using ceph::encode; encode(*(this->m_object), out, features); @@ -149,19 +163,21 @@ public: template class DencoderImplFeatureful : public DencoderImplFeaturefulNoCopy { + using do_delete = typename DencoderBase::do_delete; + public: DencoderImplFeatureful(bool stray_ok, bool nondeterministic) : DencoderImplFeaturefulNoCopy(stray_ok, nondeterministic) {} void copy() override { - T *n = new T; + assert(this->m_object); + T* n = new T; *n = *this->m_object; - delete this->m_object; - this->m_object = n; + this->m_object = this->make_ptr(n, do_delete::yes); } void copy_ctor() override { + assert(this->m_object); T *n = new T(*this->m_object); - delete this->m_object; - this->m_object = n; + this->m_object = this->make_ptr(n, do_delete::yes); } }; @@ -208,7 +224,7 @@ public: m_object->dump(f); } void generate() override { - //T::generate_test_instances(m_list); + //m_list = T::generate_test_instances(); } int num_generated() override { return m_list.size(); diff --git a/src/tools/ceph-dencoder/nvmeof_types.h b/src/tools/ceph-dencoder/nvmeof_types.h index 96cff7353b63..4e7b1347918c 100644 --- a/src/tools/ceph-dencoder/nvmeof_types.h +++ b/src/tools/ceph-dencoder/nvmeof_types.h @@ -40,7 +40,8 @@ class NVMeofGwMapDencoder { f->dump_stream("NVMeofGwMap") << m; } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { + std::list ls; std::string pool = "pool1"; std::string group = "grp1"; auto group_key = std::make_pair(pool, group); @@ -57,8 +58,8 @@ class NVMeofGwMapDencoder { m.created_gws[group_key]["GW2"].nonce_map[2] = new_nonces; - ls.push_back(new NVMeofGwMapDencoder(m)); - + ls.push_back(NVMeofGwMapDencoder(m)); + return ls; } }; WRITE_CLASS_ENCODER(NVMeofGwMapDencoder) @@ -84,7 +85,8 @@ class MNVMeofGwMapDencoder { f->dump_stream("MNVMeofGwMap") << m; } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { + std::list ls; std::map map; std::string pool = "pool1"; std::string group = "grp1"; @@ -114,8 +116,9 @@ class MNVMeofGwMapDencoder { pending_map.start_timer(gw_id, group_key, group, 30); m = MNVMeofGwMap(pending_map); - ls.push_back(new MNVMeofGwMapDencoder(m)); + ls.push_back(MNVMeofGwMapDencoder(m)); + return ls } }; WRITE_CLASS_ENCODER(MNVMeofGwMapDencoder) @@ -141,7 +144,8 @@ class MNVMeofGwBeaconDencoder { f->dump_stream("MNVMeofGwBeacon") << m; } - static void generate_test_instances(std::list& ls) { + static std::list generate_test_instances() { + std::list ls; std::string gw_id = "GW"; std::string gw_pool = "pool"; std::string gw_group = "group"; @@ -162,8 +166,9 @@ class MNVMeofGwBeaconDencoder { osd_epoch, gwmap_epoch); - ls.push_back(new MNVMeofGwBeaconDencoder(m)); + ls.push_back(MNVMeofGwBeaconDencoder(m)); + return ls; } }; WRITE_CLASS_ENCODER(MNVMeofGwBeaconDencoder) diff --git a/src/tools/ceph-dencoder/sstring.h b/src/tools/ceph-dencoder/sstring.h index 829a0eb307f6..856669f051f4 100644 --- a/src/tools/ceph-dencoder/sstring.h +++ b/src/tools/ceph-dencoder/sstring.h @@ -25,14 +25,16 @@ class sstring_wrapper { f->dump_string("s1", s1.c_str()); f->dump_string("s2", reinterpret_cast(s2.c_str())); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new sstring_wrapper()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(sstring_wrapper()); // initialize sstrings that fit in internal storage constexpr auto cstr6 = "abcdef"; - ls.push_back(new sstring_wrapper(sstring16{cstr6}, sstring24{cstr6})); + ls.push_back(sstring_wrapper(sstring16{cstr6}, sstring24{cstr6})); // initialize sstrings that overflow into external storage constexpr auto cstr26 = "abcdefghijklmnopqrstuvwxyz"; - ls.push_back(new sstring_wrapper(sstring16{cstr26}, sstring24{cstr26})); + ls.push_back(sstring_wrapper(sstring16{cstr26}, sstring24{cstr26})); + return ls; } }; WRITE_CLASS_DENC(sstring_wrapper) diff --git a/src/tools/ceph-dencoder/str.h b/src/tools/ceph-dencoder/str.h index defc224c6139..56407a8a585a 100644 --- a/src/tools/ceph-dencoder/str.h +++ b/src/tools/ceph-dencoder/str.h @@ -26,11 +26,13 @@ class string_wrapper { f->dump_string("s", s); } - static void generate_test_instances(std::list& ls) { - ls.push_back(new string_wrapper()); + static std::list generate_test_instances() { + std::list ls; + ls.push_back(string_wrapper()); // initialize strings that fit in internal storage std::string s1 = "abcdef"; - ls.push_back(new string_wrapper(s1)); + ls.push_back(string_wrapper(s1)); + return ls; } }; WRITE_CLASS_ENCODER(string_wrapper) diff --git a/src/tools/rbd_mirror/image_map/Types.cc b/src/tools/rbd_mirror/image_map/Types.cc index 4f5ae6c49661..4339d21a43e7 100644 --- a/src/tools/rbd_mirror/image_map/Types.cc +++ b/src/tools/rbd_mirror/image_map/Types.cc @@ -105,8 +105,10 @@ void PolicyData::dump(Formatter *f) const { std::visit(DumpVisitor(f, "policy_meta_type"), policy_meta); } -void PolicyData::generate_test_instances(std::list &o) { - o.push_back(new PolicyData(PolicyMetaNone())); +std::list PolicyData::generate_test_instances() { + std::list o; + o.push_back(PolicyData(PolicyMetaNone())); + return o; } std::ostream &operator<<(std::ostream &os, const ActionType& action_type) { diff --git a/src/tools/rbd_mirror/image_map/Types.h b/src/tools/rbd_mirror/image_map/Types.h index 07908dfc7dca..b30ac5ad4305 100644 --- a/src/tools/rbd_mirror/image_map/Types.h +++ b/src/tools/rbd_mirror/image_map/Types.h @@ -116,7 +116,7 @@ struct PolicyData { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(PolicyData); diff --git a/src/tools/rbd_mirror/instance_watcher/Types.cc b/src/tools/rbd_mirror/instance_watcher/Types.cc index 4c9f5235f192..e27c633b36a5 100644 --- a/src/tools/rbd_mirror/instance_watcher/Types.cc +++ b/src/tools/rbd_mirror/instance_watcher/Types.cc @@ -179,21 +179,23 @@ void NotifyMessage::dump(Formatter *f) const { std::visit(DumpPayloadVisitor(f), payload); } -void NotifyMessage::generate_test_instances(std::list &o) { - o.push_back(new NotifyMessage(ImageAcquirePayload())); - o.push_back(new NotifyMessage(ImageAcquirePayload(1, "gid"))); +std::list NotifyMessage::generate_test_instances() { + std::list o; + o.push_back(NotifyMessage(ImageAcquirePayload())); + o.push_back(NotifyMessage(ImageAcquirePayload(1, "gid"))); - o.push_back(new NotifyMessage(ImageReleasePayload())); - o.push_back(new NotifyMessage(ImageReleasePayload(1, "gid"))); + o.push_back(NotifyMessage(ImageReleasePayload())); + o.push_back(NotifyMessage(ImageReleasePayload(1, "gid"))); - o.push_back(new NotifyMessage(PeerImageRemovedPayload())); - o.push_back(new NotifyMessage(PeerImageRemovedPayload(1, "gid", "uuid"))); + o.push_back(NotifyMessage(PeerImageRemovedPayload())); + o.push_back(NotifyMessage(PeerImageRemovedPayload(1, "gid", "uuid"))); - o.push_back(new NotifyMessage(SyncRequestPayload())); - o.push_back(new NotifyMessage(SyncRequestPayload(1, "sync_id"))); + o.push_back(NotifyMessage(SyncRequestPayload())); + o.push_back(NotifyMessage(SyncRequestPayload(1, "sync_id"))); - o.push_back(new NotifyMessage(SyncStartPayload())); - o.push_back(new NotifyMessage(SyncStartPayload(1, "sync_id"))); + o.push_back(NotifyMessage(SyncStartPayload())); + o.push_back(NotifyMessage(SyncStartPayload(1, "sync_id"))); + return o; } std::ostream &operator<<(std::ostream &out, const NotifyOp &op) { diff --git a/src/tools/rbd_mirror/instance_watcher/Types.h b/src/tools/rbd_mirror/instance_watcher/Types.h index b9e0d19bca78..df6eac66c0d5 100644 --- a/src/tools/rbd_mirror/instance_watcher/Types.h +++ b/src/tools/rbd_mirror/instance_watcher/Types.h @@ -160,7 +160,7 @@ struct NotifyMessage { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(NotifyMessage); diff --git a/src/tools/rbd_mirror/leader_watcher/Types.cc b/src/tools/rbd_mirror/leader_watcher/Types.cc index ae77c6b3501b..d2aba3eb0125 100644 --- a/src/tools/rbd_mirror/leader_watcher/Types.cc +++ b/src/tools/rbd_mirror/leader_watcher/Types.cc @@ -132,10 +132,12 @@ void NotifyMessage::dump(Formatter *f) const { std::visit(DumpPayloadVisitor(f), payload); } -void NotifyMessage::generate_test_instances(std::list &o) { - o.push_back(new NotifyMessage(HeartbeatPayload())); - o.push_back(new NotifyMessage(LockAcquiredPayload())); - o.push_back(new NotifyMessage(LockReleasedPayload())); +std::list NotifyMessage::generate_test_instances() { + std::list o; + o.push_back(NotifyMessage(HeartbeatPayload())); + o.push_back(NotifyMessage(LockAcquiredPayload())); + o.push_back(NotifyMessage(LockReleasedPayload())); + return o; } std::ostream &operator<<(std::ostream &out, const NotifyOp &op) { diff --git a/src/tools/rbd_mirror/leader_watcher/Types.h b/src/tools/rbd_mirror/leader_watcher/Types.h index 2a4c27bffb41..b2b05eb4eabc 100644 --- a/src/tools/rbd_mirror/leader_watcher/Types.h +++ b/src/tools/rbd_mirror/leader_watcher/Types.h @@ -100,7 +100,7 @@ struct NotifyMessage { void decode(bufferlist::const_iterator& it); void dump(Formatter *f) const; - static void generate_test_instances(std::list &o); + static std::list generate_test_instances(); }; WRITE_CLASS_ENCODER(NotifyMessage); -- 2.47.3