All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/3] [NVMe-CLI] Add nvme id-ctrl command test
@ 2018-05-07 21:40 Jeff Lien
  0 siblings, 0 replies; only message in thread
From: Jeff Lien @ 2018-05-07 21:40 UTC (permalink / raw)


Signed-off-by: Jeff Lien <jeff.lien at wdc.com>
---
 tests/nvme_id_ctrl_test.py | 137 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 137 insertions(+)
 create mode 100644 tests/nvme_id_ctrl_test.py

diff --git a/tests/nvme_id_ctrl_test.py b/tests/nvme_id_ctrl_test.py
new file mode 100644
index 0000000..b6b0d89
--- /dev/null
+++ b/tests/nvme_id_ctrl_test.py
@@ -0,0 +1,137 @@
+# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
+#
+# 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 (at your option) 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.
+#
+#   Author: Madhusudhana S.J <madhusudhana.sj at wdc.com>
+#
+"""
+NVMe Identify Controller Testcase:-
+
+    1. Send NVMe Identify Controller, return result and structure
+    2. Send an Identify Controller command to the given device and report information about the specified controller 
+       in human-readable or binary format. 
+       May also return vendor-specific controller attributes in hex-dump if requested.
+
+"""
+
+import subprocess
+from nose.tools import assert_equal
+from nvme_test import TestNVMe
+import time
+
+class TestNVMeIdentifyIdctrlActions(TestNVMe):
+
+	"""
+	Represent Identify Controller testcase.
+
+        - Attributes:
+                     - Identify Controller : list of Identify Controller actions.     
+	"""
+	def __init__(self):
+         	""" Pre Section for Identify Controller mandatory Actions """
+		TestNVMe.__init__(self)
+        	self.setup_log_dir(self.__class__.__name__)
+        	self.identifycontroller__action_list = ["--human-readable","--raw-binary","--vendor-specific","-b"]
+        	self.identifycontroller__outtput_format_list = ["normal", "json","binary"]
+	
+	def __del__(self):
+		""" Post Section for TestNVMeIdentify Controller mandatory Actions
+
+            	     Call super class's destructor.
+		"""
+		TestNVMe.__del__(self)
+ 
+	def get_identifycontroller(self):
+        	""" Wrapper for NVMe Identify Controller command
+                - Args:
+                       - Identify Controller : sends an identify controller command to device and  
+                         provides the result and returned structure
+                - Returns: None
+        	"""
+        	get_identifycontroller_cmd = "nvme id-ctrl /dev/nvme0" 
+		print "Identify Controller command:",get_identifycontroller_cmd, "\n"
+		proc = subprocess.Popen(get_identifycontroller_cmd,shell=True,stdout=subprocess.PIPE)
+		identifycontroller_output = proc.communicate()[0]
+		print "command_output : "
+		print identifycontroller_output, "\n"
+        	assert_equal(proc.wait(), 0)
+ 
+	def get_mandetory_identifycontroller_action(self,identifycontroller_action):
+			""" Wrapper for NVMe Identify Controller  command 
+				- Args:
+				- identifycontroller_action : action id to be used with identifycontroller_action  command.
+				- Returns: None
+			"""
+			print "identifycontroller_action value:", identifycontroller_action
+			if str(identifycontroller_action) in ["-b","--raw-binary"]:
+				get_identifycontroller_cmd = "nvme id-ctrl /dev/nvme0" + \
+                                                             " " + identifycontroller_action + " | hexdump -C"
+				print "get_identifycontroller_cmd with binary :",get_identifycontroller_cmd,"\n"
+				proc = subprocess.Popen(get_identifycontroller_cmd,shell=True,stdout=subprocess.PIPE)
+				identifycontroller_output = proc.communicate()[0]
+				print "command_output : "
+				print identifycontroller_output, "\n"
+				assert_equal(proc.wait(), 0)
+			else:
+				get_identifycontroller_cmd = "nvme id-ctrl /dev/nvme0" \
+				                            + " " + identifycontroller_action 
+				print "command executing to get id_ctrl of the given device :",get_identifycontroller_cmd
+               			proc = subprocess.Popen(get_identifycontroller_cmd,shell=True,stdout=subprocess.PIPE)
+                		identifycontroller_output = proc.communicate()[0]
+				print "command_output : "
+				print identifycontroller_output, "\n"
+                		assert_equal(proc.wait(), 0)
+	def get_mandetory_identifycontroller_outputformat(self,identifycontroller_outputformat):
+                        """ Wrapper for NVMe Identify Controller command
+                                - Args:
+                                - identifycontroller_action : output format  to be used with identifycontroller  command.
+                                - Returns: None
+                        """
+                        print "identifycontroller_outputformat Type:", identifycontroller_outputformat
+                        if str(identifycontroller_outputformat) == "binary":
+                                get_identifycontroller_cmd = "nvme id-ctrl /dev/nvme0" + \
+                                                             " --output-format=binary | hexdump -C"
+                                print "get_identifycontroller_cmd with binary output format:",get_identifycontroller_cmd
+				print "\n"
+                                proc = subprocess.Popen(get_identifycontroller_cmd,shell=True,stdout=subprocess.PIPE)
+                                identifycontroller_output = proc.communicate()[0]
+                                print "command_output : "
+                                print identifycontroller_output, "\n"
+                                assert_equal(proc.wait(), 0)
+                        else:
+                                get_identifycontroller_cmd = "nvme id-ctrl /dev/nvme0" \
+                                                             + " --output-format=" + identifycontroller_outputformat
+                                print "command executing to get id_ctrl of the given device :",get_identifycontroller_cmd
+                                proc = subprocess.Popen(get_identifycontroller_cmd,shell=True,stdout=subprocess.PIPE)
+                                identifycontroller_output = proc.communicate()[0]
+                                print "command_output : "
+                                print identifycontroller_output, "\n"
+                                assert_equal(proc.wait(), 0)
+
+	def test_get_identify_controller_actions(self):
+        		""" Testcase main """ 
+			print "calling main function ..!"
+			self.get_identifycontroller()
+       			for identifycontroller_action in self.identifycontroller__action_list:
+				if str(identifycontroller_action) in ["-b", "--raw-binary"]:
+					self.get_mandetory_identifycontroller_action(identifycontroller_action)
+				else:
+					self.get_mandetory_identifycontroller_action(identifycontroller_action)
+			for identifycontroller_outputformat in self.identifycontroller__outtput_format_list:
+				if str(identifycontroller_outputformat) == "binary":
+					self.get_mandetory_identifycontroller_outputformat(identifycontroller_outputformat)
+				else:
+					self.get_mandetory_identifycontroller_outputformat(identifycontroller_outputformat)
-- 
2.14.2.746.g8fb8a94

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-05-07 21:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-07 21:40 [PATCH 2/3] [NVMe-CLI] Add nvme id-ctrl command test Jeff Lien

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.