Make library_import_str arg to ECDriver conditional
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
This commit is contained in:
4
README
4
README
@@ -32,14 +32,14 @@ Examples of using this library are provided in "tools" directory:
|
|||||||
|
|
||||||
PyEClib initialization::
|
PyEClib initialization::
|
||||||
|
|
||||||
ec_driver = ECDriver("pyeclib.core.ECPyECLibDriver",
|
ec_driver = ECDriver(k=<num_encoded_data_fragments>,
|
||||||
k=<num_encoded_data_fragments>,
|
|
||||||
m=<num_encoded_parity_fragments>,
|
m=<num_encoded_parity_fragments>,
|
||||||
ec_type=<ec_scheme>))
|
ec_type=<ec_scheme>))
|
||||||
|
|
||||||
Supported ``ec_type`` values:
|
Supported ``ec_type`` values:
|
||||||
|
|
||||||
* ``jerasure_rs_vand`` => Vandermonde Reed-Solomon encoding
|
* ``jerasure_rs_vand`` => Vandermonde Reed-Solomon encoding
|
||||||
|
* ``jerasure_rs_cauchy`` => Cauchy Reed-Solomon encoding (Jerasure variant)
|
||||||
* ``flat_xor_hd_3``, ``flat_xor_hd_4`` => Flat-XOR based HD combination codes
|
* ``flat_xor_hd_3``, ``flat_xor_hd_4`` => Flat-XOR based HD combination codes
|
||||||
|
|
||||||
A configuration utility is provided to help compare available EC schemes in
|
A configuration utility is provided to help compare available EC schemes in
|
||||||
|
@@ -115,12 +115,11 @@ class ECDriverError(Exception):
|
|||||||
# Main ECDriver class
|
# Main ECDriver class
|
||||||
class ECDriver(object):
|
class ECDriver(object):
|
||||||
|
|
||||||
def __init__(self, library_import_str, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.k = -1
|
self.k = -1
|
||||||
self.m = -1
|
self.m = -1
|
||||||
self.ec_type = None
|
self.ec_type = None
|
||||||
self.chksum_type = None
|
self.chksum_type = None
|
||||||
self.library_import_str = None
|
|
||||||
for (key, value) in kwargs.items():
|
for (key, value) in kwargs.items():
|
||||||
if key == "k":
|
if key == "k":
|
||||||
try:
|
try:
|
||||||
@@ -149,17 +148,13 @@ class ECDriver(object):
|
|||||||
raise ECDriverError(
|
raise ECDriverError(
|
||||||
"%s is not a valid checksum type for PyECLib!" % value)
|
"%s is not a valid checksum type for PyECLib!" % value)
|
||||||
|
|
||||||
if library_import_str is not None:
|
self.library_import_str = kwargs.pop('library_import_str',
|
||||||
self.library_import_str = library_import_str
|
'pyeclib.core.ECPyECLibDriver')
|
||||||
else:
|
|
||||||
raise ECDriverError(
|
|
||||||
"Library import string (library_import_str) was not specified "
|
|
||||||
"and is a required argument!")
|
|
||||||
#
|
#
|
||||||
# Instantiate EC backend driver
|
# Instantiate EC backend driver
|
||||||
#
|
#
|
||||||
self.ec_lib_reference = create_instance(
|
self.ec_lib_reference = create_instance(
|
||||||
library_import_str,
|
self.library_import_str,
|
||||||
k=self.k,
|
k=self.k,
|
||||||
m=self.m,
|
m=self.m,
|
||||||
ec_type=self.ec_type,
|
ec_type=self.ec_type,
|
||||||
@@ -189,7 +184,7 @@ class ECDriver(object):
|
|||||||
if len(not_implemented_str) > 0:
|
if len(not_implemented_str) > 0:
|
||||||
raise ECDriverError(
|
raise ECDriverError(
|
||||||
"The following required methods are not implemented "
|
"The following required methods are not implemented "
|
||||||
"in %s: %s" % (library_import_str, not_implemented_str))
|
"in %s: %s" % (self.library_import_str, not_implemented_str))
|
||||||
|
|
||||||
def encode(self, data_bytes):
|
def encode(self, data_bytes):
|
||||||
"""
|
"""
|
||||||
|
@@ -41,7 +41,8 @@ else:
|
|||||||
class TestNullDriver(unittest.TestCase):
|
class TestNullDriver(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.null_driver = ECDriver("pyeclib.core.ECNullDriver", k=8, m=2)
|
self.null_driver = ECDriver(
|
||||||
|
library_import_str="pyeclib.core.ECNullDriver", k=8, m=2)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
pass
|
pass
|
||||||
@@ -54,7 +55,8 @@ class TestNullDriver(unittest.TestCase):
|
|||||||
class TestStripeDriver(unittest.TestCase):
|
class TestStripeDriver(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.stripe_driver = ECDriver("pyeclib.core.ECStripingDriver", k=8, m=0)
|
self.stripe_driver = ECDriver(
|
||||||
|
library_import_str="pyeclib.core.ECStripingDriver", k=8, m=0)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
pass
|
pass
|
||||||
@@ -102,12 +104,9 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
|
|
||||||
def test_small_encode(self):
|
def test_small_encode(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(ECDriver("pyeclib.core.ECPyECLibDriver",
|
pyeclib_drivers.append(ECDriver(k=12, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand"))
|
pyeclib_drivers.append(ECDriver(k=11, m=2, ec_type="jerasure_rs_vand"))
|
||||||
pyeclib_drivers.append(ECDriver("pyeclib.core.ECPyECLibDriver",
|
pyeclib_drivers.append(ECDriver(k=10, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=11, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(ECDriver("pyeclib.core.ECPyECLibDriver",
|
|
||||||
k=10, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
|
|
||||||
encode_strs = [b"a", b"hello", b"hellohyhi", b"yo"]
|
encode_strs = [b"a", b"hello", b"hellohyhi", b"yo"]
|
||||||
|
|
||||||
@@ -121,17 +120,13 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def disabled_test_verify_fragment_algsig_chksum_fail(self):
|
def disabled_test_verify_fragment_algsig_chksum_fail(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
||||||
k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=6, ec_type="flat_xor_hd", chksum_type="algsig"))
|
||||||
k=12, m=6, ec_type="flat_xor_hd", chksum_type="algsig"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=10, m=5, ec_type="flat_xor_hd", chksum_type="algsig"))
|
||||||
k=10, m=5, ec_type="flat_xor_hd", chksum_type="algsig"))
|
|
||||||
|
|
||||||
filesize = 1024 * 1024 * 3
|
filesize = 1024 * 1024 * 3
|
||||||
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
||||||
@@ -159,17 +154,13 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def disabled_test_verify_fragment_inline_succeed(self):
|
def disabled_test_verify_fragment_inline_succeed(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
||||||
k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="algsig"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=6, ec_type="flat_xor_hd", chksum_type="algsig"))
|
||||||
k=12, m=6, ec_type="flat_xor_hd", chksum_type="algsig"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=10, m=5, ec_type="flat_xor_hd", chksum_type="algsig"))
|
||||||
k=10, m=5, ec_type="flat_xor_hd", chksum_type="algsig"))
|
|
||||||
|
|
||||||
filesize = 1024 * 1024 * 3
|
filesize = 1024 * 1024 * 3
|
||||||
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
||||||
@@ -190,17 +181,13 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def disabled_test_verify_fragment_inline_chksum_fail(self):
|
def disabled_test_verify_fragment_inline_chksum_fail(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
||||||
k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=4, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
||||||
k=12, m=4, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_cauchy", chksum_type="inline_crc32"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_cauchy", chksum_type="inline_crc32"))
|
|
||||||
|
|
||||||
filesize = 1024 * 1024 * 3
|
filesize = 1024 * 1024 * 3
|
||||||
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
||||||
@@ -233,17 +220,13 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def disabled_test_verify_fragment_inline_chksum_succeed(self):
|
def disabled_test_verify_fragment_inline_chksum_succeed(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
||||||
k=12, m=3, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=4, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
||||||
k=12, m=4, ec_type="jerasure_rs_vand", chksum_type="inline_crc32"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_cauchy", chksum_type="inline_crc32"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_cauchy", chksum_type="inline_crc32"))
|
|
||||||
|
|
||||||
filesize = 1024 * 1024 * 3
|
filesize = 1024 * 1024 * 3
|
||||||
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
file_str = ''.join(random.choice(ascii_letters) for i in range(filesize))
|
||||||
@@ -264,14 +247,11 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def test_get_segment_byterange_info(self):
|
def test_get_segment_byterange_info(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=11, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=11, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=10, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=10, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
|
|
||||||
file_size = 1024 * 1024
|
file_size = 1024 * 1024
|
||||||
segment_size = 3 * 1024
|
segment_size = 3 * 1024
|
||||||
@@ -300,14 +280,11 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def test_get_segment_info(self):
|
def test_get_segment_info(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=11, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=11, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=10, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=10, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
|
|
||||||
file_sizes = [
|
file_sizes = [
|
||||||
1024 * 1024,
|
1024 * 1024,
|
||||||
@@ -375,23 +352,17 @@ class TestPyECLibDriver(unittest.TestCase):
|
|||||||
def test_rs(self):
|
def test_rs(self):
|
||||||
pyeclib_drivers = []
|
pyeclib_drivers = []
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_vand"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=2, ec_type="jerasure_rs_cauchy"))
|
||||||
k=12, m=2, ec_type="jerasure_rs_cauchy"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=3, ec_type="jerasure_rs_vand"))
|
||||||
k=12, m=3, ec_type="jerasure_rs_vand"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=3, ec_type="jerasure_rs_cauchy"))
|
||||||
k=12, m=3, ec_type="jerasure_rs_cauchy"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=12, m=6, ec_type="flat_xor_hd"))
|
||||||
k=12, m=6, ec_type="flat_xor_hd"))
|
|
||||||
pyeclib_drivers.append(
|
pyeclib_drivers.append(
|
||||||
ECDriver("pyeclib.core.ECPyECLibDriver",
|
ECDriver(k=10, m=5, ec_type="flat_xor_hd"))
|
||||||
k=10, m=5, ec_type="flat_xor_hd"))
|
|
||||||
|
|
||||||
for pyeclib_driver in pyeclib_drivers:
|
for pyeclib_driver in pyeclib_drivers:
|
||||||
for file_size in self.file_sizes:
|
for file_size in self.file_sizes:
|
||||||
|
@@ -184,7 +184,7 @@ class TestPyECLib(unittest.TestCase):
|
|||||||
|
|
||||||
fragments = pyeclib_c.encode(handle, whole_file_bytes)
|
fragments = pyeclib_c.encode(handle, whole_file_bytes)
|
||||||
orig_fragments = fragments[:]
|
orig_fragments = fragments[:]
|
||||||
|
|
||||||
for i in range(iterations):
|
for i in range(iterations):
|
||||||
missing_idxs = []
|
missing_idxs = []
|
||||||
num_missing = hd - 1
|
num_missing = hd - 1
|
||||||
@@ -367,7 +367,7 @@ class TestPyECLib(unittest.TestCase):
|
|||||||
self.num_parities[i],
|
self.num_parities[i],
|
||||||
ec_type.value, self.num_parities[i] + 1,
|
ec_type.value, self.num_parities[i] + 1,
|
||||||
size_str, self.iterations)
|
size_str, self.iterations)
|
||||||
|
|
||||||
self.assertTrue(success)
|
self.assertTrue(success)
|
||||||
print(("Range Decode (%s): %s" %
|
print(("Range Decode (%s): %s" %
|
||||||
(size_str, self.get_throughput(avg_time, size_str))))
|
(size_str, self.get_throughput(avg_time, size_str))))
|
||||||
|
@@ -58,12 +58,10 @@
|
|||||||
# (limit 10)
|
# (limit 10)
|
||||||
#
|
#
|
||||||
|
|
||||||
import pyeclib
|
|
||||||
from pyeclib.ec_iface import ECDriver
|
from pyeclib.ec_iface import ECDriver
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
import os
|
|
||||||
import argparse
|
import argparse
|
||||||
import time
|
import time
|
||||||
import math
|
import math
|
||||||
@@ -238,9 +236,7 @@ for scheme in schemes:
|
|||||||
string.ascii_uppercase + string.digits) for x in range(args.s))
|
string.ascii_uppercase + string.digits) for x in range(args.s))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ec_driver = ECDriver(
|
ec_driver = ECDriver(k=scheme.k, m=scheme.m, ec_type=scheme.ec_type)
|
||||||
"pyeclib.core.ECPyECLibDriver",
|
|
||||||
k=scheme.k, m=scheme.m, ec_type=scheme.ec_type)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Scheme %s is not defined (%s)." % (scheme, e))
|
print("Scheme %s is not defined (%s)." % (scheme, e))
|
||||||
continue
|
continue
|
||||||
|
@@ -21,12 +21,7 @@
|
|||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
import pyeclib
|
|
||||||
from pyeclib.ec_iface import ECDriver
|
from pyeclib.ec_iface import ECDriver
|
||||||
import random
|
|
||||||
import string
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Decoder for PyECLib.')
|
parser = argparse.ArgumentParser(description='Decoder for PyECLib.')
|
||||||
@@ -44,8 +39,7 @@ print("ec_type = %s" % args.ec_type)
|
|||||||
print("fragments = %s" % args.fragments)
|
print("fragments = %s" % args.fragments)
|
||||||
print("filename = %s" % args.filename)
|
print("filename = %s" % args.filename)
|
||||||
|
|
||||||
ec_driver = ECDriver(
|
ec_driver = ECDriver(k=args.k, m=args.m, ec_type=args.ec_type)
|
||||||
"pyeclib.core.ECPyECLibDriver", k=args.k, m=args.m, ec_type=args.ec_type)
|
|
||||||
|
|
||||||
fragment_list = []
|
fragment_list = []
|
||||||
|
|
||||||
|
@@ -21,12 +21,7 @@
|
|||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
import pyeclib
|
|
||||||
from pyeclib.ec_iface import ECDriver
|
from pyeclib.ec_iface import ECDriver
|
||||||
import random
|
|
||||||
import string
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Encoder for PyECLib.')
|
parser = argparse.ArgumentParser(description='Encoder for PyECLib.')
|
||||||
@@ -43,9 +38,7 @@ print("k = %d, m = %d" % (args.k, args.m))
|
|||||||
print("ec_type = %s" % args.ec_type)
|
print("ec_type = %s" % args.ec_type)
|
||||||
print("filename = %s" % args.filename)
|
print("filename = %s" % args.filename)
|
||||||
|
|
||||||
ec_driver = ECDriver(
|
ec_driver = ECDriver(k=args.k, m=args.m, ec_type=args.ec_type)
|
||||||
"pyeclib.core.ECPyECLibDriver",
|
|
||||||
k=args.k, m=args.m, ec_type=args.ec_type)
|
|
||||||
|
|
||||||
# read
|
# read
|
||||||
with open(("%s/%s" % (args.file_dir, args.filename)), "rb") as fp:
|
with open(("%s/%s" % (args.file_dir, args.filename)), "rb") as fp:
|
||||||
|
@@ -40,9 +40,7 @@ parser.add_argument('missing_fragments', type=int, metavar='missing_fragment',
|
|||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
ec_driver = ECDriver(
|
ec_driver = ECDriver(k=args.k, m=args.m, ec_type=args.ec_type)
|
||||||
"pyeclib.core.ECPyECLibDriver",
|
|
||||||
k=args.k, m=args.m, ec_type=args.ec_type)
|
|
||||||
|
|
||||||
fragments_needed = ec_driver.fragments_needed(args.missing_fragments)
|
fragments_needed = ec_driver.fragments_needed(args.missing_fragments)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user