11
11
#include < algorithm>
12
12
#include < iostream>
13
13
14
+ #include " port/port.h"
14
15
#include " rocksdb/types.h"
15
16
#include " rocksdb/transaction_log.h"
16
17
#include " utilities/utility_db.h"
17
18
#include " utilities/backupable_db.h"
18
19
#include " util/testharness.h"
19
20
#include " util/random.h"
21
+ #include " util/mutexlock.h"
20
22
#include " util/testutil.h"
21
23
#include " util/auto_roll_logger.h"
22
24
@@ -161,6 +163,7 @@ class TestEnv : public EnvWrapper {
161
163
Status NewSequentialFile (const std::string& f,
162
164
unique_ptr<SequentialFile>* r,
163
165
const EnvOptions& options) {
166
+ MutexLock l (&mutex_);
164
167
if (dummy_sequential_file_) {
165
168
r->reset (new TestEnv::DummySequentialFile ());
166
169
return Status::OK ();
@@ -171,6 +174,7 @@ class TestEnv : public EnvWrapper {
171
174
172
175
Status NewWritableFile (const std::string& f, unique_ptr<WritableFile>* r,
173
176
const EnvOptions& options) {
177
+ MutexLock l (&mutex_);
174
178
written_files_.push_back (f);
175
179
if (limit_written_files_ <= 0 ) {
176
180
return Status::NotSupported (" Sorry, can't do this" );
@@ -180,32 +184,41 @@ class TestEnv : public EnvWrapper {
180
184
}
181
185
182
186
virtual Status DeleteFile (const std::string& fname) override {
187
+ MutexLock l (&mutex_);
183
188
ASSERT_GT (limit_delete_files_, 0U );
184
189
limit_delete_files_--;
185
190
return EnvWrapper::DeleteFile (fname);
186
191
}
187
192
188
193
void AssertWrittenFiles (std::vector<std::string>& should_have_written) {
194
+ MutexLock l (&mutex_);
189
195
sort (should_have_written.begin (), should_have_written.end ());
190
196
sort (written_files_.begin (), written_files_.end ());
191
197
ASSERT_TRUE (written_files_ == should_have_written);
192
198
}
193
199
194
200
void ClearWrittenFiles () {
201
+ MutexLock l (&mutex_);
195
202
written_files_.clear ();
196
203
}
197
204
198
205
void SetLimitWrittenFiles (uint64_t limit) {
206
+ MutexLock l (&mutex_);
199
207
limit_written_files_ = limit;
200
208
}
201
209
202
- void SetLimitDeleteFiles (uint64_t limit) { limit_delete_files_ = limit; }
210
+ void SetLimitDeleteFiles (uint64_t limit) {
211
+ MutexLock l (&mutex_);
212
+ limit_delete_files_ = limit;
213
+ }
203
214
204
215
void SetDummySequentialFile (bool dummy_sequential_file) {
216
+ MutexLock l (&mutex_);
205
217
dummy_sequential_file_ = dummy_sequential_file;
206
218
}
207
219
208
220
private:
221
+ port::Mutex mutex_;
209
222
bool dummy_sequential_file_ = false ;
210
223
std::vector<std::string> written_files_;
211
224
uint64_t limit_written_files_ = 1000000 ;
0 commit comments