From e22c7873e381492d705af5d880bf84296d03707f Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 15 Feb 2020 16:10:52 +0300 Subject: [PATCH] Check for evgen upto mode --- tests/test_crl.py | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/tests/test_crl.py b/tests/test_crl.py index 7069230..a5c7183 100644 --- a/tests/test_crl.py +++ b/tests/test_crl.py @@ -70,10 +70,14 @@ class CertificateList(Sequence): ("signatureValue", BitString()), ) -@skipIf(not exists("revoke.crl"), "CACert's revoke.crl not found") + +CRL_PATH = "revoke.crl" + + +@skipIf(not exists(CRL_PATH), "CACert's revoke.crl not found") class TestCACert(TestCase): def test_cer(self): - with open("revoke.crl", "rb") as fd: + with open(CRL_PATH, "rb") as fd: raw = fd.read() print("DER read") start = time() @@ -93,7 +97,36 @@ class TestCACert(TestCase): @skipIf(PY2, "Py27 mmap does not implement buffer protocol") def test_mmaped(self): - fd = open("revoke.crl", "rb") + fd = open(CRL_PATH, "rb") start = time() CertificateList().decod(file_mmaped(fd)) print("DER decoded", time() - start) + + def test_evgens(self): + fd = open(CRL_PATH, "rb") + raw = memoryview(fd.read()) if PY2 else file_mmaped(fd) + print("CRL opened") + evgens_count = 0 + revoked_certs_count = 0 + start = time() + for decode_path, _, _ in CertificateList().decode_evgen(raw): + evgens_count += 1 + if ( + len(decode_path) == 3 and + decode_path[:2] == ("tbsCertList", "revokedCertificates") + ): + revoked_certs_count += 1 + print("CRL parsed", time() - start) + evgens_upto_count = 0 + start = time() + for decode_path, _, _ in CertificateList().decode_evgen(raw, ctx={ + "evgen_mode_upto": ( + (("tbsCertList", "revokedCertificates", any), True), + ), + }): + evgens_upto_count += 1 + print("CRL upto parsed", time() - start) + self.assertEqual( + float(evgens_count - evgens_upto_count) / revoked_certs_count, + 3, + ) -- 2.44.0