<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glusto-tests.git/glustolibs-io, branch master</title>
<subtitle>[no description]</subtitle>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/'/>
<entry>
<title>[Test] Add test to verify lock behaviour from 2 diff clients</title>
<updated>2021-01-04T06:15:02+00:00</updated>
<author>
<name>Pranav</name>
<email>prprakas@redhat.com</email>
</author>
<published>2020-11-04T08:10:32+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=7936283847db39070d760f79f0af1804be7f6744'/>
<id>7936283847db39070d760f79f0af1804be7f6744</id>
<content type='text'>
Test to verify whether the lock is being granted to two diff
clients at the same time.
- Take lock from client 1 =&gt; Lock is acquired
- Try taking lock from client 2
- Release lock from client1
- Take lock from client2
- Again try taking lock from client 1

Also, verifying the behaviour with eagerlock and other eagerlock
set of on and off.

Change-Id: Ie839f893f7a4f9b2c6fc9375cdf9ee8a27fad13b
Signed-off-by: Pranav &lt;prprakas@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Test to verify whether the lock is being granted to two diff
clients at the same time.
- Take lock from client 1 =&gt; Lock is acquired
- Try taking lock from client 2
- Release lock from client1
- Take lock from client2
- Again try taking lock from client 1

Also, verifying the behaviour with eagerlock and other eagerlock
set of on and off.

Change-Id: Ie839f893f7a4f9b2c6fc9375cdf9ee8a27fad13b
Signed-off-by: Pranav &lt;prprakas@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Test] Add 2 memory leak tests and fix library issues</title>
<updated>2020-10-21T05:21:42+00:00</updated>
<author>
<name>kshithijiyer</name>
<email>kshithij.ki@gmail.com</email>
</author>
<published>2020-10-06T03:35:44+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=08faae06ab07b56b815aec5bfbfcf72d653e8055'/>
<id>08faae06ab07b56b815aec5bfbfcf72d653e8055</id>
<content type='text'>
Scenarios added:
----------------

Test case:
1. Create a volume, start it and mount it.
2. Start I/O from mount point.
3. Check if there are any memory leaks and OOM killers.

Test case:
1. Create a volume, start it and mount it.
2. Set features.cache-invalidation to ON.
3. Start I/O from mount point.
4. Run gluster volume heal command in a loop
5. Check if there are any memory leaks and OOM killers on servers.

Design change:
--------------

- self.id() is moved into test class as it was hitting bound
errors in the original logic.
- Logic changed for checking leaks fuse.
- Fixed breakage in methods where ever needed.

Change-Id: Icb600d833d0c08636b6002abb489342ea1f946d7
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Scenarios added:
----------------

Test case:
1. Create a volume, start it and mount it.
2. Start I/O from mount point.
3. Check if there are any memory leaks and OOM killers.

Test case:
1. Create a volume, start it and mount it.
2. Set features.cache-invalidation to ON.
3. Start I/O from mount point.
4. Run gluster volume heal command in a loop
5. Check if there are any memory leaks and OOM killers on servers.

Design change:
--------------

- self.id() is moved into test class as it was hitting bound
errors in the original logic.
- Logic changed for checking leaks fuse.
- Fixed breakage in methods where ever needed.

Change-Id: Icb600d833d0c08636b6002abb489342ea1f946d7
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Lib] Add memory and cpu leak testing framework</title>
<updated>2020-09-11T09:09:44+00:00</updated>
<author>
<name>kshithijiyer</name>
<email>kshithij.ki@gmail.com</email>
</author>
<published>2020-09-03T16:49:11+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=d8eae4bf67b789a95822512f27fdf9f4f349d7d5'/>
<id>d8eae4bf67b789a95822512f27fdf9f4f349d7d5</id>
<content type='text'>
Summary:
========
Currently we don't have a memory and cpu leak
testing framework which blocks automation development
of all testcases around memory and CPU leaks.

To solve this problem we need the libraries for:
1. Logging memory and CPU utilization
2. Checking for OOM killer on gluster processes
3. Checking for memory leaks
4. Checking for cpu usage spikes
5. Wrapper functions in base class to make development easy
6. Compute statistics of usage

Detailed description:
=====================
We have already added script to log CPU and memory
usage through patch [1]. In this patch we would be
using patch [1] and building logic to process the
CSV files generated by the script which would
help us to achieve the following:
1. Checking if there are memory leaks or CPU spikes
2. Computing statistics of memory and CPU usage

Function sets added:
~~~~~~~~~~~~~~~~~~~~

Set 1 - Functions to perfrom logging using script
-------------------------------------------------
Public functions:
1. check_upload_memory_and_cpu_logger_script()
2. log_memory_and_cpu_usage_on_servers()
3. log_memory_and_cpu_usage_on_clients()
4. log_memory_and_cpu_usage_on_cluster()
5. wait_for_logging_processes_to_stop()
6. kill_all_logging_processes()

Private functions to support public functions:
1. _start_logging_processes()
2. _process_wait_flag_append()

Set 2 - Functions to check for OOM killers
------------------------------------------
Public functions:
1. check_for_oom_killers_on_servers()
2. check_for_oom_killers_on_clients()

Private functions to support public functions:
1. _check_for_oom_killers()

Set 3 - Functions to check for memory leaks
-------------------------------------------
Public functions:
1. check_for_memory_leaks_in_glusterd()
2. check_for_memory_leaks_in_glusterfs()
3. check_for_memory_leaks_in_glusterfsd()
4. check_for_memory_leaks_in_glusterfs_fuse()

Private functions to support public functions:
1. _perform_three_point_check_for_memory_leak()

Set 4 - Functions to check for cpu usage spikes
-----------------------------------------------
Public functions:
1. check_for_cpu_usage_spikes_on_glusterd()
2. check_for_cpu_usage_spikes_on_glusterfs()
3. check_for_cpu_usage_spikes_on_glusterfsd()
4. check_for_cpu_usage_spikes_on_glusterfs_fuse()

Private functions to support public functions:
1. _check_for_cpu_usage_spikes()

Set 7 - Functions to calculate stats
------------------------------------
Public functions:
1. compute_data_usage_stats_on_servers()
2. compute_data_usage_stats_on_clients()

Private functions to support public functions:
1. _get_min_max_mean_median()
2. _compute_min_max_mean_median()

Set 6 - Wrapper functions added to base class
---------------------------------------------
1. start_memory_and_cpu_usage_logging()
2. compute_and_print_usage_stats()
3. check_for_memory_leaks_and_oom_kills_on_servers()
4. check_for_memory_leaks_and_oom_kills_on_clients()
5. check_for_cpu_usage_spikes_on_servers()
6. check_for_cpu_spikes_on_clients()

Set 7 - Other generic functions
-------------------------------
Public functions:
1. create_dataframe_from_csv()

Third party libraries added to glusto-tests through
patch:
1. Numpy(It is being used in file_dir_ops.py but it's
         installed on clients and not on management node.)
2. Pandas
3. Statistics

How do I use it in my testcase?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For example if we take the testcase to Check the server side
memory leak with fuse mount, we would need to perfrom the
below steps:
1. Create Disperse volumes
2. Fuse mount on the client
3. Start creating files in 1000's in parallel with
3. Create directories in 1000's in parallel
4. Do linux untar and wait for completion
5. Watch the memory usage on the server side and check for the OOM killers.

Here steps 1-4 would be as usual, for step five what we need
to do would be after step 2 we would need to start logging memory usage
with the below code:
```
  proc_dict = cls.start_memory_and_cpu_usage_logging()
  assertIsNotNone(proc_dict, &lt;Error message&gt;)
```

Once step 4 is complete we would need to wait for the logging process
to stop with the below code:
```
   ret = wait_for_logging_processes_to_stop(proc_dict, cluster=True)
   assertTrue(ret, &lt;Error message&gt;)
```

And lastly to check for memory leaks and OOM killers we would need use
the below code:
```
   ret = cls.check_for_memory_leaks_and_oom_kills_on_servers()
   assertTrue(ret, 'Memory leaks or OOM killer found')
```

NOTE:
Interval and count of function start_memory_and_cpu_usage_logging()
and gain of check_for_memory_leaks_and_oom_kills_on_servers() would
need tweaking on a case by case scenario.

Links:
======
[1] https://review.gluster.org/#/c/glusto-tests/+/24659/

Change-Id: Ib617fae102b8280723e54d0a38f77791558f5658
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
========
Currently we don't have a memory and cpu leak
testing framework which blocks automation development
of all testcases around memory and CPU leaks.

To solve this problem we need the libraries for:
1. Logging memory and CPU utilization
2. Checking for OOM killer on gluster processes
3. Checking for memory leaks
4. Checking for cpu usage spikes
5. Wrapper functions in base class to make development easy
6. Compute statistics of usage

Detailed description:
=====================
We have already added script to log CPU and memory
usage through patch [1]. In this patch we would be
using patch [1] and building logic to process the
CSV files generated by the script which would
help us to achieve the following:
1. Checking if there are memory leaks or CPU spikes
2. Computing statistics of memory and CPU usage

Function sets added:
~~~~~~~~~~~~~~~~~~~~

Set 1 - Functions to perfrom logging using script
-------------------------------------------------
Public functions:
1. check_upload_memory_and_cpu_logger_script()
2. log_memory_and_cpu_usage_on_servers()
3. log_memory_and_cpu_usage_on_clients()
4. log_memory_and_cpu_usage_on_cluster()
5. wait_for_logging_processes_to_stop()
6. kill_all_logging_processes()

Private functions to support public functions:
1. _start_logging_processes()
2. _process_wait_flag_append()

Set 2 - Functions to check for OOM killers
------------------------------------------
Public functions:
1. check_for_oom_killers_on_servers()
2. check_for_oom_killers_on_clients()

Private functions to support public functions:
1. _check_for_oom_killers()

Set 3 - Functions to check for memory leaks
-------------------------------------------
Public functions:
1. check_for_memory_leaks_in_glusterd()
2. check_for_memory_leaks_in_glusterfs()
3. check_for_memory_leaks_in_glusterfsd()
4. check_for_memory_leaks_in_glusterfs_fuse()

Private functions to support public functions:
1. _perform_three_point_check_for_memory_leak()

Set 4 - Functions to check for cpu usage spikes
-----------------------------------------------
Public functions:
1. check_for_cpu_usage_spikes_on_glusterd()
2. check_for_cpu_usage_spikes_on_glusterfs()
3. check_for_cpu_usage_spikes_on_glusterfsd()
4. check_for_cpu_usage_spikes_on_glusterfs_fuse()

Private functions to support public functions:
1. _check_for_cpu_usage_spikes()

Set 7 - Functions to calculate stats
------------------------------------
Public functions:
1. compute_data_usage_stats_on_servers()
2. compute_data_usage_stats_on_clients()

Private functions to support public functions:
1. _get_min_max_mean_median()
2. _compute_min_max_mean_median()

Set 6 - Wrapper functions added to base class
---------------------------------------------
1. start_memory_and_cpu_usage_logging()
2. compute_and_print_usage_stats()
3. check_for_memory_leaks_and_oom_kills_on_servers()
4. check_for_memory_leaks_and_oom_kills_on_clients()
5. check_for_cpu_usage_spikes_on_servers()
6. check_for_cpu_spikes_on_clients()

Set 7 - Other generic functions
-------------------------------
Public functions:
1. create_dataframe_from_csv()

Third party libraries added to glusto-tests through
patch:
1. Numpy(It is being used in file_dir_ops.py but it's
         installed on clients and not on management node.)
2. Pandas
3. Statistics

How do I use it in my testcase?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For example if we take the testcase to Check the server side
memory leak with fuse mount, we would need to perfrom the
below steps:
1. Create Disperse volumes
2. Fuse mount on the client
3. Start creating files in 1000's in parallel with
3. Create directories in 1000's in parallel
4. Do linux untar and wait for completion
5. Watch the memory usage on the server side and check for the OOM killers.

Here steps 1-4 would be as usual, for step five what we need
to do would be after step 2 we would need to start logging memory usage
with the below code:
```
  proc_dict = cls.start_memory_and_cpu_usage_logging()
  assertIsNotNone(proc_dict, &lt;Error message&gt;)
```

Once step 4 is complete we would need to wait for the logging process
to stop with the below code:
```
   ret = wait_for_logging_processes_to_stop(proc_dict, cluster=True)
   assertTrue(ret, &lt;Error message&gt;)
```

And lastly to check for memory leaks and OOM killers we would need use
the below code:
```
   ret = cls.check_for_memory_leaks_and_oom_kills_on_servers()
   assertTrue(ret, 'Memory leaks or OOM killer found')
```

NOTE:
Interval and count of function start_memory_and_cpu_usage_logging()
and gain of check_for_memory_leaks_and_oom_kills_on_servers() would
need tweaking on a case by case scenario.

Links:
======
[1] https://review.gluster.org/#/c/glusto-tests/+/24659/

Change-Id: Ib617fae102b8280723e54d0a38f77791558f5658
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Lib] Add run_linux_untar() to io/utils.py</title>
<updated>2020-07-30T04:47:44+00:00</updated>
<author>
<name>kshithijiyer</name>
<email>kshithij.ki@gmail.com</email>
</author>
<published>2020-07-29T08:04:09+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=0db380b90b85c54fdb1d29b870380c667fc9167c'/>
<id>0db380b90b85c54fdb1d29b870380c667fc9167c</id>
<content type='text'>
Add method run_linux_untar() to io/utils.py
which downloads linux-5.4.54.tar.xz and
untar it on specific dirs of mount point or
by default on mount point.

Change-Id: Id00ea50b4d7fb7c360150aeaac65baec5612e589
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add method run_linux_untar() to io/utils.py
which downloads linux-5.4.54.tar.xz and
untar it on specific dirs of mount point or
by default on mount point.

Change-Id: Id00ea50b4d7fb7c360150aeaac65baec5612e589
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Tool] Add tool to log memory and CPU usage</title>
<updated>2020-07-08T10:33:19+00:00</updated>
<author>
<name>kshithijiyer</name>
<email>kshithij.ki@gmail.com</email>
</author>
<published>2020-07-02T07:25:13+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=ccbb7003de9fd6f7a23ffe46ac014350ca569fff'/>
<id>ccbb7003de9fd6f7a23ffe46ac014350ca569fff</id>
<content type='text'>
Adding tool to log memory and cpu of a given process.

usage: memory_and_cpu_logger.py [-h] [-p PROCESS_NAME] [-i INTERVAL]
                                [-c COUNT] [-t TESTNAME]

A tool to log memory usage of a given process

optional arguments:
  -h, --help            show this help message and exit
  -p PROCESS_NAME, --process_name PROCESS_NAME
                        Name of process for which cpu and memory is to be
                        logged
  -i INTERVAL, --interval INTERVAL
                        Time interval to wait between consecutive
                        logs(Default:60)
  -c COUNT, --count COUNT
                        Number of times memory and CPU has to be logged
                        (Default:10)
  -t TESTNAME, --testname TESTNAME
                        Test name for which memory is logged

Tasks to be done:
1.Add library run the tool for clients and servers.
2.Add base_class function to log all values.
3.Add library function to read csv files and
  compute information.

Change-Id: I9e2e8825b103cf941c0a7e1f7eadadd65fc670d1
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding tool to log memory and cpu of a given process.

usage: memory_and_cpu_logger.py [-h] [-p PROCESS_NAME] [-i INTERVAL]
                                [-c COUNT] [-t TESTNAME]

A tool to log memory usage of a given process

optional arguments:
  -h, --help            show this help message and exit
  -p PROCESS_NAME, --process_name PROCESS_NAME
                        Name of process for which cpu and memory is to be
                        logged
  -i INTERVAL, --interval INTERVAL
                        Time interval to wait between consecutive
                        logs(Default:60)
  -c COUNT, --count COUNT
                        Number of times memory and CPU has to be logged
                        (Default:10)
  -t TESTNAME, --testname TESTNAME
                        Test name for which memory is logged

Tasks to be done:
1.Add library run the tool for clients and servers.
2.Add base_class function to log all values.
3.Add library function to read csv files and
  compute information.

Change-Id: I9e2e8825b103cf941c0a7e1f7eadadd65fc670d1
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[LibFix] Add kwargs start_range and end_range</title>
<updated>2020-06-24T11:47:50+00:00</updated>
<author>
<name>sayaleeraut</name>
<email>saraut@redhat.com</email>
</author>
<published>2020-06-24T05:03:19+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=62b990ba1fd454459b30bbaa400eed00762b8b30'/>
<id>62b990ba1fd454459b30bbaa400eed00762b8b30</id>
<content type='text'>
Adding the kwargs start_range and end_range to the method
open_file_fd() so that FD can be opened for multiple files if
required.

Change-Id: Ia6d78941935c7fb26045d000c428aba9b9f2425b
Signed-off-by: sayaleeraut &lt;saraut@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding the kwargs start_range and end_range to the method
open_file_fd() so that FD can be opened for multiple files if
required.

Change-Id: Ia6d78941935c7fb26045d000c428aba9b9f2425b
Signed-off-by: sayaleeraut &lt;saraut@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[LibFix] Add arequal support on given path</title>
<updated>2020-06-15T06:19:05+00:00</updated>
<author>
<name>ubansal</name>
<email>ubansal@redhat.com</email>
</author>
<published>2020-06-11T11:39:18+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=0c51170b87c6d13d82f802e4174520f20064c49a'/>
<id>0c51170b87c6d13d82f802e4174520f20064c49a</id>
<content type='text'>
Calculates arequal for a particular path in
the mountpoint

Change-Id: I018302e6dbb11a9c11d42fc0381ec4183b3725a0
Signed-off-by: ubansal &lt;ubansal@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Calculates arequal for a particular path in
the mountpoint

Change-Id: I018302e6dbb11a9c11d42fc0381ec4183b3725a0
Signed-off-by: ubansal &lt;ubansal@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Lib] Add Lib to open FD</title>
<updated>2020-06-10T11:12:20+00:00</updated>
<author>
<name>ubansal</name>
<email>ubansal@redhat.com</email>
</author>
<published>2020-06-10T08:02:12+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=c61b7880800f5204766690c796fc5c8ccfe2d3e9'/>
<id>c61b7880800f5204766690c796fc5c8ccfe2d3e9</id>
<content type='text'>
Opens a FD to a file , waits and then
writes to the file

Change-Id: Ib993b646ba45d2b05a5765e02b6b1b7b2869ecd3
Signed-off-by: ubansal &lt;ubansal@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Opens a FD to a file , waits and then
writes to the file

Change-Id: Ib993b646ba45d2b05a5765e02b6b1b7b2869ecd3
Signed-off-by: ubansal &lt;ubansal@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[lib] Adding function upload_file_dir_ops() to io/utils.py</title>
<updated>2020-01-07T05:55:08+00:00</updated>
<author>
<name>kshithijiyer</name>
<email>kshithij.ki@gmail.com</email>
</author>
<published>2020-01-02T09:53:01+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=d131ce9f70c528cdd50aa0d4f2923f5a9f14aefc'/>
<id>d131ce9f70c528cdd50aa0d4f2923f5a9f14aefc</id>
<content type='text'>
Adding a function upload_file_dir_ops() to upload file_dir_ops.py
to all clients. This is to remove the redundant code given below:
```
g.log.info("Upload io scripts to clients %s for running IO on "
           "mounts", cls.clients)
cls.script_upload_path = ("/usr/share/glustolibs/io/scripts/"
                          "file_dir_ops.py")
ret = upload_scripts(cls.clients, cls.script_upload_path)
if not ret:
   raise ExecutionError("Failed to upload IO scripts to clients %s" %
                        cls.clients)
g.log.info("Successfully uploaded IO scripts to clients %s",
           cls.clients)
```


Change-Id: I28ca528bfbaea20139808b7af812559715a27022
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding a function upload_file_dir_ops() to upload file_dir_ops.py
to all clients. This is to remove the redundant code given below:
```
g.log.info("Upload io scripts to clients %s for running IO on "
           "mounts", cls.clients)
cls.script_upload_path = ("/usr/share/glustolibs/io/scripts/"
                          "file_dir_ops.py")
ret = upload_scripts(cls.clients, cls.script_upload_path)
if not ret:
   raise ExecutionError("Failed to upload IO scripts to clients %s" %
                        cls.clients)
g.log.info("Successfully uploaded IO scripts to clients %s",
           cls.clients)
```


Change-Id: I28ca528bfbaea20139808b7af812559715a27022
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[Tool] Support for rsync, append, overwrite and truncate in file_dir_ops</title>
<updated>2019-12-18T05:23:50+00:00</updated>
<author>
<name>kshithijiyer</name>
<email>kshithij.ki@gmail.com</email>
</author>
<published>2019-12-09T08:53:06+00:00</published>
<link rel='alternate' type='text/html' href='http://dev.gluster.org/cgit/glusto-tests.git/commit/?id=f3c3e667776810f8155a73f18eccc07f04f0c38b'/>
<id>f3c3e667776810f8155a73f18eccc07f04f0c38b</id>
<content type='text'>
Adding support for the below IO in file_dir_ops:
1. rsync
2. append
3. overwrite
4. truncate

Changes required in CentOS-CI are submitted through the below pull
request:
https://github.com/gluster/centosci/pull/79

Change-Id: I0e5bc33894414ec885b2b6728a08e811b7982082
Co-authored-by: Ambarish Soman &lt;asoman@redhat.com&gt;
Signed-off-by: Ambarish Soman &lt;asoman@redhat.com&gt;
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding support for the below IO in file_dir_ops:
1. rsync
2. append
3. overwrite
4. truncate

Changes required in CentOS-CI are submitted through the below pull
request:
https://github.com/gluster/centosci/pull/79

Change-Id: I0e5bc33894414ec885b2b6728a08e811b7982082
Co-authored-by: Ambarish Soman &lt;asoman@redhat.com&gt;
Signed-off-by: Ambarish Soman &lt;asoman@redhat.com&gt;
Signed-off-by: kshithijiyer &lt;kshithij.ki@gmail.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
