diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..422cc82 --- /dev/null +++ b/README.md @@ -0,0 +1,168 @@ +# Glusto Libs + +`glusto-libs` repo contains the Libraries/Modules necessary for automating the gluster tests. +It mainly provides python bindings for the GlusterD-2.0 APIs. +Latest Code for this repo is managed on review.gluster.org + + +Refer the [glusto-doc](http://glusto.readthedocs.io/en/latest/) for info +on `glusto` framework. +Issues need to be filled against the +[Github](https://github.com/gluster/glusto-libs/issues) repo. + + +To automate/run glusto-tests on GD2 environment we need to do following steps: +----------------------------------------------------------------------------- +- install `glusto` +- clone `glusto-libs` repo +- clone `glusto-tests` repo +- install all packages (i.e, glustolibs-gluster-gd2, glustolibs-io and glustolibs-misc libraries) + + +How to install glusto: +---------------------- +One can use either of the three methods. + +- using pip + + # pip install --upgrade git+git://github.com/loadtheaccumulator/glusto.git + +- using git + + # git clone https://github.com/loadtheaccumulator/glusto.git + # cd glusto + # python setup.py install + +- using ansible: install glusto, glusto-tests + + # ansible-playbook -i host.ini glusto-tests/ansible/deploy-glusto.yaml + + +For more info refer the [docs](http://glusto.readthedocs.io/en/latest/userguide/install.html). + + +How to clone glusto-tests and glusto-libs repo: +------------------------------------------------ +- using git + + # git clone ssh://user-name@review.gluster.org/glusto-libs + +- using git + + # git clone ssh://user-name@review.gluster.org/glusto-tests + + +How to install the glustolibs-gluster-gd2, glustolibs-io and glustolibs-misc libraries: +--------------------------------------------------------------------------------------- + # git clone ssh://user-name@review.gluster.org/glusto-libs + # cd glusto-libs/glustolibs-gluster-gd2 + # python setup.py install + # cd ../../glusto-tests/glustolibs-io + # python setup.py install + # cd ../../glusto-tests/glustolibs-misc + # python setup.py install + + +To install glusto-tests dependencies: +------------------------------------- +`python-docx` needs to be installed when we run IO's and validates on client node. + +- To install run: + + *# easy_install pip + # pip install --pre python-docx* + +How to run the test case: +------------------------- +- Update the information about the servers, clients, + servers_info, client_info, running_on_volumes, running_on_mounts + and volume_create_force etc, which is necessary on the config + file[config](https://github.com/gluster/glusto-tests/blob/master/tests/gluster_tests_config.yml). + Refer the following for more info [link](http://glusto.readthedocs.io/en/latest/userguide/configurable.html). + +- glusto-tests are run using the `glusto` command available after installing + the glusto framework. The various options to run tests as provided by + glusto framework: + + - To run PyTest tests: + + - To run all tests that are marked with tag 'bvt': + *# glusto -c config.yml --pytest='-v -x tests -m bvt'* + + - To run all tests that are under bvt folder: + *# glusto -c config.yml --pytest='-v -s bvt/'* + + - To run a single test case: + *# glusto -c config.yml --pytest='-v -s -k test_demo1'* + + For more info about running these tests, refer the [docs](http://glusto.readthedocs.io/en/latest/userguide/glusto.html#options-for-running-unit-tests). + + +Writing tests/libraries for GD2: +-------------------------------- + - `tests` directory in glusto-tests contain testcases. Testcases are written as component wise. +Testcases name and file name should should start with test_. + + - `glustolibs-gluster-gd2` directory in glusto-libs contains libraries for GD2 api's. +Libraries for io's and miscellaneous are written on `glustolibs-io` and `glustolibs-misc` +respectively. These functions or libraries can be used while writing testcases. + + - While writing testcases or libraries follow: + + - Please follow the [PEP008 style-guide](https://www.python.org/dev/peps/pep-0008/). + - Makes sure all the pylint and pyflakes error are fixed + For example: + + - C0326: Exactly one space required around assignment + - C0111: Missing module doc-string (missing-doc string) + - W: 50: Too long line + + For more information on [pylint](https://docs.pylint.org/en/1.6.0/tutorial.html) and on [pyflakes](http://flake8.pycqa.org/en/latest/user/error-codes.html) + + + + - Optimize the code as much as possible. Eliminate the repetitive steps, write it has separate function. + - Use proper python standards on returning values. + This style guide is a list of do's and don’ts for [Python programs](http://google.github.io/styleguide/pyguide.html). + + - Add docstring to every function you write + + For example: This is an example of a module level function + + def module(param1, param2): + """ + Explain what the module function does in breif + + Args: + param1: The first parameter. + param2: The second parameter. + + Returns: + The return value of the function. + """ + + - Make sure the log messages are grammatically correct and have no spelling mistakes. + - Comment every step of the test case/libraries, log the test step, test result, failure and success. + For example: + + # peer status from mnode + g.log.info("Get peer status from node %s", self.mnode) + ret, out, err = peer_status(self.mnode) + self.assertEqual(ret, 0, "Failed to get peer status from node %s: %s" % (self.mnode, err)) + g.log.info("Successfully got peer status from node %s:\n%s", self.mnode, out) + - Don't not use `print` statements in test-cases/libraries because prints statements are not captured in log files. Use logger functions to dump messages into log file. + +Logging: +-------- +Log file name and Log level can be passed as argument to glusto command while +running the glusto-tests. For example: + + # glusto -c 'config.yml' -l /tmp/glustotests_bvt.log --log-level DEBUG --pytest='-v -x tests -m bvt' + +One can configure log files, log levels in the testcases as well. For details +on how to use glusto framework for configuring logs in tests Refer the following [docs](http://glusto.readthedocs.io/en/latest/userguide/loggable.html). + +Default log location is: `/tmp/glustomain.log` + +Note: When using `glusto` via the Python Interactive Interpreter, +the default log location is `/tmp/glusto.log`. |