mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-09 03:31:45 +00:00
* persist light client updates * update beacon chain to serve light client updates * resolve todos * cache best update * extend cache parts * is better light client update * resolve merge conflict * initial api changes * add lc update db column * fmt * added tests * add sim * Merge branch 'unstable' of https://github.com/sigp/lighthouse into persist-light-client-updates * fix some weird issues with the simulator * tests * Merge branch 'unstable' of https://github.com/sigp/lighthouse into persist-light-client-updates * test changes * merge conflict * testing * started work on ef tests and some code clean up * update tests * linting * noop pre altair, were still failing on electra though * allow for zeroed light client header * Merge branch 'unstable' of https://github.com/sigp/lighthouse into persist-light-client-updates * merge unstable * remove unwraps * remove unwraps * Update light_client_update.rs * merge unstable * move functionality to helper methods * refactor is best update fn * refactor is best update fn * improve organization of light client server cache logic * fork diget calc, and only spawn as many blcoks as we need for the lc update test * fetch lc update from the cache if it exists * fmt * Fix beacon_chain tests * Add debug code to update ranking_order ef test * Fix compare code * merge conflicts * fix test * Merge branch 'persist-light-client-updates' of https://github.com/eserilev/lighthouse into persist-light-client-updates * Use blinded blocks for light client proofs * fix ef test * merge conflicts * fix lc update check * Lint * resolve merge conflict * Merge branch 'persist-light-client-updates' of https://github.com/eserilev/lighthouse into persist-light-client-updates * revert basic sim * small fix * revert sim * Review PR * resolve merge conflicts * Merge branch 'unstable' into persist-light-client-updates
97 lines
3.5 KiB
Python
Executable File
97 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
|
||
# The purpose of this script is to compare a list of file names that were accessed during testing
|
||
# against all the file names in the consensus-spec-tests repository. It then checks to see which files
|
||
# were not accessed and returns an error if any non-intentionally-ignored files are detected.
|
||
#
|
||
# The ultimate goal is to detect any accidentally-missed spec tests.
|
||
|
||
import os
|
||
import re
|
||
import sys
|
||
|
||
# First argument should the path to a file which contains a list of accessed file names.
|
||
accessed_files_filename = sys.argv[1]
|
||
|
||
# Second argument should be the path to the consensus-spec-tests directory.
|
||
tests_dir_filename = sys.argv[2]
|
||
|
||
# If any of the file names found in the consensus-spec-tests directory *starts with* one of the
|
||
# following regular expressions, we will assume they are to be ignored (i.e., we are purposefully
|
||
# *not* running the spec tests).
|
||
excluded_paths = [
|
||
# Eth1Block and PowBlock
|
||
#
|
||
# Intentionally omitted, as per https://github.com/sigp/lighthouse/issues/1835
|
||
"tests/.*/.*/ssz_static/Eth1Block/",
|
||
"tests/.*/.*/ssz_static/PowBlock/",
|
||
# light_client
|
||
# "tests/.*/.*/light_client",
|
||
"tests/.*/.*/light_client/single_merkle_proof",
|
||
"tests/.*/.*/light_client/sync",
|
||
# LightClientStore
|
||
"tests/.*/.*/ssz_static/LightClientStore",
|
||
# LightClientSnapshot
|
||
"tests/.*/.*/ssz_static/LightClientSnapshot",
|
||
# One of the EF researchers likes to pack the tarballs on a Mac
|
||
".*\.DS_Store.*",
|
||
# More Mac weirdness.
|
||
"tests/mainnet/bellatrix/operations/deposit/pyspec_tests/deposit_with_previous_fork_version__valid_ineffective/._meta.yaml",
|
||
# bls tests are moved to bls12-381-tests directory
|
||
"tests/general/phase0/bls",
|
||
# some bls tests are not included now
|
||
"bls12-381-tests/deserialization_G1",
|
||
"bls12-381-tests/deserialization_G2",
|
||
"bls12-381-tests/hash_to_G2",
|
||
"tests/.*/eip6110",
|
||
"tests/.*/whisk",
|
||
"tests/.*/eip7594",
|
||
# TODO(electra) re-enable once https://github.com/sigp/lighthouse/issues/6002 is resolved
|
||
"tests/.*/electra/ssz_static/LightClientUpdate",
|
||
"tests/.*/electra/ssz_static/LightClientFinalityUpdate",
|
||
"tests/.*/electra/ssz_static/LightClientBootstrap",
|
||
# TODO(electra) re-enable as DepositRequest when EF tests are updated
|
||
"tests/.*/electra/operations/deposit_receipt",
|
||
"tests/.*/electra/ssz_static/DepositReceipt"
|
||
]
|
||
|
||
|
||
def normalize_path(path):
|
||
return path.split("consensus-spec-tests/")[1]
|
||
|
||
|
||
# Determine the list of filenames which were accessed during tests.
|
||
passed = set()
|
||
for line in open(accessed_files_filename, 'r').readlines():
|
||
file = normalize_path(line.strip().strip('"'))
|
||
passed.add(file)
|
||
|
||
missed = set()
|
||
accessed_files = 0
|
||
excluded_files = 0
|
||
|
||
# Iterate all files in the tests directory, ensure that all files were either accessed
|
||
# or intentionally missed.
|
||
for root, dirs, files in os.walk(tests_dir_filename):
|
||
for name in files:
|
||
name = normalize_path(os.path.join(root, name))
|
||
if name not in passed:
|
||
excluded = False
|
||
for excluded_path_regex in excluded_paths:
|
||
if re.match(excluded_path_regex, name):
|
||
excluded = True
|
||
break
|
||
if excluded:
|
||
excluded_files += 1
|
||
else:
|
||
print(name)
|
||
missed.add(name)
|
||
else:
|
||
accessed_files += 1
|
||
|
||
# Exit with an error if there were any files missed.
|
||
assert len(missed) == 0, "{} missed files".format(len(missed))
|
||
|
||
print("Accessed {} files ({} intentionally excluded)".format(
|
||
accessed_files, excluded_files))
|