summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-27 13:40:45 -0700
committerSage Weil <sage@inktank.com>2013-09-27 13:40:45 -0700
commit2d3eb52e6ab837335b56c1ad3526c9f445be680f (patch)
tree33d25f91502e1e0467f696e1165839f88ec4cc67
parent6347fcf7ddfabf64a7392f8b00ee04cf1c357bfa (diff)
parentefc6b5ea1c1ca10e3eaed68818809d8738d28ccd (diff)
downloadceph-2d3eb52e6ab837335b56c1ad3526c9f445be680f.tar.gz
Merge pull request #654 from ceph/wip-testrados
fix some issues with ceph_test_rados Reviewed-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/test/osd/Object.cc9
-rw-r--r--src/test/osd/RadosModel.h61
2 files changed, 17 insertions, 53 deletions
diff --git a/src/test/osd/Object.cc b/src/test/osd/Object.cc
index 408cc63ac02..d4be4df1bdd 100644
--- a/src/test/osd/Object.cc
+++ b/src/test/osd/Object.cc
@@ -9,10 +9,11 @@
ostream &operator<<(ostream &out, const ContDesc &rhs)
{
- return out << "ObjNum: " << rhs.objnum
- << " snap: " << rhs.cursnap
- << " seqnum: " << rhs.seqnum
- << " prefix: " << rhs.prefix;
+ return out << "(ObjNum " << rhs.objnum
+ << " snap " << rhs.cursnap
+ << " seq_num " << rhs.seqnum
+ //<< " prefix " << rhs.prefix
+ << ")";
}
void VarLenGenerator::get_ranges(const ContDesc &cont, interval_set<uint64_t> &out) {
diff --git a/src/test/osd/RadosModel.h b/src/test/osd/RadosModel.h
index 7bda0fe9a56..a87ecebb4c1 100644
--- a/src/test/osd/RadosModel.h
+++ b/src/test/osd/RadosModel.h
@@ -403,8 +403,8 @@ public:
void update_object_full(const string &oid, const ObjectDesc &contents)
{
- pool_obj_cont.rbegin()->second.erase(oid);
- pool_obj_cont.rbegin()->second.insert(pair<string,ObjectDesc>(oid, contents));
+ pool_obj_cont[current_snap].erase(oid);
+ pool_obj_cont[current_snap].insert(pair<string,ObjectDesc>(oid, contents));
}
void update_object_version(const string &oid, uint64_t version)
@@ -416,7 +416,7 @@ public:
map<string,ObjectDesc>::iterator j = i->second.find(oid);
if (j != i->second.end()) {
j->second.version = version;
- cout << __func__ << " oid " << oid << " is version " << version << std::endl;
+ cout << __func__ << " oid " << oid << " v " << version << " " << j->second.most_recent() << std::endl;
break;
}
}
@@ -792,25 +792,12 @@ public:
context->oid_in_use.insert(oid);
context->oid_not_in_use.erase(oid);
- vector<uint64_t> snapset(context->snaps.size());
- int j = 0;
- for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin();
- i != context->snaps.rend();
- ++i, ++j) {
- snapset[j] = i->second;
- }
interval_set<uint64_t> ranges;
context->cont_gen.get_ranges(cont, ranges);
std::cout << num << ": seq_num " << context->seq_num << " ranges " << ranges << std::endl;
context->seq_num++;
context->state_lock.Unlock();
- int r = context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset);
- if (r) {
- cerr << " r is " << r << " snapset is " << snapset << " seq is " << context->seq << std::endl;
- assert(0);
- }
-
waiting_on = ranges.num_intervals();
//cout << " waiting_on = " << waiting_on << std::endl;
ContentsGenerator::iterator gen_pos = context->cont_gen.get_iterator(cont);
@@ -921,23 +908,10 @@ public:
context->remove_object(oid);
- vector<uint64_t> snapset(context->snaps.size());
- int j = 0;
- for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin();
- i != context->snaps.rend();
- ++i, ++j) {
- snapset[j] = i->second;
- }
interval_set<uint64_t> ranges;
context->state_lock.Unlock();
- int r = context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset);
- if (r) {
- cerr << "r is " << r << " snapset is " << snapset << " seq is " << context->seq << std::endl;
- assert(0);
- }
-
- r = context->io_ctx.remove(context->prefix+oid);
+ int r = context->io_ctx.remove(context->prefix+oid);
if (r && !(r == -ENOENT && !present)) {
cerr << "r is " << r << " while deleting " << oid << " and present is " << present << std::endl;
assert(0);
@@ -1071,6 +1045,7 @@ public:
<< err << std::endl;
}
} else {
+ cout << num << ": expect " << old_value.most_recent() << std::endl;
assert(!old_value.deleted());
if (old_value.has_contents()) {
ContDesc to_check;
@@ -1271,17 +1246,8 @@ public:
context->oid_in_use.insert(oid);
context->oid_not_in_use.erase(oid);
- vector<uint64_t> snapset(context->snaps.size());
- int j = 0;
- for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin();
- i != context->snaps.rend();
- ++i, ++j) {
- snapset[j] = i->second;
- }
-
TestWatchContext *ctx = context->get_watch_context(oid);
context->state_lock.Unlock();
- assert(!context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset));
int r;
if (!ctx) {
{
@@ -1351,15 +1317,7 @@ public:
context->roll_back(oid, roll_back_to);
uint64_t snap = context->snaps[roll_back_to];
- vector<uint64_t> snapset(context->snaps.size());
- int j = 0;
- for (map<int,uint64_t>::reverse_iterator i = context->snaps.rbegin();
- i != context->snaps.rend();
- ++i, ++j) {
- snapset[j] = i->second;
- }
context->state_lock.Unlock();
- assert(!context->io_ctx.selfmanaged_snap_set_write_ctx(context->seq, snapset));
op.selfmanaged_snap_rollback(snap);
@@ -1440,6 +1398,8 @@ public:
snap = -1;
}
context->find_object(oid_src, &src_value, snap);
+ if (!src_value.deleted())
+ context->update_object_full(oid, src_value);
string src = context->prefix+oid_src;
op.copy_from(src.c_str(), context->io_ctx, src_value.version);
@@ -1462,6 +1422,7 @@ public:
librados::SNAP_HEAD,
librados::OPERATION_ORDER_READS_WRITES, // order wrt previous write/update
NULL);
+
}
void _finish(CallbackInfo *info)
@@ -1477,14 +1438,16 @@ public:
assert(comp->is_complete());
cout << num << ": finishing copy_from to " << context->prefix + oid << std::endl;
if ((r = comp->get_return_value())) {
- if (!(r == -ENOENT && src_value.deleted())) {
+ if (r == -ENOENT && src_value.deleted()) {
+ cout << num << ": got expected ENOENT (src dne)" << std::endl;
+ } else {
cerr << "Error: oid " << oid << " copy_from " << oid_src << " returned error code "
<< r << std::endl;
+ assert(0);
}
} else {
assert(!version || comp->get_version64() == version);
version = comp->get_version64();
- context->update_object_full(oid, src_value);
context->update_object_version(oid, comp->get_version64());
}
} else if (info->id == 1) {