diff options
author | Botao Sun <botao.sun@linaro.org> | 2014-05-23 17:02:12 +1000 |
---|---|---|
committer | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2014-05-23 12:31:18 +0000 |
commit | 4570ec7fea1e7f735dff23c63f2a8edab7a34e38 (patch) | |
tree | b1562a379d04b5a04b9c8b65073fd767a60637ce | |
parent | 441c11863d97b96818cc25b5d2545a5b075f94ea (diff) |
Add SATA Test for Linux Linaro ubuntu, including Partition, Read and Write.
Test code has been validated on Samsung Arndale and Panda board in LAVA.
Signed-off by: Botao Sun <botao.sun@linaro.org>
Change-Id: I950bc78e37413baa4304cca13783f916ef23ac22
-rw-r--r-- | ubuntu/sata-partition-rw.yaml | 29 | ||||
-rwxr-xr-x | ubuntu/scripts/sata-partition-rw.py | 220 |
2 files changed, 249 insertions, 0 deletions
diff --git a/ubuntu/sata-partition-rw.yaml b/ubuntu/sata-partition-rw.yaml new file mode 100644 index 0000000..ed71ef3 --- /dev/null +++ b/ubuntu/sata-partition-rw.yaml @@ -0,0 +1,29 @@ +metadata: + name: sata-partition-rw + format: "Lava-Test-Shell Test Definition 1.0" + description: "SATA Partition, Read and Write Test on Linux Linaro ubuntu. The target Device ID is possible to be set in JSON." + maintainer: + - botao.sun@linaro.org + os: + - ubuntu + devices: + - d01 + - panda + - panda-es + - arndale + environment: + - lava-test-shell + +install: + deps: + - parted + +params: + DeviceID: /dev/sda + +run: + steps: + - "cd ubuntu/scripts; ./sata-partition-rw.py $DeviceID" + +parse: + pattern: '^(?P<test_case_id>sata_\w+):\s(?P<result>\w+)\s(?P<measurement>[0-9.]+)\s(?P<units>[a-zA-Z/]+)' diff --git a/ubuntu/scripts/sata-partition-rw.py b/ubuntu/scripts/sata-partition-rw.py new file mode 100755 index 0000000..6642fe3 --- /dev/null +++ b/ubuntu/scripts/sata-partition-rw.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python +# +# SATA Partition, Read and Write test cases for Linux Linaro ubuntu +# +# Copyright (C) 2012 - 2014, Linaro Limited. +# +# 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: Botao Sun <botao.sun@linaro.org> +# +import sys +import os +import commands + +# Switch to home path of current user to avoid any permission issue +home_path = os.environ['HOME'] +os.chdir(home_path) +print os.getcwd() + +# Save partition layout to a local file for reference +commands.getstatusoutput("sudo fdisk -l > partition_layout.txt 2>&1") +device_name = sys.argv[1] + +def sata_device_existence(): + testcase_name = "sata_device_existence" + if device_name == "": + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Device name is empty" + sys.exit(1) + else: + logfile = open("partition_layout.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if device_name in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not locate " + device_name + " on target board" + sys.exit(1) + +def sata_mklabel_msdos(): + testcase_name = "sata_mklabel_msdos" + label_name = "msdos" + run_command = "sudo parted -s " + device_name + " mklabel " + label_name + print run_command + + mklabel_return = commands.getstatusoutput(run_command) + if mklabel_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + else: + commands.getstatusoutput("sudo parted -s " + device_name + " print > partition_table_msdos.txt 2>&1") + logfile = open("partition_table_msdos.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if label_name in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not find partition table " + label_name + " on " + device_name + +def sata_mklabel_gpt(): + testcase_name = "sata_mklabel_gpt" + label_name = "gpt" + run_command = "sudo parted -s " + device_name + " mklabel " + label_name + print run_command + + mklabel_return = commands.getstatusoutput(run_command) + if mklabel_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + else: + commands.getstatusoutput("sudo parted -s " + device_name + " print > partition_table_gpt.txt 2>&1") + logfile = open("partition_table_gpt.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if label_name in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not find partition table " + label_name + " on " + device_name + +def sata_first_ext2_partition(): + testcase_name = "sata_first_ext2_partition" + label_name = "msdos" + partition_table_creation = "sudo parted -s " + device_name + " mklabel " + label_name + first_partition_creation = "sudo parted -s " + device_name + " mkpart primary ext2 0 10%" + print partition_table_creation + print first_partition_creation + + partition_table_return = commands.getstatusoutput(partition_table_creation) + if partition_table_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " Failures on " + partition_table_creation + else: + first_partition_return = commands.getstatusoutput(first_partition_creation) + if first_partition_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " Failures on " + first_partition_creation + else: + commands.getstatusoutput("sudo fdisk -l " + device_name + " > ext2_msdos_first.txt 2>&1") + logfile = open("ext2_msdos_first.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + partition_name_first = device_name + "1" + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if partition_name_first in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not find partition " + partition_name_first + " on " + device_name + +def sata_second_ext2_partition(): + testcase_name = "sata_second_ext2_partition" + second_partition_creation = "sudo parted -s " + device_name + " mkpart primary ext2 11% 20%" + print second_partition_creation + + second_partition_return = commands.getstatusoutput(second_partition_creation) + if second_partition_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " Failures on " + second_partition_creation + else: + commands.getstatusoutput("sudo fdisk -l " + device_name + " > ext2_msdos_second.txt 2>&1") + logfile = open("ext2_msdos_second.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + partition_name_second = device_name + "2" + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if partition_name_second in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not find partition " + partition_name_second + " on " + device_name + +def sata_ext3_format(): + testcase_name = "sata_ext3_format" + target_partition_name = device_name + "1" + ext3_format = "sudo mkfs.ext3 " + target_partition_name + print ext3_format + + ext3_format_return = commands.getstatusoutput(ext3_format) + if ext3_format_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " Failures on ext3 format command" + else: + commands.getstatusoutput("sudo parted -s " + device_name + " print > ext3_format_first.txt 2>&1") + logfile = open("ext3_format_first.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if "ext3" in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not find ext3 partition on " + device_name + +def sata_ext4_format(): + testcase_name = "sata_ext4_format" + target_partition_name = device_name + "2" + ext4_format = "sudo mkfs.ext4 " + target_partition_name + print ext4_format + + ext4_format_return = commands.getstatusoutput(ext4_format) + if ext4_format_return[0] != 0: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " Failures on ext4 format command" + else: + commands.getstatusoutput("sudo parted -s " + device_name + " print > ext4_format_second.txt 2>&1") + logfile = open("ext4_format_second.txt", "r") + logcontent = logfile.readlines() + positive_counter = 0 + for i in range(0, len(logcontent)): + print logcontent[i].strip("\n") + if "ext4" in logcontent[i]: + positive_counter = positive_counter + 1 + logfile.close() + + if positive_counter > 0: + print testcase_name + ": PASS" + " 0" + " Inapplicable" + else: + print testcase_name + ": FAIL" + " 0" + " Inapplicable" + " - Could not find ext4 partition on " + device_name + +# Run all test +sata_device_existence() +sata_mklabel_msdos() +sata_mklabel_gpt() +sata_first_ext2_partition() +sata_second_ext2_partition() +sata_ext3_format() +sata_ext4_format()
\ No newline at end of file |