diff mbox series

[4/9] iotests: Use // for Python integer division

Message ID 20181015141453.32632-5-mreitz@redhat.com (mailing list archive)
State New, archived
Headers show
Series iotests: Make them work for both Python 2 and 3 | expand

Commit Message

Max Reitz Oct. 15, 2018, 2:14 p.m. UTC
In Python 3, / is always a floating-point division.  We usually do not
want this, and as Python 2.7 understands // as well, change all integer
divisions to use that.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/040        |  4 ++--
 tests/qemu-iotests/044        |  2 +-
 tests/qemu-iotests/093        | 18 +++++++++---------
 tests/qemu-iotests/149        |  6 +++---
 tests/qemu-iotests/151        | 12 ++++++------
 tests/qemu-iotests/163        |  2 +-
 tests/qemu-iotests/iotests.py |  2 +-
 7 files changed, 23 insertions(+), 23 deletions(-)

Comments

Eduardo Habkost Oct. 15, 2018, 7:54 p.m. UTC | #1
On Mon, Oct 15, 2018 at 04:14:48PM +0200, Max Reitz wrote:
> In Python 3, / is always a floating-point division.  We usually do not
> want this, and as Python 2.7 understands // as well, change all integer
> divisions to use that.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>

Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Cleber Rosa Oct. 15, 2018, 9:13 p.m. UTC | #2
On 10/15/18 10:14 AM, Max Reitz wrote:
> In Python 3, / is always a floating-point division.  We usually do not
> want this, and as Python 2.7 understands // as well, change all integer
> divisions to use that.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  tests/qemu-iotests/040        |  4 ++--
>  tests/qemu-iotests/044        |  2 +-
>  tests/qemu-iotests/093        | 18 +++++++++---------
>  tests/qemu-iotests/149        |  6 +++---
>  tests/qemu-iotests/151        | 12 ++++++------
>  tests/qemu-iotests/163        |  2 +-
>  tests/qemu-iotests/iotests.py |  2 +-
>  7 files changed, 23 insertions(+), 23 deletions(-)
> 
> diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
> index 1cb1ceeb33..b81133a474 100755
> --- a/tests/qemu-iotests/040
> +++ b/tests/qemu-iotests/040
> @@ -195,7 +195,7 @@ class TestSingleDrive(ImageCommitTestCase):
>  
>          self.assert_no_active_block_jobs()
>          result = self.vm.qmp('block-commit', device='drive0', top=mid_img,
> -                             base=backing_img, speed=(self.image_len / 4))
> +                             base=backing_img, speed=(self.image_len // 4))
>          self.assert_qmp(result, 'return', {})
>          result = self.vm.qmp('device_del', id='scsi0')
>          self.assert_qmp(result, 'return', {})
> @@ -225,7 +225,7 @@ class TestSingleDrive(ImageCommitTestCase):
>  
>          self.assert_no_active_block_jobs()
>          result = self.vm.qmp('block-commit', device='drive0', top=mid_img,
> -                             base=backing_img, speed=(self.image_len / 4))
> +                             base=backing_img, speed=(self.image_len // 4))
>          self.assert_qmp(result, 'return', {})
>  
>          result = self.vm.qmp('query-block')
> diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
> index 69e736f687..7ef5e46fe9 100755
> --- a/tests/qemu-iotests/044
> +++ b/tests/qemu-iotests/044
> @@ -86,7 +86,7 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
>                  off = off + 1024 * 512
>  
>              table = b''.join(struct.pack('>Q', (1 << 63) | off + 512 * j)
> -                for j in xrange(0, remaining / 512))
> +                for j in xrange(0, remaining // 512))
>              fd.write(table)
>  
>  
> diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
> index 9d1971a56c..d88fbc182e 100755
> --- a/tests/qemu-iotests/093
> +++ b/tests/qemu-iotests/093
> @@ -69,18 +69,18 @@ class ThrottleTestCase(iotests.QMPTestCase):
>          # in. The throttled requests won't be executed until we
>          # advance the virtual clock.
>          rq_size = 512
> -        rd_nr = max(params['bps'] / rq_size / 2,
> -                    params['bps_rd'] / rq_size,
> -                    params['iops'] / 2,
> +        rd_nr = max(params['bps'] // rq_size // 2,
> +                    params['bps_rd'] // rq_size,
> +                    params['iops'] // 2,
>                      params['iops_rd'])
>          rd_nr *= seconds * 2
> -        rd_nr /= ndrives
> -        wr_nr = max(params['bps'] / rq_size / 2,
> -                    params['bps_wr'] / rq_size,
> -                    params['iops'] / 2,
> +        rd_nr //= ndrives
> +        wr_nr = max(params['bps'] // rq_size // 2,
> +                    params['bps_wr'] // rq_size,
> +                    params['iops'] // 2,
>                      params['iops_wr'])
>          wr_nr *= seconds * 2
> -        wr_nr /= ndrives
> +        wr_nr //= ndrives
>  
>          # Send I/O requests to all drives
>          for i in range(rd_nr):
> @@ -196,7 +196,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
>              self.configure_throttle(ndrives, settings)
>  
>              # Wait for the bucket to empty so we can do bursts
> -            wait_ns = nsec_per_sec * burst_length * burst_rate / rate
> +            wait_ns = nsec_per_sec * burst_length * burst_rate // rate
>              self.vm.qtest("clock_step %d" % wait_ns)
>  
>              # Test I/O at the max burst rate
> diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149
> index 1225334cb8..4f363f295f 100755
> --- a/tests/qemu-iotests/149
> +++ b/tests/qemu-iotests/149
> @@ -314,13 +314,13 @@ def test_once(config, qemu_img=False):
>      image_size = 4 * oneTB
>      if qemu_img:
>          iotests.log("# Create image")
> -        qemu_img_create(config, image_size / oneMB)
> +        qemu_img_create(config, image_size // oneMB)
>      else:
>          iotests.log("# Create image")
> -        create_image(config, image_size / oneMB)
> +        create_image(config, image_size // oneMB)
>  
>      lowOffsetMB = 100
> -    highOffsetMB = 3 * oneTB / oneMB
> +    highOffsetMB = 3 * oneTB // oneMB
>  
>      try:
>          if not qemu_img:
> diff --git a/tests/qemu-iotests/151 b/tests/qemu-iotests/151
> index fe53b9f446..1bb74d67c4 100755
> --- a/tests/qemu-iotests/151
> +++ b/tests/qemu-iotests/151
> @@ -67,9 +67,9 @@ class TestActiveMirror(iotests.QMPTestCase):
>                              'write -P 1 0 %i' % self.image_len);
>  
>          # Start some background requests
> -        for offset in range(1 * self.image_len / 8, 3 * self.image_len / 8, 1024 * 1024):
> +        for offset in range(1 * self.image_len // 8, 3 * self.image_len // 8, 1024 * 1024):
>              self.vm.hmp_qemu_io('source', 'aio_write -P 2 %i 1M' % offset)
> -        for offset in range(2 * self.image_len / 8, 3 * self.image_len / 8, 1024 * 1024):
> +        for offset in range(2 * self.image_len // 8, 3 * self.image_len // 8, 1024 * 1024):
>              self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
>  
>          # Start the block job
> @@ -83,9 +83,9 @@ class TestActiveMirror(iotests.QMPTestCase):
>          self.assert_qmp(result, 'return', {})
>  
>          # Start some more requests
> -        for offset in range(3 * self.image_len / 8, 5 * self.image_len / 8, 1024 * 1024):
> +        for offset in range(3 * self.image_len // 8, 5 * self.image_len // 8, 1024 * 1024):
>              self.vm.hmp_qemu_io('source', 'aio_write -P 3 %i 1M' % offset)
> -        for offset in range(4 * self.image_len / 8, 5 * self.image_len / 8, 1024 * 1024):
> +        for offset in range(4 * self.image_len // 8, 5 * self.image_len // 8, 1024 * 1024):
>              self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
>  
>          # Wait for the READY event
> @@ -95,9 +95,9 @@ class TestActiveMirror(iotests.QMPTestCase):
>          # the source) should be settled using the active mechanism.
>          # The mirror code itself asserts that the source BDS's dirty
>          # bitmap will stay clean between READY and COMPLETED.
> -        for offset in range(5 * self.image_len / 8, 7 * self.image_len / 8, 1024 * 1024):
> +        for offset in range(5 * self.image_len // 8, 7 * self.image_len // 8, 1024 * 1024):
>              self.vm.hmp_qemu_io('source', 'aio_write -P 3 %i 1M' % offset)
> -        for offset in range(6 * self.image_len / 8, 7 * self.image_len / 8, 1024 * 1024):
> +        for offset in range(6 * self.image_len // 8, 7 * self.image_len // 8, 1024 * 1024):
>              self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
>  
>          if sync_source_and_target:
> diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
> index 403842354e..5fd424761b 100755
> --- a/tests/qemu-iotests/163
> +++ b/tests/qemu-iotests/163
> @@ -38,7 +38,7 @@ class ShrinkBaseClass(iotests.QMPTestCase):
>          entry_bits = 3
>          entry_size = 1 << entry_bits
>          l1_mask = 0x00fffffffffffe00
> -        div_roundup = lambda n, d: (n + d - 1) / d
> +        div_roundup = lambda n, d: (n + d - 1) // d
>  
>          def split_by_n(data, n):
>              for x in xrange(0, len(data), n):
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 7290c0b159..7ca94e9278 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -199,7 +199,7 @@ def create_image(name, size):
>      file = open(name, 'wb')
>      i = 0
>      while i < size:
> -        sector = struct.pack('>l504xl', i / 512, i / 512)
> +        sector = struct.pack('>l504xl', i // 512, i // 512)
>          file.write(sector)
>          i = i + 512
>      file.close()
> 

Found a few other occurrences:

030:''' % (event, errno, self.STREAM_BUFFER_SIZE / 512, event, event))
041:''' % (event, errno, self.MIRROR_GRANULARITY / 512, event, event))
041:''' % (event, errno, self.MIRROR_GRANULARITY / 512, event, event))

- Cleber.
Max Reitz Oct. 19, 2018, 9:06 a.m. UTC | #3
On 15.10.18 23:13, Cleber Rosa wrote:
> 
> 
> On 10/15/18 10:14 AM, Max Reitz wrote:
>> In Python 3, / is always a floating-point division.  We usually do not
>> want this, and as Python 2.7 understands // as well, change all integer
>> divisions to use that.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>  tests/qemu-iotests/040        |  4 ++--
>>  tests/qemu-iotests/044        |  2 +-
>>  tests/qemu-iotests/093        | 18 +++++++++---------
>>  tests/qemu-iotests/149        |  6 +++---
>>  tests/qemu-iotests/151        | 12 ++++++------
>>  tests/qemu-iotests/163        |  2 +-
>>  tests/qemu-iotests/iotests.py |  2 +-
>>  7 files changed, 23 insertions(+), 23 deletions(-)
>>
>> diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
>> index 1cb1ceeb33..b81133a474 100755
>> --- a/tests/qemu-iotests/040
>> +++ b/tests/qemu-iotests/040
>> @@ -195,7 +195,7 @@ class TestSingleDrive(ImageCommitTestCase):
>>  
>>          self.assert_no_active_block_jobs()
>>          result = self.vm.qmp('block-commit', device='drive0', top=mid_img,
>> -                             base=backing_img, speed=(self.image_len / 4))
>> +                             base=backing_img, speed=(self.image_len // 4))
>>          self.assert_qmp(result, 'return', {})
>>          result = self.vm.qmp('device_del', id='scsi0')
>>          self.assert_qmp(result, 'return', {})
>> @@ -225,7 +225,7 @@ class TestSingleDrive(ImageCommitTestCase):
>>  
>>          self.assert_no_active_block_jobs()
>>          result = self.vm.qmp('block-commit', device='drive0', top=mid_img,
>> -                             base=backing_img, speed=(self.image_len / 4))
>> +                             base=backing_img, speed=(self.image_len // 4))
>>          self.assert_qmp(result, 'return', {})
>>  
>>          result = self.vm.qmp('query-block')
>> diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
>> index 69e736f687..7ef5e46fe9 100755
>> --- a/tests/qemu-iotests/044
>> +++ b/tests/qemu-iotests/044
>> @@ -86,7 +86,7 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
>>                  off = off + 1024 * 512
>>  
>>              table = b''.join(struct.pack('>Q', (1 << 63) | off + 512 * j)
>> -                for j in xrange(0, remaining / 512))
>> +                for j in xrange(0, remaining // 512))
>>              fd.write(table)
>>  
>>  
>> diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
>> index 9d1971a56c..d88fbc182e 100755
>> --- a/tests/qemu-iotests/093
>> +++ b/tests/qemu-iotests/093
>> @@ -69,18 +69,18 @@ class ThrottleTestCase(iotests.QMPTestCase):
>>          # in. The throttled requests won't be executed until we
>>          # advance the virtual clock.
>>          rq_size = 512
>> -        rd_nr = max(params['bps'] / rq_size / 2,
>> -                    params['bps_rd'] / rq_size,
>> -                    params['iops'] / 2,
>> +        rd_nr = max(params['bps'] // rq_size // 2,
>> +                    params['bps_rd'] // rq_size,
>> +                    params['iops'] // 2,
>>                      params['iops_rd'])
>>          rd_nr *= seconds * 2
>> -        rd_nr /= ndrives
>> -        wr_nr = max(params['bps'] / rq_size / 2,
>> -                    params['bps_wr'] / rq_size,
>> -                    params['iops'] / 2,
>> +        rd_nr //= ndrives
>> +        wr_nr = max(params['bps'] // rq_size // 2,
>> +                    params['bps_wr'] // rq_size,
>> +                    params['iops'] // 2,
>>                      params['iops_wr'])
>>          wr_nr *= seconds * 2
>> -        wr_nr /= ndrives
>> +        wr_nr //= ndrives
>>  
>>          # Send I/O requests to all drives
>>          for i in range(rd_nr):
>> @@ -196,7 +196,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
>>              self.configure_throttle(ndrives, settings)
>>  
>>              # Wait for the bucket to empty so we can do bursts
>> -            wait_ns = nsec_per_sec * burst_length * burst_rate / rate
>> +            wait_ns = nsec_per_sec * burst_length * burst_rate // rate
>>              self.vm.qtest("clock_step %d" % wait_ns)
>>  
>>              # Test I/O at the max burst rate
>> diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149
>> index 1225334cb8..4f363f295f 100755
>> --- a/tests/qemu-iotests/149
>> +++ b/tests/qemu-iotests/149
>> @@ -314,13 +314,13 @@ def test_once(config, qemu_img=False):
>>      image_size = 4 * oneTB
>>      if qemu_img:
>>          iotests.log("# Create image")
>> -        qemu_img_create(config, image_size / oneMB)
>> +        qemu_img_create(config, image_size // oneMB)
>>      else:
>>          iotests.log("# Create image")
>> -        create_image(config, image_size / oneMB)
>> +        create_image(config, image_size // oneMB)
>>  
>>      lowOffsetMB = 100
>> -    highOffsetMB = 3 * oneTB / oneMB
>> +    highOffsetMB = 3 * oneTB // oneMB
>>  
>>      try:
>>          if not qemu_img:
>> diff --git a/tests/qemu-iotests/151 b/tests/qemu-iotests/151
>> index fe53b9f446..1bb74d67c4 100755
>> --- a/tests/qemu-iotests/151
>> +++ b/tests/qemu-iotests/151
>> @@ -67,9 +67,9 @@ class TestActiveMirror(iotests.QMPTestCase):
>>                              'write -P 1 0 %i' % self.image_len);
>>  
>>          # Start some background requests
>> -        for offset in range(1 * self.image_len / 8, 3 * self.image_len / 8, 1024 * 1024):
>> +        for offset in range(1 * self.image_len // 8, 3 * self.image_len // 8, 1024 * 1024):
>>              self.vm.hmp_qemu_io('source', 'aio_write -P 2 %i 1M' % offset)
>> -        for offset in range(2 * self.image_len / 8, 3 * self.image_len / 8, 1024 * 1024):
>> +        for offset in range(2 * self.image_len // 8, 3 * self.image_len // 8, 1024 * 1024):
>>              self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
>>  
>>          # Start the block job
>> @@ -83,9 +83,9 @@ class TestActiveMirror(iotests.QMPTestCase):
>>          self.assert_qmp(result, 'return', {})
>>  
>>          # Start some more requests
>> -        for offset in range(3 * self.image_len / 8, 5 * self.image_len / 8, 1024 * 1024):
>> +        for offset in range(3 * self.image_len // 8, 5 * self.image_len // 8, 1024 * 1024):
>>              self.vm.hmp_qemu_io('source', 'aio_write -P 3 %i 1M' % offset)
>> -        for offset in range(4 * self.image_len / 8, 5 * self.image_len / 8, 1024 * 1024):
>> +        for offset in range(4 * self.image_len // 8, 5 * self.image_len // 8, 1024 * 1024):
>>              self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
>>  
>>          # Wait for the READY event
>> @@ -95,9 +95,9 @@ class TestActiveMirror(iotests.QMPTestCase):
>>          # the source) should be settled using the active mechanism.
>>          # The mirror code itself asserts that the source BDS's dirty
>>          # bitmap will stay clean between READY and COMPLETED.
>> -        for offset in range(5 * self.image_len / 8, 7 * self.image_len / 8, 1024 * 1024):
>> +        for offset in range(5 * self.image_len // 8, 7 * self.image_len // 8, 1024 * 1024):
>>              self.vm.hmp_qemu_io('source', 'aio_write -P 3 %i 1M' % offset)
>> -        for offset in range(6 * self.image_len / 8, 7 * self.image_len / 8, 1024 * 1024):
>> +        for offset in range(6 * self.image_len // 8, 7 * self.image_len // 8, 1024 * 1024):
>>              self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
>>  
>>          if sync_source_and_target:
>> diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
>> index 403842354e..5fd424761b 100755
>> --- a/tests/qemu-iotests/163
>> +++ b/tests/qemu-iotests/163
>> @@ -38,7 +38,7 @@ class ShrinkBaseClass(iotests.QMPTestCase):
>>          entry_bits = 3
>>          entry_size = 1 << entry_bits
>>          l1_mask = 0x00fffffffffffe00
>> -        div_roundup = lambda n, d: (n + d - 1) / d
>> +        div_roundup = lambda n, d: (n + d - 1) // d
>>  
>>          def split_by_n(data, n):
>>              for x in xrange(0, len(data), n):
>> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
>> index 7290c0b159..7ca94e9278 100644
>> --- a/tests/qemu-iotests/iotests.py
>> +++ b/tests/qemu-iotests/iotests.py
>> @@ -199,7 +199,7 @@ def create_image(name, size):
>>      file = open(name, 'wb')
>>      i = 0
>>      while i < size:
>> -        sector = struct.pack('>l504xl', i / 512, i / 512)
>> +        sector = struct.pack('>l504xl', i // 512, i // 512)
>>          file.write(sector)
>>          i = i + 512
>>      file.close()
>>
> 
> Found a few other occurrences:
> 
> 030:''' % (event, errno, self.STREAM_BUFFER_SIZE / 512, event, event))
> 041:''' % (event, errno, self.MIRROR_GRANULARITY / 512, event, event))
> 041:''' % (event, errno, self.MIRROR_GRANULARITY / 512, event, event))

Oh, thanks.  Right, those just worked because they were converted back
to integers thanks to the %d in the format string.

Will fix.  Thanks for reviewing!

Max
diff mbox series

Patch

diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
index 1cb1ceeb33..b81133a474 100755
--- a/tests/qemu-iotests/040
+++ b/tests/qemu-iotests/040
@@ -195,7 +195,7 @@  class TestSingleDrive(ImageCommitTestCase):
 
         self.assert_no_active_block_jobs()
         result = self.vm.qmp('block-commit', device='drive0', top=mid_img,
-                             base=backing_img, speed=(self.image_len / 4))
+                             base=backing_img, speed=(self.image_len // 4))
         self.assert_qmp(result, 'return', {})
         result = self.vm.qmp('device_del', id='scsi0')
         self.assert_qmp(result, 'return', {})
@@ -225,7 +225,7 @@  class TestSingleDrive(ImageCommitTestCase):
 
         self.assert_no_active_block_jobs()
         result = self.vm.qmp('block-commit', device='drive0', top=mid_img,
-                             base=backing_img, speed=(self.image_len / 4))
+                             base=backing_img, speed=(self.image_len // 4))
         self.assert_qmp(result, 'return', {})
 
         result = self.vm.qmp('query-block')
diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
index 69e736f687..7ef5e46fe9 100755
--- a/tests/qemu-iotests/044
+++ b/tests/qemu-iotests/044
@@ -86,7 +86,7 @@  class TestRefcountTableGrowth(iotests.QMPTestCase):
                 off = off + 1024 * 512
 
             table = b''.join(struct.pack('>Q', (1 << 63) | off + 512 * j)
-                for j in xrange(0, remaining / 512))
+                for j in xrange(0, remaining // 512))
             fd.write(table)
 
 
diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
index 9d1971a56c..d88fbc182e 100755
--- a/tests/qemu-iotests/093
+++ b/tests/qemu-iotests/093
@@ -69,18 +69,18 @@  class ThrottleTestCase(iotests.QMPTestCase):
         # in. The throttled requests won't be executed until we
         # advance the virtual clock.
         rq_size = 512
-        rd_nr = max(params['bps'] / rq_size / 2,
-                    params['bps_rd'] / rq_size,
-                    params['iops'] / 2,
+        rd_nr = max(params['bps'] // rq_size // 2,
+                    params['bps_rd'] // rq_size,
+                    params['iops'] // 2,
                     params['iops_rd'])
         rd_nr *= seconds * 2
-        rd_nr /= ndrives
-        wr_nr = max(params['bps'] / rq_size / 2,
-                    params['bps_wr'] / rq_size,
-                    params['iops'] / 2,
+        rd_nr //= ndrives
+        wr_nr = max(params['bps'] // rq_size // 2,
+                    params['bps_wr'] // rq_size,
+                    params['iops'] // 2,
                     params['iops_wr'])
         wr_nr *= seconds * 2
-        wr_nr /= ndrives
+        wr_nr //= ndrives
 
         # Send I/O requests to all drives
         for i in range(rd_nr):
@@ -196,7 +196,7 @@  class ThrottleTestCase(iotests.QMPTestCase):
             self.configure_throttle(ndrives, settings)
 
             # Wait for the bucket to empty so we can do bursts
-            wait_ns = nsec_per_sec * burst_length * burst_rate / rate
+            wait_ns = nsec_per_sec * burst_length * burst_rate // rate
             self.vm.qtest("clock_step %d" % wait_ns)
 
             # Test I/O at the max burst rate
diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149
index 1225334cb8..4f363f295f 100755
--- a/tests/qemu-iotests/149
+++ b/tests/qemu-iotests/149
@@ -314,13 +314,13 @@  def test_once(config, qemu_img=False):
     image_size = 4 * oneTB
     if qemu_img:
         iotests.log("# Create image")
-        qemu_img_create(config, image_size / oneMB)
+        qemu_img_create(config, image_size // oneMB)
     else:
         iotests.log("# Create image")
-        create_image(config, image_size / oneMB)
+        create_image(config, image_size // oneMB)
 
     lowOffsetMB = 100
-    highOffsetMB = 3 * oneTB / oneMB
+    highOffsetMB = 3 * oneTB // oneMB
 
     try:
         if not qemu_img:
diff --git a/tests/qemu-iotests/151 b/tests/qemu-iotests/151
index fe53b9f446..1bb74d67c4 100755
--- a/tests/qemu-iotests/151
+++ b/tests/qemu-iotests/151
@@ -67,9 +67,9 @@  class TestActiveMirror(iotests.QMPTestCase):
                             'write -P 1 0 %i' % self.image_len);
 
         # Start some background requests
-        for offset in range(1 * self.image_len / 8, 3 * self.image_len / 8, 1024 * 1024):
+        for offset in range(1 * self.image_len // 8, 3 * self.image_len // 8, 1024 * 1024):
             self.vm.hmp_qemu_io('source', 'aio_write -P 2 %i 1M' % offset)
-        for offset in range(2 * self.image_len / 8, 3 * self.image_len / 8, 1024 * 1024):
+        for offset in range(2 * self.image_len // 8, 3 * self.image_len // 8, 1024 * 1024):
             self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
 
         # Start the block job
@@ -83,9 +83,9 @@  class TestActiveMirror(iotests.QMPTestCase):
         self.assert_qmp(result, 'return', {})
 
         # Start some more requests
-        for offset in range(3 * self.image_len / 8, 5 * self.image_len / 8, 1024 * 1024):
+        for offset in range(3 * self.image_len // 8, 5 * self.image_len // 8, 1024 * 1024):
             self.vm.hmp_qemu_io('source', 'aio_write -P 3 %i 1M' % offset)
-        for offset in range(4 * self.image_len / 8, 5 * self.image_len / 8, 1024 * 1024):
+        for offset in range(4 * self.image_len // 8, 5 * self.image_len // 8, 1024 * 1024):
             self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
 
         # Wait for the READY event
@@ -95,9 +95,9 @@  class TestActiveMirror(iotests.QMPTestCase):
         # the source) should be settled using the active mechanism.
         # The mirror code itself asserts that the source BDS's dirty
         # bitmap will stay clean between READY and COMPLETED.
-        for offset in range(5 * self.image_len / 8, 7 * self.image_len / 8, 1024 * 1024):
+        for offset in range(5 * self.image_len // 8, 7 * self.image_len // 8, 1024 * 1024):
             self.vm.hmp_qemu_io('source', 'aio_write -P 3 %i 1M' % offset)
-        for offset in range(6 * self.image_len / 8, 7 * self.image_len / 8, 1024 * 1024):
+        for offset in range(6 * self.image_len // 8, 7 * self.image_len // 8, 1024 * 1024):
             self.vm.hmp_qemu_io('source', 'aio_write -z %i 1M' % offset)
 
         if sync_source_and_target:
diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
index 403842354e..5fd424761b 100755
--- a/tests/qemu-iotests/163
+++ b/tests/qemu-iotests/163
@@ -38,7 +38,7 @@  class ShrinkBaseClass(iotests.QMPTestCase):
         entry_bits = 3
         entry_size = 1 << entry_bits
         l1_mask = 0x00fffffffffffe00
-        div_roundup = lambda n, d: (n + d - 1) / d
+        div_roundup = lambda n, d: (n + d - 1) // d
 
         def split_by_n(data, n):
             for x in xrange(0, len(data), n):
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 7290c0b159..7ca94e9278 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -199,7 +199,7 @@  def create_image(name, size):
     file = open(name, 'wb')
     i = 0
     while i < size:
-        sector = struct.pack('>l504xl', i / 512, i / 512)
+        sector = struct.pack('>l504xl', i // 512, i // 512)
         file.write(sector)
         i = i + 512
     file.close()