diff mbox series

[nft,v7,1/2] tests:py: conversion to python3

Message ID 20190614143144.10482-1-shekhar250198@gmail.com
State Changes Requested
Delegated to: Pablo Neira
Headers show
Series [nft,v7,1/2] tests:py: conversion to python3 | expand

Commit Message

Shekhar Sharma June 14, 2019, 2:31 p.m. UTC
This patch converts the 'nft-test.py' file to run on both python 2 and python3.

Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
---
The version hystory of this patch is:
v1:conversion to py3 by changing the print statements.
v2:add the '__future__' package for compatibility with py2 and py3.
v3:solves the 'version' problem in argparse by adding a new argument.
v4:uses .format() method to make print statements clearer.
v5:updated the shebang and corrected the sequence of import statements.
v6:resent the same with small changes
v7:resent with small changes

 tests/py/nft-test.py | 44 +++++++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 21 deletions(-)

Comments

Eric Garver June 18, 2019, 2:31 p.m. UTC | #1
On Fri, Jun 14, 2019 at 08:01:44PM +0530, Shekhar Sharma wrote:
> This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> 
> Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
> ---
> The version hystory of this patch is:
> v1:conversion to py3 by changing the print statements.
> v2:add the '__future__' package for compatibility with py2 and py3.
> v3:solves the 'version' problem in argparse by adding a new argument.
> v4:uses .format() method to make print statements clearer.
> v5:updated the shebang and corrected the sequence of import statements.
> v6:resent the same with small changes
> v7:resent with small changes

"with small changes" is not helpful. In the future please list what was
actually changed so reviewers know what to focus on.

Patch looks good though.

Acked-by: Eric Garver <eric@garver.life>
Pablo Neira Ayuso June 18, 2019, 4:16 p.m. UTC | #2
On Tue, Jun 18, 2019 at 10:31:06AM -0400, Eric Garver wrote:
> On Fri, Jun 14, 2019 at 08:01:44PM +0530, Shekhar Sharma wrote:
> > This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> > 
> > Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
> > ---
> > The version hystory of this patch is:
> > v1:conversion to py3 by changing the print statements.
> > v2:add the '__future__' package for compatibility with py2 and py3.
> > v3:solves the 'version' problem in argparse by adding a new argument.
> > v4:uses .format() method to make print statements clearer.
> > v5:updated the shebang and corrected the sequence of import statements.
> > v6:resent the same with small changes
> > v7:resent with small changes

I apply this patch, then, from the nftables/tests/py/ folder I run:

# python3 nft-test.py

I get:

INFO: Log will be available at /tmp/nftables-test.log
Traceback (most recent call last):
  File "nft-test.py", line 1454, in <module>
    main()
  File "nft-test.py", line 1422, in main
    result = run_test_file(filename, force_all_family_option, specific_file)
  File "nft-test.py", line 1290, in run_test_file
    filename_path)
  File "nft-test.py", line 774, in rule_add
    payload_log = os.tmpfile()
AttributeError: module 'os' has no attribute 'tmpfile'
Shekhar Sharma June 18, 2019, 5:12 p.m. UTC | #3
On Tue, Jun 18, 2019 at 8:01 PM Eric Garver <eric@garver.life> wrote:
>
> On Fri, Jun 14, 2019 at 08:01:44PM +0530, Shekhar Sharma wrote:
> > This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> >
> > Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
> > ---
> > The version hystory of this patch is:
> > v1:conversion to py3 by changing the print statements.
> > v2:add the '__future__' package for compatibility with py2 and py3.
> > v3:solves the 'version' problem in argparse by adding a new argument.
> > v4:uses .format() method to make print statements clearer.
> > v5:updated the shebang and corrected the sequence of import statements.
> > v6:resent the same with small changes
> > v7:resent with small changes
>
> "with small changes" is not helpful. In the future please list what was
> actually changed so reviewers know what to focus on.
>
Sorry, will be more specific next time. :-)

> Patch looks good though.
>
> Acked-by: Eric Garver <eric@garver.life>
Shekhar Sharma June 18, 2019, 5:29 p.m. UTC | #4
Hi Pablo!

On Tue, Jun 18, 2019 at 9:46 PM Pablo Neira Ayuso <pablo@netfilter.org> wrote:
>
> On Tue, Jun 18, 2019 at 10:31:06AM -0400, Eric Garver wrote:
> > On Fri, Jun 14, 2019 at 08:01:44PM +0530, Shekhar Sharma wrote:
> > > This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> > >
> > > Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
> > > ---
> > > The version hystory of this patch is:
> > > v1:conversion to py3 by changing the print statements.
> > > v2:add the '__future__' package for compatibility with py2 and py3.
> > > v3:solves the 'version' problem in argparse by adding a new argument.
> > > v4:uses .format() method to make print statements clearer.
> > > v5:updated the shebang and corrected the sequence of import statements.
> > > v6:resent the same with small changes
> > > v7:resent with small changes
>
> I apply this patch, then, from the nftables/tests/py/ folder I run:
>
> # python3 nft-test.py
>
> I get:
>
> INFO: Log will be available at /tmp/nftables-test.log
> Traceback (most recent call last):
>   File "nft-test.py", line 1454, in <module>
>     main()
>   File "nft-test.py", line 1422, in main
>     result = run_test_file(filename, force_all_family_option, specific_file)
>   File "nft-test.py", line 1290, in run_test_file
>     filename_path)
>   File "nft-test.py", line 774, in rule_add
>     payload_log = os.tmpfile()
> AttributeError: module 'os' has no attribute 'tmpfile'

I do not know why this error is occurring but may i suggest
you to try the v8 of the netns patch, (as it is a continuation of this patch),
if that works, we will know that there is some problem in this patch
specifically.

Thanks!
Shekhar
Pablo Neira Ayuso June 18, 2019, 5:34 p.m. UTC | #5
On Tue, Jun 18, 2019 at 10:59:53PM +0530, shekhar sharma wrote:
> Hi Pablo!
> 
> On Tue, Jun 18, 2019 at 9:46 PM Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> >
> > On Tue, Jun 18, 2019 at 10:31:06AM -0400, Eric Garver wrote:
> > > On Fri, Jun 14, 2019 at 08:01:44PM +0530, Shekhar Sharma wrote:
> > > > This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> > > >
> > > > Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
> > > > ---
> > > > The version hystory of this patch is:
> > > > v1:conversion to py3 by changing the print statements.
> > > > v2:add the '__future__' package for compatibility with py2 and py3.
> > > > v3:solves the 'version' problem in argparse by adding a new argument.
> > > > v4:uses .format() method to make print statements clearer.
> > > > v5:updated the shebang and corrected the sequence of import statements.
> > > > v6:resent the same with small changes
> > > > v7:resent with small changes
> >
> > I apply this patch, then, from the nftables/tests/py/ folder I run:
> >
> > # python3 nft-test.py
> >
> > I get:
> >
> > INFO: Log will be available at /tmp/nftables-test.log
> > Traceback (most recent call last):
> >   File "nft-test.py", line 1454, in <module>
> >     main()
> >   File "nft-test.py", line 1422, in main
> >     result = run_test_file(filename, force_all_family_option, specific_file)
> >   File "nft-test.py", line 1290, in run_test_file
> >     filename_path)
> >   File "nft-test.py", line 774, in rule_add
> >     payload_log = os.tmpfile()
> > AttributeError: module 'os' has no attribute 'tmpfile'
> 
> I do not know why this error is occurring but may i suggest
> you to try the v8 of the netns patch, (as it is a continuation of this patch),
> if that works, we will know that there is some problem in this patch
> specifically.

Still the same problem with v8:

    Date:   Mon Jun 17 19:45:58 2019 +0530

    tests: py: add netns feature

    This patch adds the netns feature to the 'nft-test.py' file.
Shekhar Sharma June 18, 2019, 5:36 p.m. UTC | #6
On Tue, Jun 18, 2019 at 11:04 PM Pablo Neira Ayuso <pablo@netfilter.org> wrote:
>
> On Tue, Jun 18, 2019 at 10:59:53PM +0530, shekhar sharma wrote:
> > Hi Pablo!
> >
> > On Tue, Jun 18, 2019 at 9:46 PM Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> > >
> > > On Tue, Jun 18, 2019 at 10:31:06AM -0400, Eric Garver wrote:
> > > > On Fri, Jun 14, 2019 at 08:01:44PM +0530, Shekhar Sharma wrote:
> > > > > This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> > > > >
> > > > > Signed-off-by: Shekhar Sharma <shekhar250198@gmail.com>
> > > > > ---
> > > > > The version hystory of this patch is:
> > > > > v1:conversion to py3 by changing the print statements.
> > > > > v2:add the '__future__' package for compatibility with py2 and py3.
> > > > > v3:solves the 'version' problem in argparse by adding a new argument.
> > > > > v4:uses .format() method to make print statements clearer.
> > > > > v5:updated the shebang and corrected the sequence of import statements.
> > > > > v6:resent the same with small changes
> > > > > v7:resent with small changes
> > >
> > > I apply this patch, then, from the nftables/tests/py/ folder I run:
> > >
> > > # python3 nft-test.py
> > >
> > > I get:
> > >
> > > INFO: Log will be available at /tmp/nftables-test.log
> > > Traceback (most recent call last):
> > >   File "nft-test.py", line 1454, in <module>
> > >     main()
> > >   File "nft-test.py", line 1422, in main
> > >     result = run_test_file(filename, force_all_family_option, specific_file)
> > >   File "nft-test.py", line 1290, in run_test_file
> > >     filename_path)
> > >   File "nft-test.py", line 774, in rule_add
> > >     payload_log = os.tmpfile()
> > > AttributeError: module 'os' has no attribute 'tmpfile'
> >
> > I do not know why this error is occurring but may i suggest
> > you to try the v8 of the netns patch, (as it is a continuation of this patch),
> > if that works, we will know that there is some problem in this patch
> > specifically.
>
> Still the same problem with v8:
>
>     Date:   Mon Jun 17 19:45:58 2019 +0530
>
>     tests: py: add netns feature
>
>     This patch adds the netns feature to the 'nft-test.py' file.

Ok. I am trying to find out why this is happening.

Shekhar
diff mbox series

Patch

diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py
index 09d00dba..f80517e6 100755
--- a/tests/py/nft-test.py
+++ b/tests/py/nft-test.py
@@ -1,4 +1,4 @@ 
-#!/usr/bin/python2
+#!/usr/bin/env python
 #
 # (C) 2014 by Ana Rey Botello <anarey@gmail.com>
 #
@@ -13,6 +13,7 @@ 
 # Thanks to the Outreach Program for Women (OPW) for sponsoring this test
 # infrastructure.
 
+from __future__ import print_function
 import sys
 import os
 import argparse
@@ -1016,9 +1017,9 @@  def execute_cmd(cmd, filename, lineno, stdout_log=False, debug=False):
     :param debug: temporarily set these debug flags
     '''
     global log_file
-    print >> log_file, "command: %s" % cmd
+    print("command: {}".format(cmd), file=log_file)
     if debug_option:
-        print cmd
+        print(cmd)
 
     if debug:
         debug_old = nftables.get_debug()
@@ -1212,7 +1213,7 @@  def run_test_file(filename, force_all_family_option, specific_file):
         sys.stdout.flush()
 
         if signal_received == 1:
-            print "\nSignal received. Cleaning up and Exitting..."
+            print("\nSignal received. Cleaning up and Exitting...")
             cleanup_on_exit()
             sys.exit(0)
 
@@ -1319,13 +1320,13 @@  def run_test_file(filename, force_all_family_option, specific_file):
 
     if specific_file:
         if force_all_family_option:
-            print print_result_all(filename, tests, total_warning, total_error,
-                                   total_unit_run)
+            print(print_result_all(filename, tests, total_warning, total_error,
+                                   total_unit_run))
         else:
-            print print_result(filename, tests, total_warning, total_error)
+            print(print_result(filename, tests, total_warning, total_error))
     else:
         if tests == passed and tests > 0:
-            print filename + ": " + Colors.GREEN + "OK" + Colors.ENDC
+            print(filename + ": " + Colors.GREEN + "OK" + Colors.ENDC)
 
     f.close()
     del table_list[:]
@@ -1336,7 +1337,7 @@  def run_test_file(filename, force_all_family_option, specific_file):
 
 
 def main():
-    parser = argparse.ArgumentParser(description='Run nft tests', version='1.0')
+    parser = argparse.ArgumentParser(description='Run nft tests')
 
     parser.add_argument('filenames', nargs='*', metavar='path/to/file.t',
                         help='Run only these tests')
@@ -1359,6 +1360,10 @@  def main():
                         dest='enable_schema',
                         help='verify json input/output against schema')
 
+    parser.add_argument('-v', '--version', action='version',
+                        version='1.0',
+                        help='Print the version information')
+
     args = parser.parse_args()
     global debug_option, need_fix_option, enable_json_option, enable_json_schema
     debug_option = args.debug
@@ -1372,15 +1377,15 @@  def main():
     signal.signal(signal.SIGTERM, signal_handler)
 
     if os.getuid() != 0:
-        print "You need to be root to run this, sorry"
+        print("You need to be root to run this, sorry")
         return
 
     # Change working directory to repository root
     os.chdir(TESTS_PATH + "/../..")
 
     if not os.path.exists('src/.libs/libnftables.so'):
-        print "The nftables library does not exist. " \
-              "You need to build the project."
+        print("The nftables library does not exist. "
+              "You need to build the project.")
         return
 
     if args.enable_schema and not args.enable_json:
@@ -1434,19 +1439,16 @@  def main():
             run_total += file_unit_run
 
     if test_files == 0:
-        print "No test files to run"
+        print("No test files to run")
     else:
         if not specific_file:
             if force_all_family_option:
-                print "%d test files, %d files passed, %d unit tests, " \
-                      "%d total executed, %d error, %d warning" \
-                      % (test_files, files_ok, tests, run_total, errors,
-                         warnings)
-            else:
-                print "%d test files, %d files passed, %d unit tests, " \
-                      "%d error, %d warning" \
-                      % (test_files, files_ok, tests, errors, warnings)
+                print("{} test files, {} files passed, {} unit tests, ".format(test_files,files_ok,tests))
+                print("{} total executed, {} error, {} warning".format(run_total, errors, warnings))
 
+            else:
+                print("{} test files, {} files passed, {} unit tests, ".format(test_files,files_ok,tests))
+                print("{} error, {} warning".format(errors, warnings))
 
 if __name__ == '__main__':
     main()