diff --git a/.gitmodules b/.gitmodules index a0d8a690ad3..5a6f849b08f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/GeneralStateTestsFiller/stEWASMTests/utils/wabt"] path = src/GeneralStateTestsFiller/stEWASMTests/utils/wabt url = https://github.com/webassembly/wabt +[submodule "src/GeneralStateTestsFiller/stEWASMTests/utils/wasm-metering"] + path = src/GeneralStateTestsFiller/stEWASMTests/utils/wasm-metering + url = https://github.com/ewasm/wasm-metering diff --git a/src/GeneralStateTestsFiller/stEWASMTests/utils/README.md b/src/GeneralStateTestsFiller/stEWASMTests/utils/README.md index b4a57606605..680d37f17c2 100644 --- a/src/GeneralStateTestsFiller/stEWASMTests/utils/README.md +++ b/src/GeneralStateTestsFiller/stEWASMTests/utils/README.md @@ -17,7 +17,12 @@ mkdir build cd build cmake -DBUILD_TESTS=OFF .. make -j4 -mv wat2wasm ../.. +``` + +Install wasm-metering +``` +cd wasm-metering +npm install ``` Setup tests script: diff --git a/src/GeneralStateTestsFiller/stEWASMTests/utils/convert_wast.py b/src/GeneralStateTestsFiller/stEWASMTests/utils/convert_wast.py index cafc3784dd4..ec56c372093 100644 --- a/src/GeneralStateTestsFiller/stEWASMTests/utils/convert_wast.py +++ b/src/GeneralStateTestsFiller/stEWASMTests/utils/convert_wast.py @@ -4,21 +4,28 @@ def wat2wasm(code, file_name): with open("tmp.wast", "w+") as f: f.write(code) - result = subprocess.run(['./wat2wasm', 'tmp.wast', '-o', 'tmp.wasm'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + result = subprocess.run(['wabt/build/wat2wasm', 'tmp.wast', '-o', 'tmp.wasm'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) if result.returncode != 0: - print('Error in ' + file_name + ':') + print('Error running wat2wasm on ' + file_name + ':') print(result.stderr.decode('UTF-8')) exit(1) - with open('tmp.wasm', 'rb') as f: + # Add metering + result = subprocess.run(['wasm-metering/bin/wasm-metering', 'tmp.wasm', + 'tmp.metered.wasm'], stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + if result.returncode != 0: + print('Error adding metering to ' + file_name + ':') + print(result.stderr.decode('UTF-8')) + exit(1) + + with open('tmp.metered.wasm', 'rb') as f: result = f.read() return result.hex() def convert_state_test(file_name): - state_test = None - state_test = yaml.load(open(file_name, 'r').read().rstrip()) if not state_test: diff --git a/src/GeneralStateTestsFiller/stEWASMTests/utils/wasm-metering b/src/GeneralStateTestsFiller/stEWASMTests/utils/wasm-metering new file mode 160000 index 00000000000..7d63faa2cad --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/utils/wasm-metering @@ -0,0 +1 @@ +Subproject commit 7d63faa2cad4a3b3afca2021e83082885685a1a6