On 04/03/2013 05:17 PM, [email protected] wrote:
> Hi!
>> I would like to share a work around which I have tried to make the tests
>> to run
>> by default when -b and -B arguments are not specified.Please share your
>> thoughts
>> on this and also let me know if there is any disadvantage in using a
>> loop device
>> as I have made use of it in my changes. Also, suggest me an alternate
>> way to use
>> this work around if the changes in runltp is not a better idea.
>
>
> The runltp script is considered a hack rather than proper solution but
> we don't have replacement yet, so we have to live with it as it is now.
>
> The patch looks realtively good. Comments bellow.
>
>> Here is the work around that I tried,
>>
>> +++ runltp    2013-04-02 16:42:47.836836402 +0530
>> @@ -681,17 +681,43 @@ main()
>>
>>        if [ -n "$DEVICE" ]; then
>>            sed -i "s|DEVICE|$DEVICE|"  ${TMP}/alltests
>> +         RC=$?
>>        else
>> -        echo "remove test cases which require the block device."
>> -        echo "You can specify it with option -b"
>> -        sed -i "/DEVICE/d"  ${TMP}/alltests
>> +         #create a block device with ext4 filesystem.
>> +        dd if=/dev/zero of=${TMP}/test.img bs=1 count=10MB&>/dev/null
>
> If I'm not mistaken the bs=1 would make the whole process way too slow.
>
> Also I'm not sure if 10MB is enough for ext4.
>
>> +        if [ $? -ne 0 ]; then
>> +            echo "Please check for disk space and re-run"
>> +            exit 1
>> +        else
>> +            ##search for an unused loop dev
>> +            LOOP_DEV=$(losetup -f)
>> +            if [ $? -ne 0 ]; then
>> +                echo "no unused loop device is found"
>> +                exit 1
>
> There may be embeded systems without the loopback driver in kernel and
> we should work on these too. So rather than aborting here, we should
> disable the testcases in question.
>
>> +            else
>> +                ##attach the created file to loop dev.
>> +                losetup $LOOP_DEV ${TMP}/test.img&>/dev/null
>> +                if [ $? -ne 0 ]; then
>> +                     echo "losetup failed to create block device"
>> +                     exit 1
>> +                else
>> +                    ##format the block dev with ext4 filesystem.
>> +                    mkfs.ext4 $LOOP_DEV&>/dev/null
>> +                    #set the values in alltests which require block device.
>> +                     DEVICE=$LOOP_DEV
>> +                     DEVICE_FS_TYPE="ext4"
>> +                    sed -i "s|DEVICE|$DEVICE|"  ${TMP}/alltests
>> +                     RC=$?
>> +                fi
>> +            fi
>> +          fi
>>        fi
>>
>> -    if [ $? -ne 0 ]; then
>> +    if [ $RC -ne 0 ]; then
>>                echo "FATAL: error during prcessing alltests file by sed"
>>                exit 1
>>        fi
>> -
>> +
>>        if [ -n "$DEVICE" ]; then
>>            mnt_pnt=`mktemp -d "${TMP}/mnt_pnt.XXXXXX"`
>>            if [ -n "$DEVICE_FS_TYPE" ]; then
>> @@ -973,6 +999,8 @@ main()
>>
>>    cleanup()
>>    {
>> +    [ -e "${TMP}/test.img" ]&&  rm -f ${TMP}/test.img
>> +    [ "$LOOP_DEV" ]&&  losetup -d $LOOP_DEV
>>        rm -rf ${TMP}
>>    }
>
> Also please send a signed patch in unified diff format next time (git
> can create these for your).
>

Hello Cyril,

I have refined few things in response to your comments and generated the 
patch
from git. Please share your thoughts on the new patch,

In the new version,
-I have increased the bs=1 to bs=10 which will speed up dd job.
-with 10Mb, mkfs.ext4 is successful and also, I think 10MB is enogh for 
our testing
  purpose as we are not creating any larger files with it when passed to 
tests.
-To avoid test getting aborted while creating block device, I will be 
making a call
  to a function which creates required block device and the function 
will not exit
  in case something goes wrong also, so depending on its return value, 
tests will be
  executed or removed from execution.

Signed-off-by: Ramesh YR <[email protected]>
---
  ltp-full-20130109/runltp |   48 
++++++++++++++++++++++++++++++++++++++++++---
  1 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/ltp-full-20130109/runltp b/ltp-full-20130109/runltp
index 04cc690..f0f0c95 100755
--- a/ltp-full-20130109/runltp
+++ b/ltp-full-20130109/runltp
@@ -681,13 +681,20 @@ main()

      if [ -n "$DEVICE" ]; then
          sed -i "s|DEVICE|$DEVICE|"  ${TMP}/alltests
+    RC=$?
      else
-        echo "remove test cases which require the block device."
-        echo "You can specify it with option -b"
-        sed -i "/DEVICE/d"  ${TMP}/alltests
+    create_block
+    if [ $? -eq 0 ]; then
+        sed -i "s|DEVICE|$DEVICE|"  ${TMP}/alltests
+        RC=$?
+    else
+        echo "remove test cases which require the block device."
+        echo "You can specify it with option -b"
+        sed -i "/DEVICE/d"  ${TMP}/alltests
+        RC=$?
      fi

-    if [ $? -ne 0 ]; then
+    if [ $RC -ne 0 ]; then
              echo "FATAL: error during prcessing alltests file by sed"
              exit 1
      fi
@@ -971,8 +978,41 @@ main()
      exit $VALUE
  }

+create_block()
+{
+    #create a block device with ext4 filesystem.
+    dd if=/dev/zero of=${TMP}/test.img bs=10 count=10MB &>/dev/null
+    if [ $? -ne 0 ]; then
+        echo "Please check for disk space and re-run"
+        return 1
+    else
+        ##search for an unused loop dev
+        LOOP_DEV=$(losetup -f)
+        if [ $? -ne 0 ]; then
+            echo "no unused loop device is found"
+            return 1
+        else
+            ##attach the created file to loop dev.
+            losetup $LOOP_DEV ${TMP}/test.img &>/dev/null
+            if [ $? -ne 0 ]; then
+                echo "losetup failed to create block device"
+                return 1
+            else
+                ##format the block dev with ext3 filesystem.
+                mkfs.ext4 $LOOP_DEV &>/dev/null
+                #set the values in alltests which require block device.
+                DEVICE=$LOOP_DEV
+                DEVICE_FS_TYPE="ext4"
+                return 0
+            fi
+        fi
+    fi
+}
+
  cleanup()
  {
+    [ -e "${TEMP}/test.img" ] && rm -f ${TEMP}/test.img
+    [ "$LOOP_DEV" ] && losetup -d $LOOP_DEV
      rm -rf ${TMP}
  }

-- 

Regards,
Ramesh


------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to