From e81e53025e4c1eb50fd3467298fae0ed61d6a01c Mon Sep 17 00:00:00 2001
From: Giovanna Lazzari Miotto <giovanna.lazzari.miotto@cern.ch>
Date: Fri, 30 Aug 2024 11:01:07 +0200
Subject: [PATCH] improve creat

---
 test/testing_scripts/creat_test.cpp | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/test/testing_scripts/creat_test.cpp b/test/testing_scripts/creat_test.cpp
index da79fd2c..447b3a77 100644
--- a/test/testing_scripts/creat_test.cpp
+++ b/test/testing_scripts/creat_test.cpp
@@ -39,7 +39,12 @@ int main(int argc, char *argv[]) {
   }
   generate_random_data(data, length - 1);
 
-  std::cout << "=== Data generated ===" << std::endl;
+  std::string baseline_path("/home/glazzari/random_baseline");
+  int base_fd = open(baseline_path.c_str(), O_CREAT | O_RDWR);
+  write(base_fd, (void*) data, length);
+  close(base_fd);
+
+  std::cout << "=== Data generated and written to " << baseline_path << " ===" << std::endl;
 
   // open()
   std::string open_filepath = filepath + "_write";
@@ -49,10 +54,15 @@ int main(int argc, char *argv[]) {
     std::cout << "Failed open() with fd=" << std::to_string(fd)
               << " and errno=" << std::to_string(errno) << std::endl;
   } else {
-    int write_rc = write(fd, (void *)data, sizeof(data));
-    if (write_rc != sizeof(data)) {
+    int write_rc = write(fd, (void *)data, length);
+    if (write_rc != length) {
       std::cout << "write() call returned wrong value rc=" << std::to_string(write_rc) << std::endl;
     } else {
+      auto fsync_rc = fsync(fd);
+      if (fsync_rc != 0) {
+        std::cout << "write's fsync() failed errno=" << std::to_string(errno) << std::endl;
+      }
+      close(fd);
       std::cout << "sys open / write ran without failure" << std::endl;
     }
   }
@@ -65,11 +75,15 @@ int main(int argc, char *argv[]) {
   if (stream_file == NULL) {
     std::cout << "Failed fopen() with errno=" << std::to_string(errno) << std::endl;
   } else {
-    int fwrite_rc = fwrite((void *)data, 1, sizeof(data), stream_file);
-    if (fwrite_rc != sizeof(data)) {
+    int fwrite_rc = fwrite((void *)data, 1, length, stream_file);
+    if (fwrite_rc != length) {
       std::cout << "fwrite() call returned wrong value rc=" << std::to_string(fwrite_rc)
                 << std::endl;
     } else {
+      if (fflush(stream_file) != 0) {
+        std::cout << "fwrite's fflush() failed with errno=" << std::to_string(errno) << std::endl;
+      }
+      fclose(stream_file);
       std::cout << "fopen / fwrite ran without failure" << std::endl;
     }
   }
-- 
GitLab