Storage Engine API
record_store_v1_test_help.h
Go to the documentation of this file.
1 // record_store_v1_test_help.h
2 
31 #pragma once
32 
33 #include <vector>
34 
38 
39 namespace mongo {
40 
42 public:
43  DummyRecordStoreV1MetaData(bool capped, int userFlags);
45 
46  virtual const DiskLoc& capExtent() const;
47  virtual void setCapExtent(OperationContext* opCtx, const DiskLoc& loc);
48 
49  virtual const DiskLoc& capFirstNewRecord() const;
50  virtual void setCapFirstNewRecord(OperationContext* opCtx, const DiskLoc& loc);
51 
52  virtual long long dataSize() const;
53  virtual long long numRecords() const;
54 
55  virtual void incrementStats(OperationContext* opCtx,
56  long long dataSizeIncrement,
57  long long numRecordsIncrement);
58 
59  virtual void setStats(OperationContext* opCtx, long long dataSize, long long numRecords);
60 
61  virtual DiskLoc deletedListEntry(int bucket) const;
62  virtual void setDeletedListEntry(OperationContext* opCtx, int bucket, const DiskLoc& loc);
63 
64  virtual DiskLoc deletedListLegacyGrabBag() const;
65  virtual void setDeletedListLegacyGrabBag(OperationContext* opCtx, const DiskLoc& loc);
66 
67  virtual void orphanDeletedList(OperationContext* opCtx);
68 
69  virtual const DiskLoc& firstExtent(OperationContext* opCtx) const;
70  virtual void setFirstExtent(OperationContext* opCtx, const DiskLoc& loc);
71 
72  virtual const DiskLoc& lastExtent(OperationContext* opCtx) const;
73  virtual void setLastExtent(OperationContext* opCtx, const DiskLoc& loc);
74 
75  virtual bool isCapped() const;
76 
77  virtual bool isUserFlagSet(int flag) const;
78  virtual int userFlags() const {
79  return _userFlags;
80  }
81  virtual bool setUserFlag(OperationContext* opCtx, int flag);
82  virtual bool clearUserFlag(OperationContext* opCtx, int flag);
83  virtual bool replaceUserFlags(OperationContext* opCtx, int flags);
84 
85 
86  virtual int lastExtentSize(OperationContext* opCtx) const;
87  virtual void setLastExtentSize(OperationContext* opCtx, int newMax);
88 
89  virtual long long maxCappedDocs() const;
90 
91 protected:
94 
95  long long _dataSize;
96  long long _numRecords;
97 
100 
101  bool _capped;
103  long long _maxCappedDocs;
104 
107 
108  std::vector<DiskLoc> _deletedLists;
110 };
111 
113 public:
114  virtual ~DummyExtentManager();
115 
116  virtual void close(OperationContext* opCtx);
117 
118  virtual Status init(OperationContext* opCtx);
119 
120  virtual int numFiles() const;
121  virtual long long fileSize() const;
122 
123  virtual DiskLoc allocateExtent(OperationContext* opCtx,
124  bool capped,
125  int size,
126  bool enforceQuota);
127 
128  virtual void freeExtents(OperationContext* opCtx, DiskLoc firstExt, DiskLoc lastExt);
129 
130  virtual void freeExtent(OperationContext* opCtx, DiskLoc extent);
131 
132  virtual void freeListStats(OperationContext* opCtx,
133  int* numExtents,
134  int64_t* totalFreeSizeBytes) const;
135 
136  virtual MmapV1RecordHeader* recordForV1(const DiskLoc& loc) const;
137 
138  virtual std::unique_ptr<RecordFetcher> recordNeedsFetch(const DiskLoc& loc) const final;
139 
140  virtual Extent* extentForV1(const DiskLoc& loc) const;
141 
142  virtual DiskLoc extentLocForV1(const DiskLoc& loc) const;
143 
144  virtual Extent* getExtent(const DiskLoc& loc, bool doSanityCheck = true) const;
145 
146  virtual int maxSize() const;
147 
148  virtual CacheHint* cacheHint(const DiskLoc& extentLoc, const HintType& hint);
149 
150  DataFileVersion getFileFormat(OperationContext* opCtx) const final;
151 
152  virtual void setFileFormat(OperationContext* opCtx, DataFileVersion newVersion) final;
153 
154  const DataFile* getOpenFile(int n) const final;
155 
156 
157 protected:
158  struct ExtentInfo {
159  char* data;
160  size_t length;
161  };
162 
163  std::vector<ExtentInfo> _extents;
164 };
165 
166 struct LocAndSize {
168  int size; // with headers
169 };
170 
190 void initializeV1RS(OperationContext* opCtx,
191  const LocAndSize* records,
192  const LocAndSize* drecs,
193  const LocAndSize* legacyGrabBag,
194  DummyExtentManager* em,
196 
204 void assertStateV1RS(OperationContext* opCtx,
205  const LocAndSize* records,
206  const LocAndSize* drecs,
207  const LocAndSize* legacyGrabBag,
208  const ExtentManager* em,
209  const DummyRecordStoreV1MetaData* md);
210 
211 } // namespace mongo
virtual ~DummyRecordStoreV1MetaData()
Definition: record_store_v1_test_help.h:44
virtual bool isCapped() const
Definition: record_store_v1_test_help.cpp:156
DummyRecordStoreV1MetaData(bool capped, int userFlags)
Definition: record_store_v1_test_help.cpp:52
long long _dataSize
Definition: record_store_v1_test_help.h:95
Definition: record_store_v1_test_help.h:112
DiskLoc _deletedListLegacyGrabBag
Definition: record_store_v1_test_help.h:109
virtual DiskLoc deletedListEntry(int bucket) const
Definition: record_store_v1_test_help.cpp:109
virtual bool clearUserFlag(OperationContext *opCtx, int flag)
Definition: record_store_v1_test_help.cpp:171
Definition: extent.h:50
char * data
Definition: record_store_v1_test_help.h:159
virtual void incrementStats(OperationContext *opCtx, long long dataSizeIncrement, long long numRecordsIncrement)
Definition: record_store_v1_test_help.cpp:91
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
virtual int lastExtentSize(OperationContext *opCtx) const
Definition: record_store_v1_test_help.cpp:186
int size
Definition: record_store_v1_test_help.h:168
Definition: record_store_v1_test_help.h:158
Definition: record_store_v1_test_help.h:166
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
Definition: extent_manager.h:181
Definition: data_file.h:43
virtual bool replaceUserFlags(OperationContext *opCtx, int flags)
Definition: record_store_v1_test_help.cpp:178
DiskLoc _capExtent
Definition: record_store_v1_test_help.h:92
HintType
Definition: extent_manager.h:180
long long _numRecords
Definition: record_store_v1_test_help.h:96
double _paddingFactor
Definition: record_store_v1_test_help.h:106
virtual bool isUserFlagSet(int flag) const
Definition: record_store_v1_test_help.cpp:160
virtual void setLastExtent(OperationContext *opCtx, const DiskLoc &loc)
Definition: record_store_v1_test_help.cpp:152
represents a disk location/offset on disk in a database.
Definition: diskloc.h:53
DiskLoc _firstExtent
Definition: record_store_v1_test_help.h:98
virtual void setDeletedListLegacyGrabBag(OperationContext *opCtx, const DiskLoc &loc)
Definition: record_store_v1_test_help.cpp:130
virtual const DiskLoc & capExtent() const
Definition: record_store_v1_test_help.cpp:67
std::vector< DiskLoc > _deletedLists
Definition: record_store_v1_test_help.h:108
Definition: record.h:58
std::vector< ExtentInfo > _extents
Definition: record_store_v1_test_help.h:163
virtual const DiskLoc & lastExtent(OperationContext *opCtx) const
Definition: record_store_v1_test_help.cpp:148
void initializeV1RS(OperationContext *opCtx, const LocAndSize *records, const LocAndSize *drecs, const LocAndSize *legacyGrabBag, DummyExtentManager *em, DummyRecordStoreV1MetaData *md)
Creates a V1 storage/mmap_v1 with the passed in records and DeletedRecords (drecs).
Definition: record_store_v1_test_help.cpp:384
virtual long long dataSize() const
Definition: record_store_v1_test_help.cpp:83
virtual bool setUserFlag(OperationContext *opCtx, int flag)
Definition: record_store_v1_test_help.cpp:164
virtual const DiskLoc & capFirstNewRecord() const
Definition: record_store_v1_test_help.cpp:75
virtual void orphanDeletedList(OperationContext *opCtx)
Definition: record_store_v1_test_help.cpp:135
virtual void setCapExtent(OperationContext *opCtx, const DiskLoc &loc)
Definition: record_store_v1_test_help.cpp:71
bool _capped
Definition: record_store_v1_test_help.h:101
size_t length
Definition: record_store_v1_test_help.h:160
DiskLoc _lastExtent
Definition: record_store_v1_test_help.h:99
DiskLoc bucket
Definition: btree_interface.cpp:336
DiskLoc loc
Definition: record_store_v1_test_help.h:167
void assertStateV1RS(OperationContext *opCtx, const LocAndSize *records, const LocAndSize *drecs, const LocAndSize *legacyGrabBag, const ExtentManager *em, const DummyRecordStoreV1MetaData *md)
Asserts that the V1RecordStore defined by md has the passed in records and drecs in the correct order...
Definition: record_store_v1_test_help.cpp:542
long long _maxCappedDocs
Definition: record_store_v1_test_help.h:103
int _userFlags
Definition: record_store_v1_test_help.h:102
virtual void setCapFirstNewRecord(OperationContext *opCtx, const DiskLoc &loc)
Definition: record_store_v1_test_help.cpp:79
virtual void setDeletedListEntry(OperationContext *opCtx, int bucket, const DiskLoc &loc)
Definition: record_store_v1_test_help.cpp:116
virtual void setLastExtentSize(OperationContext *opCtx, int newMax)
Definition: record_store_v1_test_help.cpp:190
ExtentManager basics.
Definition: extent_manager.h:64
virtual long long maxCappedDocs() const
Definition: record_store_v1_test_help.cpp:194
Definition: record_store_v1_base.h:46
virtual int userFlags() const
Definition: record_store_v1_test_help.h:78
virtual long long numRecords() const
Definition: record_store_v1_test_help.cpp:87
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
virtual DiskLoc deletedListLegacyGrabBag() const
Definition: record_store_v1_test_help.cpp:126
DiskLoc _capFirstNewRecord
Definition: record_store_v1_test_help.h:93
virtual const DiskLoc & firstExtent(OperationContext *opCtx) const
Definition: record_store_v1_test_help.cpp:140
Definition: data_file.h:196
int _lastExtentSize
Definition: record_store_v1_test_help.h:105
virtual void setStats(OperationContext *opCtx, long long dataSize, long long numRecords)
Definition: record_store_v1_test_help.cpp:98
Definition: record_store_v1_test_help.h:41
virtual void setFirstExtent(OperationContext *opCtx, const DiskLoc &loc)
Definition: record_store_v1_test_help.cpp:144