Project

General

Profile

Bug #36345 » test_ceph.cc

Anonymous, 10/08/2018 04:11 PM

 

#include <rados/librados.hpp>
#include <iostream>
#include <string>

librados::IoCtx io;
librados::Rados rados;
librados::AioCompletion *comp;

int main(int argc, const char **argv) {

int err, res;
const char *id = "xyz";

if ( ( err = rados.init("tnr") ) < 0 ) {
std::cerr << "[DEBUG] couldn't create the ceph cluster handle: " << err << std::endl;
return 1;
}
if ( ( err = rados.conf_read_file("/home/tnr/etc/ceph.conf") ) < 0 ) {
std::cerr << "[DEBUG] cannot read ceph config file: " << err << std::endl;
return 1;
}

if ( ( err = rados.connect() ) < 0 ) {
std::cerr << "[DEBUG] cannot connect to cluster: " << err << std::endl;
return 1;
}

if ( (err = rados.ioctx_create("diablo", io)) < 0 ) {
std::cerr << "[DEBUG] error while talking to the cluster: " << err << std::endl;
return 1;
}
uint64_t psize;
time_t mtime;
comp = librados::Rados::aio_create_completion();
err = io.aio_stat( id, comp, &psize, &mtime );

if (err < 0) {
std::cerr << "[DEBUG] could not stat: " << err << std::endl;
return 1;
}
comp->wait_for_complete();
res = comp->get_return_value();

if ( res < 0 ) {
std::cerr << "[DEBUG] could not stat: " << res << std::endl;
return 1;
}
sleep(1);
std::cerr << "[DEBUG] mtime: " << mtime << " psize: " << psize << std::endl;
sleep(1);

comp = librados::Rados::aio_create_completion();

librados::bufferlist buf;

err = io.aio_read( id, comp, &buf, psize, 0 );

if (err < 0) {
std::cerr << "[DEBUG] could not read: " << err << std::endl;
exit(1);
}

comp->wait_for_complete();
res = comp->get_return_value();

if ( res < 0 ) {
std::cerr << "[DEBUG] could not read: " << res << std::endl;
return 1;
}
sleep(1);
std::cerr << "[DEBUG] bytes read: " << res << ", psize: " << psize << std::endl;
std::string str;
buf.copy(0, 60, str);

std::cout << "[DEBUG] --" << std::endl << str << std::endl << "[DEBUG] --" << std::endl;
sleep(1);
rados.shutdown();

}
(2-2/2)