|
Packit |
534379 |
# Copyright(c) 2018, Intel Corporation
|
|
Packit |
534379 |
#
|
|
Packit |
534379 |
# Redistribution and use in source and binary forms, with or without
|
|
Packit |
534379 |
# modification, are permitted provided that the following conditions are met:
|
|
Packit |
534379 |
#
|
|
Packit |
534379 |
# * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
534379 |
# this list of conditions and the following disclaimer.
|
|
Packit |
534379 |
# * Redistributions in binary form must reproduce the above copyright notice,
|
|
Packit |
534379 |
# this list of conditions and the following disclaimer in the documentation
|
|
Packit |
534379 |
# and/or other materials provided with the distribution.
|
|
Packit |
534379 |
# * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
534379 |
# may be used to endorse or promote products derived from this software
|
|
Packit |
534379 |
# without specific prior written permission.
|
|
Packit |
534379 |
#
|
|
Packit |
534379 |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
534379 |
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
534379 |
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
534379 |
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
Packit |
534379 |
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
Packit |
534379 |
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
Packit |
534379 |
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
534379 |
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
Packit |
534379 |
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
Packit |
534379 |
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
Packit |
534379 |
# POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
534379 |
import struct
|
|
Packit |
534379 |
import sys
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# pylint: disable=E0602, E0603
|
|
Packit |
534379 |
|
|
Packit |
534379 |
class TestSharedBuffer(unittest.TestCase):
|
|
Packit |
534379 |
@classmethod
|
|
Packit |
534379 |
def setUpClass(cls):
|
|
Packit |
534379 |
cls.system = mockopae.test_system()
|
|
Packit |
534379 |
cls.platform = mockopae.test_platform.get("skx-p")
|
|
Packit |
534379 |
cls.system.initialize()
|
|
Packit |
534379 |
cls.system.prepare_sysfs(cls.platform)
|
|
Packit |
534379 |
opae.fpga.initialize(None)
|
|
Packit |
534379 |
cls.props = opae.fpga.properties(type=opae.fpga.ACCELERATOR)
|
|
Packit |
534379 |
cls.toks = opae.fpga.enumerate([cls.props])
|
|
Packit |
534379 |
assert cls.toks
|
|
Packit |
534379 |
cls.handle = opae.fpga.open(cls.toks[0])
|
|
Packit |
534379 |
assert cls.handle
|
|
Packit |
534379 |
|
|
Packit |
534379 |
@classmethod
|
|
Packit |
534379 |
def tearDownClass(cls):
|
|
Packit |
534379 |
cls.system.finalize()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
def test_allocate(self):
|
|
Packit |
534379 |
buff1 = opae.fpga.allocate_shared_buffer(self.handle, 4096)
|
|
Packit |
534379 |
buff2 = opae.fpga.allocate_shared_buffer(self.handle, 4096)
|
|
Packit |
534379 |
assert buff1
|
|
Packit |
534379 |
assert buff2
|
|
Packit |
534379 |
assert buff1.size() == 4096
|
|
Packit |
534379 |
assert buff1.wsid() != 0
|
|
Packit |
534379 |
# TODO: look into wsid in new mock system
|
|
Packit |
534379 |
# assert buff1.io_address() != 0
|
|
Packit |
534379 |
mv = memoryview(buff1)
|
|
Packit |
534379 |
assert mv
|
|
Packit |
534379 |
assert not buff1.compare(buff2, 4096)
|
|
Packit |
534379 |
buff1.fill(0xAA)
|
|
Packit |
534379 |
buff2.fill(0xEE)
|
|
Packit |
534379 |
assert buff1.compare(buff2, 4096)
|
|
Packit |
534379 |
if sys.version_info[0] == 2:
|
|
Packit |
534379 |
assert mv[0] == '\xaa'
|
|
Packit |
534379 |
assert mv[-1] == '\xaa'
|
|
Packit |
534379 |
else:
|
|
Packit |
534379 |
assert mv[0] == 0xaa
|
|
Packit |
534379 |
assert mv[-1] == 0xaa
|
|
Packit |
534379 |
ba = bytearray(buff1)
|
|
Packit |
534379 |
assert ba[0] == 0xaa
|
|
Packit |
534379 |
buff1[42] = int(65536)
|
|
Packit |
534379 |
assert struct.unpack('
|
|
Packit |
534379 |
|
|
Packit |
534379 |
def test_conext_release(self):
|
|
Packit |
534379 |
assert self.handle
|
|
Packit |
534379 |
self.handle.close()
|
|
Packit |
534379 |
with opae.fpga.open(self.toks[0]) as h:
|
|
Packit |
534379 |
buff = opae.fpga.allocate_shared_buffer(h, 4096)
|
|
Packit |
534379 |
assert buff
|
|
Packit |
534379 |
assert buff.size() == 4096
|
|
Packit |
534379 |
assert buff.wsid() != 0
|
|
Packit |
534379 |
assert not h
|
|
Packit |
534379 |
assert buff.size() == 0
|
|
Packit |
534379 |
assert buff.wsid() == 0
|
|
Packit |
534379 |
|