X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2bdebbaf8391c3b5dc1cd193491504f83bb2ea3e..16bbb8a8212497d9c44c81333ed2c0e689e0c5af:/examples/s4u/io/s4u_io_test.cpp diff --git a/examples/s4u/io/s4u_io_test.cpp b/examples/s4u/io/s4u_io_test.cpp index 4f2e993d06..789a8f4479 100644 --- a/examples/s4u/io/s4u_io_test.cpp +++ b/examples/s4u/io/s4u_io_test.cpp @@ -13,103 +13,103 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "a sample log category"); class myHost : simgrid::s4u::Actor { public: - myHost(const char*procname, simgrid::s4u::Host *host,int argc, char **argv) + myHost(const char*procname, simgrid::s4u::Host *host,int argc, char **argv) : simgrid::s4u::Actor(procname,host,argc,argv){} - void show_info(boost::unordered_map &mounts) { - XBT_INFO("Storage info on %s:", - simgrid::s4u::Host::current()->name().c_str()); - - for (const auto&kv : mounts) { - const char* mountpoint = kv.first.c_str(); - simgrid::s4u::Storage &storage = *kv.second; - - // Retrieve disk's information - sg_size_t free_size = storage.size_free(); - sg_size_t used_size = storage.size_used(); - sg_size_t size = storage.size(); - - XBT_INFO(" %s (%s) Used: %llu; Free: %llu; Total: %llu.", - storage.name(), mountpoint, used_size, free_size, size); - } - } - - int main(int argc, char **argv) { - boost::unordered_map & mounts = - simgrid::s4u::Host::current()->mountedStorages(); - - show_info(mounts); - - // Open an non-existing file to create it - const char *filename = "/home/tmp/data.txt"; - simgrid::s4u::File *file = new simgrid::s4u::File(filename, NULL); - sg_size_t write, read, file_size; - - write = file->write(200000); // Write 200,000 bytes - XBT_INFO("Create a %llu bytes file named '%s' on /sd1", write, filename); - - // check that sizes have changed - show_info(mounts); - - // Now retrieve the size of created file and read it completely - file_size = file->size(); - file->seek(0); - read = file->read(file_size); - XBT_INFO("Read %llu bytes on %s", read, filename); - - // Now write 100,000 bytes in tmp/data.txt - write = file->write(100000); // Write 100,000 bytes - XBT_INFO("Write %llu bytes on %s", write, filename); - - simgrid::s4u::Storage &storage = simgrid::s4u::Storage::byName("Disk4"); - - // Now rename file from ./tmp/data.txt to ./tmp/simgrid.readme - const char *newpath = "/home/tmp/simgrid.readme"; - XBT_INFO("Move '%s' to '%s'", file->path(), newpath); - file->move(newpath); - - // Test attaching some user data to the file - file->set_userdata(xbt_strdup("777")); - XBT_INFO("User data attached to the file: %s", (char*)file->userdata()); - - // Close the file - delete file; - - // Now attach some user data to disk1 - XBT_INFO("Get/set data for storage element: %s",storage.name()); - XBT_INFO(" Uninitialized storage data: '%s'", (char*)storage.userdata()); - - storage.set_userdata(xbt_strdup("Some user data")); - XBT_INFO(" Set and get data: '%s'", (char*)storage.userdata()); - - /* - // Dump disks contents - XBT_INFO("*** Dump content of %s ***",Host::current()->name()); - xbt_dict_t contents = NULL; - contents = MSG_host_get_storage_content(MSG_host_self()); // contents is a dict of dicts - xbt_dict_cursor_t curs, curs2 = NULL; - char* mountname; - xbt_dict_t content; - char* path; - sg_size_t *size; - xbt_dict_foreach(contents, curs, mountname, content){ - XBT_INFO("Print the content of mount point: %s",mountname); - xbt_dict_foreach(content,curs2,path,size){ - XBT_INFO("%s size: %llu bytes", path,*((sg_size_t*)size)); - } - xbt_dict_free(&content); - } - xbt_dict_free(&contents); - */ - return 0; - } + void show_info(boost::unordered_map const&mounts) { + XBT_INFO("Storage info on %s:", + simgrid::s4u::Host::current()->name().c_str()); + + for (const auto&kv : mounts) { + const char* mountpoint = kv.first.c_str(); + simgrid::s4u::Storage &storage = *kv.second; + + // Retrieve disk's information + sg_size_t free_size = storage.size_free(); + sg_size_t used_size = storage.size_used(); + sg_size_t size = storage.size(); + + XBT_INFO(" %s (%s) Used: %llu; Free: %llu; Total: %llu.", + storage.name(), mountpoint, used_size, free_size, size); + } + } + + int main(int argc, char **argv) { + boost::unordered_map const& mounts = + simgrid::s4u::Host::current()->mounted_storages(); + + show_info(mounts); + + // Open an non-existing file to create it + const char *filename = "/home/tmp/data.txt"; + simgrid::s4u::File *file = new simgrid::s4u::File(filename, NULL); + sg_size_t write, read, file_size; + + write = file->write(200000); // Write 200,000 bytes + XBT_INFO("Create a %llu bytes file named '%s' on /sd1", write, filename); + + // check that sizes have changed + show_info(mounts); + + // Now retrieve the size of created file and read it completely + file_size = file->size(); + file->seek(0); + read = file->read(file_size); + XBT_INFO("Read %llu bytes on %s", read, filename); + + // Now write 100,000 bytes in tmp/data.txt + write = file->write(100000); // Write 100,000 bytes + XBT_INFO("Write %llu bytes on %s", write, filename); + + simgrid::s4u::Storage &storage = simgrid::s4u::Storage::byName("Disk4"); + + // Now rename file from ./tmp/data.txt to ./tmp/simgrid.readme + const char *newpath = "/home/tmp/simgrid.readme"; + XBT_INFO("Move '%s' to '%s'", file->path(), newpath); + file->move(newpath); + + // Test attaching some user data to the file + file->set_userdata(xbt_strdup("777")); + XBT_INFO("User data attached to the file: %s", (char*)file->userdata()); + + // Close the file + delete file; + + // Now attach some user data to disk1 + XBT_INFO("Get/set data for storage element: %s",storage.name()); + XBT_INFO(" Uninitialized storage data: '%s'", (char*)storage.userdata()); + + storage.set_userdata(xbt_strdup("Some user data")); + XBT_INFO(" Set and get data: '%s'", (char*)storage.userdata()); + + /* + // Dump disks contents + XBT_INFO("*** Dump content of %s ***",Host::current()->name()); + xbt_dict_t contents = NULL; + contents = MSG_host_get_storage_content(MSG_host_self()); // contents is a dict of dicts + xbt_dict_cursor_t curs, curs2 = NULL; + char* mountname; + xbt_dict_t content; + char* path; + sg_size_t *size; + xbt_dict_foreach(contents, curs, mountname, content){ + XBT_INFO("Print the content of mount point: %s",mountname); + xbt_dict_foreach(content,curs2,path,size){ + XBT_INFO("%s size: %llu bytes", path,*((sg_size_t*)size)); + } + xbt_dict_free(&content); + } + xbt_dict_free(&contents); + */ + return 0; + } }; int main(int argc, char **argv) { - simgrid::s4u::Engine *e = new simgrid::s4u::Engine(&argc,argv); - e->loadPlatform("../../platforms/storage/storage.xml"); + simgrid::s4u::Engine *e = new simgrid::s4u::Engine(&argc,argv); + e->loadPlatform("../../platforms/storage/storage.xml"); - new myHost("host", simgrid::s4u::Host::byName("denise"), 0, NULL); - e->run(); - return 0; + new myHost("host", simgrid::s4u::Host::by_name("denise"), 0, NULL); + e->run(); + return 0; }