From b0292ce837750b487f10496f167eb9064432fd03 Mon Sep 17 00:00:00 2001 From: yolanda93 Date: Wed, 31 Jan 2018 11:16:22 +0100 Subject: [PATCH] win tools and test_rw_lock --- lib/filesystem/test_rwlock_smb.py | 82 ++++++++++++++++++ win-tools/KeepOfficeOpen/KeepItOpen.exe | Bin 0 -> 35840 bytes win-tools/KeepOfficeOpen/README.txt | 37 ++++++++ win-tools/KeepOfficeOpen/args tests.txt | 45 ++++++++++ .../Multiple Office Users simulation.docx | Bin 0 -> 26544 bytes .../OfficeUsersSimulation_C.exe | Bin 0 -> 96768 bytes win-tools/OfficeUsersSimulation/README.txt | 20 +++++ win-tools/README.txt | 2 + 8 files changed, 186 insertions(+) create mode 100644 lib/filesystem/test_rwlock_smb.py create mode 100644 win-tools/KeepOfficeOpen/KeepItOpen.exe create mode 100644 win-tools/KeepOfficeOpen/README.txt create mode 100644 win-tools/KeepOfficeOpen/args tests.txt create mode 100644 win-tools/OfficeUsersSimulation/Multiple Office Users simulation.docx create mode 100644 win-tools/OfficeUsersSimulation/OfficeUsersSimulation_C.exe create mode 100644 win-tools/OfficeUsersSimulation/README.txt create mode 100644 win-tools/README.txt diff --git a/lib/filesystem/test_rwlock_smb.py b/lib/filesystem/test_rwlock_smb.py new file mode 100644 index 0000000..0d70e0b --- /dev/null +++ b/lib/filesystem/test_rwlock_smb.py @@ -0,0 +1,82 @@ +__doc__ = """ +This test is to reproduce the read write lock with samba on windows +""" + +from smashbox.utilities import * +from smashbox.utilities.hash_files import * +import time + +nfiles = int(config.get('rwlock_smb_nfiles',4)) # The number of files to be created should be 4-1000 +delay = int(config.get('rwlock_smb_delay',1)) # this is the delay used to keep files open +smbpath = config.get('rwlock_smb_smbpath',"Z:/smb-rw-lock/") +leave_open = int(config.get('rwlock_leave_open',10)) + +clean_previous_run = True +path = smbpath + "/officeSimulation_word/" + +config.expected_result = do_not_report_as_failure("smb implements a special locking mechanism that corrupts files when trying to open them in read/write mode... ") + +restrict_execution(current_platform="Windows") # Restrict the execution to be run only in Windows + +def count_office_files(path): + n=0 + for filename in os.listdir(path): + if not filename.endswith("tmp"): + n = n + 1 + return n + +def open_office_files(mode): + try: + for filename in os.listdir(path): + if not filename.endswith("tmp"): + file = path + filename + process = subprocess.Popen( + os.getcwd()[:-3] + "\win-tools\KeepOfficeOpen\KeepItOpen.exe " + mode + " delay1" + " " + str( + delay) + " " + "s" + " " + "file" + " " + file) + + except Exception as e: + logger.exception('Error opening the word file to ' + mode + 'on it ') + + +@add_worker +def worker0(step): + + step(1, 'Preparation') + k0 = count_office_files(path) + + step(2, 'Create nfiles office files and write some content on it') + process = subprocess.Popen(os.getcwd()[:-3] + "/win-tools/OfficeUsersSimulation/OfficeUsersSimulation_C.exe nof" + " " + str(nfiles) + " " + "crtfls usewd wrkdir " + smbpath) + + k1=0 + while(abs(k1-k0) != nfiles): + k1=count_office_files(path) + time.sleep(1) + + process.kill() # Avoid this test to be locked by the execution of the program + + step(4, 'Open the nfiles office files with delay to write on it') + + open_office_files("w") + + time.sleep(leave_open) # Leave the program open. If the process is killed office will leave the file in DENY_READ + + step(5, 'Open the nfiles office files with delay to read on it') + + open_office_files("r") + + time.sleep(leave_open) + +@add_worker +def worker1(step): + + step(1, 'Preparation') + + k0 = count_office_files(path) + + step(3, 'Resync and check files added by worker0') + + ncorrupt = analyse_hashfiles(path)[2] + k1 = count_office_files(path) + + error_check(k1 - k0 == nfiles, 'Expecting to have %d files more: see k1=%d k0=%d' % (abs(k1 - 1), k1, k0)) + fatal_check(ncorrupt == 0, 'Corrupted files (%d) found' % ncorrupt) \ No newline at end of file diff --git a/win-tools/KeepOfficeOpen/KeepItOpen.exe b/win-tools/KeepOfficeOpen/KeepItOpen.exe new file mode 100644 index 0000000000000000000000000000000000000000..84196bf255aa7fd667856689c0f0924e77854c8a GIT binary patch literal 35840 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 MBQ=+ : path to word OR excel file to keep open +3) delay1 + : delay in seconds that file will be kept open +4) delay2 + : extra delay in seconds (ONLY in 'w' mode) +5) s : silent mode - no confirmation asked + +1) Open the file in either READ (r) or WRITE (w) mode. + In READ mode, the file will be kept open for as many seconds as defined by + parameter 'delay1'. Parameter 'delay2' is ignored. + Then the file is closed and the software exits. + + In WRITE mode, the file opens and stays open for as many seconds as defined + by parameter 'delay1'. Then some random Lorem Ipsum text is written. + Keep in mind that any text inside the file will be OVERWRITTEN! + If set, additional delay 'delay2' is applied in that point. + Then the file is closed and the software exits. + +2) Give the path to the office file that will be kept open. + Accepted formats: .doc .docx .xls .xlsx + +5) If this argument is added, the software will not ask for confirmation. + In case this argument is missing, you will be presented a sum of the arguments + and will be asked to confirm. + +Arguments (1) , (2) & (3) are mandatory. Arguments (4) & (5) can be skipped. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Check "args tests.txt" file for some examples. \ No newline at end of file diff --git a/win-tools/KeepOfficeOpen/args tests.txt b/win-tools/KeepOfficeOpen/args tests.txt new file mode 100644 index 0000000..7c36a87 --- /dev/null +++ b/win-tools/KeepOfficeOpen/args tests.txt @@ -0,0 +1,45 @@ +~~ Read mode word, delay 10 seconds + + r delay1 10 file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +~~ Read mode, delay 10 seconds, SILENT + + r delay1 10 s file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +~~ Read mode word, delay 5 seconds, 2nd delay 10 seconds (software skips delay2) + + r delay1 5 delay2 10 file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +~~ Read mode word, delay 5 seconds, 2nd delay 10 seconds (software skips delay2), SILENT + + r delay1 5 delay2 10 s file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +~~ Write mode word, delay 5 seconds + + w delay1 5 file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +~~ Write mode word, delay 5 seconds, 2nd delay 10 seconds + + w delay1 5 delay2 10 file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +~~ Write mode word, delay 5 seconds, 2nd delay 3 seconds, SILENT + + w delay1 5 delay2 3 s file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testWord_1.docx" + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +~~ Write mode excel, delay 5 seconds + + w delay1 5 file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testExcel_1.xlsx" + +~~ Write mode excel, delay 2 seconds, 2nd delay 5 seconds + + w delay1 2 delay2 5 file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testExcel_1.xlsx" + +~~ Write mode excel, delay 5 seconds, 2nd delay 3 seconds, SILENT + + w delay1 5 delay2 3 s file "\\cernbox-smb.cern.ch\eos\user\a\asmyrnak\KeepOfficeOpen\testExcel_1.xlsx" \ No newline at end of file diff --git a/win-tools/OfficeUsersSimulation/Multiple Office Users simulation.docx b/win-tools/OfficeUsersSimulation/Multiple Office Users simulation.docx new file mode 100644 index 0000000000000000000000000000000000000000..861a1b1336f9c7d96939d402590a6ec07530e417 GIT binary patch literal 26544 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 G_x=M|-Ri^u literal 0 HcmV?d00001 diff --git a/win-tools/OfficeUsersSimulation/OfficeUsersSimulation_C.exe b/win-tools/OfficeUsersSimulation/OfficeUsersSimulation_C.exe new file mode 100644 index 0000000000000000000000000000000000000000..885add8059c03c9f8be68ca3944cd0a54b30951e GIT binary patch literal 96768 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