summaryrefslogtreecommitdiffstats
path: root/tests/distaf/tests_d
diff options
context:
space:
mode:
authorM S Vishwanath Bhat <msvbhat@gmail.com>2016-03-30 17:05:05 +0530
committerJeff Darcy <jdarcy@redhat.com>2016-04-07 08:08:32 -0700
commit0fa83a3310274845fa9b445d1aed124e9fb43410 (patch)
tree090787d7b5435fe36817760b7e5cb66499c420a8 /tests/distaf/tests_d
parent6602376e3e9e6d9f4f695475569322b61ccc2411 (diff)
Adding distaf tests directory structure to tests dir
Since it was decided to have distaf test cases and related libraries inside of glusterfs.git, this patch has the basic skeleton directory structure and few of the libs. Please note that, this patch by itself will not enable to run any distaf tests right away. The distaf package needs to be installed from the github.com/gluster/distaf. Once that package is installed, it will put all the libs into respective standard location and only then the tests in this patch can be executed. The plan to have distaf_libs packaged or installable using setup.py This will enable tests to assume that all the libs are present in the standard location. Change-Id: I925ac0ad7e9cf6164c4380319a1f786b5241c74a Signed-off-by: M S Vishwanath Bhat <msvbhat@gmail.com> Reviewed-on: http://review.gluster.org/13853 Smoke: Gluster Build System <jenkins@build.gluster.com> Tested-by: Raghavendra Talur <rtalur@redhat.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
Diffstat (limited to 'tests/distaf/tests_d')
-rw-r--r--tests/distaf/tests_d/__init__.py0
-rw-r--r--tests/distaf/tests_d/examples/__init__.py0
-rw-r--r--tests/distaf/tests_d/examples/test_basic_gluster_tests.py49
-rw-r--r--tests/distaf/tests_d/examples/test_docstring.py130
-rw-r--r--tests/distaf/tests_d/examples/test_passfail.py97
5 files changed, 276 insertions, 0 deletions
diff --git a/tests/distaf/tests_d/__init__.py b/tests/distaf/tests_d/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/tests/distaf/tests_d/__init__.py
diff --git a/tests/distaf/tests_d/examples/__init__.py b/tests/distaf/tests_d/examples/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/tests/distaf/tests_d/examples/__init__.py
diff --git a/tests/distaf/tests_d/examples/test_basic_gluster_tests.py b/tests/distaf/tests_d/examples/test_basic_gluster_tests.py
new file mode 100644
index 00000000000..47dfd9372a7
--- /dev/null
+++ b/tests/distaf/tests_d/examples/test_basic_gluster_tests.py
@@ -0,0 +1,49 @@
+# This file is part of DiSTAF
+# Copyright (C) 2015-2016 Red Hat, Inc. <http://www.redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+from distaf.util import tc, testcase
+from distaf.gluster_base_class import GlusterBaseClass
+from distaf.gluster_libs.mount_ops import mount_volume, umount_volume
+from distaf.gluster_libs.volume_ops import (setup_vol, stop_volume,
+ delete_volume)
+
+
+@testcase("gluster_basic_test")
+class gluster_basic_test(GlusterBaseClass):
+ """
+ runs_on_volumes: ALL
+ runs_on_protocol: [ glusterfs, nfs ]
+ reuse_setup: True
+ """
+ def run(self):
+ _rc = True
+ client = self.clients[0]
+ tc.run(self.mnode, "gluster volume status %s" % self.volname)
+ ret, _, _ = mount_volume(self.volname, self.mount_proto, \
+ self.mountpoint, mclient=client)
+ if ret != 0:
+ tc.logger.error("Unable to mount the volume %s in %s" \
+ "Please check the logs" % (self.volname, client))
+ return False
+ ret, _, _ = tc.run(client, "cp -r /etc %s" % self.mountpoint)
+ if ret != 0:
+ tc.logger.error("cp failed in %s. Please check the logs" % client)
+ _rc = False
+ tc.run(client, "rm -rf %s/etc" % self.mountpoint)
+ umount_volume(client, self.mountpoint)
+ return _rc
diff --git a/tests/distaf/tests_d/examples/test_docstring.py b/tests/distaf/tests_d/examples/test_docstring.py
new file mode 100644
index 00000000000..1a73998eb66
--- /dev/null
+++ b/tests/distaf/tests_d/examples/test_docstring.py
@@ -0,0 +1,130 @@
+# This file is part of DiSTAF
+# Copyright (C) 2015-2016 Red Hat, Inc. <http://www.redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+from distaf.util import tc, testcase
+from distaf.gluster_base_class import GlusterBaseClass
+
+
+# An example with both doc and config in docstring
+@testcase("doc_and_config_test")
+class DocAndConfig(GlusterBaseClass):
+ """ Testing docstring configuration options
+ This is an example of a basic distaf test with mixed comment and config
+ Any necessary description doc string text goes here and can include any
+ plain text normally found in a docstring.
+ Distaf specific config yaml can be included using the yaml standard
+ document triple-dash separator below.
+ ---
+ runs_on_volumes: [ distributed ]
+ runs_on_protocol: [ glusterfs ]
+ reuse_setup: False
+ tags:
+ - tag1
+ - tag2
+ - tag3
+ """
+ def run(self):
+ tc.logger.info("Running with doc and config in docstring")
+ config = self.config_data
+ tc.logger.debug("Tag 2 is %s" % config["tags"][1])
+ tag2 = config["tags"][1]
+ if tag2 == "tag2":
+ return True
+
+ return False
+
+ def setup(self):
+ return True
+
+ def cleanup(self):
+ return True
+
+ def teardown(self):
+ return True
+
+
+# An example with only config in docstring
+@testcase("config_only_test")
+class ConfigOnly(GlusterBaseClass):
+ """
+ runs_on_volumes: [ distributed ]
+ runs_on_protocol: [ glusterfs, cifs ]
+ reuse_setup: False
+ tags:
+ - tag1
+ - tag2
+ - tag3
+ """
+ def run(self):
+ tc.logger.info("Running with only config in docstring")
+ config = self.config_data
+ tc.logger.debug("Tag 2 is %s" % config["tags"][1])
+ tag2 = config["tags"][1]
+ if tag2 == "tag2":
+ return True
+
+ return False
+
+ def setup(self):
+ return True
+
+ def cleanup(self):
+ return True
+
+ def teardown(self):
+ return True
+
+
+# An example with only doc in docstring
+@testcase("doc_only_test")
+class DocOnly(GlusterBaseClass):
+ """ Testing docstring configuration options
+ This is an example of a basic distaf test with mixed comment and config
+ Any necessary description doc string text goes here and can include any
+ plain text normally found in a docstring.
+ """
+ def run(self):
+ tc.logger.info("Running with only doc in docstring")
+ return True
+
+ def setup(self):
+ return True
+
+ def cleanup(self):
+ return True
+
+ def teardown(self):
+ return True
+
+
+# An example without a docstring
+@testcase("no_docstring_test")
+class NoDocstring(GlusterBaseClass):
+ def run(self):
+ tc.logger.info("Running with no docstring")
+
+ return True
+
+ def setup(self):
+ return True
+
+ def cleanup(self):
+ return True
+
+ def teardown(self):
+ return True
diff --git a/tests/distaf/tests_d/examples/test_passfail.py b/tests/distaf/tests_d/examples/test_passfail.py
new file mode 100644
index 00000000000..3b14c117190
--- /dev/null
+++ b/tests/distaf/tests_d/examples/test_passfail.py
@@ -0,0 +1,97 @@
+# This file is part of DiSTAF
+# Copyright (C) 2015-2016 Red Hat, Inc. <http://www.redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+from distaf.util import tc, testcase
+from distaf.gluster_base_class import GlusterBaseClass
+
+
+@testcase("this_should_pass")
+class GoingToPass(GlusterBaseClass):
+ """ Testing connectivity and framework pass
+ This is an example of a basic distaf test with mixed comment and config
+ Any necessary description doc string text goes here and can include any
+ plain text normally found in a docstring.
+ Distaf specific config yaml can be included using the yaml standard
+ document triple-dash separator below.
+ ---
+ runs_on_volumes: [ distributed ]
+ runs_on_protocol: [ glusterfs ]
+ reuse_setup: False
+ tags:
+ - tag1
+ - tag2
+ - tag3
+ """
+ def setup(self):
+ return True
+
+ def run(self):
+ config = self.config_data
+ tc.logger.info("Testing connection and command exec")
+ tc.logger.debug("Tag 1 is %s" % config["tags"][0])
+ ret, _, _ = tc.run(self.nodes[0], "hostname")
+ if ret != 0:
+ tc.logger.error("hostname command failed")
+ return False
+ else:
+ return True
+
+ def setup(self):
+ return True
+
+ def cleanup(self):
+ return True
+
+ def teardown(self):
+ return True
+
+
+@testcase("this_should_fail")
+class GoingToFail(GlusterBaseClass):
+ """ Testing connectivity and fail
+ ---
+ runs_on_volumes: [ distributed ]
+ runs_on_protocol: [ glusterfs, cifs ]
+ reuse_setup: False
+ tags:
+ - tag1
+ - tag2
+ - tag3
+ """
+ def setup(self):
+ return True
+
+ def run(self):
+ config = self.config_data
+ tc.logger.info("Testing fail output")
+ tc.logger.debug("Tag 1 is %s" % config["tags"][0])
+ ret, _, _ = tc.run(self.nodes[0], "false")
+ if ret != 0:
+ tc.logger.error("false command failed")
+ return False
+ else:
+ return True
+
+ def setup(self):
+ return True
+
+ def cleanup(self):
+ return True
+
+ def teardown(self):
+ return True